2 Anos de Rocket Plane

0

Posted by Jair Pereira | Posted in Aplicativos | Posted on 17-04-2015

Nem acredito que passou tão rápido assim, amanhã está completando 2 anos do dia de lançamento do Rocket Plane, este que sem dúvida foi o meu maior projeto pessoal ATÉ AGORA.

O jogo já está quase completando 31 mil downloads e nos últimos 90 dias, mais de 3 mil usuários jogaram pelo menos uma vez o jogo, mais o mais legal de tudo isso é ver que somente 1 mil eram jogadores novos, e as outras 2 mil são pessoas que estão voltando a jogar…

Acho que já deu pra perceber que eu não fiquei rico fazendo jogos, o dinheiro ganho com o jogo não chegou a pagar o valor e tempo gasto no desenvolvimento… Mas enriquecer não era e nunca foi o objetivo, os meus jogos sempre foram gratuitos e sem publicidade (apenas com compras dentro, pra quem gostou do jogo).

Acredito que a maior recompensa que eu poderia ter é perceber que o meu trabalho que foi realizado com Amor e Dedicação pode de certa forma fazer parte da vida de outras pessoas, e quem sabe pode por um dia que seja deixar uma criança feliz do outro lado do mundo… Algumas coisas não tem preço…

Também acredito que talvez seja por isso que Deus tem recompensado e honrado a minha vida de tantas outras formas que eu nem sei como agradecer.

Infelizmente eu não estou tendo tempo para me dedicar a desenvolver novos jogos, a vida tem me proporcionado outros projetos pessoais que não estão relacionados a área de games… Mas se Deus permitir eu pretendo voltar a produzir jogos no futuro… Apesar de ser muito trabalhoso, é com certeza muito divertido e gratificante… :D

Muito Obrigado a todas as pessoas que baixaram o jogo e aos meus amigos que me ajudaram a desenvolver o jogo.

 

Expresso Mobile será lançado oficialmente no SECOP

0

Posted by Jair Pereira | Posted in Aplicativos | Posted on 27-05-2014

A solução de correio eletrônico Expresso, desenvolvido pela Celepar, está preparada para utilização em dispositivos móveis nas plataformas web, iOS e Android. O lançamento oficial acontecerá na próxima quarta-feira (28), no 42º Seminário Nacional de TIC para a Gestão Pública (SECOP), evento que será realizado em Foz do Iguaçu.

Segundo o analista de sistemas Jair Gonçalves Pereira Junior, para a composição do Expresso Mobile foram utilizadas as tecnologias HTML5, CSS3 e o framework PhoneGap. “A ferramenta tem acessibilidade em múltiplas plataformas e manteve o mesmo design e padrão de usabilidade”. Ele ainda explicou que design responsivo pode se adaptar a diferentes resoluções de tela, levando em consideração se o usuário está utilizando tablet, smartphone ou desktop.

O processo de implementação teve início em junho do ano passado, foi desenvolvido pela equipe da Divisão de Implementação de Serviços de Rede (DISER) composta pelos analistas: Alexandre Rocha Wendling, Alexandre Luiz Correia, Anderson Tadayuki Saikawa, Jair Gonçalves Pereira Junior, Mauricio Luiz Viani, Rafael Katayama Gobara e Sergio Luiz Furtado da Rosa.

Os usuários do Expresso poderão acessar o site https://m.expresso.pr.gov.br/ ou efetuar o download do aplicativo nas lojas da AppStore ou PlayStore.

Saiba mais: http://mobile.expressolivre.org/

Fonte: http://www.celepar.pr.gov.br/modules/noticias/article.php?storyid=1357&tit=Expresso-Mobile-sera-lancado-oficialmente-no-SECOP

Como foi o desenvolvimento do Rocket Plane – Parte 3

0

Posted by Jair Pereira | Posted in Aplicativos, Dicas | Posted on 28-05-2013

Desenvolver um jogo é um grande DESAFIO, você terá de aprender diversas ferramentas, trabalhar com diversas linguagens de programação, se preocupar com o áudio e gráficos, animações e marketing, etc…

Mas o que é a vida sem alguns bons desafios não é mesmo? É exatamente por estes motivos que eu gosto tanto de desenvolver jogos. O fato é que todos nós gostamos de DESAFIOS e para mim desenvolver um APP ou um Sistema/Site-Web já não estava mais sendo desafiador o suficiente em minha carreira. Portanto se você se considera um BOM programador e deseja melhorar cada vez mais como programador, eu acredito que você realmente deveria tentar fazer um jogo sozinho.

