티스토리 뷰

The Main Parts of GAS

저번 강의에서 좀 더 나아가서, GAS의 핵심에 대해서 알아보자.


1. Ability System Component (ASC)

가장 핵심이 되는 컴포넌트이며, Actor에 추가되는 컴포넌트이며 다음 역할을 담당한다.

<주요 기능>
Ability 부여
Ability 활성화
Gameplay Effect 적용
Ability 실행 이벤트 처리
GAS 시스템 전체 관리

 

위와 같은 기능을 가지며, GAS의 중앙 관리자 역할을 한다.

GAS를 사용하는 캐릭터는 반드시 Ability System Component를 가져야 한다.


2. Attribute Set

캐릭터의 능력치를 저장하는 클래스이다.

<예시 속성>
Health
Mana
Attack
Defense
Critical Chance

 

AttributeSet은 단순히 값만 저장하는 것이 아니라 GAS의 여러 시스템과 연결되는 구조를 제공한다.

<예시 구조>
AttributeSet
 ├ Health
 ├ Mana
 ├ AttackPower
 └ Defense

3. Gamplay Ability

캐릭터가 수행할 수 있는 행동이다.

<예시>
공격
마법 시전
대쉬
점프
패시브 능력

 

Gameplay Ability는 하나의 클래스 안에 해당 능력의 로직을 캡슐화한다.

<예시>
FireballAbility
DashAbility
HealAbility

4. Ability Task

Gameplay Ability 내부에서 사용하는 비동기 작업 시스템이다.

Ability는 즉시 끝날 수도 있지만, 일정 시간 동안 진행되는 경우도 있다.

<예시>
애니메이션 대기
타겟 지정 대기
일정 시간 후 실행
이벤트 대기

 

즉, Ability Task는 Ability의 실제 작업을 수행하는 실행 단위라고 볼 수 있다.


5. Gameplay Effect

속성(Attribute)을 변화시키는 시스템이다.

<가능한 기능>
즉시 값 변경
시간 동안 지속되는 효과
주기적 변화
여러 속성을 고려한 계산

<예시>
DamageEffect
HealthRegenEffect
BuffAttackEffect
SlowEffect

<예시 흐름>
Ability 사용
 ↓
GameplayEffect 적용
 ↓
Attribute 변화

6. Gamplay Cue

시각적 / 청각적 효과 처리 시스템이다.

<예시>
파티클
사운드
이펙트
애니메이션

FireballExplosion
HitImpactEffect
HealEffect

7. Gameplay Tag

Gameplay Tag는 GAS뿐만 아니라 언리얼 전체에서 사용하는 식별 시스템이다.

<특징>
계층 구조
문자열 기반 태그
매우 높은 확장성

<예시>
Ability.Fire
Ability.Heal
State.Stunned
Damage.Fire

 

Ability 조건, 상태 체크, Effect 필터링, 이벤트 식별등의 용도로 사용된다.


GAS 핵심 구성 요약

AbilitySystemComponent  (시스템 관리자)
AttributeSet            (능력치)
GameplayAbility         (행동)
AbilityTask             (Ability 작업 실행)
GameplayEffect          (능력치 변화)
GameplayCue             (시각 / 사운드 효과)
GameplayTag             (시스템 식별)

ASC와 ArributeSet 위치 설

GAS를 구현할 때 ASC와 AttributeSet을 어디에 둘지 결정해야 한다.

보통 Pawn/Character에 두는 방식과, PlayerState에 두는 방식이 존재한다.

 

Pawn/Character의 두는 방식은 구조가 단순하며, AI캐릭터에 적합하다.

대신, 캐릭터가 죽으면 데이터도 사라지는 단점이 존재한다.

Character
 ├ AbilitySystemComponent
 └ AttributeSet
 
 --------------------------
 
 캐릭터 사망
 ↓
Pawn Destroy
 ↓
ASC / AttributeSet 삭제

 

PlayerState에 두는 방식은 캐릭터가 죽어도 데이터가 유지되며, 리스폰 시 능력이 유지된다. 

따라서 플레이어 자체의 데이터와 캐릭터 객체를 분리해서 관리할 수 있다.

PlayerState
 ├ AbilitySystemComponent
 └ AttributeSet
 
 --------------------------
 
 Character 죽음
 ↓
Pawn Destroy
 ↓
PlayerState 유지
 ↓
새 Pawn 생성
 ↓
기존 능력 유지

 

강의 프로젝트에서는 두 가지 방식을 모두 사용하여, 플레이어 캐릭터에는 PlayerState 방식을, 적 캐릭터에는 Pawn/Character 방식을 적용하여 사용할 것이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함