TObjectPtr<>Raw 포인터, 즉 USkeletalMeshComponent\* 와 같이 기존 포인터 연산자를 이용하여 선언하던 포인터와 작동은 동일함.다만, 엑세스 추적이나 선택적 지연 로드 등에 더 용이한 측면이 있어, 언리얼 코드 표준은 점차 TObje
Interface인터페이스 가상 함수 선언 시, 함수 내용을 정의하는 것이 번거로울 때가 있다.TScriptInterface인터페이스 변수를 담기 위한 템플릿 래퍼.예를 들어, IEnemyInterface 변수를 담기 위해서는 아래와 같이 하면 된다.커서 아래의 몬스터
Gameplay Ability System (GAS)의 구성AbilitySystemComponentGAS의 영향을 받는 캐릭터들이 반드시 지녀야 하는 컴포넌트.AttributeSet생명력, 마나 등 속성 등을 정의하는 곳.GameplayAbility캐릭터가 할 수 있는

생성자에서 AbilitySystemComponent, AttributeSet 구성AuraCharacterBase에서 UAbilitySystemComponent 및 UAttributeSet 변수를 생성함.GAS는 AbilitySystemComponent에 편하게 접근할

프로젝트 컴파일 오류Visual Studio Integration Tool을 설치하려다가 뭔가 잘못된건지 컴파일 에러가 발생함.CoreMinimal.h와 같은 가장 기본적인 언리얼 헤더 파일들을 E1696 에러코드가 발생.(헤더 파일들을 파악하지 못함)여러 방법을 시도
Attribute AccessorsAttributeSet.h에서 제공하는 Getter, Setter, Initter 매크로를 통해 별도의 Getter, Setter, Initter 함수를 구현할 필요 없이 손쉽게 사용할 수 있음.또한, 해당 매크로들을 매 번 입력할 필
Component Overlap Delegate컴포넌트의 OnComponentBeginOverlap, OnComponentEndOverlap 이벤트에 바인딩해주기 위한 함수를 각각 선언 및 구현해주어야 한다.함수의 매개변수는 바인딩 할 델리게이트를 찾아보면 알 수 있다

RPG Game UI Architecture 개요게임은 현재 플레이어의 상태 등의 여러 정보를 플레이어의 화면 위에 노출시켜야 한다.언리얼에서 이를 Widget이라는 수단으로 표현하며, UUserWidget 클래스를 상속한다.위젯은 플레이어에게 표현해주기 위한 데이터를

Initializing WidgetController & WidgetsModel ← WidgetController ← Widget의 단방향 참조 구조를 만들었고,이제 WidgetController와 Widget이 필요한 정보를 초기화하도록 해야 함.UAuraUserWi

GameplayEffect UGameplayEffect를 상속하는 클래스Attribute, GameplayTag를 변경하는 기능을 함.GameplayTag는 사물의 상태를 표현하는 데 사용함.UGameplayEffect를 상속하여 새로운 클래스를 만들거나 하지 않으며
Apply GameplayEffect (ApplyGameplayEffectSpecToSelf)AuraEffectActor를 변경하여, 세부 사항은 블루프린트를 이용하여 구현할 수 있도록 하는 기본 클래스의 역할을 하도록 만드려고 함.기존의 AttributeSet에 직접
빌드 관련 문제배경: 어제까지의 진행 상황을 한번 커밋해두려는데, 첫 커밋에 실수로 Saved/Intermediate 폴더를 .gitignore에 등록하기 전에 커밋해버려서 계속 스테이지에 올라오는 것이 너무 거슬려 이를 정리하려 했다.Saved/Intermediate

Gameplay Effect Duration Policy InstantGameplayEffect의 DurationPolicy를 Instant로 설정한 경우에 해당함.단발성이며, FGameplayAttributeData의 BaseValue를 영구적으로 변화시킴.Dura

PreAttributeChange Attribute가 변경되기 전에 호출되는 함수.Attribute의 값이 변경되는 범위를 Clamp 처리 해주는 대에 사용할 수 있다.AttributeSet에서 PreAttributeChange()를 오버라이드 하여 사용하여야 한다.
GameplayTagsFGameplayTag 구조체로 이뤄지며, GameplayTagManager에 등록됨.기본적으론 FName 타입임.(FGameplayTag 구조체 내의 TagName이라는 이름의 FName 타입 변수로 존재)Parent.Child.GrandChil

