로비 구성 요소
1. 로비 위젯 (각 클라이언트)
- Ready 버튼
- 유저네임 표시
- Ready 버튼 클릭한 플레이어 표시
2. 플레이어 컨트롤러 (각 클라이언트 & 서버)
- 위젯 생성 & 제어
- 위젯-서버 간 통신 (준비 상태 알림)
3. 게임 모드 (서버)
- Ready 클릭한 플레이어 수 추적 & 게임 라운드 시작
- 컨트롤러 통해 모든 클라이언트에 준비된 플레이어 표시 명령
- 모든 플레이어 Ready 클릭 시 모든 클라이언트에 로비 화면 퇴장 명령
로비 위젯
로비에서 Ready 버튼 클릭 시 NotifyPlayerReady (Run on server) 바인딩
컨트롤러 - NotifyPlayerReady (Run on server)
1) 게임 모드에 플레이어의 Ready 버튼 클릭을 추적하는 "ServerPlayerReady" 함수 호출 (해당 함수는 이후에 설명)
- 위젯은 클라이언트에만 존재하므로
--> 서버(게임모드)의 함수를 호출하기 위해 서버 RPC 로 구현해 게임 모드에 접근 및 함수 호출
2) 컨트롤러에서 위젯의 Ready 버튼을 비활성화하는 "DisableReadyButton" 함수 호출
게임모드 - ServerPlayerReady
1) 각 컨트롤러에 준비 버튼을 클릭한 플레이어의 유저네임을 표시하게 하는 DisplayReadyPlayer 호출
- 클라이언트에만 존재하는 위젯에 접근해야 하므로
--> 클라이언트(컨트롤러)의 함수를 호출하기 위해 DisplayReadyPlayer 는 클라이언트 RPC로 구현해 위젯에 접근하게 함
1-1) AddToReadyPlayerBox 는 위젯의 좌측 상단 Vertical Box 에 LobbyReadyPlayerWidget (i.e. 준비된 플레이어 유저네임 표시하는 위젯) 추가
1-2) LobbyReadyPlayerWidget 은 현재 단순히 텍스트 블록으로 구현
2) Ready 클릭한 플레이어 수를 추적하여 모든 플레이어가 준비된 경우 이벤트 디스패처 호출 (i.e. 게임 시작 알림)
'언리얼_엔진_게임개발_공부 > 언리얼 네트워크' 카테고리의 다른 글
C++ 로 채팅 예제 구현 - ChatWidget ~ GameMode & 유저네임 중복체크 / 색상 랜덤 부여 (0) | 2025.03.20 |
---|---|
C++로 채팅 예제 구현하기 - PlayerController ~ LoginWidget (0) | 2025.03.19 |
데디케이티드 서버 활용 미로 게임 예제 분석 (0) | 2025.03.18 |
Run on server / Run on owning client 잘 구분하여 쓰기 (0) | 2025.03.13 |
언리얼 엔진의 네트워크 / NetMode / Replication (0) | 2025.03.12 |