Atendendo a alguns pedidos de diversos desenvolvedores Brasileiros do grupo iPhoneDevBrasil (Se você é desenvolvedor mobile e AINDA não faz parte, faça parte deste do grupo), daqui para frente vou tentar detalhar de forma mais técnica os detalhes do jogo, as ferramentas que foram utilizadas e os problemas encontrados. Sinto muito se você que está lendo não é programador, e não entender alguns dos termos usados aqui, mas espero que este texto possa desmistificar um pouco o desenvolvimento de um jogo. Sinto muito mas o texto é grande, e não descobri outra forma de deixá-lo menor.

Caso você também tenha interesse, recomendo a leitura da entrevista ao site iPadDicas.com onde explico um pouco mais sobre a idéia do jogo e algumas das dificuldades de desenvolver jogos no Brasil.

Na minha opinião o mercado Brasileiro de Jogos realmente precisa de muitos incentivos, e fico muito feliz em ser um dos Brasileiros que pode de certa forma ajudar outros desenvolvedores. Por favor, deixe suas dúvidas nos comentários para que outros desenvolvedores também possam ler e compartilhar suas experiências.

Se você estiver pensando em fazer o seu jogo, pelo que eu tenho acompanhado os jogos recentemente, a maioria deles tem um conteúdo “mínimo” e se o seu jogo tiver menos do que isso então você estará em desvantagem… No meu ponto de vista a maioria dos jogos deve conter pelo menos as seguintes telas:

  • Tela Inicial: Com a logo do seu jogo, seu personagem e os botões que levam para as outras telas.
  • Tela de Créditos: Você provavelmente não vai conseguir fazer tudo sozinho, então dê o merecido crédito as pessoas que te ajudaram no processo.
  • Tela de Configurações: Permita a alteração de Idioma (Sem ter que sair do Jogo), Ligar/Desligar SOM, e outras preferências do seu jogo.
  • Tela de Ajuda: Opcionalmente você pode fazer uma fase como tutorial, mas não deixe de dar uma ajuda inicial.
  • Tela de Seleção de Fases: Caso seu jogo tenha fases, você também terá que contabilizar as estrelas para desbloquear as próximas fases.
  • Tela de Categoria de Fases: Caso seu jogo tenha MUITAS fases, é recomendável criar uma tela com as categorias das fases.
  • Tela de Seleção de Personagem: Caso seu jogo tenha mais de um personagem
  • Tela de Pause: Com no mínimo as opções de Sair, Reiniciar ou Continuar
  • Tela de Final de Fase: Com a pontuação, estrelinhas e tudo mais.
  • Tela de Pontuação ou Leaderboard: No iOS você poderá usar o GameCenter se preferir, e recentemente o Google lançou para o Android também um clone do GameCenter, também existem outros frameworks como o OpenFeint que recentemente foi descontinuado.
  • Tela de Mensagens: Tela para confirmação de mensagens, Continuar/Sair, o importante desta tela é manter o design do jogo. Parece estranho ter uma tela assim se você pode usar um Alerta do próprio iOS/Android não é mesmo? A idéia é não permitir que o jogador lembre-se que está em um iOS/Android senão ele pode apertar o botão HOME e sair do seu jogo.
  • Integração com Facebook: Permita ao usuário ganhar moedas quando fizer uma publicação no Facebook, mas não deixe ele fazer a publicação mais de uma vez.
  • Lojinha: Para os usuários poderem evoluir Itens ou comprar Moedas, você poderá dividir sua Lojinha em categorias (Moedas, Poderes, etc…) Aqui você também terá que se preocupar com banco de dados e segurança/criptografia, afinal você não quer nenhum usuário com jailbreak ganhando moedas sem fazer força não é mesmo?? Mas calma que eu conheço algo que pode te ajudar…
  • GamePlay: É o último, mas sem ele todos os outros itens perdem o sentido, aqui é aonde o jogo realmente acontece.

Esta NÃO é uma receita de bolo, faça isso e o seu jogo será um sucesso, até mesmo porque eu fiz isso e os meus jogos não tem sido um sucesso como o Angry Birds. Pode ser que o seu jogo não tenha nada dessas características, pode ser que seja muito mais simples do que todos esses tópicos, mas você provavelmente ira se deparar com esses tópicos.

