Você está na página 1de 105

NDICE

Introduo3 Como configurar o Play Games Services 44


#1 Passo - Login no Google Play Developer Console 45
Os Conceitos de Jogo 9 #2 Passo - Google Play Developer Console 46
Achievements 10 #3 Passo - ID de cliente OAuth 2.0 50
Regras para pontuao 14 Criar uma Linked App 51
Ganhando pontos de experincia (XP) 15 Criar um ID de cliente 53
Leaderboards 16 Gerar um fingerprint (certificado digital) 55
Mltiplas leaderboards 18 Verificando as credenciais 57
Leaderboards pblicos e sociais 19 ID do Cliente 58
Real-Time Multiplayer 20 ID do aplicativo 60
Iniciando uma sala 22
Configurao da sala 24 Utilizando o Play Games Services 61
Os participantes 25 Antes de voc comear 62
Auto-matching 25 Configurando as bibliotecas do Google Play Services 63
Convites 26 Iniciando o projeto 66
Gameplay 26 Fazendo login na conta do Google 71
Fechamento da sala 28 Trabalhando com Achievements 75
Turn-based Multiplayer 29 Criando um Achievement 75
Events e Quests 33 Implementando um Achievement 77
Saved Games 38 Trabalhando com Leaderboards 87
Imagens de capa 39 Criando um Leaderboard 87
Descrio 40 Implementando um Leaderboard 90
Cota 40
Proteo de escrita/leitura 40 Plataformas e Game Engines 96
Suporte offline 41 Plataformas 97
Resoluo de conflitos 42 Game Engines 98
Limites 43
Concluso 99
Introduo
Este ebook tem o objetivo de esclarecer e dar o pontap inicial em como aproveitar
os recursos e servios disponibilizados pelo Google Play Games para impulsionar e
melhorar seus jogos.

Antes de mais nada, existem dois conceitos que devemos entender: o Google Play
Games e o Play Games Services. No final, eles so a mesma coisa, mas importante
conhecer a responsabilidade de cada um separadamente primeiro para depois en-
tender o todo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 3


O que o Google Play Games?

O Google Play Games um aplicativo/servio que o usurio de jogos tem acesso


para acompanhar toda sua evoluo dentro dos games. O que ele faz agir como
um painel de controle para todas as suas necessidades de jogos no seu dispositivo
Android.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 4


Pense nisso como o painel do Xbox, PS3 ou mesmo o painel do Steam.

Usando esse aplicativo voc pode visualizar todos os seus jogos que tm suporte ao
Google Play Games e tambm pode ver coisas como conquistas, jogos salvos, fa-
ses concludas e etc. Voc tambm pode ver todos os jogos anteriormente jogados,
aqueles que jogou recentemente, e aqueles que tem atualmente instalados. poss-
vel tambm navegar por ttulos mais populares e em destaque, assim como os ttulos
que tem o apoio oficial do Google para jogar em formato multiplayer.

Um dos pontos mais fortes voc poder visualizar seus amigos no Google+ que tam-
bm usam o Google Play Games. Isso timo para encontrar amigos que gostam
dos mesmos jogos que voc para poderem jogar juntos competindo entre si ou se
ajudando.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 5


Em resumo, ele um painel grfico onde os jogadores podem encontrar tudo o que
precisam sobre os jogos em um s local e tambm para amigos se divertirem juntos.

Para finalizar, o Google Play Games uma ferramenta muito poderosa tanto para os
usurios como para os desenvolvedores de jogos.

Ele d aos jogadores e desenvolvedores a sua prpria interface para monitorar e in-
teragir com seus jogos em um s lugar. A plataforma grtis e est crescendo e me-
lhorando cada vez mais. Daqui um tempo ela se tornar um aplicativo essencial para
qualquer jogador mobile.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 6


O que o Play Games Services?

O Play Games Services essencial na construo de uma plataforma de jogos da


nova gerao. Os recursos disponveis podem fazer seus jogos muito mais sociais,
contando com achievements, leaderboards e multiplayer, bem como mais poderoso
tambm. E ainda possvel armazenar jogos salvos e configuraes na nuvem.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 7


Voc pode utilizar esses recursos tanto no Android como no iOS ou em qualquer ou-
tro dispositivo.

Todos os servios foram construdos utilizando as melhores tecnologias do Google


para mobile e para a nuvem, assim voc pode se concentrar no que voc realmente
bom como desenvolvedor de jogos: a criao de grandes experincias de jogos
para os usurios.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 8


Os Conceitos de Jogo
O Play Games Services d suporte a vrias necessidades e conceitos no mundo dos
jogos. Cada um tratado como um servio diferente que pode ser implementado de
forma separada.

Voc no obrigado a utilizar todos os servios, mas muito importante que voc
saiba que eles existem para poder agregar em seu jogo em um futuro.

Nesse tpico vamos entender um pouco de cada conceito e como o Play Games Ser-
vices trata eles dentro da plataforma do Google.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 9


Achievements

Esse tipo de mecnica pode ser uma tima maneira de aumentar o envolvimento dos
usurios dentro do seu jogo.

Voc pode implementar os achievements em seu jogo para incentivar os jogadores


a alcanar alguns recursos que eles no tm acesso normalmente ou qualquer outro
desafio que mantenha o usurio a continuar tentando atingir seus objetivos dentro
do game.

Os achievements tambm podem ser uma forma divertida para os jogadores pode-
rem comparar o seu progresso uns com os outros e gerar uma competio.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 10


Como funciona?

Os achievements podem ser atribudos ao jogador de forma padro ou incremental.


Geralmente, um achievement incremental envolve um jogador fazendo progresso
gradual para atingir seus objetivos durante um longo perodo de tempo.

Conforme o usurio progride para atingir o achievement, voc pode guardar o pro-
gresso parcial do jogador no Play Games Services.

O Play Games Services mantm um registro do progresso dentro do jogo, avisa quan-
do o jogador preenche os critrios necessrios para desbloquear esse achievement
e diz o quo longe ele est de cumprir esse objetivo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 11


Os achievements incrementais so cumulativos entre as sesses de jogo e o progres-
so no pode ser removido ou redefinido dentro do jogo.

Por exemplo, Ganhar 50 jogos considerado como um achievement incremental,


mas Ganhar 3 jogos seguidos no seria, porque o o progresso do jogador seria re-
definido quando ele perdesse um jogo.

Tenha 5.000 fichas de poker tambm no seria, pois um jogador pode ganhar e
perder as fichas no decorrer dos jogos. Ao criar um achievement incremental, ne-
cessrio definir o nmero total de passos necessrios para desbloque-lo (este deve
ser um nmero entre 2 e 10.000).

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 12


medida que o usurio faz progressos para desbloquear o achievement, voc deve
informar o nmero de passos realizados pelo usurio ao Play Games Services.