AbilitySystemComponentAbilitySystemComponent.h를 살펴보며 알게된 점이나 궁금한 점을 정리해본다.GameplayAbility, GameplayEffect, GameplayAttributesAbilitySystemComponent 헤더
Attribute From DataTableDataTable을 통해 Attribute를 초기화 하는 방법FAttributeMetaData 구조체를 통해 생성한 DataTable을 세팅한다.각 Row의 이름들은 (AttributeSet의 이름).(Attribute의 이름

Attribute Based ModifiersGameplayEffect 블루프린트에서 Modifier 설정 시 Magnitude Calcuation Type을 Attribute Based로 설정하면 다른 Attribute 기반으로 Modifier 값을 설정할 수 있음.
Attribute Menu WidgetPlanAttribute Menu 위젯에서 각 Attribute들에 접근하여 현재 능력치를 표기할 수 있도록 하려 함.모든 Attribute마다 델리게이트를 활용하여 변경 사항을 전파하는 방법각 Attribute마다 직접 델리게이트
Attribute Data AssetAttribute의 GameplayTag와 함께 Attribute의 이름, 부가 설명, 값을 담는 구조체 FAuraAttributeInfo를 배열로 갖는 DataAsset을 생성하여, 게임 내에서 Attribute 및 그와 관련된 정

Widget Attribute TagsWBP_TextValueRow에 GameplayTag형 변수를 추가함.이를 통해 각 Row들에 각각 표기할 Attribute에 해당하는 GameplayTag를 설정하고,해당 GameplayTag와 일치하는 FAttributeInfo

Gameplay Abilities게임에서 액터가 사용하는 스킬이나 액션 등을 나타내기 위해 사용됨.UGameplayAbility 클래스에서 파생됨.어빌리티가 발동 가능한 조건(Cost, Cooldown)과 사용 시의 효과 등을 정의함.함수가 아니라, 비동기적이며 독립적

Input Config / Aura Input Component / Callbacks for Ability Input / Activating AbilitiesGameplayAbility를 커스터마이징 가능한 키 입력과 연결해서 사용하기 위한 설계전체적인 구조는 다음과
Click to MoveAura는 TopDown(하향식) 형태의 게임 (디아블로, 패스 오브 엑자일 등) 이므로, 마우스 클릭을 통해 캐릭터를 이동하는 일반적인 하향식 게임의 기능이 필요함.이동은 마우스 좌클릭을 통해 실시하게 할 예정임.PlanUnreal의 TopDo
First Gameplay Ability - FireboltAuraProjectile투사체들의 기본 클래스투사체들은 전부 구 형태의 Collision 감지를 할 예정이므로, USphereComponent를 추가.USphereComponent의 OnComponentBeg

Ability TaskGameplayAbility가 작업을 수행하기 위해 사용하는 일꾼 같은 개념.즉각적으로, 또는 시간에 걸쳐서 사용할 수 있음.기본적으로 제공되는 PlayMontageAndWait과 같은 AbilityTask도 있으며, 사용자가 직접 AbilityT
Send Target Data클라이언트에서 커서 클릭 시, 디버그 구체가 서버 측에서는 (0, 0, 0) 위치에 생성되던 문제를 수정하기 위해 서버 측에 데이터를 전송하기 위한 함수를 생성함.AbilityTask의 Activate()에서, 서버와 클라이언트의 처리를 다

Prediction멀티플레이어 게임에서, 클라이언트가 모든 처리를 할 수 있도록 두면 이를 악용할 여지가 있음.(예를 들어, 스텟을 비정상적인 수치로 조절한다거나, 갈 수 없는 곳을 가는 등…)따라서 게임에 있어 중요한 처리 (생명력/마나/스테미나 등 스텟의 변화, 공

Orient Projectile Direction/Rotation / Shoot Projectile on Air투사체를 스폰했을 때, 투사체가 날아가는 방향을 바라보고 있도록 수정하는 작업이다.ProjectileTargetLocation의 값은 실제로 SpawnProj

Character Class게임 내 등장하는 여러 캐릭터들은 전사, 궁수, 마법사 같은 직업(Class)으로 분류될 예정임. \- 해당 캐릭터들에 대한 정의를 어떻게 하고, 능력치/스킬 등은 어떻게 다르게 할 지에 대한 정의를 내려야 함.캐릭터의 클래스를 ECha

Meta Attribute현재까지의 GameplayEffect를 통한 데미지 적용 방식은 하드코딩된 방식이었음.하지만 실제 게임에선, 데미지를 두고 캐릭터간의 능력치를 통한 계산을 거친 값을 적용함. \- Attribute를 직접 바꾸기보다는 중간 계산을 위한 일

Enemy Hit React데미지를 입을 시 이에 반응하는 애니메이션을 재생하려 함.GameplayAbility, GameplayEffect를 통해 피격 상태를 구현함.피격 시 반응할 액터들에 대하여 (AuraCharacterBase 상속 클래스) GA_HitReact

Execution Calculation - UGameplayEffectExecutionCalculationUGameplayEffectExecutionCalculation 개요기존 UGameplayModMagnitudeCalculation와는 다른 Custom Calcu
Execution Calculation - Implementing Attributes into CalculationGameplayEffect 블루프린트 에디터에서 직접 Modifier의 Magnitude Calculation Type을 SetByCaller로 설정하여