Além destas telas, acredito que você também terá de se preocupar com outros itens:

  • SOM: Como reproduzir/parar uma música de fundo, como reproduzir um efeito sonoro (e não reproduzir ele repetidas vezes). Como pré-carregar um som na memória, para que ele seja reproduzido mais rapidamente quando você precisar.
  • INTERNACIONALIZAÇÃO: Como traduzir seu Jogo para diversos idiomas, como será feito e de que forma você deve programar para poder chegar até o fim sem surpresas, não deixe este item para o final defina seu “padrão” de internacionalização antes de começar o jogo. O NSLocalizedString (Função no iOS que faz a internacionalização) serve apenas para o cocos2d, no cocos2d-x você terá de desenvolver o SEULocalizedString. Ou você pode dar uma olhada nesta classe também: CCLocalizedString
  • ANIMAÇÕES: Como fazer animações de transição de telas ou de imagens/personagens.
  • SINGLETON: Você inevitavelmente precisará salvar alguns dados de execução do seu jogo em um objeto que seja Singleton, então aprenda o que é um Singleton e como fazer um (Apenas 1).
  • ENGINE DE FÍSICA: Todo jogo deve utilizar uma engine de física (a não ser que você queira desenvolver a sua). Para isso você terá de lembrar um pouco o que você aprendeu na escola sobre trigonometria, força, ação e reação, massa e peso. É incrível como agora essas coisas começam a fazer algum sentido.
  • RESOLUÇÃO DAS TELAS: Eu tive muitos problemas com diferentes resoluções em diferentes dispositivos, mas alguns colegas me informaram que nas versões mais recentes do cocos2d-x, já existe um suporte diferenciado as multi-resoluções, é muito importante definir como você irá trabalhar com esta característica no começo do seu projeto, para mais informações veja este artigo na wiki do cocos2d-x.

FRAMEWORK E FERRAMENTAS

 

Como eu já disse anteriormente, utilizei o Cocos2d-x e juntamente com eles também utilizei mais algumas outras ferramentas, mas primeiro gostaria de comentar sobre a política que eu tenho sobre versões.

Política de Versões

Quando eu comecei o projeto a mais de um ano atrás, o Cocos2d-x estava em um estágio inicial eu utilizei a versão 0.11 ALFA que na época era a versão atual do projeto, eu resolvi manter esta versão pois gastaria muito tempo para migrar para uma versão mais nova. Houveram mudanças significativas da versão ALFA para a versão de 2.0 (Atual do projeto, mudanças estruturais e de sintaxe dos métodos).

Esta é uma política minha, como não tenho muito tempo disponível, e o processo de migração e atualização para uma versão mais nova das ferramentas levaria muito tempo. Vale lembrar que o processo de migração de uma versão para outra não é simplesmente a atualização do código, implica também em re-testar toda a sua aplicação e adaptá-la para funcionar com esta nova versão. Pois uma versão pois mais nova que seja, também pode conter BUG’s.

Então optei por manter a minha versão que estava funcionando e ignorar as atualizações, importando para a minha versão apenas as correções de BUGs do Cocos2d-x e das outras ferramentas.

O ponto aonde quero chegar é que talvez alguns dos problemas que eu citarei aqui, já não sejam mais válidos para as versões atuais dessas ferramentas.

1) Framework Cocos2d-x

 

Não tenho o objetivo aqui de explicar o processo de instalação e configuração do Cocos2d-x, até mesmo porque o processo é bem longo e já está muito bem documentado na Internet: (Instalação e Configuração do Cocos2d-x no Mac.)

Muitas pessoas tem medo de mudar do Cocos2d para o Cocos2d-x, mas uma vez que você já conhece um framework você estará automaticamente conhecendo o outro, pois as mudanças entre ele são mínimas, e mais em termos de sintaxe do que de mudanças estruturais, com raríssimas exceções. Mas é claro que você terá que aprender as peculiaridades de cada linguagem.

Vale lembrar que são linguagens diferentes, no Cocos2d você terá que programar em Objective-C e no cocos2d-x a programação será em sua maioria C++, porém você ainda terá que programar as partes específicas de cada plataforma na sua linguagem original, ou seja, Objective-C para iOS e Java para Android.

 

