UE5 65

GAS 어빌리티 시스템 컴포넌트-ASC

ASC가 GAS의 핵심 ASC가 GAS의 핵심이다.시스템과의 모든 상호작용을 처리하는 UActorComponent(UAbilitySystemComponent)이다.GameplayAbility를 사용하거나 Attribute를 가지거나,GameplayEffect를 받으려는 액터에는 반드시 ASC가 하나씩 붙어 있어야 한다.이러한 오브젝트는 모두 asc안에 존재하며, (AttributeSet에 의해 리플리케이드되는 ATTRIBUTE를 제외하고,)ASC에 의해 관리 및 리플리케이트된다. 이를 서브클래싱할 것을 권장하지만 필수는 아니다. ASC가 붙은 액터를 ASC의 OwnerActor라고 한다.그리고 ASC의 물리적 표현 액터를 AvatarActor라고 한다. MOBA 게임에서 단순한 AI미니언의 경우 처럼 ..

UE5/GAS 2025.05.09

[GAS] 언리얼 게임플레이 어빌리티 시스템 개요 (UE GAS Overview)

해당 GAS관련 학습 프로젝트를 진행하며 작성하는 글에서의사용자의 정의를 하고자한다. 해당 분류의 포스팅에서의 사용자의 의미는언리얼에서 GAS를 사용하여 제작하는 사용자를 일컫는 말로 정의하고자 한다. 언리얼 게임 플레이 어빌리티 시스템을 이용하면 다양한 아이템을 제작할 수 있다.또한조종하는 캐릭터가 다양한 공격과 스킬을 사용할 수 있다. 물론 GAS를 사용하지 않아도공격과 스킬, 다양한 아이템은 제작할 수 있다만 시스템을 사용해서 보다 효과적으로 구현해 본 경험을 가지는 게 나의 학습 목표이다. 자, 이제 왜 GAS를 사용하면 어떤 점이 좋은지공부하며 차차 알아가보자. 오늘 포스팅 목표는 다음과 같다. 게임플레이 어빌리티 시스템을 구성하는 주요 개념과 핵심 구성요소의 학습C++ 언어로 게임플레이 어빌..

UE5/GAS 2025.04.26

언리얼 컴포지션

언리얼 컴포지션이란? 언리얼 컴포지션은 객체 지향 설계의 핵심 개념 중 하나인 Composition (컴포지션)을 언리얼 엔진에서 구현하는 방법을 의미한다. 이는 단순한 상속(Inheritance, Is-A 관계)만으로는 해결하기 어려운 복잡한 객체 설계 문제를,Has-A 관계를 통해 해결하는 기법이다. 주요 개념Has-A 관계:상속이 “~이다”라는 관계라면, 컴포지션은 “~을 가진다”라는 관계이다. 예를 들어, 게임 캐릭터가 여러 개의 컴포넌트(무기, 방어구, 스킬 등)를 갖는 경우, 이를 각각의 독립 객체로 구성해 관리할 수 있다.언리얼 엔진에서의 컴포지션 구현:언리얼 엔진에서는 UObject 기반의 오브젝트를 조합하여 복잡한 객체를 구성하는데, 이를 위해 두 가지 주요 방법을 사용한다.필수적 포함:..

UE5 2025.03.22

언리얼 오브젝트 리플렉션 시스템

언리얼 리플렉션 시스템이란? 리플렉션 시스템은 프로그램이 실행시간에 자기 자신을 조사하는 기능이다.이는 언리얼 엔진 테크놀로지의 근간을 이루는 것으로,에디터의 디테일 패널, 시리얼라이제이션, 가비지 콜렉션, 네트워크 리플렉션,블프/C++ 커뮤니케이션 등 다수의 시스템에 탑재된 것이다. 그러나 C++는 어떠한 형태의 리플렉션도 지원하지 않아,언리얼에는 자체적으로 C++ 클래스, 구조체, 함수, 멤버 변수, 열거형 관련 정보를수집, 질의, 조작하는 별도의 시스템이 구축되어 있다.전형적으로 이러한 리플렉션은 '프로퍼티 시스템'이라고 부르는데,'리플렉션'은 그래픽 용어이기도 하기 때문이다. 즉 리플렉션과 프로퍼티 시스템은 같은 뜻을 가리키는동의어이다. 리플리케이션 시스템은 옵션이다.리플렉션 시스템에 보이도록 했..

UE5 2025.03.18

언리얼 문자열 처리 FString과 FName, FText 사용 이유

