Este tutorial descreve a construção de seu primeiro Jogo Instantâneo: uma versão baseada em jogadores alternados do clássico jogo da velha. São usadas as Atualizações de jogos e um Bot de jogo. | ![]() |
Depois de configurar seu aplicativo, você estará pronto para seguir as primeiras etapas:
Agora que seu aplicativo está configurado, é preciso iniciar a criação do cliente do jogo. O cliente do jogo precisa ter um arquivo index.html no diretório raiz. Comece importando o SDK dos Jogos Instantâneos adicionando esta linha.
<script src="https://connect.facebook.net/en_US/fbinstant.6.2.js"></script>
Notas importantes:
Nosso SDK faz uso extensivo de Promessas para funcionalidade assíncrona. Você só será capaz de interagir com a interface do usuário de carregamento depois que a FBInstant.initializeAsync() for resolvida.
FBInstant.initializeAsync() .then(function() // Start loading game assets here );
Nosso cliente de jogos não baixará seu pacote (arquivo .zip) todo de uma só vez. Em vez disso, pesquisará na raiz para ver a configuração (fbapp-config.json) e no arquivo principal (index.html). Em seguida, iniciará a execução da lógica contida no arquivo principal e iniciará o download dos ativos. Como desenvolvedor, você tem controle total sobre a ordem e a hora em que seus ativos serão carregados.
Depois que iniciar o download dos ativos necessários para inicializar o jogo, informe ao SDK sobre o andamento do carregamento, para exibirmos o anel de carregamento aos jogadores.
var images = ['sprite1', 'sprite2', ...];
for (var i=0; i < images.length; i++) {
var assetName = images[i];
var progress = ((i+1)/images.length) * 100;
game.load.image(assetName);
// Informs the SDK of loading progress
FBInstant.setLoadingProgress(progress);
}
// Once all assets are loaded, tells the SDK
// to end loading view and start the game
FBInstant.startGameAsync()
.then(function() {
// Retrieving context and player information can only be done
// once startGameAsync() resolves
var contextId = FBInstant.context.getID();
var contextType = FBInstant.context.getType();
var playerName = FBInstant.player.getName();
var playerPic = FBInstant.player.getPhoto();
var playerId = FBInstant.player.getID();
// Once startGameAsync() resolves it also means the loading view has
// been removed and the user can see the game viewport
game.start();
});Para ver mais informações sobre os métodos initializeAsync(), setLoadingProgress() e startGameAsync(), consulte a Referência do SDK.
O conteúdo dos Jogos instantâneos é hospedado na infraestrutura do Facebook, por isso não é preciso hospedar o conteúdo do jogo no seu próprio servidor ou usar servidores de terceiros. Quando o jogo estiver pronto para ser testado, compacte todos os arquivos em um único arquivo .zip.
Nota: o arquivo index.html deverá estar na raiz desse arquivo, e não em uma subpasta.
Para carregar o arquivo .zip:

Agora você pode testar a compilação em seu dispositivo móvel. A compilação publicada agora estará visível na lista de jogos no Messenger, em uma seção chamada Em desenvolvimento.
Para acelerar o processo de desenvolvimento, você pode carregar sua compilação da linha de comando pela Graph API ou testar diretamente em seu servidor de desenvolvimento. Saiba mais sobre Como testar, publicar e compartilhar um Jogo Instantâneo.
O contexto define qualquer ambiente em que um jogo pode ser utilizado. É comum que o contexto identifique coisas como um grupo ou uma publicação no Facebook.
O exemplo abaixo mostra como enviar uma atualização de contexto e como ela será exibida em uma conversa no Messenger.
Para declarar suas atualizações personalizadas, é preciso criar um arquivo de configuração chamado fbapp-config.json e colocá-lo na raiz do pacote, junto com o arquivo index.html.
Para mais informações sobre as configurações compatíveis, consulte a seção Configuração baseada em pacote. Para esta demonstração, o conteúdo do arquivo deve ser o seguinte:
{
"instant_games": {
"platform_version": "RICH_GAMEPLAY",
"custom_update_templates": {
"play_turn": {
"example": "Edgar played their move"
}
}
}
}A configuração do modelo de atualização personalizado nos permite atribuir um número de identificação a cada atualização personalizada específica, o que resulta em análises melhores. É obrigatório atribuir IDs do modelo para todos os jogos.
updateAsyncDepois que seu modelo tiver sido declarado no seu arquivo de configuração, você poderá ser utilizado para preencher o campo template obrigatório em FBInstant.updateAsync. Veja a seguir como a chamada é utilizada no Jogo-da-velha para avisar ao oponente que é a vez dele.
// This will post a custom update. If the game is played in a messenger
// chat thread, this will post a message into the thread with the specified
// image and text message. And when people launch the game from this
// message, those game sessions will be able to access the specified blob
// of data through FBInstant.getEntryPointData().
FBInstant.updateAsync({
action: 'CUSTOM',
cta: 'Play',
image: base64Picture,
text: {
default: 'Edgar played their move',
localizations: {
en_US: 'Edgar played their move',
es_LA: '\u00A1Edgar jug\u00F3 su jugada!'
}
}
template: 'play_turn',
data: { myReplayData: '...' },
strategy: 'IMMEDIATE',
notification: 'NO_PUSH'
}).then(function() {
// Closes the game after the update is posted.
FBInstant.quit();
});A mensagem ficará assim:

Para mais informações sobre atualizações personalizadas de contexto, consulte nossa Referência do SDK dos Jogos Instantâneos.
Para ver as melhores práticas, incluindo quando enviar mensagens a outros jogadores, quando notificá-los e qual o conteúdo a ser incluído nessas atualizações, consulte nosso guia de Melhores práticas.
Nota: as atualizações de contexto não são enviadas fora do Messenger. Pode ser útil personalizar sua experiência utilizando o método context.getType() e detectando THREAD. É possível passar para um contexto mais apropriado usando context.switchAsync, context.chooseAsync ou context.createAsync.
O bot proporciona a seu jogo um canal importante para reenvolvimento. Veja nosso guia de configuração do bot de jogo para criar um.
Agora que você sabe como criar e configurar seu Jogo Instantâneo e o bot do jogo, verifique os guias abaixo: