언리얼 GAS 사용법 2
GAS 사용 범주
언리얼 GAS 사용법 2
GAS 사용 범주
ASC
GAS 기능 하나라도 쓰는 액터
사용:
- 플레이어, 적, 보스: 항상
- 플랫폼, 트랩: GE를 주고받을 때
불필요:
- 플랫폼, 트랩: GE를 주기만 할 때
- 순수 환경 오브젝트
AttributeSet
수치로 관리되는 상태가 있을 때
사용:
- HP, 데미지, 스테미너
불필요:
- 쿨타임, 지속시간 상태 플래그: 태그로 처리
- 플랫폼, 발사체
GameplayEffect
상태 변경이 필요할 때
사용:
- 힐/데미지 적용
- 버프/디버프
- 스턴
- 쿨타임
주의:
- 즉각적인 로직 처리는 함수로 호출하는 게 나을 수 있음
GameplayAbility
플레이어/AI가 발동시키는 행동
사용:
- 공격, 스킬, 점프, 대시 (입력에 바인딩)
- 마나(비용) 관리
불필요:
- 일방적으로 가해지는 효과: GE에서 직접 Apply
- 단순 환경 트리거: 함수 호출하는 게 나을 수 있음
GAS 용례
체력 (HP)
GAS로 구현하는 게 표준.
| 구성 | 역할 |
|---|---|
| UAttributeSet | HP, MaxHP 수치 보관 |
| UGameplayEffect | 데미지/힐 적용 |
| ASC | 어트리뷰트/이펙트 관리 |
무기 장착 / 방어구 장착
장착 자체(소켓에 메시 붙이기, 인벤토리 슬롯 관리)는 일반 Actor/Component 로직.
GAS 개입 시점:
| 시점 | GAS 역할 |
|---|---|
| 장착 완료 후 | 무기/방어구가 주는 패시브 스탯 → GE로 어트리뷰트 수치 변경 |
| 장착 완료 후 | 무기 고유 스킬 해금 → GA 부여 (GiveAbility) |
| 해제 시 | 해당 GE 제거, GA 회수 |
무기 스왑
스왑 자체는 일반 로직. 단, 아래 조건 중 하나라도 해당하면 GA로 묶는 게 맞다.
GA로 묶어야 하는 경우:
- 스왑 중 다른 행동 차단 필요 (태그로 Ability.Swap 중 공격/대시 블록)
- 스왑 쿨타임 관리
- 스왑 중 피격 시 캔슬 조건
- 스왑 애니메이션 완료 후 장착 확정 (AbilityTask: PlayMontageAndWait)
- 네트워크 예측 필요
단순 인벤토리 슬롯 교체만이면 GA 불필요.
공격
공격에 엮이는 것들 때문에 GAS가 필요하다.
단순 히트박스 판정만 있으면 GAS 필요 없음.
실제 공격에 붙는 것들:
- 공격 중 다른 스킬 차단 (태그)
- 쿨타임 관리
- 히트 시 데미지 → 어트리뷰트 수치 변경 (GE)
- 버프/디버프 적용 (스턴, 슬로우 등)
- 콤보/상태 조건 (HP 50% 이하일 때만 발동 등)
- 네트워크 예측 (Prediction Key)
GAS = “조건 있는 행동 + 그 결과로 수치/상태 변경”을 다루는 시스템 → 공격이 그 정의에 딱 맞는다.
크래프팅
오버엔지니어링. GAS가 풀려는 문제와 결이 다르다.
크래프팅의 본질: 재료 소모 → 아이템 생성 = 인벤토리 데이터 조작. GAS는 인벤토리 개념 자체가 없음.
GAS 개입이 정당한 케이스:
- 크래프팅 행동에 채널링 시간, 피격 중단, 캔슬 조건이 있을 때 → GA로 묶는 것만
크래프팅 시스템 본체는 별도 시스템으로 구현.
This post is licensed under CC BY 4.0 by the author.