Actividades
Establecimiento de una actividad
Siempre que un título inicia o se une a una experiencia multijugador, debe crear una actividad. Hacerlo permite que el shell, junto con otros jugadores de su título, vea la actividad del jugador y permite que otros jugadores puedan unirse a la partida en curso. Si un jugador quiere unirse a una actividad de su título y este no se está ejecutando, se activa y se le pasa la cadena de conexión. Los títulos deben actualizar la actividad a medida que los jugadores se unen o se van. Esto proporciona una vista más completa de la actividad a otros jugadores y les informa si la actividad está llena. Para obtener información sobre los campos de la actividad, consulte Contenido de la actividad. Un ejemplo de código para establecer una actividad es el siguiente. Se aplica tanto a la creación de una actividad como a la actualización de una actividad existente.- XAsyncBlock
- XAsyncGetStatus
- XblMultiplayerActivityInfo
- XblMultiplayerActivityJoinRestriction
- XblMultiplayerActivitySetActivityAsync
Obtención de actividades
Es posible que los títulos quieran conocer las actividades de otros jugadores. Por ejemplo, un título puede querer mostrar una interfaz dentro del juego con los amigos de un jugador en el título junto con sus actividades. Un ejemplo de código para recuperar una actividad es el siguiente.- XAsyncBlock
- XblMultiplayerActivityGetActivityResultSize
- XblMultiplayerActivityInfo
- XblMultiplayerActivityGetActivityResult
- XblMultiplayerActivityGetActivityAsync
Eliminación de una actividad
Cuando un jugador finaliza o abandona una actividad multijugador, el título debe eliminar la actividad mediante el código siguiente.Invitaciones
Envío de invitaciones sin interfaz de usuario
Es posible que los jugadores quieran enviar invitaciones directamente a uno o varios jugadores. Antes de enviar una invitación, el título debe asegurarse de que hay una actividad establecida. Esto garantiza que haya continuidad entre el shell y su título, porque el shell envía invitaciones basadas en la actividad actual. Para enviar una invitación sin interfaz de usuario, después de establecer una actividad mediante XblMultiplayerActivitySetActivityAsync (consulte el ejemplo anterior), el título debe llamar a la API XblMultiplayerActivitySendInvitesAsync, pasando una matriz de jugadores a los que invitar y la misma cadena de conexión que se usa en su actividad actual. Para obtener información sobre el contenido de una invitación, consulte Envío de una solicitud para que otro jugador se una a una experiencia multijugador.. Un ejemplo de código para enviar invitaciones sin interfaz de usuario es el siguiente.Envío de invitaciones con interfaz de usuario
Es posible que los jugadores quieran enviar invitaciones directamente a uno o varios jugadores. Antes de enviar una invitación, el título debe asegurarse de que hay una actividad establecida. Esto garantiza que haya continuidad entre el shell y su título, porque el shell envía invitaciones basadas en la actividad actual. Para enviar una invitación con interfaz de usuario, después de establecer una actividad mediante XblMultiplayerActivitySetActivityAsync (consulte el ejemplo anterior), el título debe llamar a la API XGameUiShowMultiplayerActivityGameInviteAsync, pasando el usuario solicitante. Usará la actividad actual del título e invitará a los jugadores usando su cadena de conexión y su configuración. Para obtener información sobre el contenido de una invitación, consulte Envío de una solicitud para que otro jugador se una a una experiencia multijugador.. Un ejemplo de código para enviar invitaciones con interfaz de usuario es el siguiente.- XAsyncBlock
- XAsyncGetStatus
- XGameUiShowMultiplayerActivityGameInviteAsync
- XGameUiShowMultiplayerActivityGameInviteResult
Recepción de invitaciones
Para recibir una notificación cuando un jugador acepta una invitación, los títulos pueden registrarse para las notificaciones de invitación medianteXGameInviteRegisterForEvent. Cada vez que se acepta una invitación, se pasa al título un URI con formato a través de la devolución de llamada registrada. El URI se puede analizar para determinar el remitente de la invitación, el destinatario y la cadena de conexión. La cadena de conexión es específica del título y se establece cuando se crea la actividad multijugador. Para los títulos que usan el servicio Multiplayer Activity, el formato completo del URI se muestra en la tabla siguiente.
Cuando ya no se necesiten las notificaciones de invitación, se puede anular el registro de la devolución de llamada mediante
XGameInviteUnregisterForEvent. Un ejemplo de código para registrar y manejar las invitaciones aceptadas es el siguiente.
Jugadores recientes
Para actualizar la lista de jugadores recientes del jugador, el título debe enviar listas de otros jugadores que hayan tenido una interacción significativa con el jugador actual. La lista es unidireccional, lo que significa que el cliente de cada jugador es responsable de actualizar su propia lista, y las listas de los jugadores no afectan a las listas de los demás. Por ejemplo, suponga que un grupo de jugadores está junto en una sala previa a la partida y se emparejan. Cada jugador actualizaría su lista con todos los demásxuids de la sala cuando comience la partida. Si un nuevo jugador se uniera, podría escribirse individualmente.
Puede decidir qué define una interacción significativa. Para un título, podría ser estar presente en una sala. Para otro, podría ser que un jugador dispare a otro jugador. Para un tercero, podría ser simplemente que otro jugador sea visible en pantalla.
XblMultiplayerActivityFlushRecentPlayersAsync si necesita un vaciado forzado inmediato. De lo contrario, la lista de jugadores recientes se vaciará automáticamente cada cinco segundos.
Los ejemplos de código para actualizar la lista de jugadores recientes y vaciar las actualizaciones son los siguientes.