Uma vez que o nmero total de passos atinge o valor de desbloqueio, o achievement
desbloqueado.

Um jogo deve ter pelo menos cinco achievements antes de ser publicado. Voc pode
testar com menos de cinco achievements, mas voc precisa de pelo menos cinco
criados antes de publicar o seu jogo na Google Play Store.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 13


Regras para pontuao

Todos os achievements tm um valor de pontuao associados a eles. A pontuao


do jogador deve ser um mltiplo de 5 e um jogo no pode ter um total de mais de
1000 pontos juntando todas as seus achievements. Alm disso, nenhum achievement
pode ter mais de 200 pontos.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 14


Ganhando pontos de experincia (XP)

Os jogadores podem conseguir nveis no seu perfil quando ganham achievements


no Play Games Services.

Para cada ponto associado com um achievement, o jogador ganha 100 pontos de
experincia (XP) quando ele atinge um achievement. Veja a conta abaixo:

XP de um achievement = 100 * (valor de pontos do achievement)

O Play Games Services mantm o controle do XP ganho por cada jogador e envia
uma notificao para o aplicativo da Google Play Games quando o jogador tem pon-
tos suficientes para subir de nvel. Os jogadores podem ver o seu nvel e o histrico
de XP a partir de seu perfil no Google Play Games.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 15


Leaderboards

Os leaderboards podem ser uma maneira divertida de gerar concorrncia entre os


seus jogadores, tanto para os seus fs mais hardcore quanto para os jogadores mais
casuais.

Como funciona?

Quando voc cria um leaderboard, o Play Games Services gerencia a maioria dos
dados deste leaderboard para voc. No final de um jogo ou em algum momento de-
terminado por voc, o jogo apresenta a pontuao do jogador no leaderboard que
voc criou.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 16


O Play Games Services verifica se o resultado atual melhor do que o corrente no
leaderboard do jogador. Se for, o servio atualiza as tabelas de classificao corres-
pondentes com a nova pontuao.

O Play Games Services envia um relatrio de pontuao para o jogador dizendo se a


pontuao adquirida a melhor dentro das estatsticas dirias, semanais ou de todos
os tempos. Se no for, o servio vai dizer ao jogador o seu desempenho baseado nas
estatsticas dirias, semanais ou de todos os tempos.

Para recuperar os resultados de um jogador, voc deve solicitar um prazo (diria, se-
manal, ou de todos os tempos) e especificar se o usurio quer ver um leaderboard
baseado nas redes sociais ou pblico.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 17


Mltiplas leaderboards

Os jogos podem ter vrias leaderboards at um mximo de 70. Por exemplo, um


jogo multi-nvel pode oferecer um leaderboard diferente para cada nvel e um jogo
de corrida pode ter um ranking separado para cada pista.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 18


Leaderboards pblicos e sociais

Existem dois tipos diferentes de visualizao do leaderboard do jogador:

A classificao social uma leaderboard composta de pessoas nos crculos do usu-


rio (ou, mais precisamente, os membros dos crculos que o usurio escolheu para
compartilhar com sua aplicao) que decidiram compartilhar sua evoluo dentro
dos jogos com outros usurios.

J o leaderboard pblico um leaderboard formado por jogadores que optaram


por compartilhar a sua evoluo nos jogos de forma publica. Se o jogador no tiver
escolhido compartilhar a sua evoluo no jogo publicamente, ele no vai aparecer
neste ranking.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 19


Real-Time Multiplayer

Seu jogo pode usar a API multiplayer do Play Games Services para conectar vrios
jogadores juntos em uma nica sesso de jogo e de transferncia entre jogadores
conectados.

Usar a API real-time multiplayer pode ajudar a simplificar o seu esforo de desenvol-
vimento do jogo, porque a API lida com vrias tarefas para voc.

Ela gerencia as conexes de rede para criar e manter um ambiente multiplayer em


tempo real, ou seja, permite a comunicao de rede entre vrios jogadores na mesma
sesso de jogo e permite aos jogadores enviar dados diretamente um para o outro

Fornece uma interface de usurio para convidar outros jogadores a entrar em uma
sala

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 20


Guarda todas as informaes dos participantes e das salas multiplayer durante o
ciclo de vida do jogo
Envia convites das salas multiplayer e atualizaes para os jogadores, notificando
todos os dispositivos em que o jogador est logado

Como funciona?

Antes de implementar o seu jogo usando a API do real-time multiplayer, voc deve
se familiarizar com os conceitos a seguir, que esto relacionados com o ciclo de vida
de um jogo multiplayer em tempo real.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 21


Iniciando uma sala

Internamente, uma sala uma configurao de rede utilizando o protocolo Peer-to-


-Peer entre os participantes, onde os clientes podem se comunicar diretamente uns
com os outros.

Antes de uma sesso de jogo multiplayer ser iniciada em um dispositivo, o usurio do


dispositivo deve estar conectado ao seu jogo.

O jogador local (ou seja, o usurio que est conectado ao dispositivo onde o jogo
est em execuo) pode, ento, iniciar uma sesso de jogo multiplayer, convidando
amigos para participar do jogo ou pedir para ser encontrado aleatoriamente.

A API fornece uma interface grfica que permite aos jogadores convidar seus amigos
ou selecionar um nmero mximo de adversrios que podem encontrar e participar
da sesso.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 22


Isso simplifica sua codificao na hora de desenvolver uma interface grfica, mas
voc tambm pode optar por implementar isso de forma manual.

Com base nos detalhes de seleo de jogador e nas condiguraes da sala, o Play
Games Services tentar criar uma sesso de jogo multiplayer em tempo real.

Se a sala for criada com sucesso, o Play Games Services notifica o jogo e o jogador
local automaticamente colocado como participante da sala.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 23


Configurao da sala

Voc deve especificar o nmero de jogadores que voc deseja permitir na sala. Atu-
almente, o Play Games Services suporta um mximo de oito jogadores em um jogo
multiplayer (incluindo o jogador que est iniciando a partida).

Opcionalmente, voc pode querer garantir que apenas os jogadores que esto inte-
ressados em um tipo especfico de variante de jogo encontrem sua sala. Por exem-
plo, em um jogo de corrida, voc pode encontrar jogadores que s querem jogar um
mapa de corrida ou nvel de dificuldade especfica.

As variantes podem ser utilizados para os jogadores que esto interessados em es-
tilos de jogo diferentes encontrarem sua sala. Se existem diferentes verses do seu
aplicativo, voc tambm pode usar variantes para garantir que apenas os jogadores
que esto em verses compatveis consigam se encontrar.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 24


Os participantes

Quando os jogadores iniciam um jogo multiplayer, eles podem optar por convidar
pessoas especficas ou deixar o Play Games Services selecionar automaticamente ou-
tros participantes aleatoriamente atravs do auto-matching.

