Introduction
멀티플레이어 환경에서 GameMode는 서버에 한개!
우선 멀티플레이 세팅으로 바꿔보자
이제 클라이언트가 서버에 접속하면 HUD가 만들어지는 기능을 구현하고 싶다.
우선 새로운 PlayerController 클래스를 만들어서 그 곳에 기능을 넣어주자.
게임모드 클래스에 가서 새로 만들어준 player controller class를 넣어주고
ThirdPersonGameMode의 블루프린트 창에 들어가 Event OnPostLogin을 구현해준다.
이제 플레이어가 JumpBoost를 먹는 것을 구현해보자
BP_JumpBoost로 들어가서
Replicates에 체크
이때 다음과 같은 에러가 나타나는데
원인은
일반 액터에서 게임모드를 바로 호출해서 부르려고 하기 때문임
하지만 게임모드는 서버에 있고 이 서버는 player controller를 통해 접근해야 하므로 로직을 고쳐줘야 한다.
위의 로직은 서버, 클라이언트 모두 동시에 진행되는데, 클라이언트에서는 문제가 없지만 서버에서는 Client의 HUD에 접근할 수 없다.
HUD는 Client가 소유하고 있기 때문
그래서 따로 custom event를 만들어줌
리스폰 로직 구현
BP_PlatformerController
컨트롤러가 Pawn을 소유하고 있지 않을 때 리스폰을 한다.
리스폰 로직은 게임모드(서버)에!
참고 유튜브
싱글: Make a 3D Platformer in Unreal Engine 4 (youtube.com)
서버 붙인 버전: Make a Co-op Multiplayer Game in Unreal Engine 4 (youtube.com)
'Unreal' 카테고리의 다른 글
FRunnable Class (0) | 2024.10.02 |
---|---|
Event Dispatcher은 꼭 써야 할 때 쓰자(Delegate) (0) | 2024.08.20 |
[Unreal] 부모 객체의 스케일 변경이 자식 객체의 위치에 영향을 준다 (0) | 2024.06.07 |
[Unreal] Custom Event vs Create Event (0) | 2024.06.05 |
[Unreal] Material Function, Material Parameter Collection (0) | 2024.05.24 |
댓글