본문으로 건너뛰기
Unreal Engine GAS(Gameplay Ability System) 심화LESSON 40

사망, 부활, 팀 변경에서 GAS 상태 관리하기

난이도심화
예상 시간205분
선수지식39강의 제어 상태

40강. 사망, 부활, 팀 변경에서 GAS 상태 관리하기

1. 이번 강의에서 해결할 문제​

PlayerState에 ASC를 둔 게임은 Pawn이 죽어도 ASC가 살아 있습니다. 이 장점을 정책 없이 사용하면 사망 뒤 채널링이 계속되고, 부활할 때 기본 Ability가 중복 부여되며, 이전 팀 오라가 남는 문제가 생깁니다.

2. 학습 목표​

3. 핵심 개념​

사망은 State.Dead Tag와 서버 권한 상태 전환으로 표현합니다. 사망 시 실행 중 Ability를 취소하고 Effect.RemoveOnDeath 정책에 맞는 Effect만 제거합니다. 계정/플레이어 수명 Cooldown을 유지할지, Pawn 수명 버프를 제거할지는 게임 규칙입니다. 새 Pawn Possess와 OnRep_PlayerState에서 InitAbilityActorInfo를 다시 호출합니다.

4. 구현​

GASCombatCharacter.cpp
void AGASCombatCharacter::HandleDeath()
{
if (!HasAuthority()) return;

ASC->AddLooseGameplayTag(TAG_State_Dead);
FGameplayTagContainer CancelTags(TAG_Ability_Behavior_CancelOnDeath);
ASC->CancelAbilities(&CancelTags);

FGameplayTagContainer RemoveTags(TAG_Effect_RemoveOnDeath);
ASC->RemoveActiveEffectsWithGrantedTags(RemoveTags);
}

void AGASCombatCharacter::InitializeAbilityActorInfo()
{
AGASPlayerState* PS = GetPlayerState<AGASPlayerState>();
if (!PS) return;
PS->GetAbilitySystemComponent()->InitAbilityActorInfo(PS, this);
}

AbilitySet은 서버에서 한 번만 부여하고 받은 FGameplayAbilitySpecHandle과 활성 Effect Handle을 저장해 제거 가능하게 합니다. 팀 변경 시 이전 Team.* Tag와 팀 오라 Effect Handle을 제거한 뒤 새 팀 상태를 적용합니다. 부활 초기 Attribute는 별도 Initialize Effect로 서버가 설정합니다.

5. 코드가 동작하는 이유​

ASC의 장기 수명과 Pawn의 짧은 수명을 구분하므로 새 Avatar가 같은 플레이어 상태를 이어받을 수 있습니다. Handle 기반 부여·제거는 중복을 막고, Tag 정책은 죽음마다 무엇을 유지할지 코드 밖 데이터와 함께 검토하게 합니다.

6. 실패 사례와 해결​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

사망, 부활, 팀 변경에서 GAS 상태 관리하기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“사망, 부활, 팀 변경에서 GAS 상태 관리하기”에서 혼동하기 쉬운 개념을 올바르게 연결한 것은 무엇인가요?
  2. 문제 2“사망, 부활, 팀 변경에서 GAS 상태 관리하기”에서 ‘사망 때 모든 Effect 삭제’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

40강. 사망, 부활, 팀 변경에서 GAS 상태 관리하기 미완료 상태