Vous êtes sur la page 1sur 105

NDICE

Introduo3
Os Conceitos de Jogo
Achievements

Regras para pontuao

Ganhando pontos de experincia (XP)
Leaderboards

Mltiplas leaderboards

Leaderboards pblicos e sociais
Real-Time Multiplayer

Iniciando uma sala

Configurao da sala

Os participantes
Auto-matching
Convites
Gameplay

Fechamento da sala
Turn-based Multiplayer
Events e Quests
Saved Games

Imagens de capa
Descrio
Cota

Proteo de escrita/leitura

Suporte offline

Resoluo de conflitos
Limites

9
10
14
15
16
18
19
20
22
24
25
25
26
26
28
29
33
38
39
40
40
40
41
42
43

Como configurar o Play Games Services


#1 Passo - Login no Google Play Developer Console
#2 Passo - Google Play Developer Console
#3 Passo - ID de cliente OAuth 2.0

Criar uma Linked App

Criar um ID de cliente

Gerar um fingerprint (certificado digital)

Verificando as credenciais

ID do Cliente

ID do aplicativo

44
45
46
50
51
53
55
57
58
60

Utilizando o Play Games Services



Antes de voc comear

Configurando as bibliotecas do Google Play Services

Iniciando o projeto

Fazendo login na conta do Google

Trabalhando com Achievements

Criando um Achievement

Implementando um Achievement

Trabalhando com Leaderboards

Criando um Leaderboard

Implementando um Leaderboard

61
62
63
66
71
75
75
77
87
87
90

Plataformas e Game Engines


Plataformas
Game Engines

96
97
98

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 entender o todo.

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

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

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, fases concludas e etc. Voc tambm pode ver todos os jogos anteriormente jogados,
aqueles que jogou recentemente, e aqueles que tem atualmente instalados. possvel 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 tambm 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

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 interagir com seus jogos em um s lugar. A plataforma grtis e est crescendo e melhorando 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

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

