Ao contrario da criação do loading no Space Marauders, o login com a Google Play eu estudei do zero.
A Google mantem bem arrumadinho uma pá de ferramentas que você precisa configurar sequencialmente e minunciosamente para que as coisas funcionem, são ferramentas muito boas, mas como agente se sente amarrado com elas… mas enfim.
Fiz meu cadastro no Firebase, finalmente fiz minha conta na Google Play Develop e consegui fazer o login! Olha, eu não vou consegui fazer um apanhando igual eu fiz sobre o login, dessa vez eu tive que ler toda a documentação oficial, me enchi de dúvidas, passei a ler blogs, cada um falando mais besteira do que o outro, vi um vídeo de um indiano, falando indiano, e eu fiquei fazendo o que ele fazia, e por fim vi um vídeo de um desenvolver indie americano, que é incompleto também! então não vou postar o caminho, se tivesse que fazer seria um tutorial
Mas consegui!
E meu teste foi exibir um High Score, embora não deva fazer isso na Google Play.
Se continuar com isso vou somente usar os archivments e o login. Então:
Infra básica -Login google, facebook, e outra porcaria qualquer que facilite o usuário logar e eu ter controle de usuário (V0.102) – Finalizado!!!!
Seguindo o que propus no projeto teste Space Marauders, fiz a cena de loading. Eu já fiz umas 4 vezes já esse tipo de código, mas como quase tudo nesse projeto eu preciso relembrar e achei um tutorial muito legal, que inclusive me mostrou uma forma de fazer diferente.
O Blog do tal do Jhon, gamedevbeginner, apresenta 3 formas, que na verdade são 2 de fazer o loading de cena. Fazer o loading dentro da cena e fazer o loading de uma cena externa. A primeira, achei interessante mas não é aderente ao projeto, o loading dentro da cena, mantendo inclusive a UI, bem bacana para quem tem muitas fases diferentes e não quer gerenciar essas múltiplas fases.
O Space Marauders terá 3 cenas básicas, a cena de menu, a cena da cidade e a cena da batalha de nave, por serem poucas, eu opto por ter uma cena adicional que controle o loading.
Não vou entrar no algoritmo em si do gamedevbeginner, quem quiser dá uma olhada lá, até por que eu mudei ele, acabei fazendo uma mescla com um conceito da 1ª opção, pois achei interessante manter um objeto que não é destruído no jogo, assim posso transitar não só apenas informação de loading, mas de qualquer coisa que eu precise. Com isso não mantive a classe estática, substitui ela por um objeto que não se destrói. Mas segue a imagem do blog gamedevbeginner do colega para exemplificar o que eu fiz:
O coleguinha gamedevbeginner tb postou um vídeo muito bom sobre loadings no geral:
Quando idealizei o Brutal Chess queria que a view fosse como a de Gauntlet, a forma como o jogo era visualizado e como interagia com o jogador, a visão por cima (ou top). Ao forçar esse tipo de visão ao jogador, traria alguns desafios, e outras facilidades.
Vale a pena lembrar que é desperdício de memória e trabalho em si, exibir ao usuário o que ele não vê ou interage. Nesse quesito temos vantagens e desvantagens para trabalhar nesse projeto.
Desafios de fixar a câmera em uma posição, vantagens e desvantagens
A primeira vantagem de cara é poder usar e abusar de sprites no jogo, onde o jogador nunca teria o problema de ver a imagem lateralizada, como as folhagens da fase introdutória por exemplo, seja ela nos muros, colunas ou na forma de props dentro da fase. E o melhor, elas ainda fazem sua sombra perfeitamente.
Modelagem da coluna entre as paredes
Fase introdutória – O Jardim
Mas nem tudo são flores (ou folhas)… o modelo das paredes seguiu a solução inteligente usada em jogos assim como em Zeldae o próprio Gauntlet, fazer o muro como um trapézio, assim ao se olhar de cima tem a noção da profundidade do mesmo até o solo.
Modelagem da parede da masmorra
A textura das paredes teve que ser pensada de forma que não fique estreita ao se ver de cima, para isso os tijolos devem ser largos para que quando vistos por cima não fiquem finos.
Outro ponto são objetos que compõe o cenário, eles devem respeitar a top view, portanto não adianta encontrar uma luminária irada como esta abaixo no jogo, pois será um gasto alto de mesh (triângulos na real), e se olhada de cima nada aparece além de umas ripas penduradas por um traço:
Luminária da decepção…
E pensar que quase que eu comprei essa luminária….
Por isso optei por usar fogo mesmo, colocar uma pira ou uma tocha e fazer as partículas trabalharem por mim.
A escolha da HUD ainda está se atualizando conforme o projeto evolui, mas inicialmente ela foi planejada para ser o mais limpa possível, a HUD não pode atralhar o jogo. E ela não estaria vinculada a questão da top view, e sim estaria desconectada disso, o que me trouxe mais liberdade.
mas as cores são importantes.
Escolha de cores
A escolha das cores tem que ser coerente a noção de profundidade que quero dar ao jogador, e não seria interessante que eu fizesse um contraste entre o topo e o fundo, mas sim realizasse uma variação gradativa da cor. A análise da Importância do Estudo das Cores no Desenvolvimento de Games publicada pela Produção de Jogos, e escrita pela Designer Gráfico Patrícia Tamega, explica direitinho o que eu escolhi: Cores Análogas.
A fase introdutória que queria que fosse um passeio no parque, tranquila, musica tranquila e ambiente bucólico, e já que veio a ideia de um jardim, e somando a um labirinto um jardim com paredes vivas, eu fiz em variações de tons de verde.
A masmorra logo abaixo, a fase 1, é azulada (tentei cinza mas achei bad d+), usando os tons de azul da paleta de cores. Vai haver contraste sim (cores complementares), mas será por conta de elementos de cenário com iluminação e armadilhas (principalmente armadilhas, para chegar chegando)
Estou demorando para postar coisas do projeto porquê… ou eu escrevo ou trabalho no projeto :D, mas considero um posto como hora do recreio. Qualquer dúvida podem me procurar que vamos conversando.
Estou 2 meses com o projeto parado? negativo! estou enrolado com um código no unity3d (que merece outro post). E como me senti travado por falta de resultado eu voltei para a Torre, o primeiro boss. Uma animaçãozinha te chamando para a briga.
Pessoal, hoje temos a composição do cenário 1. Engraçado dizer que juntar os elementos é tão difícil quando fazer cada um separadamente. É um trabalho de: Juntei, mas agora está bugando com o outro elemento; juntei, mas agora não combina com o cenário…; juntei, mas para ele fazer parte do cenário… está faltando mais alguma coisa.
A HUD mudou também, um colega desenvolvedor criticou e achei pertinente, ela agora está ocupando pouco espaço. Cada item especial coletado exibirá uma frase impactante na tela, que não é o nome do item, mas o que ele representa, para que o jogador guarde as características e ações, não o item.
O cenário está sobrecarregado de dinheiro e agora tem o baú funcionando (que eu tinha dito que estava funcionando mas não apresentei).
Eu aproveito para um game play (gostaram das barricadas?):
[:en]
Hi guys, today I’ll show the scenario 1 composition. It is funny to say that inserting the elements together is so difficult then creating each one separately. This work is: I added then, but now it’s bugging with the other element; I added then, but now it does not match the scenery …; I added then, but for it be the scenario element… something else is missing.
HUD has also changed, a fellow developer criticized me and for me was true, it is now the elements fill little space. Each special item collected will display a shocking phrase on the screen, which is not the item name, but what it represents, so to player learn the characteristics and actions, not the item.
The scenery is overloaded with money and now the chest is working (I had said was working but I did not present it).
Because this opportunity I present a game play too (dod you like the barricades?):
A coleta de itens é quase um subsistema. O que finalizei foi a coleta de:
1 Item consumível: O personagem ganha o buff e o item desaparece;
1 Item arma: Tem todo um tratamento. A arma pode ir para as costas, pode ser jogada fora, ser coletada ou re-coletada, ela é um item que dá dano, é um pouco mais…;
2 Itens de capacete: fiz 2 de exemplo por que ele tem que jogar um fora quando achar outro (ia ficar estranho colocar um chapéu em cima do outro);
1 Item que é recipiente de itens: usei uma caixa de madeira, mas daqui para para um baú é bem fácil;
1 Jarro de dinheiro: Além de quebrar quando acertado, ele tem que dropar umas moedas;
Foi difícil, mas com esse resultado estou muito animado!
Hoje o dia rendeu, foram uma pá de coisas que estavam funcionando meia boca, que agora estão sincronizados com o sistema. Encontrei mais sons de efeito, organizei os áudios para morte, vitória, comemoração dos inimigos quando vc morre…. enfim, rendeu.
O que dá para mostrar hoje é a saída do rascunho do menu principal para um quase menu principal