UE5 63

언리얼 컴포지션

언리얼 컴포지션이란? 언리얼 컴포지션은 객체 지향 설계의 핵심 개념 중 하나인 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

서버 시작하기

게임 종류 별 언리얼 멀티플레이어 적합성 언리얼은 기본적으로 리얼타임 세션에 적합하다. 서버 연결 세션은 크게 세 가지로 나눌 수 있다. 1.Discovery연결할 사람을 찾고 2.Connection세션에 참여하여 클라이언트에 연결한다. 3. Synchronisation동기화하는 것이다.즉 네트워크 연결을 통해 동일한 화면을 보여주는 것이다. CMD를 이용하여, 본인 IP로 서버 여는 방법 정상 실행 화면

UE5 2024.10.14

Tag를 활용한 Input 값 받아오기

player character class에다음과 같은 함수를 제작해주었다.해당 함수를 제작하기 전에,넣어줄 태그를 미리 다음과 같이 만들어두었다.  이후 플레이어 캐릭터 cpp에서 다음과 같이인력 값에 맞게 제작한 함수를 바인딩 해주었다.  마지막은 gas와 관련되었기 때문에,각 직업에 맞는 gasComponent에똑같은 GASInput함수 작업을 해준다. 현재 제작하고 있는 HeroCharacter는 전사이다.따라서 warrior직업에 맞는 GASComponent에 해당 함수를 제작한 것이다. 이렇게되면 HeroCharacter.cpp에서는 직접적으로 함수를 구현하기보단,해당 GAS를 통해서 구현하여 각 직업에 맞는GASComponent를 불러와 작업을 수행할 수 있다.(코드의 재사용성 多)GetAct..

UE5 2024.10.08