Escolha da plataforma alvo

Postado em Apr 10, 2012 | 2 comentários

Olá!

E aí, galera, beleza? :D Neste post eu vou falar, da perspectiva de um programador, um pouco sobre o processo de escolha quanto à plataforma alvo de nossos jogos e ferramentas/linguagens de desenvolvimento. Ou seja, ele vai ser um pouco mais técnico, jovens padawans. Como vocês puderam ver, o Brickteria está atualmente disponível para iOS e em breve estará disponível para Windows e Android. Por que? Será que começamos pensando nisso mesmo?

 

Nosso primeiro projeto [abandonado]: Um Browser Game

No meio de 2011, focávamos no desenvolvimento de um Browser Game de estratégia. Ele utilizava Ruby on Rails como linguagem/framework server-side, contava com bases de dados NoSQL MongoDB (possibilidade de muitas piadas para nós, brasileiros) e era hospedado no serviço de cloud Heroku (sem mencionar o uso essencial de HTML/CSS/javascript e possíveis variações) {Se alguém se interessar em algum desses assuntos, avise! Podemos dar mais dicas, foi um aprendizado bem legal}.

O problema? Inicialmente, pode-se notar que fizemos algumas escolhas bem ..peculiares.. para um primeiro Browser Game. Além disso, somos formados apenas por um programador e três designers. Desenvolver um Browser Game é extremamente trabalhoso e demorado (embora quando visto de maneira superficial seja pareça fácil). O que mais pesava para a gente não era nem a questão da lógica no lado do servidor, na época eu adorava programar utilizando Ruby on Rails. O que pegou mesmo foram as questões de web design: a estética da coisa, como manter a corretude entre diversos navegadores (sempre aparecem alguns detalhes bugs específicos em alguns navegadores), requisições AJAX, defeitos visuais, etc.

Argh, tem que ter muita paciência para mandar um Browser Game, não era um projeto para a gente. O maior problema foi que não tínhamos um web designer. Achamos que se contássemos com dois programadores e pudéssemos separar a lógica da programação server-side e organização de bases de dados dos demais detalhes de web design, o projeto teria andado de maneira muito mais suave. É possível que algum dia terminemos o jogo, mas esse é um JpD.

 

Qual a alternativa? … Dispositivos móveis!

Imagino que eu não precise justificar (na real, é porque se eu justificar esse post vai ficar enorme), mas nosso segundo alvo de desenvolvimento sempre foram as plataformas móveis, talvez tenha sido uma má decisão termos começado com um browser game. Queríamos um jogo bem completo e subestimamos bastante o trabalho que daria. Agora, restava a dúvida:

Desenvolver para iOS ou para Android?

Por um lado, achei legal aprender Objective-C e desenvolver Apps para iOS. Por outro lado, desenvolver um jogo para iOS seria bem diferente de desenvolver uma App, não teria muito auxílio da interface do Xcode (que é muito boa para Apps gerais), e eu não estudei nada de cocos2d, que é uma alternativa bem popular para desenvolvimento de jogos 2D para iOS. Quanto ao desenvolvimento para Android, eu fiz um curso básico e simplesmente não gostei muito. Não há nenhum ponto muito grave, mas eu simplesmente não gostei e tenho aversão ao fato de que, as vezes, possível-embora-rara-mente, teria que me preocupar com a enorme heterogeneidade de dispositivos que rodam Android. Talvez seja preconceito, mas enfim.

Indo direto ao ponto e quebrando completamente o ritmo da narrativa: ao fim, optamos por aprender a desenvolver em Unity3d!

 

Unity3d

A Unity3d é uma ferramenta de desenvolvimento que integra diversas funcionalidades. A questão que importa [para este post] é que ela possibilita a exportação do projeto desenvolvido para diversas plataformas simultaneamente. Ou seja, poderíamos criar um único projeto nela e exportar ele (com algumas adaptações) para diversas alternativas diferentes (iOS/Android/Mac/Windows/Flash/PS3/Xbox/Wii).

É claro, tudo tem seu custo. As licenças da Unity3d são razoavelmente caras, sendo que atualmente dispomos apenas das versões básicas das licenças para iOS e Android. Ainda assim, na época nós julgamos que seria uma alternativa que aceleraria muito o desenvolvimento e acabaria nos beneficiando no longo prazo. Após termos desenvolvido nosso primeiro jogo, não nos arrependemos.

Caso você queira aprender, não se desanime com os custos das licenças. A Unity3d tem uma versão free que não é tão limitada. Com ela, os jogos já podem ser exportados para Mac/Windows/Browser(depende de um plugin deles e não funciona em linux)/Flash(na versão Unity v3.5 é grátis; imagino que no futuro terá uma licença paga). Na verdade, o Brickteria foi quase inteiramente desenvolvido sem nenhuma licença da Unity3d em si e, apenas no último mês de desenvolvimento, compramos a licença básica para iOS. Afinal, o jogo já estava quase pronto.

 
Este post já está grande e ainda não falei a fundo sobre muitas coisas. Caso se interessem em algum ponto mais específico, nos avisem! :) De qualquer jeito, mais pra frente voltaremos a falar especificamente sobre alguns desses tópicos, como o nosso projeto de Browser Game e, com certeza, sobre a Unity3d (plugins de desenvolvimento, linguagens utilizadas, como é a ferramenta, etc).

E é isso ae. Até mais!

Be Sociable, Share!

Tags: , ,

2 Comments

  1. 4-11-2012

    Pela unity3D poder exportar o game em todos as plataformas deve ter algumas limitações ou pontos ruins comparados em desenvolver especificamente com a linguagem da plataforma, não?

    • 4-11-2012

      E aí, Zeh!

      Então, tem pontos positivos e negativos, vamos falar melhor disso em um post próprio qualquer hora.

      Mas, de imediato, um dos pontos mais negativos que percebemos de usar a Unity3D é que para plataformas como iOS ou Android, ele gera um arquivo que tem uns 6~12MBs a mais, só de dependências da Unity. Tem como reduzir bastante isso com as licenças mais caras da Unity, fazendo stripping de trechos que não seriam utilizados, mas agora eu não sei dizer ao certo quanto a mais isso reduziria.

      Outra limitação bem evidente é a maneira com a qual você interage com o SO nativo, né. Tem alguns recursos mais chatos de acessar que são bem integrados com o sistema operacional do dispositivo. Além disso, as interfaces deixam de seguir as padrões desses dispositivos, afinal, você que passa a construir as suas GUIs, em geral.

      Quanto ao desempenho, as vezes pode perder um pouco [quando comparado a outras soluções bem otimizadas para dispositivos específicos]. Mas em geral isso não é um motivo para não usar Unity3d, ela mais oferece ferramentas e alternativas que otimizam o desempenho do que faz tu perder. Mas isso é um outro assunto beeeem abrangente :P

      Por enquanto, é isso.
      Depois falamos melhor sobre essas questões :)

Leave a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>