UFUNCTION()선언과 액터의 삭제 및 컴포넌트 간단 예제
·
Unreal/Core Concepts
이번 포스트에서는 UFUNCTION 사용부터 커스텀 컴포넌트 제작, 델리게이트 처리까지 C++ 기반의 언리얼 개발에서 꼭 알아야 할 핵심 기능들을 하나씩 정리해보려 합니다.1. UFUNCTION과 이벤트 함수 정의UFUNCTION() 매크로는 블루프린트와 연동할 수 있는 함수를 정의할 때 사용해요. 특히 BlueprintCallable, BlueprintImplementableEvent, Server, Client 등의 옵션으로 네트워크나 블루프린트 이벤트에 연결 가능합니다.UFUNCTION(BlueprintCallable, Category="Test")void MyCustomFunction();2. Destroy와 Timer로 액터 삭제 처리GetWorld()->GetTimerManager().SetT..
메모리 관리
·
Unreal/Core Concepts
C에서 메모리에 대한 할당과 해제의 기본적인 방법은 `malloc()` 과 `free()`가 있습니다. 이 함수들은 C++에서도 여전히 유효하게 사용이 가능하며 프로그램이 필요로 하는 메모리를 시스템 메모리에 할당하여, 이 영역은 다른 프로그램에서 접근하거나 사용할 수 없는 공간이 됩니다. C++에서는 이러한 메모리 할당 `New`와 `Delete`을 주로 사용합니다. 하지만 해당 명령어들은 언리얼 엔진에서 관리되지 않고 언리얼 엔진만의 메모리 할당과 해제에 대한 명령어가 따로 정의되어 있습니다.관리되지 않는 메모리 `malloc()`, `free()``malloc()`과 `free()`의 특징으로는 다음과 같습니다.`malloc(size)` size 바이트 크기만큼 연속된 메모리 블록을 할당`free..
UENUM 지정자
·
Unreal/Core Concepts
`UENUM()` 은 C++에서 `enum class` 를 직렬화 하기 위한 매크로 입니다. 선언하는 방식은 아래와 같습니다.UENUM()enum class ESample : uint32{ A = 0, B, C ,D}`UENUM` 은 다른 `UCLASS`와 `USTRUCT`와 다르게 안에 `GENERATE_BODY`를 선언할 필요가 없습니다. 하지만 다른 지정자와 같이 메타데이터 지정자를 사용할 수 있습니다.`UENUM` 메타데이터 지정자`Bitflags`이 열거형 타입이 `Bitmask` 메타데이터 지정자로 설정된 인티저 `UPROPERTY` 변수에 의해 플래그로 사용 될 수 있습니다.`Experimental`이 타입의 라벨을 실험단계 및 미지원으로 지정합니다.`ToolTip = "Hand-writte..
USTRUCT 지정자
·
Unreal/Core Concepts
구조체는 멤버 프로퍼티를 체계화 및 조작할 수 있는 데이터 구조체입니다. 구조체 USTRUCT는 UPROPERTY를 지원하지만 가비지 컬렉션 시스템에 의해 관리되지 않으며 UFUNCTION 함수를 사용할 수 없습니다. 구조체를 USTURCT로 만들기 위해서는 간단하게 아래와 같은 단계를 따라가면 됩니다.C++ 구조체 정의 위에 `USTRUCT` 매크로를 배치정의의 첫 번째 줄에 `GENERATED_BODY()` 매크로를 포함합니다.USTRUCT()struct FSampleStruct{ GENERATED_BODY()}`USTURCT` 지정자구조체 지정자는 구조체가 엔진 및 에디터의 다양한 측면에서 작동하는 방식을 제어하는 메타 데이터를 제공합니다.`Atomic` 이 구조체는 항상 하나만 직렬화되어야 합니다..
UCLASS 지정자
·
Unreal/Core Concepts
언리얼에서 새로운 C++ Class를 생성하게 되면 클래스의 상단 부분에 대부분 자동으로 들어가는 키워드가 있습니다 `UCLASS`는 언리얼 엔진의 객체 관리 시스템에서 클래스를 인식하고 관리 할 수 있도록 해주는 매크로 입니다. 언리얼의 `UObejct`기반 클래스에 반드시 붙여야 하며, 이 매크로가 붙은 클래스만 블루프린트, GC, 에디터에서의 노출 등이 가능합니다.즉 `UCLASS` 매크로는 언리얼의 리플렉션(Reflection) 시스템을 통해 클래스와 오브젝트를 관리 할 수 있게 해주는 일종의 표식이라고 볼 수 있습니다. UCLASS의 주요 역할블루프린트 생성 가능`UCLASS`의 지정자중 하나인 `Blueprintable` 옵션이 있으면 에디터에서 이 클래스를 블루프린트로 생성이 가능리플렉션 지..
Navigation Mesh ( 내비게이션 메시 )
·
Unreal/Core Concepts
내비게이션 메시란?내비게이션 메시 (Navigation Mesh)는 인공지능 응용 프로그램에서 복잡한 공간을 경로 탐색 할 수 있도록 도와주는 추상적인 데이터 구조 입니다. 쉽게 네비게이션 메시는 캐릭터가 이동할 수 있는 공간을 정의한 지도이며 길찾기 시스템의 기반이 되는 데이터 구조 입니다.언리얼 엔진에서의 내비게이션 메시언리얼 엔진에서는 네비게이션 메시가 여러 개의 폴리곤으로 구성되어 있고, 이 폴리곤은 서로 연결되어 있어 캐릭터가 한 영역에서 다른 영역으로 이동할 수 있도록 경로를 구성해 줍니다. 언리얼 엔진도 마찬가지로 폴리곤의 비용을 가장 낮추기 위해서 A*(Astar) 알고리즘을 사용해 최단 경로를 찾으려고 시도 합니다. 언리얼 엔진에서는 NavMeshBoundsVolume 시스템으로 바닥 표..
Reflection System
·
Unreal/Core Concepts
언리얼 엔진 리플렉션 시스템언리얼 엔진 리플렉션 시스템(Unreal Engine Reflection System)은 엔진 및 에디터 함수 기능을 제공하는 다양한 매크로로 클래스를 캡슐화합니다. 언리얼 엔진으로 프로그래밍할 때 표준 C++ 클래스, 함수, 변수를 보유할 수 있습니다. 즉, 언리얼 엔진은 자체적인 리플렉션 시스템과 매크로를 제공하지만, C++의 표준적인 문법과 기능도 그대로 활용할 수 있습니다.리플렉션(Reflection)이란 프로그램이 실행시간에 자기 자신을 조사하고 동적으로 데이터를 확인하거나 수정할 수 있는 기능을 말합니다. 원래 C++에서는 리플렉션 기능이 없지만, 언리얼 엔진은 자체적인 리플렉션 시스템을 통해 클래스, 구조체, 함수, 멤버 변수, 열거형 등의 정보를 수집하고 이를 질..
Interface
·
Unreal/Core Concepts
Interfac(인터페이스)인터페이스란?클래스가 언리얼 인터페이스(Unreal Interface) 클래스에서 상속하면 인터페이스는 새 클래스가 공통의 함수를 구현하도록 합니다. 이는 특정 함수 기능을 서로 다른 규모의 복잡한 클래스에서 공유할 수 있을 때 유용합니다. 즉, 인터페이스 자체는 아무런 기능을 가지지 않지만, 이를 상속받은 클래스가 인터페이스에 정의된 함수들을 구현해야 합니다. 이 방식은 객체 간 결합도를 낮추고 유지보수를 용이하게 하며, 다양한 클래스에서 동일한 기능을 일관되게 구현할 수 있도록 합니다. 객체가 반드시 구현해야 할 행동을 지정하는데 활용되는 타입다형성(Polymorphism)의 구현, 의존성이 분리(Decouple)된 설계에 유용하게 활용인터페이스는 특히 게임 게발에서 다음과..
Actor Lifecycle
·
Unreal/Core Concepts
언리얼 엔진에서의 액터 라이프사이클언리얼 엔진에서는 액터(`Actor`)가 생성, 초기화, 실행, 종료되는 전체 과정이 체계적으로 관리됩니다. 아래는 디스크에서 로드, 에디터에서 플레이, 스폰, 디퍼드 스폰, 그리고 액터 종료에 이르는 과정을 설명합니다.라이프사이클 분해도 🔹 디스크에서 로드 디스크에서 로그(Load from Disk) 경로는 `UEngine::LoadMap`이 발생할 때나 레벨 스트리밍에서 `UWpr;d::AddToWorld`를 호출하는 경우처럼 이미 레벨에 있는 액터에 대해서 발생합니다.📌 UEngine::LoadMap? , UWorld::AddToWorld?더보기`UEngine::LoadMap()` ❓이 함수는 새로운 레벨을 로드하는 과정에서 호출됩니다.일반적인 게임에서 맵을 ..
LEVEL
·
Unreal/Core Concepts
레벨(Level)은 게임'월드'의 모든 것 또는 일부입니다. 환경, 사용 가능한 오브젝트, 다른 캐릭터 등 플레이어가 보고 상호작용할 수 있는 모든 것이 레벨에 포함 됩니다. 일반적으로 게임에서는 여러 레벨이 있으며 레벨 간 전환이 명확히 구분되어 있습니다. 언리얼 엔진은 각 레벨을 별도의 .umap 파일로 저장합니다. 그래서 때로는 레벨이 맵(Maps)로 불리기도 합니다. 레벨 하나를 생성하는 데 필요한 최소한의 요소는 다음과 같습니다. ✅ 레벨의 주요 구성 요소레벨 파일 (.umap): 레벨 자체를 담고 있는 기본 파일환경 요소 (Static Mesh, Landscape, Water 등): 배경, 지형, 건물, 바위 등캐릭터 & NPC (Skeletal Mesh Actor): 플레이어 캐릭터, 적, ..