- Autenticar jugadores de Photon con PlayFab.
- Escuchar eventos de sala mediante devoluciones de llamada de CloudScript de PlayFab.
Inicio rápido de Photon
En este inicio rápido se muestra cómo configurar el multijugador de Photon para que funcione con PlayFab. Actualmente, PlayFab ofrece las siguientes integraciones de Photon:- Autenticar jugadores de Photon con PlayFab.
- Escuchar eventos de sala mediante devoluciones de llamada de CloudScript de PlayFab.
Para obtener una experiencia multijugador y de chat de PlayFab totalmente compatible en Unity, consulte el complemento de Unity de PlayFab Party para obtener más información.
Requisitos previos
- Un proyecto de Unity con el SDK de PlayFab importado y un título configurado.
- El título de PlayFab registrado.
Esta guía omite la configuración de la aplicación de chat. Para integrar su aplicación de chat, cree una nueva aplicación de Photon Chat y escriba el App ID en los cuadros correspondientes de Unity y de la página del complemento de Photon en Game Manager de PlayFab.
Configuración de una aplicación de Photon
- Una vez que se haya registrado e iniciado sesión en el panel de Photon, seleccione Create a new App.

- Seleccione el Photon Type.
- Elija un Name.
- Cree una Description.
- Envíe el formulario seleccionando Create.

Configuración de la autenticación
- Busque la aplicación recién creada en la lista y seleccione Manage.

- En el panel de la aplicación, busque y guarde el App ID, que se encuentra debajo del título de la página.

- Localice la sección Authentication.
- Seleccione Custom Server.

PlayFabTitleId por su propio id. de título.
- Escriba la URL.
- Envíe el formulario seleccionando el botón Create.

Configuración de un título de PlayFab para Photon
Vaya a la página de Game Manager de su título y, a continuación:- Vaya a la pestaña Add-ons.
- En la lista de complementos, busque y seleccione Photon.

- La página del complemento de Photon le permite instalar Photon especificando su Photon Realtime Application ID.
- Opcionalmente, puede especificar el Chat App ID.
- Una vez que instale el complemento (3), se genera una clave secreta de Photon (2).
- Guárdela para usarla más adelante al configurar los webhooks.
Recuerde guardar su clave secreta de Photon en un lugar seguro y de fácil acceso. Resulta útil al configurar los webhooks.

Configuración de los webhooks de Photon
Como integración opcional, Photon puede transmitir determinados eventos a su CloudScript de PlayFab. Esto se hace con webhooks:- Especifique una dirección URL base.
- A continuación, especifique la ruta de acceso para cada uno de los eventos disponibles.
- Una ruta de acceso es, en la práctica, un nombre de controlador implementado en su CloudScript.
Title Id por su propio id. de título.
PhotonSecretKey por la clave secreta que generó en la página del complemento de Photon.
- Rellene la Base URL.
- Asigne un nombre de controlador de CloudScript para cada uno de los eventos disponibles.
- Quite los CustomHttpHeaders que haya.
- Envíelo seleccionando el botón Save.

Configuración de un proyecto de Unity
Esta guía asume que ya tiene el SDK de PlayFab importado, configurado y con la configuración del título establecida.- Empiece por ir a la Asset Store.
- Localice el paquete gratuito Photon Unity Networking.
- Seleccione Import (1).
- Puede inspeccionar los archivos importados.
- A continuación, seleccione Import (2).

- Escriba su Realtime Application ID (1), que se encuentra en el panel de aplicaciones de Photon para la aplicación de Photon que creó.
- Seleccione Setup Project (2).
- Una vez finalizada la configuración, seleccione Close (3).

- Vaya al panel superior de la ventana.
- Seleccione Window.
- A continuación, seleccione Photon Unity Networking (1).
- Por último, seleccione Highlight Server Settings (2).
- La ventana estándar del proyecto de Unity muestra el objeto PhotonServerSettings (3).
- Seleccione el objeto para ver su configuración en la ventana Inspector de Unity.

Como parte de PhotonServerSettings, tiene la opción de asignar el Chat Application ID.
Implementación de la autenticación de PlayFab con Photon
Cuando habilita el complemento de Photon para su título en Game Manager de PlayFab y configura la autenticación en el panel de la aplicación de Photon, PlayFab le permite autenticar a los jugadores existentes de PlayFab dentro del entorno de Photon. Esto significa que puede evitar por completo implementar cualquier administración de usuarios para Photon.- Vaya a la escena DemoHub-Scene-V2 del paquete Photon Unity Networking Free, la versión Classic.
- Esta escena es un centro para todos los ejemplos del paquete.
- Como es la primera escena que se carga, agreguemos un pequeño script para habilitar la autenticación de PlayFab con Photon.
- Cree un GameObject vacío llamado PlayFabAuthenticator.
- A continuación, en la ventana Inspector de Unity, agregue un componente con el mismo nombre a este GameObject.

