- Autenticar jogadores do Photon com o PlayFab.
- Escutar eventos de sala usando retornos de chamada do CloudScript do PlayFab.
Início rápido do Photon
Este início rápido mostra como configurar o Photon Multiplayer para funcionar com o PlayFab. No momento, o PlayFab oferece as seguintes integrações com o Photon:- Autenticar jogadores do Photon com o PlayFab.
- Escutar eventos de sala usando retornos de chamada do CloudScript do PlayFab.
Para obter uma experiência multijogador e de chat do PlayFab com suporte completo no Unity, consulte o PlayFab Party Unity Plugin para obter mais informações.
Pré-requisitos
- Um projeto do Unity com o SDK do PlayFab importado e um título configurado.
- O título do PlayFab registrado.
Este guia omite as configurações do aplicativo de chat. Para integrar seu aplicativo de chat, crie um novo Photon Chat Application e insira a App ID nas caixas correspondentes no Unity e na página do complemento Photon no PlayFab Game Manager.
Configurar um aplicativo do Photon
- Depois de se registrar e entrar no painel do Photon, selecione Create a new App.

- Selecione Photon Type.
- Escolha um Name.
- Crie uma Description.
- Envie selecionando Create.

Configurar a autenticação
- Localize o aplicativo recém-criado na lista e selecione Manage.

- No painel do Application, localize e salve a App ID que fica abaixo do Title da página.

- Localize a seção Authentication.
- Selecione Custom Server.

PlayFabTitleId pela sua própria Title Id.
- Insira a URL.
- Envie selecionando o botão Create.

Configurar um título do PlayFab para o Photon
Navegue até a página do Game Manager do seu título e, em seguida:- Navegue até a guia Add-ons.
- Na lista de Add-ons, localize e selecione Photon.

- A página Photon Add-on permite instalar o Photon especificando sua Photon Realtime Application ID.
- Opcionalmente, você pode especificar a Chat App ID.
- Depois que você instalar o Add-on (3), uma Photon secret Key será gerada (2).
- Salve-a para uso futuro ao configurar webhooks.
Lembre-se de salvar sua chave secreta do Photon em um local seguro e de fácil acesso. Ela será útil ao configurar os webhooks.

Configurar webhooks do Photon
Como integração opcional, o Photon pode transmitir determinados eventos ao seu CloudScript do PlayFab. Isso é feito com webhooks:- Você especifica uma URL base.
- Em seguida, especifica um caminho para cada um dos eventos disponíveis.
- Um caminho é, efetivamente, o nome de um manipulador implementado no seu CloudScript.
Title Id pela sua própria Title Id.
PhotonSecretKey pela chave secreta que você gerou na página Photon Add-on.
- Preencha a Base URL.
- Atribua um Name de manipulador do CloudScript para cada um dos Events disponíveis.
- Remova todos os CustomHttpHeaders.
- Envie selecionando o botão Save.

Configurar um projeto do Unity
O guia pressupõe que você já tenha o SDK do PlayFab importado e configurado, além das configurações do título definidas.- Comece navegando até a Asset Store.
- Localize o pacote Photon Unity Networking Free.
- Selecione Import (1).
- Você pode inspecionar os arquivos importados.
- Em seguida, selecione Import (2).

- Insira sua Realtime Application ID (1), encontrada no Photon Application Dashboard do Photon App que você criou.
- Selecione Setup Project (2).
- Quando a configuração terminar, selecione Close (3).

- Navegue até o painel superior da janela.
- Selecione Window.
- Em seguida, selecione Photon Unity Networking (1).
- Por fim, selecione Highlight Server Settings (2).
- A janela de projeto Standard Unity revela o objeto PhotonServerSettings (3).
- Selecione o objeto para revelar suas configurações na janela Unity Inspector.

Como parte de PhotonServerSettings, você tem a opção de atribuir a Chat Application ID.
Implementar a autenticação do PlayFab no Photon
Quando você habilita o Photon Add-on para seu título no PlayFab Game Manager e configura a autenticação no painel do Photon Application, o PlayFab permite autenticar jogadores existentes do PlayFab no ambiente do Photon. Isso significa que você pode evitar completamente a implementação de qualquer gerenciamento de usuários para o Photon.- Navegue até a cena DemoHub-Scene-V2 do pacote Photon Unity Networking Free, versão Classic.
- Essa cena é um hub para todos os exemplos do pacote.
- Como é a primeira cena a ser carregada, vamos adicionar um pequeno script para habilitar a autenticação do PlayFab com o Photon.
- Crie um GameObject vazio chamado PlayFabAuthenticator.
- Em seguida, na janela Unity Inspector, adicione um componente com o mesmo nome a esse GameObject.

