개요
Listen 서버를 이용해 RPC를 호출하는 채팅 구현
서버 사용자는 Host, 클라이언트는 Guest로 UserID를 할당
언리얼 구성 요소 관계
PlayerController에 다 연결되어있다.
네트워크 에서는
GameMode는 서버에만
GameState, PlayerState, Pawn 1~* 은 서버 + 각 클라이언트에
PlayerController는 서버 + 해당 클라이언트
HUD, UMG는 해당 클라이언트에
구성요소
BP_ChatMode - GameMode
BP_Controller - PlayerController
WBP_ChatWindow - Widget Blueprint
Text 입력 바인드
WBP_ChatWindow
화면에 텍스트 창을 띄우고 텍스트를 입력하면 Enter로 이벤트를 Call할 수 있도록 구성한다.
입력창은 Text는 Commit 이벤트를 바인딩해야하므로 EditableText로 만든다.
IsVariable을 체크하고 OnTextCommited를 바인딩한다.
Enter를 눌렀을 때 SetMessageToUserController 이벤트 디스패처에 등록된 이벤트를 호출하고 Text 창을 비워준다.
BP_Controller
Controller가 처음 실행될때 Chat Window에 구독하도록 해준다.
가지고 있는 생성된 Widget 중 ChatWindow인 Widget을 가져와서 Text 입력 시 호출될 이벤트를 바인드 해준다.
Text 입력시 Message를 보내도록 해준다.
서버에서 실행되도록 Replication을 설정하고 GameMode의 Got Message From Client를 호출하도록 한다.
이때 Reliable을 true로 해 신뢰할 수 있도록 만든다.
Got MessageFromClient는 다음과 같다. Run to Server로 설정해준다.
모든 PlayerController의 Got Broadcast를 호출해서 Msg를 각 Client에 전달해준다.
Got Broadcast는 각 Client에 전달되야하므로 Run to owning client로 설정해준다.
서버에서 요청해서 각 Client에서 실행되어야하므로
User ID로 로그인
Level Blueprint에서 서버라면 Host, Client라면 guest로 ID 설정
On Login with ID는 각 클라이언트에 Id를 보내주는 것이므로 Run to Server?
'Unreal' 카테고리의 다른 글
[Unreal] Role, Remote Role (0) | 2025.04.04 |
---|---|
[Unreal] 서버 개요 (0) | 2025.04.04 |
[Unreal] 온라인 게임의 네트워크 구성 (0) | 2025.03.11 |
[Unreal] 패키징 시 체크리스트 (0) | 2025.03.10 |
[Unreal] OnlineSubsystemSteam 사용하기 (0) | 2025.03.10 |