O CloudScript usando Azure Functions aprimora o que tornou o CloudScript excelente, com mais linguagens compatíveis e melhores fluxos de trabalho de depuração.
Este tutorial demonstra exemplos de código do Unity, mas o CloudScript funciona de forma semelhante em todos os SDKs.
- Ambiente do Unity configurado com o Unity SDK do PlayFab
- A ID do título está definida no objeto
PlayFabSharedSettings. - O projeto consegue fazer login de um usuário com êxito.
- A ID do título está definida no objeto
Introdução: helloWorld
Nosso exemplohelloWorld funciona em um título totalmente novo, sem modificações no Game Manager. O arquivo do CloudScript padrão de um novo título inclui um manipulador chamado helloWorld. Ele utiliza alguns recursos básicos: parâmetros de entrada, registro em log, currentPlayerId e parâmetros de retorno.
O exemplo a seguir mostra o código da função helloWorld padrão (sem os comentários).
Desconstruir o código
O objeto handler é predefinido no ambiente do CloudScript do PlayFab. Você deve adicionar todas as suas funções do CloudScript a esse objeto.-
helloWorldé uma função disponibilizada para seu título e seus SDKs, pois está definida no objeto handler. -
argsé um objeto arbitrário que vem do chamador. Ele é analisado a partir de JSON e pode conter quaisquer dados formatados de qualquer forma.
-
Contexté um parâmetro avançado. Neste exemplo, ele é null. Esse parâmetro é controlado pelo servidor e seguro. -
currentPlayerIdé uma variável global, definida como o PlayFabId do jogador que está solicitando essa chamada. Esse parâmetro é controlado pelo servidor e seguro. Observação: ao usar a API ExecuteEntityCloudScript, esse parâmetro é nulo, a menos que a entidade tenha um MasterPlayerID em sua cadeia de entidades. -
log.info:logé um objeto global. Ele é usado principalmente para depurar seu CloudScript. O objetologexpõe os seguintes métodos:info,debugeerror. Há mais detalhes mais adiante neste tutorial. -
return: qualquer objeto que você retornar será serializado como JSON e retornado ao chamador. Você pode retornar qualquer objeto serializável em JSON com os dados que desejar.
Executar funções do CloudScript a partir de um cliente de jogo do Unity
Chamar uma função do CloudScript a partir de um cliente é simples. Primeiro, você precisa criar umaExecuteCloudScriptRequest e definir a propriedade ActionId como o nome da função do CloudScript que deseja executar (neste caso, seria helloWorld) e, em seguida, enviar o objeto ao PlayFab por meio da nossa API.
Você só pode chamar métodos do CloudScript anexados ao objeto JavaScript handlers.
Desconstruir o código
ExecuteCloudScriptRequest é o tipo de solicitação para qualquer chamada a PlayFabClientAPI.ExecuteCloudScript.-
ExecuteCloudScriptRequest.FunctionNameé uma cadeia de caracteres. O valor deve corresponder ao nome da função definida no CloudScript. Neste caso,helloWorld. -
ExecuteCloudScriptRequest.FunctionParameterpode ser qualquer objeto serializável em JSON. Ele se torna o primeiro parâmetro args na funçãohelloWorld(consulte args na seção anterior). -
ExecuteCloudScriptRequest.GeneratePlayStreamEventé opcional. Se for true, um evento será publicado no PlayStream, que você poderá exibir no Game Manager ou utilizar para outros gatilhos do PlayStream.
ExecuteCloudScript envolve fazer a solicitação ao servidor do CloudScript do PlayFab e a parte de tratamento de Result e Error, específica da linguagem.
Por exemplo, no Unity, JavaScript ou AS3, o tratamento de Error e Result é fornecido por meio de funções de retorno de chamada.
Veja a seguir um exemplo de métodos de tratamento de erros.
Visão geral intermediária: globais e argumentos avançados
O CloudScript é um conjunto de funções JavaScript compiladas com o V8 e hospedadas nos servidores do PlayFab. Ele tem acesso a qualquer API de servidor listada na documentação de referência da API do PlayFab, além de um logger, da ID do PlayFab do jogador que está fazendo a solicitação do CloudScript e de quaisquer informações incluídas na solicitação, tudo na forma de objetos predefinidos. As próprias funções do CloudScript são propriedades de um objeto handlers global. A tabela a seguir mostra uma lista completa dessas variáveis predefinidas.
Além disso, todas as funções de manipulador recebem dois parâmetros, detalhados abaixo.
As funções do CloudScript podem ser chamadas por meio da API
ExecuteCloudScript ou por uma ação de evento do PlayStream predefinida.
Os detalhes completos sobre a resposta a ExecuteCloudScript podem ser encontrados em ExecuteCloudScriptResult.
Intermediário: FunctionParameter e args
Na seção anterior, descrevemos como preencherrequest.FunctionParameter e exibir essas informações no parâmetro args. O Início rápido do CloudScript demonstra como fazer upload de um novo CloudScript.
Juntando as duas coisas, podemos fornecer outro exemplo de como passar argumentos do cliente para o CloudScript. Pegue o exemplo anterior e modifique o código do CloudScript e o código do cliente conforme mostrado abaixo.
É importante ressaltar que quaisquer dados vindos dos seus clientes estão sujeitos a hacking e exploração.
Intermediário: chamar as APIs de servidor
Conforme mencionado antes, nos métodos do CloudScript, você tem acesso ao conjunto completo de chamadas da Server API. Isso permite que seu código de nuvem funcione como um servidor dedicado. Tarefas comuns de servidor:- Atualizar estatísticas e dados do jogador.
- Conceder itens e moeda.
- Gerar dados de jogo aleatoriamente.
- Calcular com segurança os resultados de batalhas e muito mais…
Avançado: ação de evento do PlayStream
Uma função do CloudScript pode ser configurada para ser executada em resposta a um evento do PlayStream.- Em qualquer navegador:
- Visite o PlayFab Game Manager.
- Localize seu Title.
- Em Build, na barra lateral, acesse a guia Automation.
- Acesse a guia Rules.

