매치 찾기
다음 단계에서는 Multiplayer Manager를 사용하여 플레이어의 친구에게 초대를 보내 해당 친구가 진행 중인 게임에 참여할 수 있도록 합니다. 1, 2, 3, 5단계는 초대를 수행하는 디바이스에서 수행됩니다. 4단계는 일반적으로 프로토콜 활성화를 통해 앱이 시작된 후 초대받은 사람의 디바이스에서 시작됩니다. 자세한 내용은 SmartMatch 매치메이킹을 사용한 게임 플레이(순서도)를 참조하세요.Multiplayer Manager 초기화
로비 세션 객체는 유효한 세션 템플릿 이름으로 Multiplayer Manager가 초기화될 때 자동으로 생성됩니다. 세션 템플릿은 서비스 구성에 정의되어 있습니다.서비스의 로비 세션 인스턴스는 사용자가 추가될 때까지 생성되지 않습니다.
Flat C API
로컬 사용자를 추가하여 로비 세션 만들기
로컬로 로그인한 XBOX services 사용자를 로비 세션에 추가합니다. 첫 번째 사용자가 추가되면 새 로비가 호스팅됩니다. 다른 모든 사용자는 보조 사용자로 기존 로비에 추가됩니다. Multiplayer Manager는 친구가 참여할 수 있도록 쉘에서 로비를 광고합니다. 로컬 사용자를 추가한 후에만 초대를 보내고, 로비 속성을 설정하고, 로비 멤버에 액세스할 수 있습니다. 로컬 사용자가 로비에 참여할 때 연결 주소와 사용자 지정 속성을 설정하는 것이 좋습니다. 로컬로 로그인한 모든 사용자에 대해 이 프로세스를 반복해야 합니다.단일 로컬 사용자 추가
Flat C API
- XblMultiplayerManagerLobbySessionAddLocalUser
- XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress
- XblMultiplayerManagerLobbySessionSetProperties
여러 로컬 사용자 추가
Flat C API
- XblMultiplayerManagerLobbySessionAddLocalUser
- XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress
- XblMultiplayerManagerLobbySessionSetProperties
::UserAdded 이벤트를 발생시킵니다.
해당 사용자가 성공적으로 추가되었는지 확인하기 위해 이벤트의 오류 코드를 확인하는 것이 좋습니다.
실패한 경우 오류 메시지가 실패 이유에 대한 세부 정보를 제공합니다.
Multiplayer Manager는 로컬 사용자를 추가하여 로비 세션을 만들기 위해 다음 기능을 수행합니다.
- XBOX services 멀티플레이어 서비스에 Real Time-Activity 및 멀티플레이어 구독을 등록합니다.
- 로비 세션을 만듭니다.
- 모든 로컬 플레이어를 활성으로 참여시킵니다.
- 보안 디바이스 주소(SDA)를 업로드합니다.
- 멤버 속성을 설정합니다.
- 세션 변경 이벤트를 등록합니다.
- 로비 세션을 활성 세션으로 설정합니다.
친구에게 초대 보내기(선택 사항)
플레이어가 게임에 초대할 친구 또는 최근 플레이어를 선택할 수 있는 표준 XBOX UI를 표시합니다. 플레이어가 선택을 확인하면 Multiplayer Manager는 선택된 플레이어에게 초대를 보냅니다. 게임은 또한 XblMultiplayerManagerLobbySessionInviteUsers 메서드를 사용하여 XBOX services 사용자 ID로 정의된 플레이어 집합에 초대를 보낼 수 있습니다. 이 메서드는 표준 XBOX UI 대신 자체 게임 내 UI를 사용하는 경우 유용합니다.Flat C API
- XBOX 표준 타이틀 호출 가능 UI(TCUI)를 표시합니다.
- 선택된 플레이어에게 직접 초대를 보냅니다.
초대 수락(선택 사항)
초대된 플레이어가 게임 초대를 수락하거나 쉘 UI를 통해 친구의 게임에 참여하면 프로토콜 활성화를 사용하여 해당 디바이스에서 게임이 실행됩니다. 게임이 시작된 후, Multiplayer Manager는 프로토콜 활성화 이벤트 인수를 사용하여 로비에 참여할 수 있습니다. 초대된 사용자가 XblMultiplayerManagerLobbySessionAddLocalUser를 통해 추가되지 않은 경우, XblMultiplayerManagerJoinLobby는 실패하고JoinLobbyCompleted 이벤트로 XblMultiplayerEventArgsXuid를 호출하여 초대가 전송된 xuid를 제공합니다.
로비에 참여한 후에는 로컬 멤버의 연결 주소와 멤버에 대한 사용자 지정 속성을 설정하는 것이 좋습니다.
호스트가 존재하지 않는 경우 XblMultiplayerManagerLobbySessionSetSynchronizedHost를 통해 호스트를 설정할 수도 있습니다.
마지막으로, 게임이 이미 진행 중이고 초대받은 사람을 위한 자리가 있다면 Multiplayer Manager는 사용자를 게임 세션에 자동으로 참여시킵니다.
타이틀은 JoinGameCompleted 이벤트를 통해 알림을 받으며, 적절한 오류 코드와 메시지를 제공합니다.
오류 또는 성공 결과는 JoinLobbyCompleted 이벤트를 통해 처리됩니다.
Flat C API
- Real-Time Activity 및 멀티플레이어 구독을 등록합니다.
- 로비 세션에 참여합니다.
- 기존 로비 상태 정리.
- 모든 로컬 플레이어를 활성으로 참여시킵니다.
- SDA를 업로드합니다.
- 멤버 속성을 설정합니다.
- 세션 변경 이벤트를 등록합니다.
- 로비 세션을 활성 세션으로 설정합니다.
- 게임 세션에 참여합니다(존재하는 경우).
- 전송 핸들을 사용합니다.
매치 찾기
초대가 수락되고 호스트가 게임 플레이를 시작할 준비가 되면 SmartMatch를 사용하여 다음 중 하나를 수행할 수 있습니다.- XblMultiplayerManagerFindMatch를 호출하여 로비 세션의 모든 멤버를 위한 충분한 빈 플레이어 슬롯이 있는 기존 게임을 찾습니다.
- XblMultiplayerManagerJoinGameFromLobby를 호출한 다음 XblMultiplayerManagerAutoFillMembersDuringMatchmaking을 호출하여 로비 세션의 모든 멤버를 포함하는 새 게임 세션을 만들고, 동일한 게임 유형의 매치를 찾고 있는 다른 플레이어로 빈 슬롯을 채웁니다.
Flat C API
- 매치 티켓을 만듭니다.
- 모든 서비스 품질(QoS) 단계를 처리합니다.
- 명단 변경을 처리합니다.
- 재제출합니다(필요한 경우).
- 대상 게임 세션에 참여합니다.
- 로비 세션을 통해 게임을 광고합니다.
