Neste último fim de semana aconteceu em Curitiba (e no mundo) mais uma edição da Global Game Jam. E poxa… foi muito legal! O processo em si foi um pouco solitário, mas o sentimento de dever cumprido depois valeu muito a pena.
Se você não conhece a Global Game Jam, ela um evento onde você tem até 48 horas para desenvolver um jogo. Ele pode ser digital, de tabuleiro, de papel, físico, mobile, em realidade aumentada… enfim, como você quiser. Portanto é só reunir uma equipe (ou não) e botar a mão na massa!
Nesse ano eu participei sozinho pois meus amigos designers ou computeiros viajaram ou não aceitaram meu convite. - Pô! Vai ter pizza de graça todos os dias do evento - eu dizia. Nada adiantava. O único que foi comigo nessa foi o TARS, meu notebook Dell de 2011, que claro, não tinha como recusar (por enquanto).
Partimos numa sexta-feira quente para a abertura do evento ali na PUC-PR. Aqueles nerds - homens, mulheres e crianças - reunidos é uma coisa muito bacana de se ver. Não há narizes empinados como em algumas hackathons ou outros eventos empresariais de desenvolvimento. Todo mundo quer mostrar sua arte, seja em linhas de código, contando uma história, com interfaces de usuários ou artes conceituais de cair o queixo. Fico sempre admirando.
Junto com o anúncio do tema desse ano, que foi apenas a palavra: Ritual, a excitação inicial deu lugar ao sentimento de ter que botar a mão na massa. Tentei procurar alguém sem equipe também, mas os únicos que encontrei que estavam abertos para um novo membro eram liderados por um moço de personalidade forte, não por mal, mas quase ditatorial. Dei um jeito e fugi deles enquanto era tempo. Achei uma sala com mesa vaga, pluguei o TARS por lá, coloquei um Tycho no fone e comecei a produzir.
Desde criança a ideia de criar jogos me fascinava. Eu estava sempre atrás de informações sobre como fazê-lo, mas naquele tempo era mais díficil conseguir as informações e claro, eu era uma criança. Logo conheci alguns makers para brincar e depois tentei alguma coisa em flash e ActionScript. Só quando entrei na universidade é que tive contato om níveis de programação mais sofisticados, e carregando o básico de Javascript dos tempos anteriores ao Guilstv é que me aventurei com a framework phaser.js. Ela é uma rápida, de código-aberto e muito bem documentada framework para criação de jogos em HTML5. Como já me senti confortável um pouco com ela, decidi usá-la esse ano, diferente de 2014 onde usei o bom e velho Multimedia Fusion.
Comecei então a pensar em algo, fazendo uns sketchs no meu caderninho. Logo a ideia de algo com aliens - e eu os amos demais - veio a cabeça. Mas o que fazer é que estava complicado. Como um grande supernintendista que sou, sou obcecado pelos bons e velhos jogos de plataforma, mas além de serem custosos para serem feitos sem escrever uma engine antes, fazer sozinho nas 48h seria impossível.
O tema ritual não ajudou muito, mas um dos diversifies desse ano que dizia sobre um “mundo infinito processualmente gerado” sim. Como já estava trabalhando sozinho, seria mais tranquilo fazer um joguinho casual, e nesse caso, o diversifier me ajudou a pensar num infinite run. Queria algo básico inspirado em Jetpack Joyride ou Flappy Bird.
Parti então com essa premissa e como já tinha feito um game, chamado Star Mars, continuei com a ideia da espaçonave navegando pelo espaço e desviando de meteoros ou outras naves. Comecei então tentando encaixar o tema ritual num game casual que você controla uma nave no espaço e bolei o seguinte texto:
Zorg agora tem 18 anos, então é hora de fazer o tradicional ritual de seu planeta Zahar. Ele precisa passar pelo buraco de minhoca e se afastar de sua galáxia para encontrar sua própria paz transcendental.
OBS. O nome do alienígena Zorg tem tudo a ver com o vídeo do Porta dos Fundos e o planeta Zahar é em homenagem ao grande editor Jorge Zahar aqui do Brasil (me dá uns livros, please).
Seguindo disso, comecei a trabalhar na engine básica do jogo, com um setup fácil e just clicks no Intel XDK que me ajudaria depois a exportar o app com Cordova para o Android. O Phaser tem uma documentação bem intuitiva, e logo foi fácil montar toda a estrutura por estados, ou frames, igual eu estava acostumado nos game makers quando mais jovem.
Comecei criando o estado básico jogável do game, e depois de algumas horas enfrentando erros bobos de programação em JS, foquei em não mais escrever código, mas sim pensar antes no que eu queria fazer - tentei projetar o que eu esperava do game. Só lá por mais de duas da manhã de sábado é que eu terminei de escrever e fazer uns diagramas fuleiros, mas esclarecedores de TUDO que eu faria e como o faria. O sono bateu forte e me senti muito velho de não aguentar mais sequer virar uma noitezinha como em 2014, fui dormir animado com o dia seguinte.
@guilmour Força! Mas não deixe de descansar!!!
— Global GameJam PUCPR (@ggjpucpr) January 30, 2016
De manhã acordei todo torto por conta da cama furreba que eu tinha improvisado nas salas da PUC, mas o café na faixa organizado pelo @bcp, orgnizador do evento em Curitiba, já colocou tudo no lugar.
Fui com tudo para o TARS e pouco antes das 16h o game já tinha um corpo bem definido. Estava ficando mais ou menos assim:
Voltando do lanche-almoço da tarde (que foi mais PIZZA!), fui para o restante que faltava para ter um jogo mínimo jogável (JMJ): eu ainda precisava construir os sprites do game; definir backgrounds, fazer menus e botões, fazer uma screen com um sobre e créditos, fazer um screen com os pontos obtidos mais altos - em mili parsecs! -, e claro, definir uma trilha sonora. Se desse tempo: colocar incrementos visuais, fazer uma gamificação melhor do que apenas “quem faz mais pontos” e exportar o arquivo com Cordova para rodar no num tablet meu antigo.
Fazendo as formas do Inkscape e jogando o .png no ImageGlitcher dá para ter um efeito de glitch-neon-espacial muito bonito, e assim fui fazendo os sprites. Confira abaixo, e se quiser pode baixar e remixar:
Depois de feito a arte, surfei um pouco atrás de uma trilha legal, e o Newgrounds (<3) era o lugar certo para isso. Dentre as músicas que curti demais e selecionava de menos, acabei escolhendo as seguintes: Coloque um fone e dê o play se puder:
E a licença Newgrounds é ótima e objetiva:
Newsground license: "You may not use this work for commercial purposes without making specific arrangements with the artist UNLESS your work is a web-based game or animation, in which case you may use this freely."
Coloquei os sprites e a trilha, criei as screens e ainda deu para implementar alguns caprichos como um camera-shake, e suavidade nas transições. Consegui também fazer a build do apk, mas que ficou muitíssimo lento em Androids mais antigos, que era o caso do meu Tablet.
Eram quase 4 da manhã quando coloquei o notebook para hibernar. Quando acordasse era apenas se preparar para os playtests e conferir os games dos outros colegas.
O resultado “final” foi esse:
O código, claro está lá no GitHub.
E foi isso. Mais uma Game Jam de aprendizado, arte e muita pizza. Code and art will change the world!
Abraços! <3
– Guilmour