로비 매니저
온라인 멀티플레이 게임과 관련하여 게임을 매우 흥미롭게 만들고 때로는 두각을 나타낼 수 있는 주요 요소 중 하나는 모든 플레이어에 최고의 경험을 제공하는 특정 유형의 플레이 스타일이나 스킬 레벨에 맞춰 클라이언트를 하나로 모으는 것입니다.
이 시나리오를 고려하여 Photon Bolt 팀은 기본적인 로비/매치 제작 시스템을 구축하여 헤드스타트를 제공하고, 이 시스템을 구현하여 기능을 확장하거나 시각적인 내용을 교체할 수 있지만 핵심 코드는 유지합니다.
원하는 대로 수정할 수 있습니다.
로비 샘플에 구현된 주요 기능은 다음과 같습니다:
- 사용자 지정 이름/id로 새 세션을 만듭니다.
- 임의의 세션에 참여합니다.
- 현재 지역에 있는 세션을 탐색합니다.
- 게임 세션에서 플레이어를 내보냅니다.
- 세션 내에 있는 플레이어를 사용자가(이름 및 색상) 커스터마이징 합니다.
- 각 플래이어가 "준비"를 합니다.
- 게임을 시작하기 위해 구성 가능한 최소 플레이어 수입니다.
이 페이지의 나머지 부분에서는 샘플 인터페이스를 사용하는 방법과 구성할 수 있는 방법에 대해 설명합니다. 이 샘플의 모든 소스 코드는 당사의 볼트 샘플 Github 리포지토리 여기에서 확인할 수 있습니다.
먼저 플레이어가 PhotonLobby
씬을 처음 로드할 때 나타나는 메인 윈도우부터 살펴보겠습니다. 이 씬에서는 Photon Bolt의 실행과 관리를 담당하는 LobbyManager
프리팹의 예를 볼 수 있습니다.
인터페이스에서 다음의 구성요소를 확인할 수 있습니다.
- 상태 레이블: 로컬 피어가 시작되었는지 여부에 관계없이 서버 또는 클라이언트의 현재 상태를 표시합니다.
- 호스트 레이블: 클라이언트의 경우 현재 세션 식별자를 표시하거나, 서버로 실행 중인 경우 "self"가 표시됩니다.
- 세션 이름 입력: 여기에서 세션/룸 이름을 임의의 이름으로 구성할 수 있습니다. 기본적으로 임의 ID가 생성됩니다.
- 세션 생성 버튼: 새 세션을 시작하고 다른 플레이어를 기다리려면 이 버튼을 클릭합니다.
- 서버 찾아보기 버튼: 이 버튼을 누르면 피어가 클라이언트로 시작하여 서버 목록 창(다음 참조)에서 사용 가능한 세션을 찾을 수 있습니다.
- 무작위 참여 버튼: 여기를 클릭하면 피어가 클라이언트로 시작되며, 사용 가능한 임의 세션에 가입하여 룸 창에 바로 들어갑니다(다음에 나타남).
다음화면으로 바뀌게되는 새로운 세션을 생성(화면의 Create
버튼 클릭)하여 계속할 것 입니다., 이 예제를 좀 더 재미있게 하기 위해, 우리는 세 개의 다른 클라이언트를 시작했고, Join Random
버튼을 이용하여 세션에 참여했습니다 - 클릭만 하면 됩니다.
세션 윈도우는 다음의 요소로 설명할 수 있습니다:
- Shutdown 버튼: 로컬 피어의 Bolt가 종료됩니다. 이렇게 하면 세션이 파괴될 수 있습니다(서버의 경우).
- 홈 아이콘: 로컬 피어의 입력을 표시하는 데만 사용됩니다.
- 색상 선택 버튼: 룸내에 있는 플레이어와 관련된 사용자 지정 색상 특성, 이것은 동기화할 수 있는 것의 예에 불과합니다. 다른 색을 무작위로 선택하려면 해당 색을 클릭합니다.
- 플레이어 이름 입력: 여기서 플레이어 이름을 구성할 수 있습니다. 이 속성도 사용자 정의 예제 속성입니다. 기본적으로 샘플은 각 플레이어에 대해 임의의 이름을 생성합니다.
- 참여/준비 버튼: 이 버튼을 사용하여 게임을 시작할 준비가 되었음을 서버에 신호를 보냅니다.
- 킥 버튼: 이 옵션은 서버측에서만 사용할 수 있으며, 이름에서 알 수 있듯이 플레이어를 방에서 내보내서 종료한 후 메인 창으로 돌아갑니다.
룸안의 인터페이스를 살펴보셨으니 이제 세션 목록 UI를 살펴보도록 하겠습니다. 여기서 클라이언트는 다음 중 어떤 룸에 가입할지 선택할 수 있습니다.
세션 목록 UI는 매우 간단합니다. 각 행은 실행 중인 서버를 나타냅니다(이 정보는 서버를 생성, 파괴 또는 업데이트할 때마다 갱신됩니다).
- 세션/룸 라벨: 이것은 서버의 세션 식별입니다. 세션 작성자가 세션에 대해 알 수 있는 사람이 읽을 수 있는 텍스트일 뿐입니다.
- 슬롯 레이블: 룸에 있는 현재 플레이어의 수와 허용되는 최대값을 설명합니다.
- 가입 버튼: 클라이언트가 이 단추를 클릭하여 특정 서버와의 연결 프로세스를 시작할 수 있습니다.
여기에서는 로비 샘플을 사용할 때의 전체 흐름을 보여 줍니다.
보시다시피, 길지는 않지만, 많은 게임의 기본 매치매이킹 요건을 달성합니다.
사용자 정의 세션 매개 변수를 사용하여 확장하고 게임 유형별로 필터링할 수 있습니다.
환경구성
Lobby Manager 샘플은 몇 가지 구성만 사용할 수 있으며, 모두 LobbyManager
프리팹과 관련된 LobbyManager
구성 요소를 통해 노출됩니다.
아래에서는 다음 설정을 볼 수 있습니다.
- 로비 씬: 로비 관리자가 사용될 현재 씬입니다. 이는 플레이어가 경기를 종료할 때 원본 씬을 로드하는 데 필요합니다.
- 게임 씬: 플레이어가 준비되면 로드되는 대상 씬입니다.
- 최소 플레이어: 경기를 시작하기 위해 최소 플레이어 수;
- 프리매치 카운트다운: 최소 플레이어 수에 도달한 후 게임을 시작하기 전에 카운트다운해야 합니다.