Desenvolvimento & Produção

Diário de Bordo: Criando um Jogo do Zero em 30 dias

Diário de Bordo: Criando um Jogo do Zero em 30 dias

Coloque seu nome e email para receber meus melhores conteúdos:

Entre os dias 06 de Outubro e 05 de Novembro de 2017, aconteceu a 5a Maratona Academia PDJ.

Esta é uma maratona online de desenvolvimento que eu faço com os alunos da Academia de Produção de Jogos e tem como objetivo fazer o pessoal realmente colocar a mão na massa e usar tudo o que aprendeu na criação de um jogo.

No artigo de hoje, eu trago o devlog do jogo Ace Bond: Cat Rescue (jogue aqui), desenvolvido sozinho pelo Rodrigo Costa durante a 5a Maratona Academia PDJ.

Antes de você ler o devlog completo do Rodrigo Costa, eu quero te chamar atenção para alguns pontos importantes. São pontos que você deve ficar atento enquanto lê o devlog, para conseguir extrair o máximo de lições dele.

Algumas lições que você vai encontrar neste devlog:  

  • Em vários momentos dá pra ver que o Rodrigo não está satisfeito com alguma característica do jogo, mas decide ir em frente mesmo assim por conta do tempo (o jogo deveria ser feito em 30 dias);
  • Em outros, ele toma decisões pensando em terminar determinado estágio do desenvolvimento para conseguir chegar ao final da maratona com um produto jogável;
  • Priorização de tarefas. É uma coisa que você precisa fazer quase diariamente, principalmente trabalhando num espaço de tempo mais curto como 30 dias. O dia 18 é um bom exemplo disso;
  • Importância de ser autodidata e correr atrás para aprender o que você precisa (no momento que você precisa);

No final deste artigo eu volto para te fazer um convite especial e te explicar como você pode fazer parte da Academia de Produção de Jogos e estar com a gente na próxima maratona.

Então agora divirta-se com o devlog do jogo Ace Bond: Cat Rescue.

Com vocês, Rodrigo Costa

Raphael Dias: Conta um pouco pra gente quem você é e o que você faz. Qual é a sua formação/trabalho principal? E como começou a se interessar pelo desenvolvimento de jogos?

Rodrigo Costa: Sempre me interessei pela linguagens e narrativas visuais, seja em animação, cinema ou games. Hoje sou pós-graduando em linguagens, graduado em Cinema de Animação e técnico em Comunicação Visual. Tenho experiência em produção de roteiros para séries de animação e produção de material audiovisual para EaD. Atualmente trabalho como Designer Educacional em instituição pública, pesquisando e produzindo novas tecnologias para serem aplicadas no ensino. Desde pequeno me interesso no desenvolvimento de jogos, sendo que já tive alguns títulos criados no antigo em RPGMaker2000. Atualmente estou retomando as atividades com ferramentas mais atuais, utilizando os conhecimentos que aprendi ao longo da minha jornada até aqui.

Raphael Dias: Participar de maratonas de desenvolvimento são ótimas oportunidades para testar suas habilidades e construir portfolio. Qual foi o maior aprendizado que você teve participando dessa 5ª Maratona Academia PDJ?

Rodrigo Costa: Parece uma frase de vilão, mas faz um pouco de sentido para mim: “se você quiser bem feito, faça você mesmo!”. Não digo para deixar de lado o trabalho em grupo, mas se a equipe não estiver em sintonia e engajada com o trabalho, o jogo não trará resultados satisfatórios. Meu objetivo com a 5ª Maratona foi de explorar minhas habilidades e ver até onde eu poderia ir, então fazer sozinho foi o caminho mais sensato. Com os conhecimentos adquiridos, me sinto mais preparado para o trabalho em equipe, uma vez que agora tenho mais conhecimento em etapas do processo que antes não tinha muita familiaridade.

Raphael Dias: Como você organizou seu tempo para conseguir participar e finalizar com sucesso a 5ª Maratona Academia PDJ?

Rodrigo Costa: Organização é tudo, principalmente quando se tem prazos bem apertados. Parti de um cronograma e isso foi o ponto central de todo processo. O tempo inicial e final foram apenas os limitadores, o mais importante foi que eu tive que listar todas as etapas do processo e isso dá um conhecimento mais amplo sobre todo o trabalho. Depois disso é só fazer o mais difícil: seguir o cronograma sem atrasos.

Devlog do jogo Ace Bond: Cat Rescue

Dia 01: Brainstorm e pesquisa de referências.