Voc pode utilizar esses recursos tanto no Android como no iOS ou em qualquer outro 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

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 Services trata eles dentro da plataforma do Google.

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

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 poderem 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 progresso parcial do jogador no Play Games Services.
O Play Games Services mantm um registro do progresso dentro do jogo, avisa quando 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 progresso 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 redefinido 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, necessrio 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 pontos 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 determinado 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 correspondentes 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, semanal, 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 usurio (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 desenvolvimento 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. Atualmente, 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 interessados em um tipo especfico de variante de jogo encontrem sua sala. Por exemplo, 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 estilos 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 outros participantes aleatoriamente atravs do auto-matching.
Eles tambm podem solicitar uma mistura dos dois (por exemplo, um jogador especfico de seus crculos, e dois jogadores via auto-matching).
Auto-matching
Um participante encontrado via auto-matching no tem que ser um contato dos crculos do jogador local ou qualquer outra conexo. O auto-matching simplesmente
procura por outros participantes que tambm esto iniciando um jogo naquele momento 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 dispositivos onde est logado. Os convites so enviados pelo Play Games Services atravs 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 atingido, 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 conectados 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 participantes 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 jogadores. 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 imediatamente.
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 passado 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 encontrados automaticamente.
As partidas acontecem de forma assncrona e os participantes no precisam estar conectados 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, recuperar 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 continuar, 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 jogadores 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, permitindo-lhe introduzir novos desafios com prazos que so baseados em dados de eventos. As quests lhe permitem envolver os jogadores e incentiv-los com alguma recompensa 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 jogabilidade 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 dizendo 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 matando 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 jogadores 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 continue 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 quiser, 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 associar 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 tambm 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 descrio 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 armazenado na nuvem. Em vez disso, esses dados so consumidos diretamente da contado 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 dados 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 salvar 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 proporcionar a melhor experincia para o usurio.
Normalmente, os conflitos de dados ocorrem quando uma instncia do seu aplicativo 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 nossos 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 abaixo.

#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 Console


Para adicionar seu jogo, siga estes passos:
1. Abra o menu Game Services, selecione a guia do lado esquerdo, em seguida, clique 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 adicionar 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 Continue.

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 already use Google APIs in my game.
Voc ver uma lista de projetos
do Google Developers Console.
Selecione seu projeto nesta lista, 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 Developer 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 Developer 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 jogadores. Por isso, escolha um
nome que se aproxime do
nome real do seu jogo Android.
3. Adicione o pacote do
aplicativo.

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

51

4. Para usar os servios de real-time ou turn-based multiplayer, habilite as configuraes de multiplayer.


5. Escolha se quer ou no ativar a Anti-Piracy (anti-pirataria).
6. Clique em Save and continue. Em seguida, siga os passos 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 digital).

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 desenvolvimento.
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:AF: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 necessrio 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 cliente para esta aplicao. Anote o ID do
cliente, voc vai precisar dessa informao 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 plataforma 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 integrado 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 aplicativo, precisamos fazer a instalao das bibliotecas do Google Play Services utilizando 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 > Appearence & Behavior > Android SDK. Na aba SDK Platforms habilite a opo Show Package 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 boto 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 totalmente 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 clonar 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. Selecione a biblioteca que est dentro de android-basic-samples/BasicSamples/libraries/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 funcionalidade 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 implementar 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 (beginUserInitiatedSignIn 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 desbloquear 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 Developer Console, clique no boto
Achievements do lado esquerdo
do menu e clique em Add achievement.

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 anteriormente:
<LinearLayout
android:id=@+id/sign_in_buttons
android:layout_width=fill_parent
android:layout_height=wrap_content
android:layout_alignParentTop=true
android:orientation=horizontal>
<!-- sign-in button -->

android:text=Logout
android:visibility=gone />
<!-- show achievements -->
<Button
android:id=@+id/show_achievements
android:layout_width=wrap_content
android:layout_height=wrap_content
android:text=Achievements />

<com.google.android.gms.common.SignInButton
android:id=@+id/sign_in_button
</LinearLayout>
android:layout_width=wrap_content
android:layout_height=wrap_content /> <RelativeLayout
android:layout_width=fill_parent
android:layout_height=wrap_content
<!-- sign-out button -->
android:layout_below=@id/sign_in_but<Button
tons>
android:id=@+id/sign_out_button
<TextView
android:layout_width=wrap_content
android:id=@+id/guess_text
android:layout_height=wrap_content
Google Play Game Services - Simplificando o Desenvolvimento do Seu Jogo Android

android:layout_width=fill_parent
android:layout_height=wrap_content
android:layout_centerHorizontal=true
android:text=Acerto o nmero!
android:textSize=30sp
android:textStyle=bold />
<LinearLayout
android:layout_width=fill_parent
android:layout_height=wrap_content
android:layout_below=@id/guess_text
android:orientation=vertical>
<LinearLayout
android:layout_width=fill_parent
android:layout_height=wrap_content
android:orientation=horizontal>
<Button
android:id=@+id/btn7
android:layout_width=0dp
77

android:layout_height=match_parent
android:layout_margin=1dp
android:layout_weight=1
android:background=#ff000033
android:gravity=center
android:onClick=btnPressed
android:padding=5dp
android:tag=7
android:text=7
android:textColor=#ffffffff
android:textSize=30sp
android:textStyle=bold />
<Button
android:id=@+id/btn8
android:layout_width=0dp
android:layout_height=match_parent
android:layout_margin=1dp
android:layout_weight=1
android:background=#ff000033
android:gravity=center
android:onClick=btnPressed
android:padding=5dp
android:tag=8
android:text=8
android:textColor=#ffffffff
android:textSize=30sp
android:textStyle=bold />
<Button

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

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

android:onClick=btnPressed
android:padding=5dp
android:tag=4
android:text=4
android:textColor=#ffffffff
android:textSize=30sp
android:textStyle=bold />
<Button
android:id=@+id/btn5
android:layout_width=0dp
android:layout_height=match_parent
android:layout_margin=1dp
android:layout_weight=1
android:background=#ff000033
android:gravity=center
android:onClick=btnPressed
android:padding=5dp
android:tag=5
android:text=5
android:textColor=#ffffffff
android:textSize=30sp
android:textStyle=bold />
<Button
android:id=@+id/btn6
android:layout_width=0dp
android:layout_height=match_parent
android:layout_margin=1dp
android:layout_weight=1

78

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

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

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

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

79

<Button
android:id=@+id/btnAgain
android:layout_width=0dp
android:layout_height=match_parent
android:layout_margin=1dp
android:layout_weight=1
android:background=#ffffff00
android:enabled=false
android:gravity=center
android:onClick=btnPressed
android:padding=5dp
android:tag=-1
android:text=Again
android:textColor=#ffffff00
android:textSize=30sp
android:textStyle=bold />
</LinearLayout>
</LinearLayout>
</RelativeLayout>

Nesse layout ns colocamos um boto de achievements e os botes de login e logout. No vou entrar
em muitos detalhes sobre o jogo de exemplo.
O jogo seleciona um nmero aleatrio entre 0 e 9 e o
jogador tem que escolher um nmero para tentar adivinhar o nmero selecionado.
O jogo atualiza o campo de texto avisando se o usurio adivinhou ou no o nmero. Se o palpite for correto, 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 usurio 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, precisamos desenvolver nosso leaderboard
para que nosso aplicativo Android possa
mostrar as tabelas de classificao, gravar 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 Services, 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 arquivo 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 nmero 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 tambm vamos submeter seus pontos para o leaderboard.
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 usurio clica em um boto numrico, incrementamos o numGuesses.
Ento enviamos a pontuao para o leaderboard quando o usurio adivinha o nmero. O usurio pode fazer at cinco chutes.
O importante aqui o submitScore. Passamos o nmero de chutes que o jogador levou para acertar o nmero correto. Se o nmero de tentativas menor do que qualquer 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 leaderboard 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 Android 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 diferentes centralizando os dados em um lugar s, na nuvem. Por essa razo existem diversas 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 aplicativos e jogos de sucesso que temos no mercado.
Vimos como funciona a Google Play Games, a plataforma do Google onde os jogadores 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 servio 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 tentativas, 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, nosso objetivo era apresentar a tecnologia e te dar conhecimento o suficiente para utiliza-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, desenvolvimento, mercado e marketing de jogos
digitais, que disponibilizamos atravs de entrevistas em vdeos, blog posts, ebooks e palestras 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: producaodejogos.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 passar 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