Muito cuidado ao utilizar a classe CCUserDefault, que é a equivalente ao NSUserDefault do iOS. Uma semana antes de enviar o Rocket Plane, percebi que os dados não estavam sendo persistidos no Android quando eu fechava o Jogo e abria de novo os dados eram perdidos… Imaginem a minha cara de felicidade, eu tive que re-implementar esta função fazendo a JAIRUserDefault, que ficou um pouco lenta no Android… Mas uma função um pouco lenta que grave, ainda é melhor do que uma função rápida que não grave nada…

2) Box2d

 

A escolha pelo BOX2D e não pelo Chipmunk não foi uma escolha técnica, eu apenas optei pelo Box2d pois já tinha conseguido desenvolver um exemplo funcional no Box2d e comecei a me basear nele para continuar desenvolvendo, em nenhum momento eu cheguei a comparar as duas engines de física, eu apenas sabia que precisava aprender pelo menos uma delas. Outro ponto que me levou a optar pelo Box2d foi que a ferramenta LevelHelper já dava o suporte para ele, e deixava a interação com o Box2d meio que “transparente” para o programador.

Se você deseja aprender um pouco mais sobre o Box2d, leia o manual no site oficial : BOX2D.ORG e também dê uma olhada neste tutorial: Tutorial

3) CocosBuilder

 

O CocosBuilder é realmente FANTÁSTICO! Além de ser OPEN-SOURCE ele te facilita muito a vida na criação das telas de menus, seleção de fases, etc… Você consegue criar a interface de seleção de telas simplesmente arrastando e soltando, ele salva essas informações em um XML que deverá ser adicionado ao seu projeto, juntamente com uma classe que faz a leitura deste XML.

O problema é que quando comecei o projeto esta classe que fazia a leitura para o cocos2d-x simplesmente NÃO EXISTIA, Eu só tive o “simples” trabalho de copiar a classe do projeto COCOS2D que já funcionava e portar para C++, a leitura funcionava bem no iOS mas no Android ficava muito lento fazer o parser do XML, até que outra pessoa publicou no fórum uma classe que fazia esta leitura de forma mais rápida.

Mas calma que hoje o projeto do CocosBuilder já é totalmente suportado no COCOS2D-X e essa classe já vem como parte do pacote.

O CocosBuilder também não atendia na época a parte de animações de imagens rotacionando e animações em geral, eu tive que fazer tudo por código, atualmente pelo que pude acompanhar pela evolução da ferramenta agora ele está atendendo muito bem a essas animações, você configura todas as animações pela própria aplicação. FANTÁSTICO!

Entretanto o CocosBuilder não atende a criação de itens criados dinamicamente, como por exemplo os itens da sua Lojinha, você terá que criar e posicionar todas as imagens por código, ignorando a existência do CocosBuilder. Se você tiver um menu para selecionar fases, etc… Tudo que for dinâmico terá que ser feito via código.

4) SpriteHelper

 

O SpriteHelper e o LevelHelper também são outras ferramentas que parecem fazer mágica, elas te facilitam muito a vida, porém podem trazer muitos problemas chatos também…

As duas ferramentas são pagas, porém existe a versão FREE que exporta as imagens com marcá-dagua e pode servir como aprendizado. (Os preços não são muito caros para quem trabalha com desenvolvimento de jogos), Recentemente surgiu mais uma ferramenta chamada CodeHelper que eu ainda não tive tempo para conhecer melhor.

Sobre o SpriteHelper, o problema chato que tive com ele, foi o fato de não permitir a adição de uma outra imagem a um sprite que já existia, desta forma eu tinha que manter em pastas separadas todas as imagens exportadas e recriar de novo o arquivo do SpriteHelper quando precisava. Ele até adicionava a imagem mas não posicionava corretamente. Um BUG Bem chato, espero que já tenham melhorado isso…

Outro item é que as imagens exportadas pelo SpriteHelper também ficavam um pouco grandes em KB, um pouco antes da publicação do jogo, eu abri todas as imagens do SpriteHelper no Photoshop e salvei elas para Web e Dispositivos, em média uma imagem de 180KB reduziu para 140KB. Parece ser tão pouco 40 KB não é? Em termos de memória, pelo que pude verificar no código o COCOS2D-X transforma esses 40 KB em um varchar de BITS na memória. Ou seja a imagem original de 180KB por um período curto de tempo na memória é carregada como uma imagem de aproximadamente 1.5 MB. Se você estiver carregando várias ao mesmo tempo, seu App pode dar crash.