Como está sendo desenvolvido apenas por mim, participaram do brainstorm eu e a internet S2. Pesquisei jogos, imagens e mecânicas já focando em alguns pontos que eu gostaria de abordar nessa maratona. Minha maior intenção com esse jogo é de explorar minhas habilidades e desenvolver um maior conhecimento acerca da produção de jogos, principalmente voltado à programação. Escolhi partir de uma mecânica como conceito inicial, algo que me desafiaria, mas que ao mesmo tempo eu tivesse segurança que poderia desenvolver.

O resultado do brainstorm então é a produção de um jogo em 3D, onde o gameplay é uma mistura de jogos action, beat up e shooter, com visual que lembrasse jogos de 8-bits. Alguns resultados da pesquisa que se destacaram foram os jogos Soldier Of e Shakecan Games: Pockette Rox, ambos projetos indies e os clássicos do NES Contra, Double Dragon e River City Ransom. Retro City Rampage também serviu de inspiração.

Dia 02: Pesquisa de tutoriais.

Foram feitas buscas na internet por tutorais que ensinam a desenvolver as mecânicas escolhidas ou que se assemelham às ideias que saíram do Brainstorm. Muitos tutoriais ensinam a fazer um movimento mais voltado para jogos FPS, porém eu queria um movimento mais próximo de jogos como Zelda ou Mario 3D World, onde o player se move com a posição referente à câmera. A dificuldade foi que a câmera sendo fixa, o lado “esquerdo”, por exemplo, não podia ser definida pela posição do personagem, pois se o personagem virasse 90 graus, a esquerda do personagem colocaria ele para baixo da tela. Poucos tutoriais mostram como fazer esse movimento. Também encontrei um tutorial que ajuda a suavizar o movimento da câmera, assim se o player mudar de posição rapidamente, o movimento não fica tão brusco.

Dia 03: Primeiras etapas da programação: teste de mecânicas.

Comecei a fazer os primeiros testes de mecânicas, algumas coisas tentei desenvolver do zero, mas também tentei implementar as mecânicas dos tutoriais para verificar se é possível dar continuidade no projeto, ou se seria melhor mudar para mecânicas mais fáceis de serem desenvolvidas. O personagem já se move, pula e colide em objetos e a câmera o segue para onde for.

Dia 04: Site, devLog e logo da equipe.

Criei um site para postar informações sobre o jogo, assim como criar uma DevLog para registrar o processo e etapas da produção. Também trabalhei em um logo para a “equipe” de desenvolvimento. O nome dado na hora do registro na maratona (de última hora) foi Big Root. A ideia foi não pensar muito e usar as referências mais óbvias, mas ainda assim acredito que o logo chegou a um bom resultado.

Dia 05: Cuspindo fogo!

Fiz um refinamento no pulo e movimento do personagem e algumas atualizações no site. Criei um cronograma prevendo as etapas do projeto que está disponível no site. O Cronograma está bem apertado e com as tarefas mais pesadas concentradas nos finais de semana devido à falta de tempo durante a semana.

Desenvolvi com a ajuda de vários tutoriais um sistema de tiro que me agradou bastante e é fácil de configurar tiros diferentes. Por exemplo, foi possível criar um lança-chamas, mesmo esse não sendo o foco no jogo. Quem sabe, talvez dê tempo de fazer armas diferentes e tacar fogo nos inimigos! Mwahahaha!!!

Dia 06: Inimigos.

A programação da AI dos inimigos está quase pronta. Eles já identificam, seguem e atiram no jogador dependendo da distância, podendo parar de seguir se o jogador estiver muito longe. O tiro ativa partículas quando colide com algum colisor e identifica qual alvo está sendo acertado, mas ainda não foi implementado um sistema de vida.

Dia 07: Enemy Spawn.

Após horas de trabalho, consegui fazer um sistema de spawn de inimigos que me agradou. Eles aparecem em um raio a partir do personagem e o sistema também detecta colisão, assim os inimigos podem aparecer em cima de plataformas ou não aparecerem caso haja algum tipo de colisor muito alto, como um prédio, por exemplo.

Fiz alguns ajustes e refinamentos além de uma limpeza geral a fim de organizar os arquivos. Reescrevi todos scripts e separei alguns que estavam juntos (agora o ataque e o movimento do player estão em scripts separados), criei um script global para armazenar informações acessadas por outros scripts (como a posição do player), assim eliminei a necessidade de utilizar o inspector e agora todas informações são chamadas por script.

Dia 08: Cenário começa a tomar forma.

