
PlayerController.h에 ClientRPCPrintChatMessageString, ServerRPCPrintChatMessageStirng 함수 추가
채팅이란 클라이언트에서 서버 RPC로 보내고, 서버에서 클라이언트 RPC로 전체 출력을 해주는 구조이다.

이 함수들을 구현할 때는 함수명 뒤에 _Implementation 접미사를 붙여주어야한다.

추가로 WithValidation 키워드를 붙이면 _Validate()도 반드시 구현해야하고, 여기서 치트 방지 검증을 한다.
for문으로 플레이어 컨트롤러 전체를 돌며 메시지 출력 함수를 실행해준다.


EngineUtils.h를 추가해야 GetWorld의 ActorIterator를 사용할 수 있다.
- ClientRPC 대신 NetMulticastRPC를 사용하면 안 되는 이유

SetChatMessageString을 구현한다.
- Run Under One Process를 체크 해제했으면, 서버를 켠 상태에서는 에디터가 꺼져도 서버 등은 계속 실행이 되는 경우가 있다.

빌드해서 실행한 모습을 보면 정상적으로 플레이어 화면들에 채팅 메시지가 출력된다.
누군가가 접속하면 메세지 출력
- 플레이어가 접속할 때마다 호출되는 함수
NetMulticast RPC를 통한 서버 접속 알리기
- GameMode같은 경우에는 Server에만 존재하므로, 접속 메시지의 경우 모든 플레이어에 존재하는 GameState에서 NetMulticast로 호출해 주는 것이 맞다.


GameModeBase를 만들었으므로 GameStateBase를 새로 만들어준다.

헤더에 MulticastRPCBroadcastLoginMessage라는 함수를 선언한다.

MulticastRPCBroadcastLoginMessage_Implementation으로 함수를 구현해준다.
UFUNCTION(NetMulticast, Reliable) 매크로를 선언하면 UHT가 자동으로 코드를 생성한다.
원본 함수는 UHT가 이미 구현해버리기 때문에, 실제 로직은 함수명에 _Implementation을 붙여 구현해야한다. 그렇게 하지 않으면 중복 정의 에러가 난다.


GameStateBase에 OnPostLogin을 오버라이드하여 채팅 출력 코드를 작성한다.

에디터에서 만든 게임스테이트를 설정한다.


클라이언트를 추가 실행할 때마다 다른 클라이언트에 메시지가 뜨는 것을 확인할 수 있다.
'게임 개발 > 학습 일지' 카테고리의 다른 글
| 언리얼 엔진으로 좁은 에어리어 바닥 만들기 (0) | 2026.07.13 |
|---|---|
| 언리얼 내배캠 - 언리얼 멀티플레이 기초 RPC(Remote Procedue Call) (0) | 2026.06.19 |
| 언리얼 내배캠 - 언리얼 멀티플레이 기초 NetRole (0) | 2026.06.18 |
| 언리얼 내배캠 - 언리얼 멀티플레이 기초 NetMode, NetConnection, NetDriver (0) | 2026.06.17 |
| 언리얼 내배캠 - 언리얼 멀티플레이 기초 실습 환경 설정 (0) | 2026.06.16 |