Skip to main content
이 항목에서는 세션, 매치메이킹 및 게임 초대를 관리하여 멀티플레이어 기능을 추가하기 위한 상위 수준 API를 설명합니다. API는 상태 기반 및 이벤트 기반 프로그래밍 모델을 제공합니다. XBOX services는 타이틀에 멀티플레이어 기능을 추가하기 위한 광범위한 지원을 제공하여 게임이 전 세계의 XBOX 멤버들을 연결할 수 있도록 합니다. 여기에는 풍부한 매치메이킹 시나리오, 플레이어가 진행 중인 친구의 게임에 참여할 수 있는 기능 등이 포함됩니다. 멀티플레이어 API를 직접 사용하여 XBOX services 멀티플레이어를 구현하는 것은 복잡한 작업일 수 있습니다. 모범 사례를 준수하고 인증 요구 사항을 충족하는지 확인하기 위한 상당한 정도의 설계 및 테스트가 필요합니다. Multiplayer Manager는 세션 및 매치메이킹을 관리하고 상태 기반 및 이벤트 기반 프로그래밍 모델을 제공함으로써 게임에 멀티플레이어 기능을 쉽게 추가할 수 있도록 합니다. Multiplayer Manager는 API 집합입니다. 이는 P2P 호스팅 멀티플레이어 디자인의 XBOX services 게임에 대한 멀티플레이어 시나리오를 쉽게 구현할 수 있도록 설계되었습니다. Multiplayer Manager는 친구와의 멀티플레이어 게임 플레이, 게임 초대 처리, 진행 중 참여 처리, 매치메이킹 등 일반적인 멀티플레이어 시나리오에 중점을 둔 API를 제공합니다. Multiplayer Manager는 여러 로컬 사용자를 지원합니다. 또한 타사 매치메이킹 서비스를 사용하는 경우 타이틀이 MPSD(Multiplayer Session Directory)와 더 쉽게 통합할 수 있게 해줍니다. 이러한 많은 시나리오는 몇 번의 API 호출만으로 수행할 수 있습니다.

주요 기능

Multiplayer Manager API의 주요 기능은 다음과 같습니다.
  • 간편한 세션 관리 및 XBOX services 매치메이킹
  • 상태 기반 및 이벤트 기반 프로그래밍 모델
  • XBOX services 모범 사례 준수 및 Multiplayer XR 규정 준수
  • 2015 멀티플레이어 흐름도 구현
Multiplayer Manager API 디자인에 대한 중요한 정보는 다음과 같습니다.
인증을 통과하려면 게임에서 여전히 온라인 멀티플레이어에 대한 필수 이벤트를 구현해야 합니다.

개요

Multiplayer Manager는 다음 주요 개념을 중심으로 합니다.
  • 로비 세션: 디바이스에 로컬인 사용자와 함께 플레이하려는 초대된 친구를 관리하는 데 사용되는 영구 세션입니다. 그룹은 여러 라운드, 맵, 레벨과 같은 게임을 플레이할 수 있습니다. 로비 세션은 이 핵심 친구 그룹(디바이스에 로컬인 플레이어 포함)을 추적합니다. 일반적으로 이 그룹은 호스트가 메뉴를 탐색하고 그룹 멤버와 채팅하며 어떤 게임 모드를 플레이할지 결정할 때 형성됩니다.
  • 게임 세션: 게임의 특정 인스턴스를 플레이하는 플레이어를 추적합니다. 예를 들어 레이스, 맵 또는 레벨입니다. XblMultiplayerManagerJoinGameFromLobby를 통해 로비 세션의 멤버를 포함하는 새 게임 세션을 만들 수 있습니다. 멤버가 초대를 수락하면 그들은 로비와 (자리가 있으면) 게임 세션에 추가됩니다. 매치메이킹이 활성화된 경우 게임 세션에 추가 플레이어를 추가할 수 있지만 이러한 추가 플레이어는 로비 세션에 추가되지 않습니다. 즉, 게임이 종료되면 로비 세션의 플레이어는 여전히 함께 있지만 매치메이킹에서 온 추가 플레이어는 함께 있지 않습니다.
  • XblMultiplayerManagerMember: 로컬 또는 원격 디바이스에 로그인된 개별 사용자를 나타냅니다.
  • XblMultiplayerManagerDoWork: 타이틀과 XBOX services 멀티플레이어 서비스 간에 적절한 게임 상태 업데이트가 유지되도록 합니다. 최상의 성능을 보장하려면 XblMultiplayerManagerDoWork를 프레임당 한 번씩과 같이 자주 호출해야 합니다. XblMultiplayerManagerDoWork는 게임이 처리할 XblMultiplayerEvent 콜백 이벤트 배열을 제공합니다.

상태 머신

