Post atualizado e revisado em 04/07/2017!
Este post é para os leitores que desenvolvem seus próprios jogos sozinhos e muitas vezes se sentem perdidos sobre qual a melhor maneira de desenvolver um jogo.
Um dos maiores desafios no início da carreira de quem quer se tornar um desenvolvedor de jogos é o conhecimento do que se deve fazer, principalmente no que tange descobrir quais são as ferramentas necessárias para desenvolver um bom jogo.
Como o foco da minha pós-graduação é desenvolvimento de aplicações para dispositivos móveis, esse post será mais interessante para quem deseja desenvolver jogos para smartphones e tablets. Mesmo para quem já está trilhando o caminho de outras plataformas, este post pode ajudar também, então continue lendo.
Escolhendo a Plataforma
Antes de sair comprando algum livro de programação de jogos ou decidir que plataforma irá utilizar, é importante pensar a respeito.
Quando o assunto é programação para jogos móveis, existem no mínimo dois sistemas operacionais que devem ser levados em conta iOS (iPhone, iPad, etc) e Android (Galaxy, Moto G, Nexus, etc) e, desta forma, para evitar o retrabalho, é no mínimo interessante que seja escolhida uma plataforma de desenvolvimento que lhe permita atingir estes dois públicos de uma vez só.
Existem vários frameworks de desenvolvimento multiplataforma no mercado, mas quando o assunto é games mobile, Corona SDK tem se mostrado uma forte opção considerando que:
- é free (desde que mantenha a Splash Screen deles)
- é leve (os requisitos mínimos são baixíssimos)
- a curva de aprendizagem da linguagem Lua, usada no Corona, é ridiculamente baixa
Para quem não sabe, eu traduzi há alguns anos um livro sobre Corona SDK, que pode ser conhecido e adquirido na página do link. Você não precisa comprar o meu livro para aprender a programar usando Corona SDK, mas com certeza ele lhe poupará muito tempo procurando como resolver os problemas mais comuns na Internet, principalmente se não domina o idioma inglês. Fora isso, existem exemplos completos de jogos no livro, com código-fonte e explicações.
O restante deste post é uma tradução livre do original “Making Progress as a Solo Mobile Game Developer”, escrito por Inna Treyger entrevistando Hugo Bonacci, um desenvolvedor de jogos que trabalha sozinho e consegue grandes feitos usando Corona SDK.
O post original pode ser visto no blog da Corona Labs (em inglês). O mais recente lançamento da Hugoware (marca de Hugo), que também foi eleito como Aplicativo da Semana pela Corona Labs, é Kung-Fu Clash, um beat-n-up muito viciante disponível para iOS e Android e cujas informações completas (com screenshots e vídeos) pode ser vistos aqui: http://www.coronalabs.com/blog/2012/11/26/app-of-the-week-kung-fu-clash/
Tendo Progresso como Desenvolvedor Solo de Jogos
Hugo Bonacci é um desenvolvedor independente e designer da aplicação que venceu o App of the Week feito pelo Corona Labs em março deste ano, com o game Kung-Fu Clash. Sua paixão por jogos começou desde jovem, quando Hugo tornou-se um grande fã dos jogos de NES e SNES (ele ainda joga com suas crianças!) e é inspirado por jogos como Final Fantasy, Zelda, Secret of Mana e Chrono Trigger.
Durante o dia, Hugo trabalha como consultor de usabilidade para uma empresa em Dallas, Texas, mas sua paixão real é desenvolvimento de jogos. Veja os trabalhos de Hugo em seu blog Hugoware.net.
Fazer jogos pode ser muito divertido, mas também exige muito trabalho. Muitas pessoas tentam criar jogos por conta própria mas pouquíssimas conseguem – e eu me incluo aqui.
Com Kung Fu Clash eu decidi tentar coisas diferentes do que em meus projetos anteriores. Este post discute algumas das abordagens que me ajudaram a publicar com sucesso meu primeiro jogo.
Projete Primeiro
Não se apresse em iniciar a codificar seu jogo. Gaste um tempo planejando o que será seu jogo, como ele funciona e obtenha uma ideia geral do que precisa ser feito. É muito mais rápido encontrar falhas no papel do que gastar horas escrevendo código somente para descobrir que uma idéia não funciona.
Tente abordar ideias que tornem seu jogo diferente dos demais. Algumas vezes é simples como pegar uma categoria comum de jogos (por exemplo, tiro em primeira pessoa) e dar um gostinho único (por exemplo, adicionando portais).
Você não precisa ter um cronograma detalhado de cada tela e comportamento do seu jogo. Eu descobri que simples rascunhos e anotações são mais do que suficiente para tirar as ideias da sua cabeça.
Planejamento não deve estar limitado a somente o início do projeto. Toda vez que quiser adicionar uma feature ou modificar algo que estava funcionando, gaste algum tempo para organizar suas ideias antes de começar.
Como em qualquer projeto, o número de tarefas necessária para completar pode rapidamente sair do controle. Cada vez que você pensar que identificou tudo que precisa ser feito, acaba descobrindo um grupo inteiramente novo de tarefas que havia esquecido.
Mantenha Simples
Inicie criando uma lista dos requisitos-chave para seu jogo, isto significa remover elementos não essenciais como power-ups, rankings, etc. A seguir, inclua cada um dos sprites, animações, planos de fundo, músicas e outros recursos criativos que você terá de criar. Por último, não esqueça de incluir tarefas que são geralmente esquecidas como gerenciar configurações do usuário, manipular transições de cenas, menus de jogo, gerenciamento de recursos, etc.
Não demora muito para que seu simples jogo vire uma lista que demorará semanas para ser concluída. Não deixe isto intimidar você. Tendo um overview das tarefas para completar irá lhe ajudar a definir objetivos e rastrear seu progresso ao longo do caminho.
E por último, se você quiser adicionar algo novo ao seu jogo então terá de executar este planejamento novamente. Pergunte a si mesmo o que você precisa codificar e criar para fazer acontecer. Uma vez que vislumbre o que precisa ser feito, decida se realmente precisa dessa feature ou se ela pode esperar.
Manter as coisas simples algumas vezes significa dizer a si mesmo “não” sobre adicionar features ao seu jogo (nota do tradutor: o livro Getting Real é ótimo pra isso).
Mantenha o Foco
É fácil ficar desencorajado quando você é a única pessoa no projeto, especialmente quando o progresso é lento e você tem trabalhado durante vários meses, mas felizmente existem algumas maneiras de se manter motivado.
Primeiro, comece compartilhando seu progresso com seus amigos, familiares e redes sociais. Deixe as pessoas verem no que você está trabalhando e compartilhe sua empolgação (dica do tradutor: leia o livro Launch). Coloque seu jogo em um dispositivo e deixe as pessoas testá-lo. É emocionante, e altamente motivante, ver seu jogo em ação.
Não fique desencorajado se ele não funcionar corretamente – é somente um demo. Adicionalmente, não aja imediatamente após o feedback de um usuário. A menos que seja uma falha crítica, simplesmente tome nota de suas sugestões e então as revise mais tarde. Tentar implementar novas ideias, mesmo as boas, irá diminuir o seu progresso.
Segundo, se você se sentir desmotivado, sobrecarregado, ou simplesmente confuso no que deveria estar fazendo, então provavelmente isso é um sinal de que precisa se organizar melhor. Gaste algum tempo examinando seu projeto e escreva uma lista de tarefas restantes. Simplesmente sabendo o que precisa ser feito é que se consegue manter o projeto nos trilhos.
Quando você sentar para trabalhar, revise sua lista e defina a si mesmo um objetivo de ao menos uma tarefa (ou mais) para terminar e então marque-as conforme for terminando.
Use o Tempo Sabiamente
Teste e encontre maneiras de pré-visualizar suas ideias antes de escrever código. Por exemplo, eu uso Flash para animação e design de personagens, mas ele também funciona bem para visualizar como um personagem se parece movendo através de um plano de fundo para rapidamente experimentar os diferentes tipos de efeitos especiais.
Criar arte para um jogo é um processo que consome muito tempo então esteja certo de planejar para displays de alta-resolução logo no início usando vetorização, 3D ou PSDs muito grandes. Não teste e crie suas próprias sprite sheets manualmente, mas ao invés disso use aplicações como TexturePacker ou Zwoptex para acelerar o processo (dica do tradutor: se você não é um artista nato, terceirize).
Considere usar recursos existentes para os itens que você não consegue fazer. Por exemplos, eu não sou músico e teria gastado semanas de desenvolvimento tentando criar uma música somente para acabar com algo horrível. Para este projeto eu decidi comprar uma música livre de royalties. Não somente a qualidade é muito superior a qualquer coisa que eu criasse como eu economizei muito tempo no processo.
Evite escrever código se uma biblioteca open-source está disponível e faz a mesma coisa. Mesmo que não da forma exata. É muito mais rápido modificar uma biblioteca existente do que escrever uma do zero. Por mais interessante que possa ser escrever seu próprio framework, seu tempo é melhor investido no código específico do seu jogo (dica do tradutor: se você não é um programador nato, terceirize).
Não tema gastar tempo escrevendo scripts que automatizam tarefas repetitivas. Se você se encontrar fazendo uma mesmo processo várias vezes, então ele é um candidato perfeito para automatização (nota do tradutor: leia o livro Trabalhe 4h por semana, ele tem um capítulo que fala só sobre isso). Quando você é a única pessoa trabalhando em um projeto, o tempo gasto em atividades tediosas é um tempo jogado fora do ponto de vista dos objetivos pessoais.
E por último, evite o excesso de engenharia em seu código. Isto não siginifica fazer gambiarras, mas ao invés disso um lembrete de que o melhor código do mundo, se não for lançado e/ou gerar algum benefício, é um desperdício. Tente reutilizar código sempre que possível, escreva comentários úteis e use nomes de funções e variáveis com significado, mas principalmente, se preocupe em criar uma boa experiência para o usuário.
Não se Contente
Olhe cuidadosamente a cada detalhe no seu jogo e nunca aceite um “bom o bastante”. Se você não está feliz com algo ou algo não parece certo, então há uma boa chance que seus usuários também não gostem. Cuide de cada detalhe até que sinta que está perfeito. Trate seus jogos como se fossem obras-primas – eles não merecem menos!
É difícil ser a única pessoa trabalhando em um projeto, mas isto também significa que você é o único que decide o que vai para o produto final. Tire vantagem de ter o controle completo e dê o seu melhor!
Hugo Bonacci, Criador do Kung-Fu Clash
* OBS: curtiu o post? Então dá uma olhada no meu livro de Corona SDK clicando no banner abaixo pra aprender a criar outros tantos apps incríveis!
Olá, tudo bem?
O que você achou deste conteúdo? Conte nos comentários.
Show de bola !!