gas 4

[언리얼 GAS 이해하기] #4 GameplayEffect는 어떻게 능력치를 바꿀까?

GameplayEffect란?GameplayEffect(GE)는 GAS에서 능력치(Attribute)를 변경하는 역할을 하는 객체이다.쉽게 말하면,"Attribute를 어떻게 바꿀지 정의해 놓은 규칙" 이라고 생각하면 된다.예를 들어데미지를 받는다.체력을 회복한다.이동속도가 빨라진다.독에 걸려 지속적으로 피해를 입는다.이 모든 것이 GameplayEffect로 구현된다.왜 GameplayEffect가 필요할까?예를 들어 플레이어의 체력을 20 감소시키고 싶다고 해보자.일반적인 방식이라면Health -= 20.f;처럼 직접 값을 수정하면 된다.하지만 GAS에서는 이렇게 하지 않는다.대신 GameplayEffect를 생성해서 Attribute를 변경한다.Damage Effect ↓ASC ..

TIL 2026.06.25

[언리얼 GAS 이해하기] #3 Attribute와 float 변수의 차이

Attribute는 그냥 float 아닌가?GAS를 처음 공부하면 이런 생각이 든다. float Health = 100.f;float Stamina = 50.f; 체력과 스태미나를 저장하는데 문제가 없어 보인다.그런데 GAS에서는 보통 이렇게 사용하지 않는다. FGameplayAttributeData Health;FGameplayAttributeData Stamina; 왜 굳이 더 복잡한 구조를 사용할까?먼저 float의 특징float는 단순히 숫자 하나를 저장하는 변수다. float Health = 100.f;Health -= 20.f; 실행 결과Health = 80 끝이다.float는누가 값을 바꿨는지왜 바뀌었는지버프 때문인지디버프 때문인지전혀 알 수 없다.그냥 숫자만 저장한다.GAS는 숫자 이상의 ..

TIL 2026.06.24

[언리얼 GAS 이해하기] #2 AttributeSet은 왜 따로 존재할까?

AttributeSet이란?AttributeSet은 GAS에서 캐릭터의 능력치(Attribute)를 저장하는 클래스이다.예를 들어 RPG 캐릭터라면HPMPStaminaMoveSpeedAttackPower같은 값들이 AttributeSet 안에 저장된다.Player └─ ASC └─ AttributeSet ├─ HP ├─ Stamina ├─ MoveSpeed └─ AttackPower 그런데 왜 ASC 안에 바로 넣지 않을까?처음 보면 이런 생각이 든다. ASC{ float HP; float Stamina; float MoveSpeed;} 이렇게 하면 되는데 왜 굳이 별도 클래스를 만들었을까?답은능력치 관리만 ..

TIL 2026.06.23

[언리얼 GAS 이해하기] #1 ASC(Ability System Component)란?

ASC란?ASC(Ability System Component)는 GAS(Gameplay Ability System)의 중앙 관리자이다.한 줄로 표현하면,"Ability, Effect, Attribute, Tag를 관리하는 GAS의 컨트롤 타워"라고 할 수 있다.왜 ASC가 필요할까?게임 캐릭터는 다양한 기능을 가지고 있다.예를 들어 달리기 기능만 생각해 보자.입력↓PlayerCharacter↓StatComponent↓이동속도 증가↓스태미나 감소하나의 기능을 처리하기 위해 여러 클래스와 컴포넌트가 관여하게 된다.기능이 많아질수록 관리도 복잡해진다.GAS는 이러한 상태 관리와 능력 관리를 하나의 시스템으로 통합했고,그 중심에 ASC가 존재한다.ASC를 비유하면?마트 게임으로 비유하면 ASC는 점장이다.직원들..

TIL 2026.06.22