Você sabia que o iPod Touch é o dispositivo Apple com menor memória? Eu descobri essa semana, Se você ignorar esses 40 KB, então provavelmente seu jogo não irá rodar em um iPod Touch. O Fato é que mesmo com essa compressão o jogo não rodou em um iPod Touch 4 geração, então tive que partir para algo mais drástico, considerar que o iPod Touch de 4 geração com a Tela Retina era na verdade um iPhone 3GS sem tela retina, e carregar as imagens sem o sufixo “-hd”. Aí sim o jogo rodou (a versão nova vai pro ar essa semana).

5) LevelHelper

 

Na época que comecei o jogo, eu estava extremamente viciado no jogo JetPack Joyride, e encontrei um tutorial na internet que explica como fazer um jogo parecido com o JetPack: Parte 1,Parte 2, Parte 3, Parte 4, ou você pode baixar o código completo (Código Completo do Tutorial)

Hoje é inevitável não reparar as semelhanças do Rocket Plane com o Jetpack, não por serem o mesmo jogo, mas porque já fazem parte da mesma categoria de jogos: “endless-running”. Que tipo de jogos você gostaria de desenvolver, aqueles que você mesmo gosta de jogar não é mesmo?? Não tenha medo de reinventar a roda, quantos jogos Angry Birds LIKE você vê por aí?? Esteja disposto a fazer o seu jogo, e provar para si mesmo que é capaz, e se você não ficar rico com o seu jogo, pelo menos você APRENDEU e se divertiu fazendo ele.

Não pretendo entrar muito nos detalhes desta ferramenta, pois acredito que o próprio tutorial do Ray Wenderlich já dê conta do recado muito bem (O tutorial é em COCOS2D, mas pode ser portado facilmente para COCOS2D-X).

Entretanto existe um pequeno abismo entre seguir um tutorial e terminar um jogo de verdade, encontrei diversas dificuldades com o LevelHelper que eu não sei se conseguirei citar todas.

Admiro muito o trabalho do Bogdan Vladu (Criador do Level Helper), ele me deu suporte pelo fórum quando precisei e recomendo muito a utilização do LevelHelper pois sem ele eu estaria perdido.

  • O Level Helper foi feito para criar fases de jogos e não um jogo com uma única fase infinita:Quanto mais objetos tiver no seu jogo, maior será o tempo de carregamento do Level Helper, e mais lento ficará o processamento de todos os objetos pela engine de física. Isso é meio que óbvio, mas serve para demonstrar que o LevelHelper foi feito para fases pequenas não servirá para fases infinitas.

    Mas o que é um brasileiro sem o seu “jeitinho”?

    Eu pensei e tentei desenvolver várias alternativas para conseguir chegar ao ponto que eu queria, a primeira delas foi tentar carregar vários arquivos do LevelHelper numa mesma fase dinamicamente quando a primeira fase estivesse terminando, eu já começaria a carregar a próxima fase e removeria o arquivo antigo quando o usuário não mais estivesse vendo ele… (Não tentem fazer isso em casa) Essa estratégia chegou a funcionar por um tempo, mas reconheço que não foi a melhor idéia.

    No final eu consegui utilizá-lo fazendo alterações na própria classe de leitura do levelhelper, e também criando e posicionando os objetos durante a execução do jogo, e quando o player (avião) ultrapassava os objetos que ele não coletou, eu verificava se eles poderiam ser removidos da memória e os removia.

  • Travamentos do aplicativo: Não estranhe nem fique bravo se do nada o LevelHelper resolver fechar, esse é praticamente o comportamento normal da ferramenta. Hehehe… Estou brincando, mas hoje eu não vejo isso como uma coisa ruim, se você avaliar os benefícios que a ferramenta te trás, além disso, em todas as vezes que o LevelHelper travou nenhum dado foi perdido, só tive que abri-lo de novo e continuar de onde parei.
  • Problemas com o Parallax do Level Helper: O Parallax na programação de jogos é na verdade aquele cenário de fundo do jogo que fica girando enquanto o usuário está jogando… Eu tive problemas não com o funcionamento padrão do LevelHelper, mas justamente porque o meu jogo era específico nessa situação, o cenário tinha que acompanhar a câmera, e a câmera tinha que acompanhar o jogador. Portanto tive que fazer alterações significativas nas classes do LevelHelper para permitir que o cenário pudesse ter este efeito.

