UE5 63

서버연동 GameMode & GameState

GameMode & GameState 멀티 플레이어와 관련하여 매우 중요한 두 가지 클래스는 game mode 와 game state이다. 언리얼 공식문서에서도 플레이 중인 게임에 대한 정보를 처리하는 두 가지 주요 클래스는 Game Mode와 Game State라고 언급한다. Game Mode 가장 자유도가 높은 게임(Even the most open-ended game)이라 할지라도 기본 규칙이 있으며, 이러한 규칙이 게임 모드를 구성한다. ( Even the most open-ended game = 사물, 사람이 제한 없이 자유롭고 유연한 상태, 즉, 플레이어가 자유롭게 행동할 수 있고 다양한 선택을 할 수 있는 게임 자유도가 높은 게임이라 할지라도~ 라고 생각하면 된다.) 가장 기본적인 수준에서 ..

UE5 2024.05.27

서버 연동 프로젝트 KU - 콜백되는 서브 시스템 함수 만들기

세션 서브시스템 클래스의 델리게이트를 어떻게 선언하는지 알아보자.해당 서브시스템은 메뉴클래스에서 받아온 입력들을 서버에 연동되도록 하는 기능을 가지고있다.그렇다면 두 클래스간의 소통이 필요할 텐데,이를 델리게이트를 통해서 연결해주었으며, 델리게이트 핸들을 통해 간접적으로 전달한다.   즉 해당 클래스의 소통은IOnlineSessionPtr 자료형인 SessionInterface를 이용해서버에 값을 전달하며,델리게이트를 바인딩함으로써 메뉴에서 받아온 값을서브시스템에서 서버로 전달하는 것이다.    해당 respon cumtom delegate를 제작하기 위해멀티 캐스트 델리게이트를 선언하기 위해서 매크로를 사용했다.  Menu Class에서 델리게이트에 정보를 전달해줄 함수를 생성한다.  해당 값을 델리게..

UE5 2024.05.24

서버 연동 프로젝트 KU - 3. 맵 이동 로직 구현(2)

해당 값을 C++에서 제작해주었다.해당 로직은 추후에 좀 더 제작 후에 인터렉션 다이어그램으로 정리해서 업로드 하겠다.아직 로비와 메뉴로직은 완성되었지만,메뉴 시스템의 전반적인 구성은 완성되지 않았다. 몇명이 참가할 것인지에 대한것을 BP에서 조절할 수 있도록 제작하였으며,해당 매치 타입 또한 BP에서 조절 가능하도록 구현하였다. 제작하면서 배웠던 것언리얼에서 서버 이동할 때 맵을 동시에 담아두지 않는 기법이 있다.내 생각에는 이것은 최적화 기법이라고 생각한다.예전에 DX로 던그리드를 제작할 때는 내가 맵 이동 시에 제작했던 기법과 흡사했다. 제작하며 어려웠던 점서버에 대한 이해와 델리게이트 완벽히 되지 않아서 그냥 어물쩡 넘어가면서 쓴 내용이 많다.따로 서버에 대한 기본기와 언리얼 공식 문서를 보며 복..

UE5 2024.05.22

플러그인 제작

플러그인 제작플로그인이란 뭘까?특정 목적을 위해 설계된 코드 및 데이터 모임이다.개발자는 프로젝트 단위로 쉽게 활성화하거나 비활성화할 수 있다.멀티플레이어 세션 관련 기능을 처리할 수 있는 새로운 플로그인을 제작했다.해당 플로그인은 모든 온라인에 액세스할 수 있도록 온라인 하위 시스템을 사용하도록 구성하였다. 그럼 플로그인과 언리얼 엔진 플로그인은 뭘까?간단히 말하자면 세션을 관리하는 데 사용할 하위 시스템 기능을 담당하는 녀석이다.플로그인은 런타임 중에 게임 플레이 기능을 추가하거나 게임을 만들 때 사용할 편집기 기능을 추가할 수 있다.그리고 플로그인 중에서는 언리얼 엔진 편집기도 있다. UE엔진의 플러그인은 엔진 내의 플러그인 편집기에서 활성화할 수 있다.플러그인도 모듈로 구성되어 있다.당연하게도 언..

UE5 2024.05.17

서버 연동 프로젝트 KU - 2. 맵 이동 로직 구현(1)

1. 싱글 멀티 영역 구분 2. 플러그인 제작 3. 게임 인스턴스 상속 싱글 멀티 영역 구문 맵이동1. 로비 만듦2. 싱글플레이 영역과 멀티플레이 로비 영역 구분 위 로직을 델리게이트를 이용하여 코드를 작성하였다. CreateSessionCompleteDelegate(FOnCreateSessionCompleteDelegate::CreateUObject(this, &ThisClass::OnCreateSessionComplete)),FindSessionsCompleteDelegate(FOnFindSessionsCompleteDelegate::CreateUObject(this, &ThisClass::OnFindSessionsComplete)),JoinSessionCompleteDelegate(FOnJoinSe..

UE5 2024.05.17

ESPMode

언리얼 엔진에 있는 ESP 모드가 있는데그 모드를 이해하고자 해당 글을 포스팅 하기로 했다. 사실 언리얼 스마트 포인터가 가지는 이점이 멀티 스레드를 이용한다면언리얼 스마트 포인터의 ESPMode를 설정해줘야 한다. 자주 쓰이고 꼭 알아야하는 언리얼 스마트 포인터에도 ESP가 쓰인다.즉 언리얼 스마트 포인터를 잘 이용하려면 ESP가 뭔지 잘 알아야 한다. 일단 Windows에서 제공하는 ESP의 설명을 정리하기 전에,언리얼에서 제공하는 ESP을 간단히 설명해보겠다. ESPMode는 'fast' 또는 'thread safe' 두 가지 중 하나의공유 포인터 타입을 선택해서 사용해야 한다. NameDescriptionNotThreadSafeForced to be not thread-safe. (= 강제적으로 ..

UE5 2024.05.10

언리얼 모듈과 언리얼 게임플레이 모듈

언리얼 모듈 (Modules)모듈이란 무엇이냐?모듈은 빌딩 블록이다.   그런 모듈을 왜 쓰냐?모듈은 언리얼 엔진 소프트웨어 아키텍처의 구성 요소로,코드를 모듈로 청리하여 더 효율적이고 유지보수하기 좋은 프로젝트를 만들 수 있다.UE에서 모듈은 특정 에티터 툴, 런타임 기능, 라이브러리 등의 기능을 독립된 코드로 캡슐화 한다. 모든 프로젝트와 플로그인에는 기본적으로 자체 프라이머리 모듈이 있지만,모듈을 따로 정의하여 코드를 정리할 수 있다. 해당 게시글에서는 모듈의 구와 언리얼 엔진 프로젝트에 사용했을 때의 이점에 대한 개요를 다룬다.  그럼 게임 플레이 모듈은 무엇이냐?(1)엔진 자체가 여러 모듈로 이루어져 있는 것과 마찬가지로,각 게임은 하나 이상의 게임플레이 모듈로 이루어져 있다.이들은 관련 클래스..

UE5 2024.05.09