Skip to main content
Este tema describe la API de alto nivel para agregar funcionalidad multijugador mediante la administración de sesiones, emparejamiento e invitaciones de juego. La API proporciona un modelo de programación basado en estados y basado en eventos. Los servicios XBOX proporcionan amplia compatibilidad para agregar funcionalidad multijugador a tus títulos, de modo que tu juego pueda conectar a miembros de XBOX de todo el mundo. Esto incluye escenarios de emparejamiento avanzados, la capacidad de que un jugador se una al juego en curso de un amigo y mucho más. Implementar el multijugador de los servicios XBOX mediante las API de multijugador directamente puede ser una tarea compleja. Requiere un gran esfuerzo de diseño y pruebas para verificar que sigues las prácticas recomendadas y cumples los requisitos de certificación. Multiplayer Manager facilita agregar funcionalidad multijugador a tu juego mediante la administración de sesiones y del emparejamiento, y proporciona un modelo de programación basado en estados y basado en eventos. Multiplayer Manager es un conjunto de API. Están diseñadas para facilitar la implementación de escenarios multijugador en juegos de los servicios XBOX con diseños multijugador hospedados entre pares. Multiplayer Manager proporciona una API centrada en escenarios multijugador comunes, como jugar juegos multijugador con amigos, controlar invitaciones de juego, controlar la unión a partidas en curso, el emparejamiento y mucho más. Multiplayer Manager admite varios usuarios locales. También facilita que tu título se integre con el Directorio de sesiones multijugador (MPSD) si usas un servicio de emparejamiento de terceros. Muchos de estos escenarios pueden lograrse con solo unas pocas llamadas a la API.

Características principales

Las características principales de la API de Multiplayer Manager son las siguientes.
  • Administración de sesiones y emparejamiento de los servicios XBOX sencillos
  • Modelo de programación basado en estados y basado en eventos
  • Garantiza las prácticas recomendadas de los servicios XBOX y el cumplimiento de los XR de multijugador
  • Implementa los diagramas de flujo de multijugador de 2015
A continuación se muestra información importante sobre el diseño de la API de Multiplayer Manager.
Para superar la certificación, tu juego debe seguir implementando los eventos necesarios para el multijugador en línea.

Información general

Multiplayer Manager se centra en los siguientes conceptos clave.
  • Sesión de sala: una sesión persistente que se usa para administrar a los usuarios locales del dispositivo y a los amigos invitados que quieren jugar juntos. El grupo puede jugar al juego; por ejemplo, varias rondas, mapas y niveles. La sesión de sala hace un seguimiento de este grupo principal de amigos (incluidos los jugadores locales del dispositivo). Normalmente, este grupo se forma mientras el host puede estar navegando por los menús y charlando con los miembros del grupo para decidir a qué modo de juego quieren jugar.
  • Sesión de juego: hace un seguimiento de los jugadores que están jugando una instancia específica del juego. Por ejemplo, una carrera, un mapa o un nivel. Puedes crear una nueva sesión de juego mediante XblMultiplayerManagerJoinGameFromLobby que incluya a los miembros de la sesión de sala. Cuando un miembro acepta una invitación, se agrega a la sala y a la sesión de juego (si hay espacio). Se pueden agregar jugadores adicionales a la sesión de juego si el emparejamiento está habilitado, pero esos jugadores adicionales no se agregan a la sesión de sala. Esto significa que, cuando el juego termina, los jugadores de la sesión de sala siguen juntos, mientras que los jugadores adicionales procedentes del emparejamiento no.
  • XblMultiplayerManagerMember: representa a un usuario individual que ha iniciado sesión en un dispositivo local o remoto.
  • XblMultiplayerManagerDoWork: garantiza que se mantengan las actualizaciones correctas del estado del juego entre el título y el servicio multijugador de los servicios XBOX. Para garantizar el mejor rendimiento, se debe llamar a XblMultiplayerManagerDoWork con frecuencia, por ejemplo, una vez por fotograma. XblMultiplayerManagerDoWork te proporciona una matriz de eventos de devolución de llamada XblMultiplayerEvent para que el juego los controle.

Máquina de estados

La llamada a XblMultiplayerManagerDoWork es necesaria para garantizar que tu estado se mantenga actualizado. Para que Multiplayer Manager haga su trabajo, debes llamar al método XblMultiplayerManagerDoWork con regularidad. La manera más fiable de hacerlo es llamarlo al menos una vez por fotograma. XblMultiplayerManagerDoWork se devuelve rápidamente cuando no tiene trabajo que hacer, por lo que no hay motivo para preocuparse por llamarlo con demasiada frecuencia.