Eles tambm podem solicitar uma mistura dos dois (por exemplo, um jogador espe-
cfico de seus crculos, e dois jogadores via auto-matching).

Auto-matching

Um participante encontrado via auto-matching no tem que ser um contato dos cr-
culos do jogador local ou qualquer outra conexo. O auto-matching simplesmente
procura por outros participantes que tambm esto iniciando um jogo naquele mo-
mento e pedindo para serem encontrados.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 25


Convites

Um usurio de dispositivo mvel que recebe um convite ver uma notificao no dis-
positivos onde est logado. Os convites so enviados pelo Play Games Services atra-
vs de mensagens via Google Cloud para dispositivos Android, e atravs do servio
de mensagens da Apple (APNS) para dispositivos iOS .

Se o jogador no tiver o aplicativo instalado em um dispositivo Android, eles sero


solicitados a instalar o aplicativo a partir da Google Play Store. Nesse caso, o convite
fica aguardando e o jogador pode aceit-lo depois de instalar o jogo.

Gameplay

Uma vez que o nmero necessrio de participantes para uma sala tenha sido atingi-
do, a sala considerada como cheia e o jogo pode comear.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 26


Em determinados cenrios avanados, o jogo pode permitir que os participantes co-
nectados iniciem o jogo antes mesmo de todos os convites pendentes serem aceitos.

Se o seu jogo suporta este modo de jogo, certifique-se de lidar com quaisquer parti-
cipantes que entrarem na sala aps o jogo estar em andamento.

Veja o seguinte exemplo:

Em um jogo de corrida de 3 jogadores, a sua sesso pode comear com dois joga-
dores. Durante a corrida, se um terceiro jogador entra na sala, o game pode deixar o
participante recm chegado apenas observando corrida atual como um espectador,
mas no podendo jogar como um piloto. Aps a corrida acabar, o jogo pode permitir
que os trs jogadores participem como pilotos na prxima rodada.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 27


Fechamento da sala

de responsabilidade do seu game avisar os servidores do Play Games Services


quando um jogador que est participando da sala sair. Seu jogo deve tambm lidar
com o cenrio em que todos os participantes exceto o jogador local deixem a sala.
Quando isso acontece, o jogo deve desconectar o jogador local da sala imediata-
mente.

A sala considerada fechada quando todos os seus participantes saem dela. Neste
ponto, o jogo deve desligar qualquer jogo em andamento, e certificar-se de salvar os
dados de forma adequada.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 28


Turn-based Multiplayer

Em um jogo multiplayer baseado em turnos, um nico estado compartilhado pas-


sado entre vrios jogadores, e apenas um jogador tem permisso para modificar o
estado compartilhado de cada vez.

Os jogadores se revezam de forma assncrona de acordo com uma ordem de jogo


determinado pelas regras do jogo.

Seu jogo pode usar a API turn-based multiplayer fornecida pelo Play Games Services
para gerenciar as seguintes tarefas:

Convidar jogadores para participar de uma partida multiplayer baseado em turnos.


Procure por jogadores de forma aleatria para serem adicionados automaticamente
no seu jogo. permitido colocar at oito participantes em uma partida

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 29


Guardar informaes sobre o jogadores e a partida nos servidores do Google e
compartilhar os dados atualizados de forma assncrona com todos os participantes
ao longo do ciclo de vida do jogo

Enviar convites e notificaes da partida aos jogadores

Como funciona?

Um jogo baseado em turnos uma sesso de jogo com vrios participantes que se
revezam de forma consecutiva fazerem suas jogadas durante a partida. As partidas
devem ser iniciada por um jogador logado no Play Games Services.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 30


Seu jogo pode usar a API turn-based multiplayer para se juntar at oito jogadores em
uma mesma partida, incluindo o jogador que iniciou e quaisquer jogadores encon-
trados automaticamente.

As partidas acontecem de forma assncrona e os participantes no precisam estar co-


nectados simultaneamente ao Play Games Services para jogar.

Existem trs coisas bsicas que formam uma partida baseada em turnos:

Participantes: um usurio pode se tornar um participante em um jogo baseado em


turnos, iniciando uma partida, aderirindo a um jogo ao aceitar um convite, ou utilizar
o auto-matching

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 31


Game data: conforme um jogo avana, o jogador pode modificar e armazenar os
dados nos servidores do Google. Os outros participantes podem, em seguida, recu-
perar e atualizar esses dados na sua vez do turno

Match state: um jogo pode ter um dos seguintes estados: active, auto-matching,
complete, canceled e expired, dependendo das aes dos participantes durante a
partida. O estado de um jogo gerido pelo Play Games Services

Seu jogo pode verificar o estado do jogo para determinar se um jogo pode continu-
ar, se os jogadores podem entrar na partida e se o jogo terminou.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 32


Events e Quests

O Play Games Services permite recolher dados cumulativos gerados por seus joga-
dores durante o jogo e armazen-los nos servidores do Google para anlise do jogo.

Voc pode definir com flexibilidade os dados do jogador que seu jogo deve recolher:

Os jogadores usam um determinado item


Os jogadores atingem um certo nvel
Os jogadores executam alguma ao do jogo em especfico

Voc pode usar os dados de eventos como feedback sobre como melhorar o seu
jogo. Por exemplo, voc pode ajustar a dificuldade de certos nveis em seu jogo que
os jogadores esto encontrando muita dificuldade para completar.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 33


O Play Games Services complementa o servio de eventos com as quests, permitin-
do-lhe introduzir novos desafios com prazos que so baseados em dados de even-
tos. As quests lhe permitem envolver os jogadores e incentiv-los com alguma re-
compensa no jogo ou se beneficiar se eles tiverem sucesso, sem ter que publicar seu
jogo inteiro novamente.

Como funciona?

As APIs de eventos fornecem uma maneira de definir e coletar mtricas de jogabili-


dade interessantes e fazer o upload dessas mtricas o Play Games Services.

Por exemplo, veja como seria um evento que poderia ser enviado para o servio di-
zendo que o jogador ganhou moedas de ouro por ter matado os zumbis.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 34


Evento:
Nome: Zumbis Mortos
Descrio: Nmero de vezes que um jogador matou um zumbi
Tipo: Ganhou moedas de ouro

Ou ento, o jogador pode ter perdido moedas de ouro por ter sido atingido por um
zumbi.

Evento:
Nome: Ataque Zumbi
Descrio: Nmero de vezes que um jogador foi atingido por um zumbi
Tipo: Perdeu moedas de ouro

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 35


