> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Multiplayer Manager로 프로토콜 활성화 처리

> 플레이어가 게임 초대를 수락하거나 게이머카드에서 참여할 때 XBOX Multiplayer Manager를 사용하여 로비 참여 처리를 포함한 프로토콜 활성화를 처리합니다.

이 항목에서는 Multiplayer Manager를 사용하여 프로토콜 활성화를 처리하는 방법을 설명합니다.

*활성화*는 시스템이 다른 작업에 대한 응답으로 게임을 자동으로 시작하는 것입니다. 일반적으로 플레이어가 다른 플레이어로부터 게임 초대를 수락할 때 수행됩니다.

타이틀은 다음과 같은 방식으로 프로토콜 활성화될 수 있습니다.

* 사용자가 게임 초대를 수락함
* 사용자가 플레이어의 게이머카드에서 "Join Game"을 선택함

이 시나리오에서는 타이틀이 실행되고, 플레이어가 로비에 참여하며, 게임이 진행 중일 때(존재하는 경우) 프로토콜 활성화를 처리하는 방법을 다룹니다.

프로토콜 활성화 프로세스의 순서도는 [프로토콜 활성화 처리(순서도)](/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-on-protocol-activation)를 참조하세요.

플레이어가 게임 초대를 수락하거나 플레이어의 게이머카드를 통해 친구의 게임에 참여하면 프로토콜 활성화를 사용하여 해당 디바이스에서 게임이 실행됩니다.
게임이 시작된 후, [XGameActivationRegisterForEvent](/reference/system/xgameactivation/functions/xgameactivationregisterforevent)를 사용하여 초대 핸들을 가져옵니다. 초대 핸들로 [XblMultiplayerManagerJoinLobby](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerjoinlobby)를 호출합니다.

초대된 사용자가 [XblMultiplayerManagerLobbySessionAddLocalUser](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionaddlocaluser)를 통해 추가되지 않은 경우, [XblMultiplayerManagerJoinLobby](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerjoinlobby)는 실패하고 `JoinLobbyCompleted` 이벤트로 [XblMultiplayerEventArgsXuid](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayereventargsxuid)를 호출하여 초대가 전송된 xuid를 제공합니다.

로비에 참여한 후에는 로컬 멤버의 연결 주소와 멤버에 대한 사용자 지정 속성을 설정하는 것이 좋습니다.
호스트가 존재하지 않는 경우 [XblMultiplayerManagerLobbySessionSetSynchronizedHost](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionsetsynchronizedhost)를 통해 호스트를 설정할 수도 있습니다.

마지막으로, 게임이 이미 진행 중이고 초대받은 사람을 위한 자리가 있다면 Multiplayer Manager가 사용자를 게임 세션에 자동으로 참여시킵니다.
타이틀은 `JoinGameCompleted` 이벤트를 통해 알림을 받으며, 적절한 오류 코드와 메시지를 제공합니다.

#### Flat C API

```cpp theme={null}
#include <XTaskQueue.h>
#include <XGameActivation.h>  
  
XTaskQueueHandle g_taskQueue;  
XTaskQueueRegistrationToken g_activationToken;  
  
void CALLBACK OnActivation(void* context, const XGameActivationInfo* activationInfo)  
{  
    if (activationInfo->type == XGameActivationType::AcceptedGameInvite)
    {
        if (activationInfo->inviteUri != nullptr)
        {
            std::string inviteString(activationInfo->inviteUri);
            auto pos = inviteString.find("handle=");
            auto inviteHandeId = inviteString.substr(pos + 7, 36);
            // Now, call XblMultiplayerManagerJoinLobby.
        }
    }
}  
  
void InitializeGame()  
{  
    XGameActivationRegisterForEvent(g_taskQueue, nullptr, OnActivation, &g_activationToken);  
}  
  
void ShutdownGame()  
{  
    XGameActivationUnregisterForEvent(g_activationToken, true);  
}  
```

```cpp theme={null}
HRESULT hr = XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress(
    xblUserHandle, connectionAddress, context);
```

자세한 내용은 [XblMultiplayerManagerLobbySessionSetLocalMemberConnectionAddress](/reference/live/xsapi-c/multiplayer_manager_c/functions/xblmultiplayermanagerlobbysessionsetlocalmemberconnectionaddress)를 참조하세요.

Multiplayer Manager는 다음 기능을 수행합니다.

* Real-Time Activity 및 멀티플레이어 구독을 등록합니다.
* 로비 세션에 참여합니다.
* 기존 로비 상태 정리.
* 모든 로컬 플레이어를 활성으로 참여시킵니다.
* 보안 디바이스 주소(SDA)를 업로드합니다.
* 멤버 속성을 설정합니다.
* 세션 변경 이벤트를 등록합니다.
* 로비 세션을 활성 세션으로 설정합니다.
* 게임 세션에 참여합니다(존재하는 경우).
* 전송 핸들을 사용합니다.


## Related topics

- [프로토콜 활성화 처리(순서도)](/ko/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-on-protocol-activation.md)
- [멀티플레이어 개념 개요](/ko/services/xbox-services/multiplayer/concepts/live-multiplayer-concepts.md)
- [Multiplayer Manager 예제 코드](/ko/services/xbox-services/multiplayer/mpm/how-to/live-mm-howto-nav.md)
- [다른 플레이어에게 초대 보내기(순서도)](/ko/services/xbox-services/multiplayer/mpm/concepts/flowcharts/live-mpm-send-invites.md)
- [전송 프로토콜 서비스 (XbtpLinkSvc.exe)](/ko/tools/tools-console/commandlinetools/xbtplinksvc.md)