6) Project Soom.la

 

O Projeto Soom.la é um projeto OpenSource que visa facilitar a criação da sua “Lojinha”, ele já se preocupa com toda a questão da segurança e criptografia da base da dados, porém você deverá configurá-lo para garantir a segurança, alterando as chaves de criptografia nos arquivos de configuração. A documentação dele não é uma das melhores, então você terá que se virar um pouco sozinho pra entender como fazer.

Atenção que existem dois links:

  • http://soom.la: Aqui você pode criar sua LOJA através do simples envio dos asset’s e configuração dos purchases, o site gerará um arquivo .zip que você importará no seu projeto, já existem até mesmo layout pré-definidos, muito interessante para quem não quer gastar tempo aprimorando sua loja. Porém na minha opinião, na prática parecia mais como se eu estivesse rodando um app com phonegap dentro do meu jogo, e eu não queria passar essa sensação de navegador WEB para o usuário.
  • http://project.soom.la: Aqui você encontra quase todo o código fonte do Soom.la para cocos2d-x e até mesmo para outras plataformas (Só não encontra o código do gerador automático). Porém aqui você terá que construir no código todo a parte visual da sua LOJA e usar as classes do SOOM.LA para fazer a persistência de compras e produtos e a integração com as lojas no Android e iOS (O que já poupa um trabalho rasoável).

7) BMGlyph

 

Não existe muito segredo nessa ferramenta, ela gera Fontes personalizadas para serem usadas na sua aplicação, gera um único arquivo de sprite com todos os caracteres e um arquivo XML com o posicionamento X,Y de cada letra no sprite, esse já é um padrão conhecido e a classe para leitura desse XML já faz parte do próprio framework (CCLabelBMFont). Não tive problemas com esta ferramenta e recomendo.


8) Parse.com

 

O Framework Parse.com irá te facilitar a vida nas notificações por PUSH, e em outros aspectos do seu App, este framework já é muito reconhecido pelo mercado e recentemente foi comprado pelo Facebook (Espero que eles não acabem com o produto).

Também utilizei o Parse para a integração com o Facebook, ele automaticamente registra os usuários e sabe informar se eles são usuários novos ou não, desta forma você pode premiar moedas para os usuários do facebook somente uma vez. Mesmo que o usuário desinstale o App, e faça outra publicação no nome dele, ele não receberá moedas novamente, porque a conta dele já foi usada para receber moedas.

9) XCode

Usando o cocos2d-x, o XCode deverá ser sua ferramenta principal de desenvolvimento, Pois existem inúmeras vantagens em desenvolver usando o XCode, além do tempo de compilação ser menor, o simulador do iOS é muito mais rápido que o simulador do Android.

OBS: Para testar o Gameplay do seu jogo, não existe nada melhor que o Device, simuladores não serão capazes de reproduzir a experiência que um device proporciona além disso teste seu jogo em diferentes plataformas e diferentes versões destas plataformas.

10) Eclipse

 

O Eclipse é utilizado apenas para fazer a compilação do seu projeto para Android, seu projeto terá um shell script chamado build_native.sh que é o responsável por fazer a Cópia de todas as imagens (Resources) do projeto iOS para o projeto do Android. Este script também cria uma library “libgame.so” e o seu projeto android funciona como se fosse uma “CASCA” chamando essa LIBRARY que é o todo o código em C++ compilado.

Muitas pessoas desconhecem, inclusive desenvolvedores de Android, que o Android possui duas formas de compilar aplicativos, uma delas é utilizando o android-sdk que todos conhecem, a outra forma é utilizar o android-ndk que compila códigos em C++ e gera esta library, no script build_native.sh você deverá configurar a pasta de onde está o framework do android-ndk.

Tenha certeza de configurar seu projeto Android no eclipse para executar este arquivo build_native.sh toda vez que você for executar o projeto.
 

11 e 12) Adobe Photoshop e Ilustrator

 