Esses dois casos exemplificam os dois tipos de eventos que podem ser usados, o
Premium currency source, onde um jogador ganha pontos/moedas/ouro por fazer
determinada ao ou Premium currency sink, quando o jogador gasta seus recursos
ou perde por algum motivo. As APIs de quests permitem que o desenvolvedor crie
desafios dentro do jogo para os jogadores para tentarem completar dentro de um
perodo de tempo pr-definido.Vamos ver alguns exemplos de quests que podemos
utilizar no servio.

Quest:
Nome: Coletar 50 moedas
Descrio: Os zumbis esto tomando a cidade neste fim de semana. Ajude matan-
do todos os zumbis
Critrios de concluso: Mate 100 zumbis

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 36


Ou ento:

Quest:

Nome: Comer 100 panquecas


Descrio: Nessa semana temos a competio Panqueca Comilo, vena o torneio
comendo panquecas
Critrios de concluso: Coma 100 panquecas para vencer o torneio

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 37


Saved Games

O servio de Saved Games uma maneira fcil salvar a progresso dos seus jogado-
res no jogo nos servidores do Google. Seu jogo pode recuperar os dados salvos para
permitir aos jogadores retornarem de onde pararam a partir de qualquer dispositivo.

Voc pode sincronizar os dados de um jogador em vrios dispositivos diferentes. Por


exemplo, se voc tem um jogo que roda em Android, voc pode usar o servio para
permitir que um jogador comece um jogo em seu telefone Android e depois conti-
nue a jogar em um tablet sem perder seu progresso.

Este servio tambm pode ser usado para garantir que um jogador continue a partir
de onde ele parou, mesmo se o seu dispositivo for perdido, destrudo, ou trocado
por um modelo mais novo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 38


Como funciona?

O servio Saved Games dividido em duas partes:

1. Sistema binrio no estruturado: esses dados podem representar o que voc qui-
ser, e seu jogo responsvel por analisar e escrever esses dados.
2. Metadados estruturados: so propriedades adicionais associados com os dados
binrios que permitem que o Play Games Services para apresentar visualmente os
Saved Games para os usurios.

Imagens de capa

O servio fornece ao usurio uma experincia visual aos dados salvos. Voc pode as-
sociar imagens para representar os jogos salvos. Se voc estiver usando a interface
padro para mostrar os jogos salvos, ele ir exibir essas imagens. As imagens tam-
bm pode aparecerem no Google Play Games.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 39


Descrio

Voc pode fornecer uma descrio breve do contedo de um jogo salvo. Esta descri-
o exibida diretamente para os jogadores e deve resumir o estado em que o jogo
salvo representa; por exemplo, Salvando a princesa Lela.

Cota

Os desenvolvedores no so cobrados pelos dados de jogos salvos que esto arma-


zenado na nuvem. Em vez disso, esses dados so consumidos diretamente da conta-
do do Google Drive do jogador - voc nunca tem que se preocupar com isso.

Proteo de escrita/leitura

Todos os jogos guardados so armazenados no Google Drive em uma pasta de da-


dos dos seus jogadores.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 40


Esta pasta s pode ser lida e escrita por seu jogo - no pode ser vista ou modificada
por outros jogos, para que haja uma proteo contra a corrupo de dados. Alm
disso, os jogos salvos so isolados para que eles no possam ser modificados pelos
prprios jogadores.

Suporte offline

O seu jogo ainda pode ler e escrever em um jogo salvo mesmo quando o dispositivo
do jogador est sem conexo com a internet, mas no ser capaz de sincronizar os
dados com o Play Games Services at que a conectividade de rede seja estabelecida.
Uma vez restabelecida, o Play Games Services, de forma assncrona atualiza os dados
dos jogos salvos nos servidores do Google.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 41


Resoluo de conflitos

Ao usar o servio Saved Games, o jogo pode encontrar alguns conflitos ao tentar sal-
var os dados. Estes conflitos podem ocorrer quando um usurio estiver executando
mais de uma instncia de sua aplicao em diferentes dispositivos ou computadores.
Sua aplicao deve ser capaz de resolver esses conflitos de uma forma a proporcio-
nar a melhor experincia para o usurio.

Normalmente, os conflitos de dados ocorrem quando uma instncia do seu aplicati-


vo incapaz de conectar no servio Saved Games durante uma tentativa de carregar
os dados ou salv-los.

Em geral, a melhor maneira de evitar conflitos de dados sempre carregar os dados


mais recentes do servio quando o aplicativo iniciado e salvar os dados usando o
servio com uma frequncia razovel.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 42


No entanto, isso nem sempre possvel, sua aplicao deve fazer todos os esforos
para evitar os conflitos de tal modo que os dados dos usurios sejam preservados e
que eles tenham uma boa experincia.

Limites

O Play Games Services tem um limite do tamanho de dados guardados e da imagem


que representa esses dados sendo 3 MB e 800 KB, respectivamente.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 43


Como configurar o Play Games Services

Depois te aprender vrios conceitos e entender o que o Play Games Services pode
fazer, chegou a hora de comear a configurar o servio para podermos usar me nos-
sos jogos.

A configurao feita no Google Play Developer Console e serve para seus jogos
Android, iOS, C++ ou jogos baseados na web. O Google Play Developer Console
fornece um local centralizado para voc gerenciar os servios de jogos e configurar
os metadados para autorizar e autenticar o seu jogo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 44


Para adicionar o seu jogo no Google Play Developer Console, siga estes passos abai-
xo.

#1 Passo - Faa login no Google Play Developer Console


Para fazer o login, acesse o Google Play Developer Console. Se voc ainda no tem
uma conta, faa o cadastro clicando em Criar uma conta.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 45


#2 Passo - Adicionar o seu jogo ao Google Play Developer Conso-
le

Para adicionar seu jogo, siga estes passos:

1. Abra o menu Game Services, selecione a guia do lado esquerdo, em seguida, cli-
que no boto Set up Google Play game services ou Add new game.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 46


2. Existem duas formas de adi-
cionar um jogo.

Se voc est criando um jogo


do zero, ou se voc nunca
usou uma das APIs do Google
anteriormente, escolha a aba I
dont use any Google APIs in
my game yet.

Digite o nome do seu jogo e


escolha uma categoria e, em
seguida, clique no boto Con-
tinue.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 47


Se este um jogo onde voc j
configurou um ou mais APIs do
Google, selecione a aba I alrea-
dy use Google APIs in my game.

Voc ver uma lista de projetos


do Google Developers Console.

Selecione seu projeto nesta lis-


ta, uma categoria e, em seguida,
clique no boto Continue.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 48


3. Em Game Detail, adicione a descrio, categoria e recursos grficos do seu jogo.
Apenas o nome de exibio necessrio para o teste.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 49


Os outros campos devem ser preenchidos antes de publicar o seu jogo. O nome
para exibio e uma descrio para o seu jogo deve ser genrico o suficiente para
aplicar em todas as verses do seu game que compartilham os mesmos servios do
Play Games Services.