XblMultiplayerManagerDoWork 호출은 상태를 최신 상태로 유지하기 위해 필요합니다. Multiplayer Manager가 작업을 수행하려면 XblMultiplayerManagerDoWork 메서드를 정기적으로 호출해야 합니다. 이를 수행하는 가장 안정적인 방법은 프레임당 최소 한 번 호출하는 것입니다. XblMultiplayerManagerDoWork는 수행할 작업이 없을 때 빠르게 반환되므로 너무 자주 호출하는 것에 대해 걱정할 필요가 없습니다.

스레딩

Multiplayer Manager API에서 반환된 모든 객체는 스레드 안전으로 간주되어서는 안 됩니다. 그러나 여러 스레드에서 호출하는 경우 스레드 동기화를 수행할 수 있는 제어권을 제공합니다. 라이브러리에는 내부 다중 스레드 보호가 있습니다. 그러나 한 스레드가 특정 값에 액세스해야 하는 경우 여전히 자체 잠금을 구현해야 합니다. 예를 들어 다른 스레드가 XblMultiplayerManagerDoWork를 호출하는 동안 멤버 목록을 순회하는 경우 등이 있습니다.

상태 기반 모델 업데이트

Multiplayer Manager는 플레이어가 참여, 이탈 또는 세션이 업데이트될 때 백그라운드에서 세션을 업데이트하는 상태 기반 모델을 유지합니다. UI 스레드와 게임 스레드 간의 스레드 동기화 문제를 피하기 위해 Multiplayer Manager는 XblMultiplayerManagerDoWork 메서드를 호출할 때까지 세션의 앱에서 볼 수 있는 상태를 업데이트하지 않습니다. 전통적으로는 백그라운드 스레드에서 세션 변경과 같은 이벤트에 대한 알림을 받은 다음, 이러한 변경 사항을 표시하기 위해 UI 스레드와 동기화해야 합니다. Multiplayer Manager를 사용하면 이러한 백그라운드 작업이 자동으로 수행됩니다. 원하는 시점에 메인 스레드에서 XblMultiplayerManagerDoWork를 호출하여 Multiplayer Manager가 뒤에서 버퍼링하고 있는 상태의 최신 스냅샷을 얻을 수 있습니다.

이벤트 및 알림

Multiplayer Manager는 중요한 이벤트 집합(XblMultiplayerEvent 참조)을 정의하고 이벤트가 발생하면 XblMultiplayerManagerDoWork 메서드를 통해 타이틀에 알립니다. 예를 들어 이벤트에는 원격 플레이어의 참여 또는 이탈, 멤버 속성 변경, 세션 상태 변경 등이 포함됩니다. 모든 Multiplayer Manager API는 비동기적입니다. XblMultiplayerManagerDoWork 메서드는 이러한 비동기 작업이 완료되면 이벤트 목록을 반환합니다. 타이틀은 상황에 맞게 이러한 이벤트를 적절히 처리해야 합니다. 자세한 내용은 XblMultiplayerEvent 클래스 문서를 참조하세요. 반환된 각 XblMultiplayerEvent에는 이벤트 유형에 대한 적절한 args를 가져오기 위해 사용해야 하는 EventArgsHandle이 포함됩니다. 예를 들어 XblMultiplayerEventTypeMemberJoined인 경우, XblMultiplayerEventArgsMembersCountXblMultiplayerEventArgsMembers를 호출할 수 있습니다. 다음 예제는 이벤트를 처리하기 위해 XblMultiplayerManagerDoWork를 사용하는 방법을 보여줍니다.

Flat C API

자세한 내용은 다음을 참조하세요.

시나리오

이 섹션에서는 일반적인 시나리오와 각 시나리오에서 호출할 API를 다룹니다. Multiplayer Manager가 뒤에서 수행하는 작업에 대한 일부 정보도 제공됩니다. API에 대한 상위 수준 개요는 Multiplayer Manager API 개요를 참조하세요.

Multiplayer Manager가 수행하지 않는 작업

Multiplayer Manager는 멀티플레이어 시나리오를 훨씬 쉽게 구현할 수 있게 해주고 일부 데이터를 추상화합니다. 그러나 Multiplayer Manager는 다음을 처리하지 않습니다.
  • MMO(대규모 다중 사용자 온라인) 게임 또는 대규모 세션(세션당 100명 이상의 플레이어)이 필요한 기타 게임 유형과 같은 지속적인 온라인 서버 게임
  • 서버 대 서버 세션 관리
  • 세분화된 속도 제한을 준수하기 위한 MPSD 호출 조절
  • Multiplayer 서비스 API와 Multiplayer Manager API 혼합
Multiplayer Manager는 특정 네트워크 기술에 제한되지 않으며 모든 네트워크 통신 계층과 함께 작동해야 합니다.

리소스

API 작동 예제는 NetRumble 샘플을 참조하세요. API 문서는 multiplayer_manager_c를 참조하세요. multiplayer_manager_c.h 헤더 파일도 볼 수 있습니다. 질문, 피드백이 있거나 Multiplayer Manager 사용에 문제가 있는 경우, 개발자 계정 관리자(DAM)에게 문의하거나 https://forums.xboxlive.com 포럼에 지원 스레드를 게시하세요.
마지막 수정일 2026년 8월 25일