PlayFabAuthenticator e salve e feche o arquivo.
Testar a autenticação do PlayFab no Photon
- Inicie a cena.
- Inspecione o fluxo de mensagens do console. Verifique se:
- A autenticação no próprio PlayFab teve êxito.
- O token do Photon foi obtido.

- Para garantir que a autenticação do PlayFab esteja concluída, selecione Demo Boxes.
- Em seguida, selecione Load Demo, conforme mostrado na imagem a seguir.


Evento de sala do Photon + CloudScript
O sistema de matchmaking do Photon tem o conceito de sala. Se você não estiver familiarizado com esse conceito, consulte o Guia de matchmaking do Photon. O PlayFab permite interceptar vários eventos de sala. Os seguintes eventos de sala exigem apenas o CloudScript para serem interceptados:RoomCreatedRoomJoinedRoomLeftRoomClosed
RoomPropertyUpdatedRoomEventRaised
Depois que você introduz um manipulador para um evento de sala, ele se torna uma parte essencial do fluxo de tratamento de eventos. Portanto, erros gerados durante a execução do seu CloudScript podem causar problemas para todo o sistema. Por exemplo, se o manipulador
RoomCreated gerar um erro, seus clientes também gerarão um erro e não conseguirão se conectar corretamente.Manipulador Room Created
O manipuladorRoomCreated é invocado sempre que uma sala do Photon é criada. O manipulador do CloudScript a seguir intercepta esses eventos.
Você pode obter mais dados sobre o evento usando o argumento “args”.
Manipulador Room Joined
O manipuladorRoomJoined é invocado sempre que um jogador entra na sala. O manipulador do CloudScript a seguir intercepta esse evento.
RoomCreated para interceptar o primeiro jogador que entra. Você pode obter mais dados sobre o evento usando o argumento “args”.
Room left
O manipuladorRoomLeft é invocado sempre que um jogador sai da sala. O manipulador do CloudScript a seguir intercepta esse evento.
Manipulador Room Closed
O manipuladorRoomClosed é invocado sempre que o último jogador sai da sala e ela fica sem jogadores. O manipulador do CloudScript a seguir intercepta esse evento.
Room Property Updated
O manipuladorRoomPropertyUpdated é invocado sempre que a propriedade da sala é alterada. O manipulador do CloudScript a seguir intercepta esse evento.
O
currentPlayerId é indefinido neste manipulador. Se a propriedade da sala tiver sido alterada pelo cliente, você poderá usar o argumento “args” e consultar o UserId para identificar o jogador responsável.Room Event Raised
O Room Event Raised é chamado sempre que um evento de sala personalizado é gerado. O manipulador do CloudScript a seguir intercepta esse evento.Testar os manipuladores de eventos de sala
Este exemplo estende o exemplo anterior (autenticação PlayFab + Photon). Faça upload do seguinte CloudScript para o seu título.PlayFabAuthenticator incluindo um novo código de exemplo que gera um evento personalizado e define uma propriedade de sala personalizada. A versão estendida também usa um método Awake para não destruir o objeto entre os carregamentos de cena.
- Execute a cena do hub e aguarde a conclusão da autenticação do PlayFab (1).
- Em seguida, carregue a cena Boxes Demo (2).

- Quando a cena carregar, aguarde até que o par se conecte à sala recém-criada (1).
- Em seguida, selecione Execute Example no canto superior esquerdo (2).
- Observe a saída do console (3).
- Verifique se nenhum erro ocorreu.

- Inicialmente, nossa instância do Photon não tinha nenhuma sala aberta. Quando iniciamos o exemplo, o Photon criou a sala para o Boxes Demo.
- O primeiro jogador a entrar é o jogador que solicitou a sala. Portanto, nenhum RoomJoined Event foi registrado. Em seguida, executamos nosso código de exemplo:
- Primeiro, geramos um Room Event personalizado.
- Depois, definimos uma Room Property personalizada.
- Em seguida, interrompemos o modo de reprodução do Unity. Isso fez com que nosso cliente saísse da sala.
- Como nosso cliente desconectado era o último, não há mais clientes, e o Photon fecha a sala.