4. Clique em Save para criar uma nova entrada para o seu jogo no Google Play De-
veloper Console.

#3 Passo - Gerar um ID de cliente OAuth 2.0


Seu jogo deve ter um ID de cliente OAuth 2.0, para ser autenticado e autorizado a
utilizar os servios do Play Games Services.

Para configurar a associao entre um ID do cliente e seu jogo, use o Google Play De-
veloper Console para gerar o ID do cliente e vincul-lo para o seu jogo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 50


Criar uma Linked App

Para ligar o seu jogo a um projeto do Google Play Developer Console, abra a pgina
Linked Apps e siga as instrues especficas para a sua plataforma.

1. Clique no boto Android.

2. O nome do aplicativo vai


ser mostrado aos seus joga-
dores. Por isso, escolha um
nome que se aproxime do
nome real do seu jogo An-
droid.

3. Adicione o pacote do
aplicativo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 51


4. Para usar os servios de re-
al-time ou turn-based multi-
player, habilite as configura-
es de multiplayer.

5. Escolha se quer ou no ati-


var a Anti-Piracy (anti-pirata-
ria).

6. Clique em Save and conti-


nue. Em seguida, siga os pas-
sos da prxima seo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 52


Criar um ID de cliente

1. Agora voc precisa autorizar seu aplicativo. Clique em Authorize your app now
para iniciar o processo de criao de um ID de cliente OAuth 2.0

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 53


2. Caso voc tenha escolhido um aplicativo que j esteja no Google Play Developer
Console e o campo fingerprint (certificado digital) j vier preenchido, apenas clique
em Confirm, caso contrrio, vamos precisar gerar um novo fingerprint (certificado di-
gital).

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 54


Gerar um fingerprint (certificado digital)

Abra um terminal e execute a ferramenta Keytool para obter o fingerprint SHA1 do


certificado. Voc deve gerar tanto para a verso de produo quanto de desenvolvi-
mento.

Para obter o fingerprint de produo:

keytool -exportcert \
-alias <nome-da-sua-chave> \
-keystore <caminho-para-sua-keystore> \
-list -v

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 55


Para obter o fingerprint de desenvolvimento (debug):

keytool -exportcert \
-alias androiddebugkey \
-keystore <caminho-para-keystore-debug> \
-list -v

O keytool solicita que voc digite uma senha para o armazenamento das chaves.
A senha padro para o armazenamento de chaves de debug android.
O keytool em seguida, imprime o fingerprint no terminal. Por exemplo:

Certificate fingerprint: SHA1: DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:A-


F:D8:07:09

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 56


Cole o fingerprint gerado no campo Signing certificate fingerprint (SHA1). Clique no
boto Confirm, em seguida, voc ver seu ID de cliente.

Verificando as credenciais para autenticao e autorizao

Dependendo da plataforma que est voc esta desenvolvendo, talvez seja necess-
rio localizar e registar as seguintes informaes de credenciais.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 57


ID do Cliente

Depois de clicar no boto Confirm,


voc vai ver o seu novo ID de clien-
te para esta aplicao. Anote o ID do
cliente, voc vai precisar dessa infor-
mao mais tarde.

Voc tambm pode encontrar essa informao acessando a pgina de Linked Apps
e clicar no item com o ID do cliente para sua plataforma.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 58


O ID do cliente fica no final da pgina.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 59


ID do aplicativo

Voc tambm vai precisar saber o seu ID do aplicativo. Voc pode encontrar isso
olhando para o nmero de 12-13 dgitos ao lado do nome de exibio do seu jogo
na parte superior da pgina.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 60


Utilizando o Play Games Services
Chegou a hora de colocarmos a mo na massa e vermos como funciona na pratica os
recursos dessa plataforma de jogos do Google.

A SDK do Play Games Services permite integrar facilmente os recursos e conceitos de


jogos que vimos at agora aqui, tais como achievements, leaderboards, saved games
e as duas formas de jogos multiplayer, real-time e turned-based.

Sendo esse um ebook introdutrio, vamos mostrar um exemplo utilizando a platafor-


ma Android.

Nessa seo vamos criar um aplicativo de exemplo utilizando dois dos conceitos de
jogos que vimos dentro do Play Games Services, os achievements e leaderboards.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 61


No final deste tutorial voc vai ter um jogo de exemplo totalmente funcional e inte-
grado com os dois servios citados.

Voc pode baixar o cdigo fonte do jogo clicando neste link.

Antes de voc comear

1. Configure o seu ambiente de desenvolvimento Android.


2. Configure um emulador ou dispositivo fsico rodando o Android 2.3 ou superior
para os testes.
3. recomendvel voc testar em um dispositivo fsico Android. No entanto, se voc
no tem um dispositivo fsico, voc pode testar no emulador Android. Para fazer isso,
baixe a imagem do emulador que inclui o Google APIs.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 62


Configurando as bibliotecas do Google Play Services

Para comear a utilizar qualquer servio do Play Games Services no seu jogo ou apli-
cativo, precisamos fazer a instalao das bibliotecas do Google Play Services utilizan-
do o Android SDK Manager.

Essas bibliotecas servem tanto para os servios de jogos como para outros como o
Maps, Drive e Google+.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 63


Siga os passos abaixo para fazer a instalao e configurao das bibliotecas.

1. Abra o Android Studio e inicie o Android SDK Manager em File > Settings > Appe-
arence & Behavior > Android SDK. Na aba SDK Platforms habilite a opo Show Pa-
ckage Details para serem mostrados todas as opes de cada plataforma. Selecione
as opes do Google APIs dentro de qualquer um dos nveis de API 17 ou maior.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 64


2. Agora, na aba SDK Tools selecione a opo Google Play Services e clique no bo-
to Apply.

Agora voc pode comear a utilizar os recursos do Play Games Services.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 65


Iniciando o projeto

Crie um novo projeto no Android Studio escolhendo a verso 15 minima de API e o


tipo de Activity sendo Empty Activity. Dessa forma iniciamos com um projeto total-
mente vazio e mais fcil de manipular.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 66


Para facilitar o desenvolvimento do nosso projeto, ns vamos utilizar um projeto base
fornecido pelo Google com algumas funcionalidades pr-configuradas.

Faa o download do projeto exemplo nesta pgina. Voc pode utilizar o Git para clo-
nar o cdigo fonte ou fazer o download do pacote ZIP clicando no boto Download
ZIP (extraia os arquivos).

Agora precisamos importar a biblioteca BaseGameUtils que veio junto com o projeto
exemplo do Google.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 67


Com o projeto aberto no Android Studio, v em File > New > Import Module. Se-
lecione a biblioteca que est dentro de android-basic-samples/BasicSamples/libra-
ries/BaseGameUtils e clique em Finish.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 68