Photoshop e Ilustrator dispensam comentários, como já citei anteriormente, o Design é uma das partes mais importantes do seu jogo e você terá que dominar essas ferramentas. Infelizmente Desenho é algo que é preciso ter o “DOM”, muitas vezes dominar uma ferramenta não te fará ser o super star do Design, mas acredito que a prática leve a perfeição e mesmo que você contrate alguém, aprender um pouco pode te ajudar a exportar imagens, fazer pequenos ajustes sem ter que ficar pagando, e a entender um pouco mais da complexidade de um desenho.

Se quiserem fazer o texto Bazinga, sigam este TUTORIAL.

Para começarem a aprender, eu recomendo visitarem o site: http://vector.tutsplus.com



 
 
Espero que tenham gostado do pequeno livro que escrevi, mas espero que eu possa ajudá-los de alguma forma e que venham as dúvidas. :D

5,000 Vezes, MUITO OBRIGADO!

0

Posted by Jair Pereira | Posted in Aplicativos | Posted on 17-05-2013

Em apenas 25 dias, o Rocket Plane conseguiu atingir os 5,000 Downloads… O meu outro jogo Chicken Heroes demorou mêses para conseguir chegar nessa mesma marca… Estou muito feliz com o resultado, Muito Obrigado a todos que fizeram o Download e estão se divertindo com o Rocket Plane…

Como foi o desenvolvimento do jogo Rocket Plane – Parte 2

0

Posted by Jair Pereira | Posted in Aplicativos, Dicas | Posted on 14-05-2013

Um pouco antes de começar o projeto, como eu já tinha sofrido bastante desenvolvendo meu outro jogo o Chicken Heroes. Desta vez eu resolvi começar direito, afinal eu já sabia (OU PENSAVA QUE SABIA) as dificuldades que iria encontrar no caminho. Então resolvi entrar em contato com um amigo William que também era programador, e perguntar se ele tinha interesse em fazer um jogo junto comigo.

O William não só aceitou como também já comprou no mesmo final de semana um macbook usado e um ipad novinho, e conseguiu contato com um designer o Flavio que também aceitou se juntar a equipe do Rocket Plane. Eu estava vendo aquele momento como o começo da minha empresa de Jogos. Começamos a definir o projeto, e como seriam os aviões, os obstáculos que eles iriam encontrar, etc… Fizemos em forma de texto um documento no Google Docs, onde todos compartilhavam e escreviam as coisas legais que poderíamos fazer no jogo. E começamos a nos reunir nos finais de semana em minha casa, onde montei um pequeno escritório com uma bancada pra colocarmos os notebooks.

Era tudo muito bonito, mas infelizmente nossa parceria não pode continuar porque não conseguiamos nos reunir todos os finais de semana por diversos motivos. O William acabou tendo que sair do projeto por problemas pessoais e o Flavio não podia todos os finais de semana e também não estava conseguindo fazer os desenhos durante a semana. Durante dois mêses tivemos no máximo 2 sábados reunidos no qual os 3 puderam estar juntos. Não houve brigas, discussões nem nada do tipo, apenas chegamos a conclusão que não daria certo porque não tinhamos como nos encontrar.

“Na primeira vez que você começar a tentar resolver um problema, as primeiras soluções que você terá são muito complexas, e a maioria das pessoas param por aí. Mas se você continuar, e conviver com o problema e descascar mais camadas da cebola fora, você pode muitas vezes chegar a algumas soluções muito elegantes e simples. A maioria das pessoas simplesmente não coloca o tempo ou a energia para chegar lá.”

Steve Jobs.

Desta forma como eu sou teimoso, eu resolvi continuar o projeto sozinho. O principal problema disso era que o projeto era GIGANTE para três pessoas, imaginem para uma…

A idéia principal se passava em uma escola, aonde as crianças iriam jogar os aviões de papel, e o avião percorreria vários cenários da escola, como por exemplo as salas de aula, corredores etc…

Para que vocês tenham uma idéia, eu vou colocar apenas uma parte desse documento com as principais idéias de cenários que tivemos na época:

Idéias para cenários:

  • Sala de aula padrão com carteiras, quadro negro, etc
  • Sala com projetor/videos
  • Corredor com bebedouro, quadros, murais, vassoura, balde.
  • Biblioteca com armários
  • Corredor
  • Escadas para ir para o primeiro ou segundo andar…
  • Sala de Educação Física
  • Laboratório de quimica
  • Corredor apenas com mural (acesso a outras coisas apenas como cenário)
  • Banheiro
  • Parquinho
  • Berçario
  • Sala da Tia da Limpeza.
  • Sala de Troféis e Quadros
  • Sala de aula infantil (crianças menores de 4 anos)
  • Quadra de Futebol / Volei
  • Sala dos Professores
  • Sala do Diretor

