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
0 / 2GAS 디버깅 도구와 로그 읽기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
41강. GAS 디버깅 도구와 로그 읽기 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.