본문 바로가기
언리얼_엔진_게임개발_공부/언리얼 네트워크

숫자 야구 게임 - 로비 기능

by jaboy 2025. 3. 27.

로비 구성 요소

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로 구현해 위젯에 접근하게 함

컨트롤러의 DisplayReadyPlayer (Client)

 

1-1) AddToReadyPlayerBox 는 위젯의 좌측 상단 Vertical Box 에 LobbyReadyPlayerWidget (i.e. 준비된 플레이어 유저네임 표시하는 위젯) 추가

로비 위젯의 AddToReadyPlayerBox

 

1-2) LobbyReadyPlayerWidget 은 현재 단순히 텍스트 블록으로 구현

 

2) Ready 클릭한 플레이어 수를 추적하여 모든 플레이어가 준비된 경우 이벤트 디스패처 호출 (i.e. 게임 시작 알림)

게임 모드의 ServerPlayerReady - for loop completed 에 NumReadyPlayers 증가 및 모든 플레이어 준비 체크