Desenvolvimento de games: muito mais que apenas programar
Se você trabalha ou sonha em trabalhar na área de tecnologia, provavelmente já se pegou fazendo a seguinte pergunta: "E se eu virar um dev de jogos? Afinal, amo jogar vídeo games e adoro computação. O que pode dar de errado nisso?"
Para responder essas perguntas eu gostaria de levá-los há uma viagem no tempo, mais especificamente para o ano de 2011. O então recém entrante no ensino médio Leonardo adorava jogar vídeo games - e jogava de tudo, de futebol, passando para FPS e chegando até no famoso League of Legends (comecei quando ainda não tinha servidores no Brasil ~old alert~).
Como já contei em outras oportunidades, estudar programação veio justamente dos games, pois eu tinha muitas dúvidas: como assim eu aperto um botão e o personagem se move? O que acontece quando aperto atirar e sai um projétil? Dentre tantas outras.
Ocorre que, na ocasião, a gente aprendia a programar com o famoso VisualG, depois ia para o Pascalzim e por fim começava a mexer no clássico Delphi, seguido de um pouco de Java com Banco de Dados. Tudo isso bem distante das respostas que gostaria de ter, mas que dava uma outra perspectiva profissional, podendo trabalhar com Desktop, web ou até mobile.
E assim eu fiz, caí no mercado de trabalho e esqueci a área de jogos... Por um tempo!
Depois de aprender a programar e já até ter feito um update sem where no trabalho, tomei coragem para ir atrás das respostas que tanto ficavam na minha cabeça. Me inscrevi para um curso de jogos com Unity. Fiz as aulas na maior empolgação, aprendi a usar a engine, criar os scripts, animar sprites, colocar som e até exportar um jogo.
Até aqui a visão que tinha era de que desenvolver games era como programar um software, haveria uma equipe de análise que iria criar tasks do tipo: "implementar função de andar do personagem tal" e eu focaria nisso. Na cabeça de alguém que via tudo sob a perspectiva de programação, desenhar e animar sprites, criar músicas e tudo mais seriam endereçadas a pessoas chave que conheceriam disso. Porém não é bem assim!!!
A ficha começou a cair quando fui participar do desenvolvimento de um game com amigos. Sem ter boas habilidades de desenho, nem se virar muito com programas de mixagem, o máximo que eu sabia era codar... E só! E acredite, desenvolver um jogo vai muito além disso. Na ocasião, fizemos o jogo e até o publicamos, mas as minhas contribuições foram ínfimas. Aquilo era um primeiro alerta de que eu deveria repensar se aquilo realmente era para mim.
Como bom brasileiro que sou, não desisto fácil e segui estudando diferentes engines como Godot, Unreal e Game Maker. Nos tutoriais eu mandava super bem, mas havia algo que sempre falhava, mas não sabia dizer o que era.
Foi só depois de algum tempo que percebi que realmente a área não era para mim. E, bem, apesar de haver grandes studios onde pudesse trabalhar de uma forma próxima daquela que listei, com tasks e funções bem definidas, essa não é a realidade de quem atua no mercado - especialmente no Brasil. Em um cenário cheia de indie devs formados por grupos pequenos, normalmente de 3 à 5 ou 7 pessoas, é notório que todo mundo precise saber mais do que codar.
Até porque codar, para quem desenvolve um jogo, não é a parte mais importante. Sim, eu demorei a entender isso. Quem cria jogos tem muitas outras dificuldades mais importantes, como:
Qual a história e enredo do jogo?
Quem são as personagens? Como interagem?
Quais os pontos chaves da história?
Como será o estilo de desenho e animação? Qual o tipo de traços, cores...
Como será a ambientação sonora? Alegre? De suspense?
Existem milhares de questões a serem debatidas no desenvolvimento de um game e o sucesso ou não do projeto passam por coisas que são bem mais importantes que... programar.
Não me levem à mal, é super importante saber programar e cohecer a fundo seus algoritmos, mas no dia à dia existem formas mais produtivas que implementar o A* na mão. Vou além, talvez quem o use para criar um jogo não precise conhecer necessariamente a fundo, muito menos saber como implementá-lo. Já saber encaixar algum personagem, no momento certo para seguir o player pode ser a grande sacada de um jogo de terror ou ação.
O fato é que hoje eu consegui aprender sobre desenvolvimento de jogos o suficiente para responder as minhas dúvidas, no entanto, sinto que não tenho perfil para trabalhar com games. Não apenas por não ser bom em criar as artes e tudo mais, mas porquê eu gosto realmente de programar e de passar um bom tempo pensando em como resolver problemas. E não curto a ideia de bolar a concepção de um game, pensar em vários outros aspectos de arte, música e de como tudo isso vai impactar na experiência do usuário, ou melhor, dos jogadores.
Agora, se você assim como eu, gosta de lidar com essa área de jogos, mas não é bom em criação, saiba que é possível seguir algumas áreas ainda assim, implementando sua própria Game Engine ou dando manutenção em alguma existente. Ou quem sabe implementando sua versão de um emulador, onde seu objetivo é, a partir de um bytecode, transformar em saída tal qual o hardware e software do console fazem. E se isso não for desafio a sua altura, que tal participar da JS 13k Games? Cujo objetivo é criar um game web com JS em apenas 13 kilobytes. Aqui, apesar da criação do jogo, pode-se pensar em algo simples e focar apenas na otimização.
Existe espaço para tudo e, muitas vezes, a gente só precisa se permitir compreender o que gostamos ou não e deixar o restante fluir.