1. 게임플레이 어빌리티 시스템(Gameplay Ability System - GAS)

RPG와 MOBA 같은 게임에서 속성, 스탯, 쿨타임, 이펙트 발생을 효율적으로 구현하기 위한 시스템이다.

 

(1) 구성 요소

- 어빌리티 시스템 컴포넌트(Ability System Component)

캐릭터가 GAS를 사용할 수 있도록 적용할 수 있다.

 

- 속성 셋(Attribute Set)

체력, 마나, 지력 등 여러 속성들의 집합.

 

- 게임플레이 어빌리티(Gameplay Ability)

공격, 주문 시전, 상자 열기 등의 게임플레이에 필요한 동작들을 포함.

 

- 어빌리티 태스크(Ability Task)

모든 작업을 비동기적으로 실행한다.


- 효과 (Gameplay Effects ; 이펙트)

버프, 디버프, 속성의 값을 변화시킴.


- 큐 (Gameplay Cues)

불덩이가 닿으면 타는 소리와 효과가 발생함.

 

- 태그 (Gameplay Tags)

각 요소들을 명확하게 구분하고 판별할 수 있게 해준다.

 

 

(2) 작동 방식

폰에 직접 추가하거나 플레이어 스테이트에 추가하여 사용할 수 있다.

 

(2-1) 폰에 직접 추가하는 방법

- 폰이 제거되는 순간 속성 셋과 컴포넌트 모두 제거된다.

- 새로운 폰을 다시 생성하면 속성 셋과 컴포넌트가 새롭게 생성되어 기본 값을 가진다.

- 죽으면 제거되는 Enemy 클래스에 적합.

 

(2-2) 플레이어 상태(Player State)에 추가하는 방법

- 폰이 제거되지만 플레이어 상태에 속성 셋과 컴포넌트가 유지된다.

- 새로운 폰을 다시 생성(부활)해도 속성 셋과 컴포넌트가 기존의 값을 유지한다.

- 죽으면 부활할 수 있는 Player 클래스에 적합

따라서 1번 방법을 적 클래스, 2번 방법을 플레이어 스테이트에 적용한다.

 

(3) 구현 순서

1) 플레이어 상태 클래스

2) 어빌리티 시스템 컴포넌트

3) 속성 셋