Adicione o projeto BaseGameUtils como dependncia no arquivo build.gradle do
mdulo app.

dependencies {
compile project(:BaseGameUtils)
}

No arquivo build.gradle do mdulo BaseGameUtils adicione a seguinte configurao


dentro de android {...}.

defaultConfig {
minSdkVersion 15
}

Agora precisamos configurar nosso aplicativo e o Google Play Services dentro do


projeto.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 69


Crie o arquivo res/values/ids.xml, aqui que vamos guardar algumas informaes
do nosso jogo. Adicione o contedo abaixo.
<resources>
<string name=app_id>ID_DO_SEU_APP</string>

</resources>

Adicione o ID do aplicativo e a verso do Google Play Services no AndroidManifest.


xml.
<meta-data
android:name=com.google.android.gms.games.APP_ID
android:value=@string/app_id />

<meta-data
android:name=com.google.android.gms.version
android:value=@integer/google_play_services_version />

Pronto, podemos comear a codificar nosso jogo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 70


Fazendo login na conta do Google

Quando voc utiliza os servios do Google em


seus aplicativos Android, voc precisa login
com seu usurio em sua conta do Google.

Existem vrias formas de implementar isso,


mas ns vamos aproveitar uma funcionalida-
de pronta usando a classe BaseGameActivity
juntamente com os botes padro de login e
logout.

Abra o arquivo de layout activity_main.xml da


sua aplicao e adicione os botes de login e
logout.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 71


Altere a sua MainActivity e estenda ela BaseGameActivity. Dessa forma podemos
automatizar certas partes do processo de login dos usurios. Vamos tambm imple-
mentar a interface View.OnClickListener para usarmos mais para frente.

public class MainActivity extends BaseGameActivity implements


View.OnClickListener

Agora vamos recuperar as referncias dos botes no onCreate e adicionar nossa


MainActivity como um listener.

findViewById(R.id.sign_in_button).setOnClickListener(this);
findViewById(R.id.sign_out_button).setOnClickListener(this);

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 72


Vamos configurar os eventos onClick nos botes para responderem a alguma ao:

@Override
public void onClick(View view) {
if (view.getId() == R.id.sign_in_button) {
beginUserInitiatedSignIn();
}
else if (view.getId() == R.id.sign_out_button) {
signOut();
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}
}
Ns vamos usar os mtodos da classe BaseGameActivity para efetuar o login (be-
ginUserInitiatedSignIn e signOut). Quando o aplicativo iniciado, ele tentar fazer o
login automaticamente e tambm usar os botes de login e logout.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 73


Agora precisamos implementar os dois mtodos de callback em nossa Activity:

@Override
public void onSignInSucceeded() {
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
}

@Override
public void onSignInFailed() {
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}

Voc pode adicionar mais cdigo se for necessrio. Voc tambm pode optar por
salvar o progresso do jogador, mesmo se ele no estiver logado, mas isso depende
do seu jogo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 74


Trabalhando com Achievements

Agora precisamos implementar o sistema de achievements para que voc possa des-
bloquear as conquistas quando o jogador atingir os objetivos. Naturalmente, isso vai
depender da finalidade do seu prprio jogo, mas neste caso vamos implementar de
forma simples em nosso aplicativo de exemplo.

Criando um Achievement

Acesse seu jogo no Google De-


veloper Console, clique no boto
Achievements do lado esquerdo
do menu e clique em Add achie-
vement.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 75


Na pgina de criao de um achievement
preencha nome, descrio e um cone para
o seu achievement e escolha um estado,
pontos e a ordem da lista. Clique em Save.

Copie o ID do achievement que voc v na


listagem.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 76


Implementando um Achievement

Vamos comear com o layout, que inclui os botes de login/logout adicionamos an-
teriormente:

<LinearLayout android:text=Logout android:layout_width=fill_parent


android:id=@+id/sign_in_buttons android:visibility=gone /> android:layout_height=wrap_content
android:layout_width=fill_parent android:layout_centerHorizontal=true
android:layout_height=wrap_content <!-- show achievements --> android:text=Acerto o nmero!
android:layout_alignParentTop=true android:textSize=30sp
android:orientation=horizontal> <Button android:textStyle=bold />
android:id=@+id/show_achievements
<!-- sign-in button --> android:layout_width=wrap_content <LinearLayout
android:layout_height=wrap_content android:layout_width=fill_parent
<com.google.android.gms.common.Sig- android:text=Achievements /> android:layout_height=wrap_content
nInButton android:layout_below=@id/guess_text
android:id=@+id/sign_in_button </LinearLayout> android:orientation=vertical>
android:layout_width=wrap_content
android:layout_height=wrap_content /> <RelativeLayout <LinearLayout
android:layout_width=fill_parent android:layout_width=fill_parent
<!-- sign-out button --> android:layout_height=wrap_content android:layout_height=wrap_content
android:layout_below=@id/sign_in_but- android:orientation=horizontal>
<Button tons>
android:id=@+id/sign_out_button <Button
android:layout_width=wrap_content <TextView android:id=@+id/btn7
android:layout_height=wrap_content android:id=@+id/guess_text android:layout_width=0dp

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 77


android:layout_height=match_parent android:id=@+id/btn9 android:onClick=btnPressed
android:layout_margin=1dp android:layout_width=0dp android:padding=5dp
android:layout_weight=1 android:layout_height=match_parent android:tag=4
android:background=#ff000033 android:layout_margin=1dp android:text=4
android:gravity=center android:layout_weight=1 android:textColor=#ffffffff
android:onClick=btnPressed android:background=#ff000033 android:textSize=30sp
android:padding=5dp android:gravity=center android:textStyle=bold />
android:tag=7 android:onClick=btnPressed
android:text=7 android:padding=5dp <Button
android:textColor=#ffffffff android:tag=9 android:id=@+id/btn5
android:textSize=30sp android:text=9 android:layout_width=0dp
android:textStyle=bold /> android:textColor=#ffffffff android:layout_height=match_parent
android:textSize=30sp android:layout_margin=1dp
<Button android:textStyle=bold /> android:layout_weight=1
android:id=@+id/btn8 </LinearLayout> android:background=#ff000033
android:layout_width=0dp android:gravity=center
android:layout_height=match_parent <LinearLayout android:onClick=btnPressed
android:layout_margin=1dp android:layout_width=fill_parent android:padding=5dp
android:layout_weight=1 android:layout_height=wrap_content android:tag=5
android:background=#ff000033 android:layout_weight=1 android:text=5
android:gravity=center android:orientation=horizontal> android:textColor=#ffffffff
android:onClick=btnPressed android:textSize=30sp
android:padding=5dp <Button android:textStyle=bold />
android:tag=8 android:id=@+id/btn4
android:text=8 android:layout_width=0dp <Button
android:textColor=#ffffffff android:layout_height=match_parent android:id=@+id/btn6
android:textSize=30sp android:layout_margin=1dp android:layout_width=0dp
android:textStyle=bold /> android:layout_weight=1 android:layout_height=match_parent
android:background=#ff000033 android:layout_margin=1dp
<Button android:gravity=center android:layout_weight=1

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 78