언리얼의 문자열 처리 FString과 FName, FText 언리얼에서는 문자열 처리를 위해 FString을 제공한다.문자열을 다룰 때 사용하는 FString과 TCHAR를 변환하는 메커니즘을 사용하도록언리얼에서는 권장하고 있다. 간단히 FString과 TCHAR를 설명하자면,TCHAR는 문자열 배열 FString는 클래스라는 차이가 있다.  그런데 문자열 관리를 위해 FString을 제공하는데왜 Fname, FText를 또 제공할까? FName & FText의 제공 용도  FName과 FText는 주로 에셋관리를 위해서 사용되는 문자열 체계이다. 우리가 어떤 애셋을 빠르게 찾고 싶을 때이름을 지정해주는 게 명확하다.이 때, FName과 FText를 사용하는 것이다. 즉 언리얼에서 제공하는 둘의 사용 용..

UE5 2025.03.08

Unreal Object Handling

언리얼 오브젝트 핸들링이란? UObject 시스템의 기능에 대한 개요로,클래스, 프로퍼티, 함수에 적합한 매크로로 마킹해주면,UClass, UProperty, UFunction 으로 변한다.그러면 언리얼 엔진이 접근할 수 있어,다수의 내부적인 처리 기능을 구현할 수 있다. 자동 프로퍼티 초기화 UObject는 생성자 호출 전 초기화시 자동으로 0으로 채워진다.이러한 초기화 과정은1) 전체 클래스, 2) UProperties(GC시스템에 의해 관리되는 변수들), 3) 네이티브 멤버(C++로 선언된 일반 멤버 변수)모두를 포함한다. 이후 생성자에서 원하는 값으로 초기화할 수 있다. 즉, 이 말은자동 초기화 후에, 생성자에서 커스텀 초기화가 가능하다는 뜻이다.자동 추기화는 앞서 말했듯이UObject가 생성될 ..

UE5 2024.12.19

언리얼 내부 - 모듈 (Modules) 2

Modules - Overview ans Structure 언리얼 엔진의 모듈이란?모듈은 언리얼 엔진소프트웨어 아키텍처의 기본 구조적 빌딩 블록이다.이는 독립적인 코드 단위이며 일반적으로 모듈은 하나의 독립된 코드 묶음으로 처리되어 컴파일러가 이를 별도로 빌드한다. 모듈? 라이브러리와 비슷한 거 아닌가요?모듈과 라이브러리의 둘의 차이점사용자는 각 모듈을 라이브러리로 생각할 수 있지만,다음과 같은 차이점이 있다.모듈은 엔진, 게임 또는 플러그인의 다른 모듈에 따라 달라질 수 있다.추가 모듈에는 타사 라이브러리가 포함될 수 있으며,모듈은 특정 빌드 유형(ex editor only)으로 제한할 수 있다.사용 가능한 플랫폼을 제한하기 위해 화이트리스트 및 블랙리스트에 추가할 수도 있습니다. 모듈의 장점언리얼에서..

UE5 2024.11.25

언리얼 내부 - 모듈 (Modules)

모듈이란?모듈은 언리얼 엔진과 우리가 사용하는모든 것을 구성하는 블록이라고 생각할 수 있다.언리얼 엔진 내부는 기본적으로 모듈이다.그리고 편집기를 확장하려면 자체 모듈과리소스 드롭다운을 만들어야 한다. 이전에 모듈에 대해서 포스팅을 했으니이번 포스팅에서는 간단히프로그래머가 알아야 할 세가지 주요 사항만 언급하겠다. 프로그래머가 알아야 할 세 가지 모듈의 주요 사항1. 모듈은 좋은 코드 분리를 강제하며 이런 특징은 매우 유용하다.언리얼 내부에는 많은 코드가 있지만어떻게든 코드끼리는 서로 통신해 하는 상황에서 모듈은 좋은 구조를 가진다.언리얼 엔진은 상호 종속적인 모듈과 플러그인을 지원한다.프로젝트 모듈은 파일에서 플러그인을 활성화하여 플러그인에 종속될 수 있다.프로젝트 모듈은 엔진 모듈에 종속될 수 있지만..

UE5 2024.11.25

점진적 가비지 컬렉션

점진적 가비지 컬렉션이란?UObject를 위한 개선된 가비지 컬렉션 시스템이다. 언리얼 엔진은 마크 앤 스윕 가비지 컬렉터를 사용하여 UObject 메모리를 관리한다.소프트 리얼 타임( soft-real-time ) 애플리케이션의 경우,가비지 컬렉터에 한 가지 큰 단점이 있다.가비지 컬렉터가 어떤 오브젝트의 메모리를 회수할 수 있는지 결정하는 동안Gameplay hitches가 발생할 수 있다는 것이다. UE에서는 이 프로세스를 도달 가능성 분석이라고 한다.UE5는 항상 가비지 컬렉션의이 단계가 한 프레임 내에 완료되도록 의존해 왔으며,이로 인해 일시적으로 모든 UObject 처리가 중지된다. 도달 가능성 분석에서스캔해야 할 오브젝트가 많을수록 일시정지 시간이 길어지고,그 결과 가시적인 게임플레이 히치를..

UE5 2024.11.23