언리얼 GAS 심화 개념 (11.26)

이정국(PBD)·2025년 11월 26일

TIL

목록 보기
63/70

1. 요약 한 문장

GAS는 능력 Ability, 효과 GameplayEffect, 속성 Attribute, 태그 GameplayTag, 시각효과 GameplayCue를 통해 스킬과 버프 디버프 쿨다운 같은 게임플레이 규칙을 서버 클라이언트 환경에서 안전하게 구현하는 시스템

2. 핵심 구성요소

1 Ability

UGameplayAbility 기반 스킬 로직
입력으로 활성화되고 흐름은 Commit Activate End
중요한 계산은 서버가 처리해야 안전함

2 GameplayEffect

GAS에서 상태 변경의 기본 단위
Instant Periodic Scoped 타입이 있음
Attribute 변경 태그 적용 같은 상태 조작 담당

3 AttributeSet

체력 마나 힘 같은 값들을 묶어두는 클래스
직접 수정하지 않고 GE로 변경해야 복제와 보안이 안전함

4 GameplayTag

Stunned Rooted Invulnerable 같은 상태를 나타내는 태그
스킬 간 차단 우선순위 취소 조건 같은 로직을 깔끔하게 만듦

5 GameplayCue

시각 효과와 사운드용 시스템
효과 발생 때 서버가 트리거하면 각 클라이언트에서 FX가 재생됨

6 AbilitySystemComponent

캐릭터에 붙는 GAS의 핵심 컴포넌트
Ability Attribute GameplayEffect를 모두 관리함

3. 워크플로우 예시

간단 화염구 기준

1 AttributeSet에 Health Mana 정의
2 FireballDamage라는 Instant GE 생성
3 GA Fireball에서 마나 체크 Commit 발사체 생성 타격 시 GE 적용
4 충돌 이펙트는 GameplayCue에서 처리

4. 네트워크와 복제에서 중요한 점

1 Attribute 변경은 반드시 서버 권한에서 처리
2 클라이언트 예측은 빠른 피드백용이지만 서버와 충돌하면 롤백이 일어남
3 AttributeSet은 자주 바뀌면 복제 비용이 커지니 관리 필요
4 Ability 인스턴싱 정책을 잘못 설정하면 멀티플레이에서 버그 나기 쉬움

5. 자주 터지는 문제 체크리스트

1 Ability가 서버에서 실행되는지
2 GE 스펙이 제대로 생성되는지
3 AttributeSet 값이 복제되고 있는지
4 태그가 의도대로 붙고 지워지는지
5 예측키 PredictionKey 충돌이 없는지

6. 실전 팁

1 태그 기반으로 상태를 통일하면 스킬 상호작용이 엄청 깔끔해짐
2 쿨다운과 코스트는 GE로 분리해두면 재사용이 쉬움
3 Attribute 직접 수정 절대 금지 GE로만 변경
4 Periodic GE 남발하면 성능 터짐 이벤트 기반 우선
5 Cue는 시각효과 전용으로 유지하고 게임 로직 넣지 말기

profile
창백한 푸른점 속 작은점

0개의 댓글