Subprocesos

Ningún objeto devuelto por la API de Multiplayer Manager debe considerarse seguro para subprocesos. Sin embargo, te da control para realizar la sincronización de subprocesos si lo llamas desde varios subprocesos. La biblioteca tiene protección interna de multithreading. Sin embargo, sigues teniendo que implementar tu propio bloqueo si necesitas que un subproceso acceda a algún valor; por ejemplo, recorrer la lista de miembros mientras otro subproceso podría estar invocando XblMultiplayerManagerDoWork.

Actualización del modelo basado en estados

Multiplayer Manager mantiene un modelo basado en estados que actualiza las sesiones en segundo plano a medida que los jugadores se unen, se van o cuando se actualizan las sesiones. Para ayudar a evitar problemas de sincronización de subprocesos entre el subproceso de la interfaz de usuario y el subproceso del juego, Multiplayer Manager no actualiza el estado de las sesiones visible para la aplicación hasta que llamas al método XblMultiplayerManagerDoWork. Tradicionalmente, recibirías notificaciones sobre eventos, como cambios de sesión, en un subproceso en segundo plano y, después, tendrías que sincronizarlo con un subproceso de la interfaz de usuario para mostrar estos cambios. Con Multiplayer Manager, este trabajo entre bastidores se hace por ti. Puedes llamar a XblMultiplayerManagerDoWork en tu subproceso principal en el momento que elijas para obtener la instantánea más reciente del estado que Multiplayer Manager está almacenando en búfer por ti entre bastidores.

Eventos y notificaciones

Multiplayer Manager define un conjunto de eventos significativos (consulta XblMultiplayerEvent) y notifica al título mediante el método XblMultiplayerManagerDoWork cuando se producen. Por ejemplo, los eventos incluyen que jugadores remotos se unan o se vayan, que cambien las propiedades de los miembros o que cambie el estado de la sesión. Todas las API de Multiplayer Manager son asincrónicas. El método XblMultiplayerManagerDoWork devuelve una lista de eventos cuando se completan estas operaciones asincrónicas. Tu título debe controlar estos eventos según corresponda a tu situación. Para obtener más detalles, consulta la documentación de la clase XblMultiplayerEvent. Cada XblMultiplayerEvent devuelto incluye un EventArgsHandle, que debes usar para obtener los args adecuados para el tipo de evento. Por ejemplo, si el XblMultiplayerEventType es MemberJoined, podrías llamar a XblMultiplayerEventArgsMembersCount y a XblMultiplayerEventArgsMembers. El siguiente ejemplo muestra el uso de XblMultiplayerManagerDoWork para controlar eventos.

API de C plana

Para obtener más información, consulta lo siguiente:

Escenarios

Esta sección cubre escenarios comunes y las API a las que llamarías en cada escenario. También se proporciona información sobre lo que Multiplayer Manager hace entre bastidores. Para obtener una información general de alto nivel sobre la API, consulta Información general sobre la API de Multiplayer Manager.

Qué no hace Multiplayer Manager

Multiplayer Manager facilita mucho la implementación de escenarios multijugador y abstrae parte de los datos por ti. Sin embargo, Multiplayer Manager no controla lo siguiente:
  • Juegos de servidor en línea persistentes, como los juegos multijugador masivos en línea (MMO) u otros tipos de juegos que requieren sesiones grandes (más de 100 jugadores en una sesión)
  • Administración de sesiones de servidor a servidor
  • Limitación de las llamadas a MPSD para cumplir la limitación de velocidad detallada
  • Mezcla de las API del servicio multijugador y las API de Multiplayer Manager
Multiplayer Manager no está restringido a ninguna tecnología de red específica y debería funcionar con cualquier capa de comunicación de red.

Recursos

Para ver un ejemplo funcional de la API, consulta el ejemplo NetRumble. Para consultar la documentación de la API, consulta multiplayer_manager_c. También puedes ver el archivo de encabezado multiplayer_manager_c.h. Si tienes preguntas, comentarios o problemas al usar Multiplayer Manager, ponte en contacto con tu administrador de cuentas de desarrollador (DAM) o publica un hilo de soporte en los foros en https://forums.xboxlive.com.
Última modificación el 28 de agosto de 2026