android:background=#ff000033 android:textColor=#ffffffff android:tag=3
android:gravity=center android:textSize=30sp android:text=3
android:onClick=btnPressed android:textStyle=bold /> android:textColor=#ffffffff
android:padding=5dp android:textSize=30sp
android:tag=6 <Button android:textStyle=bold />
android:text=6 android:id=@+id/btn2
android:textColor=#ffffffff android:layout_width=0dp </LinearLayout>
android:textSize=30sp android:layout_height=match_parent
android:textStyle=bold /> android:layout_margin=1dp <LinearLayout
android:layout_weight=1 android:layout_width=fill_parent
</LinearLayout> android:background=#ff000033 android:layout_height=wrap_content
android:gravity=center android:layout_weight=1
<LinearLayout android:onClick=btnPressed android:orientation=horizontal>
android:layout_width=fill_parent android:padding=5dp
android:layout_height=wrap_content android:tag=2 <Button
android:layout_weight=1 android:text=2 android:id=@+id/btn0
android:orientation=horizontal> android:textColor=#ffffffff android:layout_width=0dp
android:textSize=30sp android:layout_height=match_parent
<Button android:textStyle=bold /> android:layout_margin=1dp
android:id=@+id/btn1 android:layout_weight=1
android:layout_width=0dp <Button android:background=#ff000033
android:layout_height=match_parent android:id=@+id/btn3 android:gravity=center
android:layout_margin=1dp android:layout_width=0dp android:onClick=btnPressed
android:layout_weight=1 android:layout_height=match_parent android:padding=5dp
android:background=#ff000033 android:layout_margin=1dp android:tag=0
android:gravity=center android:layout_weight=1 android:text=0
android:onClick=btnPressed android:background=#ff000033 android:textColor=#ffffffff
android:padding=5dp android:gravity=center android:textSize=30sp
android:tag=1 android:onClick=btnPressed android:textStyle=bold />
android:text=1 android:padding=5dp

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 79


<Button
android:id=@+id/btnAgain
android:layout_width=0dp
android:layout_height=match_parent Nesse layout ns colocamos um boto de achieve-
android:layout_margin=1dp
android:layout_weight=1
ments e os botes de login e logout. No vou entrar
android:background=#ffffff00 em muitos detalhes sobre o jogo de exemplo.
android:enabled=false
android:gravity=center
android:onClick=btnPressed
android:padding=5dp O jogo seleciona um nmero aleatrio entre 0 e 9 e o
android:tag=-1
android:text=Again
jogador tem que escolher um nmero para tentar adi-
android:textColor=#ffffff00 vinhar o nmero selecionado.
android:textSize=30sp
android:textStyle=bold />

</LinearLayout>
O jogo atualiza o campo de texto avisando se o usu-
</LinearLayout> rio adivinhou ou no o nmero. Se o palpite for corre-
</RelativeLayout>
to, um achievement desbloqueado.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 80


Volte para sua MainAcitivty e adicione as seguintes variveis em escopo de classe:

private Button button0, button1, button2, button3, button4, button5,


button6, button7, button8, button9, buttonAgain;
private int number;
private Random rand;
private TextView info;

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 81


Estes botes representam os nmeros, o gerador de nmeros aleatrios e o campo
de texto. Adicione o seguinte cdigo ao seu mtodo onCreate:

findViewById(R.id.show_achievements).setOnClickListener(this);

button0=(Button)findViewById(R.id.btn0);
button1=(Button)findViewById(R.id.btn1);
button2=(Button)findViewById(R.id.btn2);
button3=(Button)findViewById(R.id.btn3);
button4=(Button)findViewById(R.id.btn4);
button5=(Button)findViewById(R.id.btn5);
button6=(Button)findViewById(R.id.btn6);
button7=(Button)findViewById(R.id.btn7);
button8=(Button)findViewById(R.id.btn8);
button9=(Button)findViewById(R.id.btn9);
buttonAgain=(Button)findViewById(R.id.btnAgain);

info=(TextView)findViewById(R.id.guess_text);
rand=new Random();
number=rand.nextInt(10);

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 82


Agora adicione um mtodo chamado disableNumbers, que chamaremos quando o
usurio fizer a escolha de um nmero:

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 83


Implemente outro mtodo chamado enableNumbers, que invocado quando o usu-
rio escolheu jogar novamente:

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 84


No arquivo ids.xml que criamos anteriormente, adicione a seguinte entrada com o ID
de sua achievement.

Agora adicione o mtodo que estabelecemos como atributo onClick para os botes:

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 85


Ns chamamos o Games.Achievements se o palpite do usurio for correto passando
o ID do achievement que configuramos em nosso ids.xml.

Por ltimo, vamos permitir que o usurio visualize seus achievements do jogo. Isso
acontecer quando ele clicar no boto Achievement. No cdigo do mtodo onClick
adicione um else if:

else if (view.getId() == R.id.show_achievements){


startActivityForResult(Games.Achievements.getAchievementsIntent(
getApiClient()), 1);
}

Usamos o mtodo getAchievementsIntent com um nmero inteiro para exibir os


achievements dos usurios dentro do jogo.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 86


Trabalhando com Leaderboards

Depois de definirmos e implementarmos


os achievements do nosso jogo, preci-
samos desenvolver nosso leaderboard
para que nosso aplicativo Android possa
mostrar as tabelas de classificao, gra-
var a pontuao do jogador e comparar
o placar contra a pontuao do jogador
em sesses anteriores do jogo.

Criando um Leaderboard
Acesse seu jogo no Google Developer
Console, clique no boto Leaderboards
do lado esquerdo do menu e clique em
Add leaderboard.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 87


Tenha certeza que voc entendeu o conceito de Leaderboard no Play Games Servi-
ces, isso muito importante para continuarmos.

Voc pode fazer um monte de coisas diferentes utilizando os Leaderboards, por isso
esse exemplo apenas um ponto de partida.

Digite os detalhes do seu novo leaderboard. Para o exemplo, usamos o nome Menos
Chutes e selecionamos Smaller is Better na seo Ordering.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 88


Adicione um cone se quiser, se no uma imagem padro ser usada. Salve sua nova
leaderboard e copie seu ID.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 89


Implementando um Leaderboard

Para essa seo, ns vamos aproveitar todo o cdigo que fizemos anteriormente
quando implementamos os achievements.

