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

GAS 디버깅 도구와 로그 읽기

난이도심화
예상 시간190분
선수지식40강의 ASC 수명 관리

41강. GAS 디버깅 도구와 로그 읽기

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

“Ability가 안 된다”는 증상만으로는 ActorInfo, 부여, Tag 차단, Cost, Cooldown, Ownership, 입력 중 어디가 원인인지 알 수 없습니다. 서버와 각 클라이언트의 ASC 상태를 같은 순서로 수집하는 진단 절차가 필요합니다.

2. 학습 목표​

3. 핵심 개념​

진단 순서는 ASC 존재 → Owner/Avatar → Ability Spec → 입력/활성화 → Required·Blocked Tag → Cost·Cooldown → TargetData → Effect/Cue입니다. showdebug abilitysystem과 Gameplay Debugger의 제공 항목·키는 UE5 버전과 프로젝트 플러그인 설정에 따라 달라질 수 있으므로 현재 엔진에서 확인합니다.

4. 구현​

ASC 상태 덤프
void UGASAbilitySystemComponent::DumpCourseState() const
{
UE_LOG(LogGASCourse, Log, TEXT("Owner=%s Avatar=%s Auth=%d"),
*GetNameSafe(GetOwnerActor()), *GetNameSafe(GetAvatarActor()),
IsOwnerActorAuthoritative());

FGameplayTagContainer Tags;
GetOwnedGameplayTags(Tags);
UE_LOG(LogGASCourse, Log, TEXT("Tags=%s"), *Tags.ToStringSimple());

for (const FGameplayAbilitySpec& Spec : GetActivatableAbilities())
{
UE_LOG(LogGASCourse, Log, TEXT("Spec=%s Active=%d Input=%d"),
*Spec.Handle.ToString(), Spec.IsActive(), Spec.InputPressed);
}
}

Ability 실패 Delegate를 연결해 실패 Tag를 사용자 메시지와 개발 로그로 분리합니다. PIE 창 제목, 프로세스 ID 또는 NetMode 접두사를 로그에 넣고 서버 시간과 Prediction Key를 함께 남깁니다. 사용자 TargetData나 개인정보를 전체 덤프하지 않습니다.

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

고정 순서로 상태를 수집하면 앞 단계가 깨졌는데 뒤 단계만 추적하는 낭비를 줄입니다. 같은 포맷의 로그를 세 실행 위치에서 비교하면 서버에는 Spec이 없거나 소유 클라이언트에만 Tag가 남은 불일치를 찾을 수 있습니다.

6. 실패 사례와 해결​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

GAS 디버깅 도구와 로그 읽기 미니 퀴즈

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

0 / 2
  1. 문제 1“GAS 디버깅 도구와 로그 읽기”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2‘Output Log 한 창만 확인’ 실수를 판단할 때 “GAS 디버깅 도구와 로그 읽기” 강의가 제시한 기준은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

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

41강. GAS 디버깅 도구와 로그 읽기 미완료 상태