보키_기록용
[GameplayAbilitySystem] 정리 본문
중요 요소
- Ability System Component : Gameplay Ability System의 심장. System의 모든 상호작용을 다룬다.
- Gameplay Abilities : 게임에서 할 수 있는 모든 행동이나 기술. 한 번에 둘 이상을 활성화 할 수 있다.
- Ability Task : 보다 일반적인 Gameplay Task (게임플레이 태스크) 클래스를 상속받아 Gameplay Abilities (게임플레이 어빌리티)내에서만 사용가능한 특수한 형태.
- Gameplay Abilities를 더 유연하게 사용하기 위해 시간이 지남에 따라 발생하거나 특정 시점에 실행되는 Delegate를 사용할 때 쓴다.
- BP로 구현할 수 없고 C++로만 작성할 수 있다.
- Ability Task : 보다 일반적인 Gameplay Task (게임플레이 태스크) 클래스를 상속받아 Gameplay Abilities (게임플레이 어빌리티)내에서만 사용가능한 특수한 형태.
- Attribute Set
- FGameplayAttributeData 구조체에 정의된다.
- current/max health (현재/최대 생명력), mana (마나), attack (공격) 및 defense (방어) buffs (버프), movement speed (이동 속도), 대미지 산출 공식에 사용되는 temporary damage (임시 대미지) 어트리뷰트를 정의
- 영구적인 변경으로만 수정되는 Base value (기본 값)과 임시 버프/디버프로 수정되는 Current value (현재 값)을 저장
- Attribute는 일반적으로 GameplayEffects에서만 수정한다.
- Gameplay Effects : 게임 액션의 결과. Ability로 인해 변경되는 Attribute와 GameplayTags를 관리하기 위한 컨테이너.
- Data-Only Class이므로 로직은 추가하면 안됨.
- Type : Instant(즉시 변경), Duration(매 초마다 변경), Infinite(영구적으로 변경)
- Gameplay Tags : 사용자 정의 이름을 붙인 개념적 계층형 라벨
- "." 글자로 구분되는 계층구조를 몇 단계든 가질 수 있다. ex) "Family.Genus.Species"
- 아무 오브젝트에 추가하고 개념적 라벨을 할당한 뒤 프로젝트의 요구에 따라 식별, 일치, 분류, 필터 적용이 가능.
FGameplayTag::RequestGameplayTag(FName("Your.GameplayTag.Name"))
- Gameplay Cues : Sound나 Particle Effect, Camera Shake 같은 게임 외적의 것들을 실행한다.
Gameplay Ability System의 이점
- Network Replication : GAS가 알아서 내부 로직으로 처리하기 때문에 Attribute 등 올바른 적용 및 Replicate에 대해 걱정할 필요가 없다.
- 모듈성 : 새 Ability를 구현하고 부여하거나 게임 메커니즘을 추가하거나 변경하는 것이 쉽다.
- ex ) 체력은 자체 Attribute Set로 구분되어, 다양한 시스템의 Gameplay Effect를 통해 상호작용할 수 있다.
- 빠른 반복작업 : 전체 시스템을 수정하지 않고도 개별 게임 규칙을 쉽게 변경할 수 있다. 게임 계산용 데이터 소스를 쉽게 교환할 수 있고, 해당 Gameplay Effect를 수정함으로써 액션의 결과를 변경할 수 있다.
관련 글
Gameplay Ability System 시작하기 (tistory.com)
Gameplay Ability System 시작하기
System Setup 플러그인 편집창에서 Gameplay Abilities 활성 (프로젝트이름).build.cs 파일에 PublicDependencyModuleNames에 "GameplayAbilities", "GameplayTags"및 "GameplayTasks"를 추가한다. PublicDepend..
bokki0117.tistory.com
Ability 써서 체력 닳게 하기 (1) (tistory.com)
Ability 써서 체력 닳게 하기 (1)
이어서 Gameplay Ability System 기초 정리 System Setup 플러그인 편집창에서 Gameplay Abilities 활성 (프로젝트이름).build.cs 파일에 PublicDependencyModuleNames에 "GameplayAbilities", "GameplayTags"및..
bokki0117.tistory.com
Ability 써서 체력 닳게 하기 (2) (tistory.com)
Ability 써서 체력 닳게 하기 (2)
WaitSuccessFailEvent 원래는 엔진에 있던 Wait Gamplay Event 썼는데 결과 값에서 적이 맞든 안맞든 같은 결과가 나와서 Custom함. 따라서 기본 골자는 Wait Gamplay Event를 따라간다. #include "CoreMinimal.h"..
bokki0117.tistory.com
Ability C++로 만들기 (tistory.com)
Ability C++로 만들기
전에 공부했던 Gameplay Ability System 관련해서 예제들이 Ability를 다 BP로 만들어서 C++로 만들어보고자 한다. 위 링크 글에서 GA_Punch를 C++로 만들기 #include "CoreMinimal.h" #include "Core/Ability/GAS..
bokki0117.tistory.com
참고
액션 RPG 의 게임플레이 어빌리티 | 언리얼 엔진 문서 (unrealengine.com)
액션 RPG 의 게임플레이 어빌리티
ARPG 에서 Gameplay Abilities 를 사용한 방법에 대한 설명입니다.
docs.unrealengine.com
언리얼 엔진의 게임플레이 어빌리티 시스템 | 언리얼 엔진 5.0 문서 (unrealengine.com)
게임플레이 어빌리티 시스템
게임플레이 어빌리티 시스템 개요
docs.unrealengine.com
게임플레이 태그 | 언리얼 엔진 문서 (unrealengine.com)
게임플레이 태그
게임플레이 태그는 오브젝트 식별, 분류, 일치, 필터링에 사용 가능합니다.
docs.unrealengine.com
GitHub - tranek/GASDocumentation: My understanding of Unreal Engine 4's GameplayAbilitySystem plugin with a simple multiplayer s
My understanding of Unreal Engine 4's GameplayAbilitySystem plugin with a simple multiplayer sample project. - GitHub - tranek/GASDocumentation: My understanding of Unreal Engine 4's Gamepl...
github.com
[UE] AbilityTask について全部書くよ - Qiita
[UE] AbilityTask について全部書くよ - Qiita
はじめに AbilityTask は GameplayAbility の実行中に実行できる自己完結型のタスクです。タスクは「何かを開始し、イベントを受信、または終了するまで待つ」という非同期処理を提供します。こ
qiita.com
언리얼 엔진에서 라이라의 어빌리티 | 언리얼 엔진 5.0 문서 (unrealengine.com)
라이라의 어빌리티
라이라에서 게임플레이를 위해 게임플레이 어빌리티 시스템을 사용한 방식을 간략하게 살펴봅니다.
docs.unrealengine.com
'언리얼 > Framework' 카테고리의 다른 글
[Common UI] 시작하기 (0) | 2022.10.11 |
---|---|
[GameplayAbilitySystem] DOREPLIFETIME_CONDITION_NOTIFY에 대해 (Prediction) (0) | 2022.09.01 |
[GameplayAbilitySystem] Ability C++로 만들기 (0) | 2022.08.30 |
[GameplayAbilitySystem] Ability 써서 체력 닳게 하기 (2) (0) | 2022.08.26 |
[GameplayAbilitySystem] Ability 써서 체력 닳게 하기 (1) (0) | 2022.08.26 |