Vamos comear guardando a informao do nosso leaderboard criado. Abra o arqui-


vo ids.xml que criamos anteriormente e adicione a seguinte entrada com o ID do seu
leaderboard.

<string name=menos_chutes_leaderboard>CgkIip-mysUTEAIQBQ</string>

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 90


Agora precisamos adicionar um boto para o jogador acessar o seu leaderboard e
acompanhar sua pontuao. Para isso, abra o arquivo activity_main.xml e adicione o
boto Leaderboard abaixo do boto Achievements.

<Button
android:id=@+id/show_leaderboard
android:layout_width=wrap_content
android:layout_height=wrap_content
android:text=Leaderboard />

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 91


Agora precisamos trabalhar com esse boto em nossa MainActivity. Voc vai precisar
que o seguinte cdigo seja adicionado no mtodo onCreate.

findViewById(R.id.show_leaderboard).setOnClickListener(this);

Adicione tambm um atributo de classe chamado numGuesses.

private int numGuesses=0;

Esse atributo vai controlar o nmero de vezes que o jogador tentou adivinhar o n-
mero correto.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 92


Precisamos mexer tambm no mtodo
onClick utilizado pelas teclas numricas no
layout.

Quando o jogador acertar um nmero alm


de desbloquearmos seu achievement tam-
bm vamos submeter seus pontos para o lea-
derboard.

Veja como ficou a implementao do mtodo


onClick utilizando o atributo numGuesses e
fazendo a chamada para o leaderboard.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 93


Se o jogador clicar no boto De Novo, ns zeramos o atributo numGuesses. Se o usu-
rio clica em um boto numrico, incrementamos o numGuesses.

Ento enviamos a pontuao para o leaderboard quando o usurio adivinha o nme-


ro. O usurio pode fazer at cinco chutes.

O importante aqui o submitScore. Passamos o nmero de chutes que o jogador le-


vou para acertar o nmero correto. Se o nmero de tentativas menor do que qual-
quer entrada existente na leaderboard do usurio, sua pontuao ser substituda
pelo novo valor.

Antes de finalizar nossa implementao, vamos permitir que o usurio exiba o lea-
derboard do jogo clicando no boto Leaderboard que adicionamos.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 94


Veja como ficou o cdigo do mtodo onClick.

Isso permitir que o usurio veja a classificao atual dentro do leaderboard.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 95


Plataformas e Game Engines
O foco deste ebook mostrar os servios do Play Games Services na plataforma An-
droid como exemplo, mas existem vrias outras plataformas e engines de jogos que
possvel utilizar com o servio.

O objetivo do Google facilitar e tornar seu jogo vivel em vrias plataformas dife-
rentes centralizando os dados em um lugar s, na nuvem. Por essa razo existem di-
versas SDKs e plugins para diferentes tecnologias.

Voc pode encontrar todas as informaes entrando no site oficial.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 96


Plataformas

Hoje possvel desenvolver diretamente utilizando as APIs do servio para Android,


iOS, Web e C++. Apenas para a Web no existe uma SDK de desenvolvimento, mas
todos os servios so em formato REST, o que facilita muito. Veja a tabela com as
SDKs disponveis:

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 97


Game Engines
Todos sabemos que os desenvolvedores de jogos utilizam engines que auxiliam no
desenvolvimento de games. Por essa razo, o Google disponibiliza alguns plugins
para engines conhecidas no mercado que facilitam a utilizao do servio. Veja na
tabela abaixo os plugins disponveis para cada engine.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 98


Concluso
Espero que este ebook tenha aberto as portas para voc para o Play Games Services.

Hoje a tecnologia em nuvem uma parte muito importante da maioria dos aplicati-
vos e jogos de sucesso que temos no mercado.

Vimos como funciona a Google Play Games, a plataforma do Google onde os joga-
dores podem ver os dados de seus jogos salvos, estatsticas de conquistas e tambm
encontrar outros jogadores para jogarem juntos.

Entendemos tambm como poderoso o servio do Play Games Services facilitando


muito o desenvolvimento de nossos jogos trazendo conceitos em forma de servios
e guardando os dados em nuvem de forma segura e distribuda.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 99


Vrios conceitos importantes no desenvolvimento de jogos esto disponveis no ser-
vio permitindo que o desenvolvedor no se preocupe tanto com eles, mas sim, em
criar um jogo que entretenha o usurio e divirta as pessoas.

Esses conceitos podem ser facilmente implementados com poucas linhas de cdigo
e algumas configuraes.

De forma prtica, desenvolvemos um jogo de exemplo totalmente funcional usando


dois servios do Play Games Services, achievements e leaderboards.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 100
Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 101
Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 102
O objetivo do jogo era adivinhar um nmero secreto aleatrio em no mximo 5 ten-
tativas, caso o jogador acerte, era liberado um achievement para e suas estatsticas
eram enviadas para seu leaderboard.

Utilizando os dois botes que criamos, foi possvel visualizar todas os achievements
do jogador e tambm o seu leaderboard para acompanhar o progresso geral dentro
do jogo.

Finalizando

Espero que tenha gostado desse material e que tenha sido muito til para voc, nos-
so objetivo era apresentar a tecnologia e te dar conhecimento o suficiente para utili-
za-la e dar muito mais qualidade aos seus jogos.

Grande abrao da equipe AndroidPro e Produo de Jogos.

Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android 103
O objetivo do Produo de Jogos ajudar
pessoas a trilharem o caminho completo do
desenvolvimento de jogos, da concepo da
ideia publicao e venda do jogo.

Produzimos contedo sobre carreira, desen-


volvimento, mercado e marketing de jogos
digitais, que disponibilizamos atravs de en-
trevistas em vdeos, blog posts, ebooks e pa-
lestras online.

Tudo isso em um site livre de propagandas e


voltado para o leitor. Para saber mais sobre o
mundo dos jogos digitais, no deixe de visitar
o site Produo de Jogos em: producaodejo-
gos.com.

- Raphael Dias
Engenheiro da computao e desenvolvedor de
software h mais de 9 anos, com experincia em
tecnologias como Java, Python e Android. J ajudou
mais de 15 mil pessoas a mergulhar no universo do
Desenvolvimento Android com o blog AndroidPro.

O AndroidPro foi montado com o objetivo de pas-


sar conhecimento de Desenvolvimento Android
para todos. Alm disso, tenho o grande desejo e
objetivo de, a partir do AndroidPro, colaborar com
o crescimento do Brasil e dos nossos profissionais
na rea de aplicativos Android.

Por isso, tambm falamos sobre Carreira, e Mercado


de Trabalho com Android. Afinal, o momento que
estamos vivendo ideal para se inserir no mercado
mobile, ainda mais no nosso pas!

- Fillipe Cordeiro

Você também pode gostar