PlayFabAuthenticator, y guarde y cierre el archivo.
Prueba de la autenticación de PlayFab con Photon
- Inicie la escena.
- Inspeccione el flujo de mensajes de la consola. Compruebe que:
- La autenticación en PlayFab se realizó correctamente.
- Se adquirió el token de Photon.

- Para asegurarse de que la autenticación de PlayFab se ha completado, seleccione Demo Boxes.
- A continuación, seleccione Load Demo, como se muestra en la siguiente imagen.


Eventos de sala de Photon + CloudScript
El sistema de emparejamiento de Photon tiene el concepto de sala. Si no está familiarizado con este concepto, consulte la guía de emparejamiento de Photon. PlayFab le permite interceptar varios eventos de sala. Los siguientes eventos de sala solo requieren CloudScript para ser interceptados:RoomCreatedRoomJoinedRoomLeftRoomClosed
RoomPropertyUpdatedRoomEventRaised
Una vez que introduce un controlador para un evento de sala, este se convierte en una parte esencial del flujo de control de eventos. Por lo tanto, los errores producidos al ejecutar su CloudScript pueden causar problemas en todo el sistema. Por ejemplo, si el controlador
RoomCreated produce un error, sus clientes también producirán un error y no podrán conectarse correctamente.Controlador de Room Created
El controladorRoomCreated se invoca cada vez que se crea una sala de Photon. El siguiente controlador de CloudScript intercepta dichos eventos.
Puede obtener más datos sobre el evento usando el argumento “args”.
Controlador de Room Joined
El controladorRoomJoined se invoca cada vez que un jugador se une a la sala. El siguiente controlador de CloudScript intercepta este tipo de evento.
RoomCreated para interceptar al primer jugador que se une. Puede obtener más datos sobre el evento usando el argumento “args”.
Room left
El controladorRoomLeft se invoca cada vez que un jugador abandona la sala. El siguiente controlador de CloudScript intercepta este tipo de evento.
Controlador de Room Closed
El controladorRoomClosed se invoca cada vez que el último jugador abandona la sala y no quedan jugadores en ella. El siguiente controlador de CloudScript intercepta este tipo de evento.
Room Property Updated
El controladorRoomPropertyUpdated se invoca cada vez que se cambia una propiedad de la sala. El siguiente controlador de CloudScript intercepta este tipo de evento.
currentPlayerId no está definido en este controlador. Si la propiedad de la sala se cambió desde el cliente, puede usar el argumento “args” y consultar UserId para obtener el jugador responsable.Room Event Raised
El evento Room Event Raised se llama cada vez que se genera un evento de sala personalizado. El siguiente controlador de CloudScript intercepta este tipo de evento.Prueba de los controladores de eventos de sala
Este ejemplo amplía el ejemplo anterior (autenticación de PlayFab + Photon). Cargue el siguiente CloudScript para su título.PlayFabAuthenticator incluyendo un nuevo código de ejemplo que genere un evento personalizado y establezca una propiedad de sala personalizada. La versión ampliada también usa un método Awake para no destruir el objeto entre cargas de escenas.
- Ejecute la escena del centro y espere a que se complete la autenticación de PlayFab (1).
- A continuación, cargue la escena Boxes Demo (2).

- Una vez cargada la escena, espere a que el par se conecte a la sala recién creada (1).
- A continuación, seleccione Execute Example en la esquina superior izquierda (2).
- Observe la salida de la consola (3).
- Asegúrese de que no se haya producido ningún error.

- Inicialmente, nuestra instancia de Photon no tenía ninguna sala abierta. Cuando iniciamos el ejemplo, Photon creó la sala para la Boxes Demo.
- El primer jugador en unirse es el jugador que solicitó la sala. Por lo tanto, no se registró ningún evento RoomJoined. A continuación, ejecutamos nuestro código de ejemplo:
- Primero, generamos un evento de sala personalizado.
- Después, establecimos una propiedad de sala personalizada.
- Luego detuvimos el modo de reproducción de Unity. Esto hizo que nuestro cliente abandonara la sala.
- Como nuestro cliente desconectado era el último, no quedan más clientes y Photon cierra la sala.