Estou desenhando as imagens que servem de textura e, em seguida, já modelando e texturizando no Blender. Tive que fazer vários testes no Unity de importação dos modelos 3D, sprites e texturas para entender como funciona no programa e fazer a melhor escolha do que usar e quais as melhores configurações de importação para o tipo de asset que eu estava usando. Estou gostando do resultado, está bem interessante produzir os sprites, tentando deixar um pouco com a cara de NES. Para reforçar um pouco a ideia de 8-bits, estou me limitando à paleta de cores do console.

Dia 09: Trabalhando nos cenários.

Remodelei os prédios e fiz vários ajustes nos scripts. #ProgramaçãoNeverEnds

Adicionei alguns detalhes no cenário, como cercas e áreas gramadas. Estou demorando bastante na modelagem com o Blender. Os atalhos são confusos e trabalhar com 4 programas abertos ao mesmo tempo não ajuda em nada, volta e meia estou usando os atalhos de um programa em outro!

Entre programação, modelagem e texturização, está sendo trabalhoso fazer esse jogo, mas ao mesmo tempo recompensador. A experiência está valendo a pena.

Dia10: Mais modelagem!

Modelei mais uma parte do cenário, agora o mapa tem uma praça. Está demorando muito fazer o mapeado uv dos objetos, infelizmente o tempo para modelar acabou e não consegui fazer todos objetos que eu gostaria. Se der tempo, acrescento mais detalhes no cenário.

Dia 11: Pesquisa de telas de título e interfaces em jogos de NES.

Pesquisei algumas interfaces e telas de título que poderão servir de referência. Já repararam que a maiorias das telas dos jogos de NES são o título centralizado sobre um fundo preto?

Quanto à UI (Barra de HP, pontuação, item etc), achei bem interessante que, embora alguns jogos são cheios de informações, há vários outros com a interface bem simplista.

Dia 12: Tela de título.

Levando em consideração a falta de tempo, vou manter as interfaces bem simples, nesse caso também sem ilustração para a tela de título. Vou manter bem clássico dos jogos NES e seguir o padrão de cores, se der tempo vou mudar para algo melhor. O grande problema é que ainda não tenho um nome para o jogo e isso está começando a criar um atrito com outras etapas do desenvolvimento.

Dia 13: A história.

O enredo do jogo que tenho até agora não me agrada muito. Fico pensando o quanto que personagens carismáticos e história seria atrativa para o jogo se eu não tenho tempo de desenvolver uma narrativa que possa causar uma imersão do jogador. O triste é que não estou chegando a nenhum lugar e terei que dar continuidade com a ideia “menos pior”.

Dia 14: Pesquisa de áudio.

Sem muita ideia para as telas, acabei procurando algumas músicas para o jogo para tentar gerar algumas ideias e me deparei com algumas de licença livre muito boas no site Open Game Art. Então estou considerando essa etapa concluída, já tenho os áudios para música e quase todos efeitos sonoros. A princípio eu pretendia produzir as músicas, mas não vou arriscar estourar os prazos, melhor manter no mais simples.

Dia 15: Ícones da UI.

Planejei e ilustrei os ícones da interface, agora só falta implementar. Aproveitei para definir quais serão os tipos de tiros que entrarão no jogo e como os contadores de vide e munição irão se comportar para passar e informação para o jogador.

Dia 16: UI funcionando.

A interface está implementada e funcionando. Aproveitei e implementei um quinto tipo de tiro que não tinha antes: a metralhadora. Com isso, eu também fiz pequenas correções nos scripts dos tiros e equilibrei a quantidade de munição máxima e o dano para cada tipo de tiro baseado no dps.

Dia 17: Modelagem e animação dos personagens concluída!

Consegui terminar as animações, uhul! Foi um desafio fazer as animações funcionarem, mas nada que encarar a tela do PC por 12 horas direto não resolva. Primeira animação 3D que fiz voltada para games. Foi interessante que tive que aprender a criar de layers de animação para fazer o personagem atacar ao mesmo tempo que ainda, ativando animações em partes diferentes do corpo e fazendo interpolação em cada movimento. Devido a questões de tempo, os inimigos vão apenas mudar de cor e ter um ataque diferente. Item Drop e coletáveis também estão funcionando.

Dia 18: Lata de lixo.

Modelei uma lata de lixo para o cenário. Se der tempo quero fazê-las interativas, talvez dando algum bônus ou simplesmente serem destruídas com tiros, mas provavelmente vou acabar usando o tempo livre para modelar mais algum objeto para o cenário.

Dia 19: Cenas das telas.

Adicionei as cenas das telas, mas ainda estão bem capengas, apenas informações básicas. Preciso escolher um nome para o jogo o mais rápido possível! Fica a dica, não deixe para escolher um nome para depois.

