일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 애셋로드
- 람다사용정렬
- unorder_map
- BFS
- 데이터애셋
- C++최적화
- 프로그래머스
- moreeffectiveC++
- enumasByue
- 알고리즘
- 델리게이트
- 람다
- UML관련
- 약참조
- 자료구조
- UELOG
- 정렬알고리즘
- 크리티컬섹션
- UE4 커스텀로그
- stl
- 언리얼엔진구조체
- 강참조
- UE_LOG
- C++
- 언리얼가비지컬렉터
- 스마트포인터
- map
- 정렬
- 선택정렬
- dataasset
- Today
- Total
기억을 위한 기록들
[Game Ability System] #4. GameplayEffect 에 관해 본문
GE(GameplayEffect) 라고도 불리고, 영어로 Effect로 불려서 VFX(특수효과)랑 헷갈릴수도 있는데, "영향을 준다" 라는 뜻으로 이해하면 되겠다.
GAS는 게임에 영향을 주는 객체를 별도로 분리해서 관리한다. 영향을 준다는 것은 대부분 게임 데이터를 변경 하는것을 의미하고, 대부분 GE와 어트리뷰트(Attribute)는 함께 동작하도록 구성되어 있다.
GAS 시스템에서 가장 많은 기능을 제공하는 클래스이기도 하다.
GE 타입 3가지
1. Instant : 즉시 적용되는 GE. 한 프레임에 실행된다.
2. Has Duration : 지정한 시간동안 동작하는 GE
3. Infinite : 명시적으로 종료하지 않으면 무한하게 동작하는 GE
GE에서 어트리뷰트의 변경 방법을 지정한 설정 할 수 있는 모디파이어(Modifier/수정자)라는게 있다.
모디파이어 사용방법
- 적용할 어트리뷰트의 지정
- 적용 방식(Modifier OP)의 설정 : 더하기, 곱하기, 나누기, 덮어쓰기
모디파이어계산 방법(Magnitude Calculation Type)
- ScalableFloat : 실수
- AttrubutedBase : 특정 어트리뷰트에 기반
- CustomCalculationClass : 계산을 담당하는 전용 클래스의 활용
- SetBtCaller : 데이터 태그를 활용한 데이터 전달
모디파이어 없이 자체 계산 로직을 만드는 것도 가능 (GameplayEffectExecutionCalculation)
GE의 생성과정
1. EffectContext (FGameplayEffectContext)와 2. EffectSpec(FGameplayEffectSpec)을 통해 생성 할 수 있다.
- EffectContext는 GE에서 계산이 필요한 데이터를 담은 객체로 Instigator(가해자), Causer(수단), HitResult 등이 담겨져 있다.
- EffectSpec은 GE에 관련된 정보를 담고 있는 객체로, 레벨 및 모디파이어 및 각종 태그 정보, Handle등이 있다.
ASC는 각 데이터를 핸들 객체를 통해 간접적으로 관리한다.
순서는 1. EffectContext 를 만들어서 GE 계산에 필요한 정보를 모은 다음 2. EffectSpec을 생성해야한다.
각각 둘을 관리하는 구조체를 주로 사용한다.
FGameplayEffectContextHandle 구조체
코멘트 : FGameplayEffectContext 또는 하위 클래스를 둘러싸는 핸들을 사용하여 다형성 및 복제를 적절히 수행할 수 있습니다
FGameplayEffectSpecHandle 구조체
코멘트 : Blueprint에서 게임 플레이 효과 스펙을 한 번 생성한 다음 핸들별로 참조하여 여러 번/여러 대상에 적용할 수 있습니다.
'UnrealEngine' 카테고리의 다른 글
[Unreal] CDO에 관하여 (0) | 2024.04.19 |
---|---|
[UE] 언리얼에서의 네트워킹 과 리플리케이트 / 리플리케이션에 관하여 (0) | 2024.04.02 |
[Game Ability System] #3. GamePlayTag에 관해 (0) | 2024.01.21 |
[UnrealEngine] Common UI(일반 UI) 플러그인이란? (1) | 2024.01.11 |
[UnrealEngine] 데이터 테이블(DataTable) vs 데이터 애셋(Data Asset) (0) | 2023.12.26 |