[Unreal Engine] Delegate
·
Game Programming/Unreal Engine
개요이번 포스팅에서는 언리얼 엔진에서의 이벤트를 처리하기 위한 기능 중 하나인 델리게이트(Delegate)에 대해 정리해보도록 하겠습니다.Delegate란? 델리게이트(Delegate)는 C++의 함수 포인터처럼 특정 함수를 등록해 호출할 수 있는 일종의 콜백 메커니즘입니다. 언리얼 엔진에서는 게임 이벤트를 처리하기 위해 델리게이트를 주로 사용합니다. 언리얼의 델리게이트는 C++의 델리게이트와 유사하면서도, 언리얼의 리플렉션 시스템과 결합되어 블루프린트에서 호출할 수도 있기에 코드와 비주얼 스크립트를 쉽게 연동할 수 있습니다. 델리게이트의 선언은 제공되어 있는 선언 매크로 중 하나를 사용하여 이루어집니다. 사용되는 매크로는 델리게이트에 바인딩되는 함수의 시그너처에 따라 결정됩니다.  아래의 표에서 델리게..
[Unreal Engine] 스마트 포인터 (C++ vs UE)
·
Game Programming/Unreal Engine
개요이번 포스팅에서는 기본적인 C++의 스마트 포인터와 언리얼 엔진에서의 스마트 포인터에 대해 정리해보도록 하겠습니다.C++ 스마트 포인터 (Unique, Shared, Weak)스마트 포인터는 메모리 관리를 자동화해 메모리 누수를 방지하고 객체의 수명을 관리하는데 유용합니다. Unique_ptr단일 소유권을 가지는 스마트 포인터입니다.소유권이 하나 뿐이므로, 복사가 불가 합니다.객체가 더 이상 사용되지 않는 경우 소멸되어 자동으로 메모리가 해제됩니다.#include // 스마트 포인터를 사용하기 위한헤더 #include using namespace std;class MyClass {public: MyClass() { std::cout ptr = std::make_unique(); ptr->..
[Unreal Engine 5] ENetRole
·
Game Programming/UE_Multiplayer
개요ENetRole은 멀티플레이어 게임 개발에서 중요한 역할을 하는 개념입니다. 이 개념은 네트워크에서 각 플레이어나 오브젝트가 어떤 역할을 하는지를 정의하며, 주로 서버와 클라이언트 간의 역할을 구분하는 데 사용됩니다. 예를들어 플레이어 2명이 연결된 멀티플레이어 게임의 경우 다음과 같이 여러 버전의 캐릭터가 존재합니다. 1. Client Controlling the Pawn(내가 조종 가능한 Pawn)2. Server(서버에 복사된 Pawn)3. Client Not Controlling the Pawn(상대방이 조종하는 Pawn) 특별하게 서버에서만 처리해야 하는 로직들이 있으며, 이를 구별하기 위해 ENetRole이라는열거형 타입이 존재합니다.ENetRoleENetRole::ROLE_None객체가 ..
[Unreal Engine] 리플렉션 시스템, CDO
·
Game Programming/Unreal Engine
개요언제나 자연스럽게 사용하지만 정확히 알지 못하는 언리얼 엔진의 리플렉션 시스템과 CDO(Class Default Object)에 대해 정리해 보았습니다. Reflection System리플렉션(Reflection)은 프로그램이 실행시간(런타임)에 자기 자신을 조사하는 기능입니다. 기존의 C++에서는 어떠한 형태의 리플렉션도 지원하지 않아 언리얼에는 자체적으로 C++ 클래스, 구조체, 함수, 멤버 변수, 열거형 관련 정보를 수집, 질의, 조작하는 별도의 시스템이 구축되어 있으며 이를 리플렉션 시스템(프로퍼티 시스템)이라고 부릅니다. 다음과 같이 언리얼 엔진 내의 여러 가지 시스템들이 이 리플렉션 객체에 의존하며,네트워크 리플리케이션블루프린트와 C++ 연동에디터의 디테일 패널자동 시리얼라이제이션가비지 컬..
[Unreal Engine 5] LAN Connection (C++)
·
Game Programming/UE_Multiplayer
개요우선 본격적인 Online Multiplayer 게임에 대해 공부하기 전에 로컬 네트워크(LAN) 연결을 통해 멀티플레이 게임을 간단히 테스트 해보도록 하겠습니다. LAN(근거리 통신망)은 일반적으로 같은 건물 내에 있는 작은 지리적 영역 내에 포함된 네트워크입니다. 가정용 Wi-Fi 네트워크 등이 이에 속합니다.즉, 이번 시간에는 여러 대의 컴퓨터를 활용해 서버와 클라이언트를 동일한 네트워크(와이파이)에 연결하여 실제 IP주소를 입력하여 정상적으로 동작하는지 간단히 테스트해보도록 하겠습니다.실습3인칭 템플릿으로 생성한 프로젝트의 기본적인 맵(ThirdPersonMap)에서 시작하며, 키보드 입력을 통해 Lobby레벨로 이동하여 멀티플레이 환경을 테스트해보도록 하겠습니다. 1. 2개의 레벨을 준비합니..