Unreal Engine 4

[Unreal] 🎯 Unreal Engine 멀티플레이 기초 개념: Server, Multicast, Replication

멀티플레이 게임을 개발할 때 가장 중요한 것은 서버-클라이언트 구조에 대한 정확한 이해입니다. 이 글에서는 Unreal Engine에서 멀티플레이 동작을 어떻게 구성해야 하고, 어떤 함수나 매크로를 언제 사용하는지 정리합니다.1. 왜 모든 동작은 서버에서 판단해야 하는가? 모든 멀티플레이어 동작은 기본적으로 서버에서 판별해야 합니다. 그 이유는 크게 두 가지입니다:핵 방지: 클라이언트가 임의로 변수의 값을 바꿀수 있다면, 해커가 이를 악용하여 불공정한 플레이를 만들 수 있습니다.게임 안정성 보장: 서버에서 모든 로직을 판단함으로써, 모든 플레이어가 동일한 게임 상태를 유지할 수 있습니다.예를 들어, 클라이언트가 "총을 쐈다"고 말해도, 실제로 총알을 발사하고 데미지를 주는 판단은 서버에서만 해야 합니다...

Unreal Engine 2025.05.28

[Unreal] Multiplayer Subsystem 구조의 이해

강의를 보던 중 Subsystem에 대한 개념이 한번에 와닿지 않았기 때문에, 정리하면서 공부하고자 합니다.위 모식도의 과정을 설명하는 글입니다. 1. Menu Class → Subsystem 으로 Subsystem Function을 호출합니다.MultiplayerSessionsSubsystem->CreateSession(4, "FreeForAll"); 2. Subsystem → Session InterfaceSubsystem 안에서는 Session Interface를 사용해서 실제 서버 기능을 호출합니다.SessionInterface->CreateSession(...); Session Interface(IOnlineSessionPtr)란?Subsystem 안에서는 실제 세션 관련 기능을 실행할 때 Se..

Unreal Engine 2025.04.28

[Unreal] 전역 객체 정리 + Subsystem 이해하기

Unreal Engine을 처음 배우다 보면, 마치 Unity의 GameManager.Instance처럼 어디서든 접근 가능한 글로벌 객체들이 있다는 걸 알게 됩니다.대표적으로 GetWorld(), GetGameInstance() 같은 것들이 있죠.이 글에서는 Unreal에서 초기부터 기본 제공되는 글로벌 객체와 함수들을 정리해보고, 마지막으로 Subsystem에 대해서도 정리해 보겠습니다.글로벌 객체와 함수들 GetWorld현재 이 객체가 속한 UWorld를 가져옵니다.객체가 아무 World에 속하지 않는다면, nullptr를 return합니다.Unity의 SceneManager.GetActiveScene() 과 비슷합니다. GetGameInstance()게임 전체를 통틀어 유지되는 글로벌 매니저 입니..

Unreal Engine 2025.04.28

[Unreal] Unreal에서의 Delegate 이해하기

강의를 보면서 OnlineSubsystem을 이용한 멀티플레이어를 만들던 도중, AddOnCreateSessionCompleteDelegate_Handle() 이라는 어마무시한 길이의 Delegate를 보았습니다..순간 어지러워졌어요. 저는 Unity에서 Delegate를 사용한 적은 있지만, Handle 개념은 뭔지 몰랐거든요.정확히 이해하기 위해 글을 작성해 봅니다.(이 글은 Delegate에 대한 기본 개념이 있다는 전제 하에 작성되었습니다.) Delegate는 콜백 함수 객체입니다.특정 이벤트가 발생할 때 호출할 객체이죠.여러 함수를 등록할 수도 있습니다.여기까지는 Unity의 Delegate와 흡사해 보입니다.왜 Unreal은 Handle을 쓰는가?Unity에서는 Delegate +=로 함수를..

Unreal Engine 2025.04.26