주요 구성 요소
- Ability System Component (ASC):
- ASC는 GAS에서 가장 중요한 요소 중 하나로, 액터에 추가될 수 있는 컴포넌트입니다.
- 주요 역할:
- 능력(Abilities)을 부여하고 활성화.
- 능력 활성화 및 효과 적용 시 알림(Notification) 처리.
- ASC는 GAS를 사용하는 모든 캐릭터에 반드시 추가해야 합니다.
- Attribute Set:
- 속성(Attributes)은 모든 게임에서 중요한 역할을 하며, 캐릭터 또는 객체와 연관됩니다.
- 예: 체력(Health), 마나(Mana), 기타 속성.
- Attribute Set은 속성을 저장하며, GAS 시스템의 다른 요소들과 연동됩니다.
- Gameplay Abilities:
- Gameplay Ability는 캐릭터나 객체가 수행할 수 있는 기능을 캡슐화한 클래스입니다.
- 예: 공격, 마법 시전.
- 모든 관련 코드와 기능이 특정 Gameplay Ability 클래스 내에 보관됩니다.
- Ability Tasks:
- Ability Tasks는 비동기 작업을 처리하며, 특정 작업이 완료될 때까지 지속됩니다.
- 작업이 즉시 완료되거나 일정 시간 동안 지속될 수 있습니다.
- Ability Tasks는 Gameplay Ability가 수행할 작업을 실행하는 역할을 합니다.
- Gameplay Effects:
- 속성 값을 변경하거나, 주기적으로 증가/감소시키거나, 특정 계산을 통해 속성에 영향을 줍니다.
- 속성 변경을 처리하는 주요 시스템입니다.
- Gameplay Cues:
- 파티클 효과와 사운드 같은 시각적/청각적 효과를 처리합니다.
- 네트워크 복제를 지원하여, 클라이언트 간 일관성을 유지합니다.
- Gameplay Tags:
- GAS 전용이 아닌, 언리얼 엔진의 다른 시스템에서도 사용 가능한 태그 시스템입니다.
- 계층적 구조로 설계되어, 간단한 변수(예: enum, boolean)보다 유연합니다.
ASC와 Attribute Set의 배치
- ASC와 Attribute Set을 어디에 배치할지 결정하는 것은 어떻게 설계 상 선택이다.
- 배치 위치 옵션:
- Pawn에 직접 추가:
- 간단한 적(AI) 캐릭터와 같이 복잡하지 않은 경우 적합.
- Pawn이 파괴되면 ASC와 Attribute Set도 함께 파괴됩니다.
- Pawn이 리스폰되면 ASC와 Attribute Set이 초기값으로 다시 생성됩니다.
- Player State에 추가:
- 플레이어 캐릭터의 경우 적합.
- Player State는 Pawn과 독립적으로 유지되므로, Pawn이 파괴되어도 ASC와 Attribute Set이 유지됩니다.
- 리스폰 시 기존 데이터를 그대로 사용할 수 있습니다.
- ASC와 Attribute Set을 Pawn에 추가:
- 적(AI) 캐릭터는 단순한 구조를 가질 수 있으며, Player State가 필요하지 않은 경우 적합.
- 예: 적 캐릭터는 ASC와 Attribute Set을 직접 Character 클래스에 추가하여 단순화.
- ASC와 Attribute Set을 Player State에 추가:
- 플레이어 캐릭터의 데이터를 유지해야 하는 경우 적합.
- 예: 플레이어가 죽고 리스폰되더라도 기존 속성과 능력을 유지해야 할 때.