Unreal Engine GAS(Gameplay Ability System) 심화LESSON 19
ActivateAbility, CommitAbility, EndAbility의 책임
난이도심화
예상 시간145분
선수지식18강의 입력 태그 활성화
19강. ActivateAbility, CommitAbility, EndAbility의 책임
1. 이번 강의에서 해결할 문제
조준을 시작하자마자 Commit하면 사용자가 취소해도 Mana와 Cooldown이 소비됩니다. 명중 뒤에 Commit하면 자원이 없는 Client가 공격 Montage와 서버 Trace까지 반복할 수 있습니다. Ability마다 “되돌릴 수 없는 실행”이 시작되는 시점을 정해야 합니다.
2. 학습 목표
3. 핵심 개념
ActivateAbility는 실행 준비와 Task 시작, CommitAbility는 Cost·Cooldown 검사 및 적용, EndAbility는 활성 상태와 Task를 종료합니다. 조준형 스킬은 Target Confirm 직후, 즉시 대시는 이동을 시작하기 직전, 공격은 유효한 공격 창을 시작하기 전에 Commit하는 식으로 정책을 문서화합니다.
4. 구현
GA_FireProjectile.cpp
void UGA_FireProjectile::HandleTargetConfirmed(
const FGameplayAbilityTargetDataHandle& TargetData)
{
if (!CommitAbility(
GetCurrentAbilitySpecHandle(),
GetCurrentActorInfo(),
GetCurrentActivationInfo()))
{
CancelAndEnd();
return;
}
if (HasAuthority(&CurrentActivationInfo))
SpawnValidatedProjectile(TargetData);
EndAbility(CurrentSpecHandle, CurrentActorInfo,
CurrentActivationInfo, true, false);
}
Confirm 전 Cancel은 Commit을 호출하지 않습니다. Commit 이후 서버 검증이 실패할 수 있는 기능은 실패 보상·Cooldown 정책을 별도로 정하고 악의적 TargetData가 비용 없이 서버 부하를 만들지 않게 합니다.
5. 코드가 동작하는 이유
Commit이 ASC의 Cost와 Cooldown Effect를 같은 Activation Info에 적용하므로 예측과 서버 승인이 연결됩니다. 되돌릴 수 없는 동작 바로 전에 호출하면 취소 UX와 부정 요청 방지를 균형 있게 처리할 수 있습니다.
6. 실패 사례와 해결
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2ActivateAbility, CommitAbility, EndAbility의 책임 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
19강. ActivateAbility, CommitAbility, EndAbility의 책임 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.