-
Use o botão New Rule para criar uma nova regra.
- Dê um nome à nova Rule.
- Selecione um Event type que será usado como gatilho para uma condição ou ação.
- Para fazer a Rule disparar uma função do CloudScript, adicione uma Action com o botão dessa seção.
- Em seguida, selecione a opção no menu suspenso Type.
- Selecione a função helloWorld no menu suspenso Cloud Script Function.
- Selecione o botão Save action.

-
Essa Rule agora está definida para ser disparada em qualquer evento do tipo selecionado. Para testá-la:
- Marque a caixa Publish results as PlayStream Event.
- Salve a Action.
- Em seguida, dispare um evento.
- No PlayStream Monitor, deverá aparecer um novo evento correspondente à execução do CloudScript, contendo as informações apropriadas.
- Para obter mais informações sobre como verificar um evento do PlayStream no depurador, consulte a seção a seguir Avançado: depurar o CloudScript.
As ações de evento só podem usar a revisão ativa ao chamar funções do CloudScript. Se você não conseguir encontrar a função helloWorld na lista suspensa, esse é o motivo mais provável.
Avançado: depurar o CloudScript
A depuração é muito mais fácil com o CloudScript usando Azure Functions. Saiba mais sobre como usar a depuração local do CloudScript usando Azure Functions.
Registro em log
Uma das ferramentas mais importantes para depurar código é o registro em log. Nosso CloudScript fornece um utilitário para executar essa função. Ele assume a forma do objetolog, que pode registrar qualquer mensagem desejada usando os métodos Info, Debug e Error.
Além disso, o objeto HTTP registrará quaisquer erros encontrados ao fazer solicitações, definindo o parâmetro logRequestAndResponse. Embora configurar esses logs seja simples, acessá-los exige um pouco de habilidade.
Veja um exemplo de uma função do CloudScript que usa os 4 tipos de log.
logTest pode ser chamada usando ExecuteCloudScript, conforme mostrado abaixo.
GeneratePlayStreamEvent faz com que a chamada da função do CloudScript gere um evento do PlayStream, que inclui o conteúdo da resposta. Para localizar o conteúdo de um evento do PlayStream:
- Acesse a página inicial do Game Manager do seu Title ou a guia PlayStream dele.
- O PlayStream Debugger exibirá os eventos à medida que chegarem.
-
Quando chegarem, selecione o pequeno ícone azul Info no canto superior direito do evento, conforme mostrado abaixo.

-
Se adicionarmos o MonoBehavior
LogScriptà cena, a execução do jogo produzirá isto no PlayStream.
ExecuteCloudScript inclui um campo chamado Logs, que é uma lista de objetos de log gerados pela função do CloudScript.
Você pode ver as três chamadas de log, bem como o log da solicitação HTTP inválida. O log da solicitação HTTP também usa o campo Data, ao contrário das chamadas de log.
Esse campo é um objeto JavaScript que pode ser preenchido com quaisquer informações relevantes para a instrução de log. As chamadas de log também podem usar esse campo, por meio do segundo parâmetro, conforme indicado abaixo.
Data no resultado com o segundo parâmetro.
Como os logs estão incluídos no resultado, o código do lado do cliente pode responder às instruções de log. O erro na função logTest é forçado, mas o código do cliente pode ser adaptado para responder a ele.
Avançado: erros
Durante o desenvolvimento, os erros do CloudScript muitas vezes não serão disparados manualmente, como no caso delog.error.
Felizmente, a resposta a ExecuteCloudScript contém um ExecuteCloudScriptResult que inclui um campo ScriptExecutionError. Adaptando o último exemplo da seção de registro em log, poderíamos usá-lo conforme mostrado abaixo.