Sem falar que não estava definido ainda se o jogo seria uma fase única ou em várias fases. Mas no final de tudo ainda teríamos a Edição Haloween do jogo (hahaha).

Acredito que vocês consigam imaginar que com todos esses possíveis cenários e todas as complexidades que haveriam em cada um deles, eu iria ficar desenhando por pelo menos uns 3 anos antes de ter que programar uma linha de código. Por exemplo o laboratório de química, eu queria que tivessem aqueles tubos de ensaio soltando bolhas que empurrariam o avião… Um ventilador de teto que empurrava o avião para baixo.

Enfim, as idéias eram fantásticas mas devido a minha situação era simplesmente inviável, por um tempo eu tentei persistir em algumas dessas idéias, mas chegou um momento que eu me dei conta do óbvio, eu tinha que simplificar a idéia mas não podia simplificar muito senão o jogo também perdia o sentido.

“Algumas pessoas acham que foco significa dizer sim para a coisa em que você irá se focar. Mas não é nada disso. Significa dizer não às centenas de outras boas idéias que existem. Você precisa selecionar cuidadosamente.”

 Steve Jobs.

 

“Este tem sido um de meus mantras – foco e simplicidade. O simples pode ser mais difícil do que o complexo: é preciso trabalhar duro para limpar seus pensamentos de forma a torná-los simples. Mas no final vale a pena, porque, quando chegamos lá, podemos mover montanhas.”

 Steve Jobs.

 

Como a idéia se passava em uma escola, fizemos um protótipo inicial das telas desenhei elas no Adobe Ilustrator e chegamos de fato a programar essas telas e a interação entre elas. Também programamos um protótipo de um modelo de avião circulando em um corredor aonde só tinhamos as paredes e alguns obstáculos como moedas, ventilador, bola, etc… E tudo isso rodava no Android (meio lento mais rodava)…

Felizmente eu tenho uma cópia deste protótipo rodando em meu iPad até hoje, por isto consigo compartilhar com vocês algumas das imagens de como era o jogo no começo:

 

Primeiro Protótipo:

img_0014
img_0015
img_0018
img_0019
img_0020
img_0233
img_0235
img_0239
img_0240
img_0241
img_0286
img_0288
NextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnail

 

Como simplificar uma idéia?

 

Sei que muitos que estão lendo, pensariam que eu já estava com o produto pronto que era só mudar algumas coisas colocar mais alguns obstáculos, deixar ele mais apresentável e publicar. Mas se eu fizesse isso eu estaria matando a idéia e não melhorando ela. Aprendi que na verdade eu precisava recomeçar de novo, mantendo somente as idéias que eram realmente boas e tangíveis.

 ”Tenho tanto orgulho das coisas que deixamos de fazer, como tenho das coisas que fazemos!”

Steve Jobs.

Resolvi fazer uma fase única e um cenário único, a idéia do avião batendo no teto da sala de aula não me agradava então resolvi fazer o jogo a céu aberto dando uma possibilidade do jogador voar mais alto, as cores em tom marrom também não combinavam com a alegria e a felicidade que um jogo deve proporcionar.

Não estar mais limitado a uma escola, foi de longe uma das melhores escolhas que eu poderia ter feito, não porque as idéias eram ruins, mas as idéias da escola eram tantas que somente uma pessoa não poderia fazer, e se ao final eu fizesse somente “meia escola” e não uma escola completa isso tornaria o jogo inviável. Foram diversos aspectos que foram alterados e melhorados constantemente…

E quanto a você já começou a sua idéia? Já definiu seus objetivos? Já pensou em simplificar ao máximo?

Deixe aqui seus comentários, suas experiências também podem ajudar outras pessoas.

Eu também separei algumas imagens que demonstram a evolução de algumas telas do jogo, espero que gostem:

 

Evolução da tela Inicial

 
 

home_1
home_2
home_3
NextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnail

 

Evolução da tela de Comprar

 
 

img_0020
shop_2
shop_3
NextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnail

Evolução da tela de Seleção de Avião

 
 

selplane_1
selplane_2
selplane_3
NextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnailNextGen ScrollGallery thumbnail