Dia 20: Vfx do tiro.

Para o efeito de tipo comum acabei aproveitando o mesmo efeito de tiro que eu fiz como place holder, ficou bom e só precisei dar uma melhorada. Como os outros tipos de tiros são baseados no tiro simples, exceto pelo lança-chamas, deu tempo de terminar todos efeitos.

Dia 21: Vfx do cenário.

Ativei a fonte. É só isso mesmo, a fonte da praça agora joga água para cima. A princípio pensei em várias outras coisas acontecendo, mas com o tempo que tenho é o que deu para hoje.

Dia 22: Objetos coletáveis.

Para vencer no jogo o jogador precisa coletar/resgatar 6 gatos que estão espalhados pelo cenário em posições aleatórias. Eu gostaria de colocar formas diferentes de encontrar esses gatos, mas em função de tempo eles tão lá paradão te esperando.

Dia 23: Efeitos visuais.

Adicionei alguns efeitos visuais e outros foram aprimorados. Por exemplo, ao pegar um item ele ativa um efeito de “pop”, como se estourasse a bolha. O mesmo ocorre se o item ficar muito tempo parado, o jogador acaba perdendo item.

Dia 24: Sfx, músicas e título.

Adicionei todos efeitos sonoros do game mais as músicas. O jogo ficou bem mais vivo! Também fiz vários testes e refinei algumas coisas, como a velocidade dos inimigos, dano, spawn, animações e outras coisas. Adicionei um inimigo novo com lança-chamas, mas é raro de encontrar. Acabei chegando num título para o game, que ainda não me agrada, mas não tenho mais tempo para pensar nisso. O jogo vai se chamar Ace Bond: Cat Rescue. Tela de título retrabalhada.

Dia 25: Adicionado alguns carros pela cidade.

Como o jogo se trata de uma organização criminosa tomando conta da cidade, nada mais conveniente do que um pouco de destruição. Terminei de modelar um carro para espalhar pela cidade. Assim como os inimigos, os carros só mudam de cor. Espero que dê tempo de fazer algum outro prédio.

Dia 26: Fade entre as cenas.

Chegando perto do final, chegou a hora dos refinamentos. Hoje adicionei um efeito de fade in e fade out que ajuda a suavizar a transição entre as cenas. Thanks again to Brackeys for this code!

Dia 27: Alguns detalhes.

Pequenas alterações no cenário. Adicionei alguns acidentes de carro. Criei feitos de fumaça e de fogo para adicionar em alguns pontos do mapa. Algumas ruas da cidade estão bloqueadas por carros tombados empilhados.

Dia 28: Teste de build e bug fix.

Fiz alguns testes para exportação do build e está ocorrendo tudo bem. Fiz mais alguns ajustes em alguns scripts e um rebalanceamento do jogo. Agora a chance de cair item é de 100% se estiver desarmado e reduzi o limite de inimigos que aparecem ao mesmo tempo. Corrigi também um erro que impedia que inimigos com lança-chamas aparecessem.

Dia 29: Nova tela de pause.

A nova pause screen agora tem opção para terminar o jogo e informa os controles ao jogador. Como os comandos não são mostrados até agora para o jogador, editei os scripts de menu para usar tanto X quando barra de espaço para selecionar opções. Dessa forma fica mais fácil para acessar o jogo mesmo não conhecendo os comandos. Também deixei a possibilidade de pausar pressionando escape.

Dia 30: Done!

Hoje fecha 30 dias de desenvolvimento e o jogo é lançado. Foi uma ótima experiência trabalhar no jogo sozinho, com certeza adquiri muitos conhecimentos e um mais um item para o portfólio. Fiz mais alguns ajustes no game antes de publicar. Dei uma retrabalhada na tela de título e criei um novo logo. O jogador agora usa óculos de sol estiloso. Presskit e link para o jogo agora disponíveis no site.

Considerações Finais (Por Raphael Dias)

E aí, o que você achou de saber mais sobre 5a Maratona Academia PDJ?

Se você também quer começar a desenvolver jogos, eu sempre recomendo começar dos mais simples para ir ganhando experiência.

Eu criei um ebook com uma seleção de 16 jogos simples para você ter como uma referência sobre o tipo de jogo que eu acredito ser ideal para quem está começando.

Além disso, também incluí a quantidade de cópias vendidas de cada um desses jogos (dados reais vazados da Steam). Baixe o ebook gratuitamente no botão abaixo:

Opa,

qual foi a maior sacada que você teve? Conte nos comentários.