Como falhar como desenvolvedor de games

Estou celebrando os 15 anos desde que desenvolvi meu primeiro jogo. Não pretendo desabafar, mas sim refletir sobre o tempo transcorrido e os projetos que realizei.

O desenvolvimento de jogos sempre foi um hobby para mim, uma atividade que eu praticava nos momentos de lazer. Contudo, sempre aspirei a lançar um jogo e alcançar algum nível de sucesso. Nunca cheguei a publicar meus jogos na Steam, Google Play ou plataformas similares, tampouco obtive qualquer ganho financeiro com isso, apesar de ter tentado em alguns casos.

Falta de Foco

A primeira engine que explorei foi o RPG Maker VX. Naquela época, eu estava bastante envolvido na comunidade de fóruns do RPG Maker, sempre compartilhando ideias e projetos. Minha criatividade não tinha fim, e eu constantemente tinha novas ideias para jogos. Durante esse período, estimo ter criado pelo menos uma dezena de projetos, embora muitos deles tenham permanecido apenas no estágio inicial de desenvolvimento. Como estava no ensino médio na época, tinha bastante tempo livre para me dedicar a esses projetos. Eu cuidava de tudo, desde a escrita do roteiro até o design do jogo, criação de arte e desenvolvimento de quebra-cabeças.

Um dos projetos aos quais dediquei mais tempo foi um jogo de terror nos moldes de "Amnesia: The Dark Descent" e "Silent Hill", chamado Insomnia. Infelizmente, perdi todo o progresso desse jogo quando formatei meu computador. Outro projeto que estava bastante polido era "Brian's Mansion", que incluía até mesmo uma seção de tutorial e arte original. No entanto, todos os jogos que criei nessa fase acabaram ficando apenas no estágio inicial, pois sempre me empolgava com uma ideia nova e abandonava o projeto anterior.

Um dos últimos projetos que comecei, envolvendo uma casa assombrada por fantasmas, estava se mostrando promissor. No entanto, também acabei abandonando-o após criar apenas o início. Meses depois, ao revisitar os arquivos do meu computador, encontrei esse projeto novamente e decidi não abandoná-lo dessa vez. Em vez disso, resolvi ser pragmático e utilizar o início do jogo como base para finalizá-lo. Transformei esse começo em um jogo completo, ajustando a história, as fases e os desafios. Embora tenha sido um processo desafiador, consegui dar ao jogo um começo, meio e fim coerentes.

O jogo resultante era simples e curto, mas mesmo assim ganhou destaque na comunidade do RPG Maker. Recebi feedback positivo e até mesmo alguém fez um trailer para ele. Embora fosse breve, essa experiência de conclusão trouxe uma sensação de realização, mostrando-me a importância de persistir e finalizar meus projetos, mesmo que de forma simplificada.

Não usar abstrações

Depois de adquirir habilidades em programação, completei um curso técnico em Informática e, em seguida, me formei em Ciência da Computação. Iniciei minha jornada profissional trabalhando por um ano com Unity, realizando freelancers em projetos pequenos para uma empresa, em colaboração com colegas de equipe. Nosso foco era desenvolver jogos educacionais para escolas. Durante meu tempo na faculdade, também desenvolvi um projeto que consistia em um jogo similar a Sim City, porém ambientado na gestão de uma pequena startup. Embora tenha sido uma tarefa simples para atender aos requisitos da disciplina, essa experiência foi valiosa.

Mais tarde, ao ingressar no desenvolvimento web, concentrei-me em aprender JavaScript e front-end, incluindo HTML e CSS. Comecei a criar pequenos jogos minimalistas, sem o uso de engines, aproveitando a oportunidade para desenvolver minhas habilidades e compreender o processo de criação desde o início. Ao longo desse processo, percebi que tinha a capacidade de construir algo do zero, uma vez que agora era capaz de programar. Isso me impulsionou a buscar projetos desafiadores, como o jogo "Get Out".

"Get Out" foi desenvolvido sem o suporte de uma framework, utilizando apenas conhecimentos básicos de HTML, CSS e JavaScript. Este projeto, ao longo dos anos, tornou-se uma jornada de aprendizado, onde constantemente integrava novas tecnologias que ia aprendendo. De JavaScript a JQuery, PhoneGap, Unity e React, busquei sempre aplicar novos conhecimentos no jogo. Concentrei-me em desenvolver a arquitetura e a estrutura do jogo, aplicando boas práticas de programação, princípios de orientação a objetos, SOLID e Design Patterns.

Apesar do código estar bem estruturado e de fácil manutenção, duas questões importantes surgiram. Primeiro, o jogo não era divertido. Era um jogo baseado em texto, inspirado em "Oregon Trail" com elementos de sobrevivência, mas eu lutava para torná-lo atraente e envolvente. Investi anos em estratégias de gameplay e sistemas, experimentei com pixel art e, posteriormente, com imagens reais para criar uma atmosfera mais sombria. Além disso, o escopo do jogo nunca foi fechado. Sempre surgiam novas ideias que eu tentava implementar, o que tornava difícil estabelecer uma direção clara para o projeto.

O último obstáculo foi o custo de não usar uma engine. Problemas simples, como lidar com efeitos sonoros e animações, tornaram-se complexos e começaram a afetar a performance do jogo, uma vez que ele era baseado em uma página web e não em uma engine dedicada para jogos.

Após essa experiência, prometi a mim mesmo que sempre utilizaria uma engine para meus projetos futuros. A ideia de ser um programador que constrói tudo do zero perdeu seu apelo. Passei a confiar mais em abstrações e ferramentas especializadas como game engines, reconhecendo sua importância para o desenvolvimento eficiente que fui abandonando com o tempo.

Escopo fechado

Um jogo do qual me orgulho profundamente é o meu primeiro jogo completo, com um início, meio e fim. Este jogo, Zero to One, destaca-se por não ter sido abandonado em busca de uma ideia melhor logo em seguida. A criação desse jogo foi uma experiência marcante, não tanto pela quantidade de aprendizado ou disciplina adquiridos, mas sim pela circunstância que o impulsionou: uma Game Jam.

Participar de uma Game Jam significa ter um prazo definido, um tema estabelecido e a pressão de criar algo dentro desses limites. Para essa ocasião, optei por utilizar uma engine minimalista, que forçava a concentração no design do jogo e na narrativa. Essa restrição acabou sendo uma bênção disfarçada, pois me permitiu transmitir minha mensagem de forma clara e eficaz e finalmente terminar o jogo.

Embora tenha sido um projeto pequeno, criado exclusivamente para a Game Jam, Zero to One me deixou com uma sensação de realização. No entanto, após sua conclusão, decidi embarcar em um projeto mais ambicioso, algo que poderia ser considerado meu trabalho definitivo no mundo dos jogos.

O grande projeto

Decidi mergulhar nos estudos da engine open-source chamada Godot. Sua simplicidade destacaram-se para um desenvolvedor solo como eu. Comparada à complexidade do Unity e Unreal, Godot parecia mais adequada. Seu escopo era menor e sua linguagem extremamente acessível.

Observando o sucesso atual de jogos como "The Legend of Zelda: Breath of the Wild", reconhecido pela mídia mainstream como um dos melhores jogos já feitos, vi uma oportunidade de criar algo semelhante, mas com uma abordagem mais simplificada e de escopo reduzido. Muitos elogiaram o retorno desse jogo à essência da franquia Zelda, como visto no primeiro jogo lançado para NES, "The Legend of Zelda" de 1986. Esse título antigo, apesar de sua idade, oferecia uma exploração livre e não linear, um mundo repleto de segredos. Com a tecnologia atual e a engine como Godot, vislumbrei a possibilidade de recriar essa experiência, mas com minha própria narrativa.

No entanto, subestimei grandemente a complexidade de criar um jogo estilo NES completo, com um mundo vasto, quebra-cabeças, inimigos e segredos. Após mais de um ano de trabalho, tinha apenas uma base para um jogo semelhante a Zelda, com alguns itens, partes do mundo e narrativa. A exaustão começou a se manifestar, e percebi que havia caído na mesma armadilha de sempre: acrescentar constantemente novas ideias ao projeto, resultando em um escopo infinito e dificuldades crescentes. Enfrentei desafios de desempenho mesmo em um mundo relativamente pequeno, problemas com a dimensionamento da tela e a resolução do jogo, além de insatisfação contínua com o pixel art. Como programador, constantemente alterava o visual do jogo, mas nunca alcançava a satisfação desejada.

Criar jogos é dificil

Como desenvolvedor de software e programador web, reconheço que criar um jogo vai muito além do código. É um empreendimento multidisciplinar que abrange diversas áreas, incluindo arte e design visual, roteiro, game design, marketing, publicação, música e áudio, produção e gerenciamento de projeto, testes e controle de qualidade. Como um programador, será que posso afirmar que estou verdadeiramente desenvolvendo um jogo? Mostrar o jogo e apresentar todo o código que escrevi é apenas uma parte ínfima do processo. Há muito mais envolvido, muito mais do que eu poderia imaginar ou sonhar.

Um jogo é uma entidade complexa, que vai além de sistemas e mecânicas. Eu posso ser habilidoso como programador, uma vez que dediquei minha vida a essa área, mas e as outras habilidades necessárias? Será que consigo criar um design de jogo envolvente, elaborar quebra-cabeças criativos ou conceber uma história cativante que prenda o jogador? E depois de lançar o jogo, consigo dedicar tempo para corrigir bugs, lançar atualizações, manter a comunidade engajada e viva? A verdade é que um jogo é muito mais do que apenas programação.

Ao aprender uma nova ferramenta ou engine, é natural ficar fascinado com as possibilidades que se abrem, como se fosse um deus em seu próprio universo, ditando suas próprias regras. Mas no final das contas, isso não é suficiente para criar um jogo completo. Um jogo é o resultado do trabalho de uma equipe diversificada, composta por profissionais de diferentes áreas. Sempre tentei criar jogos sozinho, mas agora percebo que, dependendo do que você quer alcançar, talvez essa abordagem não faça tanto sentido.

O mundo precisa de mais jogos?

No final das contas, aprendi que criar um jogo vai muito além das minhas expectativas iniciais. Se o seu objetivo é publicar na Steam e outras plataformas, ou mesmo se você busca apenas ver as pessoas desfrutando do seu jogo, há uma série de aspectos além do desenvolvimento em si. A parte das redes sociais, a criação de conteúdo para o Instagram, a gravação de vídeos e trailers - tudo isso faz parte de um vasto universo chamado marketing, e é, na verdade, a maior parte do negócio. A frase tão simples e aparentemente trivial "marketing é a alma do negócio" começa a fazer todo sentido.

Navegando e explorando o itch.io, encontrei jogos incríveis, inovadores, em um nível que talvez nunca chegasse na vida inteira, mesmo se dedicasse 100% do meu tempo a isso. No entanto, muitos desses jogos passaram despercebidos, sem comentários ou feedback. A verdade é que estamos vivendo em uma era onde são lançados mais jogos do que nunca, e o mundo simplesmente não precisa de todos eles. As pessoas têm suas listas de jogos para jogar já lotadas, e a cada dia ela cresce mais. A realidade é que apenas alguns poucos têm a sorte de se destacar nas redes sociais ou contar com milhões em investimento em marketing. Para a grande maioria, ser ignorado é a norma.

Todo ano, são lançadas listas gigantes de jogos que são verdadeiras obras-primas, mas a verdade é que nunca teremos tempo para jogar todos eles. Apenas em 2023, foram lançados 12 mil jogos na Steam - é impossível dar atenção a todos, avaliá-los ou transmitir suas mensagens para o mundo. Além disso, há uma concorrência feroz pela atenção das pessoas - os smartphones estão implorando por nossa atenção, e muitos jogos online são projetados para viciar os jogadores em troca de skins e recompensas.

Então, será mesmo que o mundo precisa de mais jogos? É uma questão válida. Mas podemos olhar para isso de uma perspectiva mais positiva. Se ajustarmos nossas expectativas e motivações, podemos encontrar um novo sentido na criação de jogos. Podemos criar um jogo pelo simples prazer de criá-lo, como um hobby, onde ter alguns amigos jogando já é recompensa suficiente. Acredito que essa mudança de perspectiva pode resolver muitos dos dilemas que enfrentamos nesse mercado tão competitivo. Pelo menos para mim, tem sido uma jornada de autodescoberta e redefinição de propósitos.

Eu acredito que a resposta à pergunta "O mundo precisa do meu jogo?" seja um claro "Não". O mundo já está repleto de jogos inovadores e incríveis, muitos dos quais são ignorados diariamente, apesar de suas mecânicas geniais e ideias inovadoras concebidas por mentes brilhantes. No entanto, às vezes, eu preciso do meu jogo para mim mesmo - como um criador e artista, é uma forma própria de expressão. Não importa quantas pessoas irão jogá-lo; se forem apenas alguns amigos, desde que o façam com consideração e respeito pelo meu trabalho, isso já é o suficiente. Mesmo assim, terei criado algo valioso, extraído um significado da vida, indo além do mero consumo de arte para criar arte.

Apesar do tom inicial deste texto ser um tanto pessimista, o desfecho é bastante otimista. Basta alinhar o seu propósito.

Controle seus animos

Quase todo mundo, depois de aprender como criar jogos, sente uma enorme vontade de se aventurar nesse universo. Como programador, posso afirmar que é uma das atividades mais cativantes e empolgantes que alguém pode experimentar. A diversão está em pensar em ideias, elaborar histórias, construir mundos e explorar novas ferramentas e engines. É fácil se entusiasmar no início, mas é igualmente fácil se desanimar no meio do caminho e se sentir exausto no final.

Se você estiver se aventurando desenvolvendo um jogo como "Zero The Hero" e simultaneamente aprendendo uma engine como Godot, como fiz, pode acabar perdendo o entusiasmo, com duas demandas concorrentes de energia. Talvez seja mais sensato focar primeiro em aprender uma ferramenta e depois criar um jogo. Porém, é importante entender que o seu entusiasmo no início é como uma chama que arde intensamente, mas pode se esgotar com o tempo. Embora você possa começar cheio de energia, capaz de trabalhar por anos sem se cansar, essa empolgação não é eterna e ela engana.

Por isso, sugiro começar com um jogo simples e pequeno, mais simples até mesmo do que o Pac-Man. Defina claramente o escopo do jogo e siga em frente, evitando ideias inovadoras que possam atrasar o progresso. Se algo não estiver funcionando, é melhor falhar rapidamente do que passar meses desenvolvendo algo que não atende às suas expectativas.

Ao imaginar um jogo curto, esteja preparado para subestimar completamente o tempo necessário para desenvolvê-lo. Mesmo os projetos mais simples podem levar muito mais tempo do que o previsto. E quando lançar o jogo, esteja ciente de que é normal esperar que ele seja ignorado. Não se deixe abater por isso. Se algumas pessoas jogarem, ótimo! Mas concentre-se no prazer de ter criado algo, e não coloque todas as suas expectativas no sucesso externo, que pode ou não acontecer. Lembre-se: o entusiasmo pode diminuir com o tempo. E não se esqueça novamente de fazer jogos curtos.

Conclusão

Essa jornada que percorri foi intensa. Agora que concluí este post, reflito sobre uma mescla de experiências enriquecedoras, aprendizados que ultrapassaram minhas expectativas e profunda reflexão. No entanto, ao me perguntar por que considero que falhei, mesmo tendo lançado alguns dos jogos mencionados no texto e alcançado algumas pessoas, percebo que subestimei significativamente o desenvolvimento de jogos. Minhas expectativas foram além do razoável, consumindo um tempo valioso - noites, anos - que poderiam ter sido dedicados a outras atividades. A jornada foi repleta de desafios, frustrações e momentos difíceis.

No fim das contas, a falha é uma combinação de fatores complexos: falta de foco, escopo mal definido, expectativas desproporcionais e altos e baixos no ânimo. No entanto, acredito que agora estou mais apto a evitar tais falhas. Embora atualmente não esteja desenvolvendo jogos, sei que o retorno a essa paixão é uma possibilidade. E, sinceramente, apesar das dificuldades, considero que tudo valeu a pena. Sou grato por cada experiência vivida.

Espero um dia compartilhar um post sobre o sucesso pessoal que alcancei neste hobby que tanto amo: criar jogos. Talvez uma abordagem com expectativas mais realistas teria mudado o curso das coisas. Por enquanto, resta apenas aguardar.

Agradeço sinceramente por ter acompanhado esta longa jornada até o final.

Gostei da jornada, tenho 43 anos e só trabalhei com Web e plataformas mobile.

Agradeço pelo feedback! Tenho 30 anos e trabalho em tempo integral como desenvolvedor web, utilizando C# e .NET. Já tive experiências breves no desenvolvimento para dispositivos móveis, utilizando Xamarin para .NET. Uma observação importante é que, mesmo dominando a programação, o desenvolvimento web e de jogos são campos bastante distintos. Há um processo de adaptação, uma vez que o desenvolvimento de jogos envolve uma compreensão mais profunda de geometria analítica, física e matemática. O ciclo de vida do projeto é distinto e a organização do trabalho difere consideravelmente. É realmente interessante perceber essas nuances entre as áreas.

Achei bem legal o seu texto, estou com 39 e tenho uma história bem parecida, tbm comecei lá no RPGmaker2000. Foram muuuitas horas depois da escola empenhadas em criar histórias, assets e personagens. Anos depois mergulhei de cabeça no flash, programei alguns 'adsgames' da época e fiz muitos sites. Me formei em ciência da computação mas a maior parte da minha carreira trabalhei com design gráfico, me aventurei com computação gráfica, aprendi um pouco de Unity, Unreal e Construct. Hoje leciono para cursos de tecnologia e faço freelances como frontend. Mas até hj sinto aquela pontinha frustrada de não ter conseguido concluir um game próprio completo, acho que pelos mesmos motivos que os citados. Hoje com toda essa 'ajuda' da IA sinto que se perdeu um pouco o encanto de ver um personagem ganhando vida depois de muitos dias até meses de trabalho. Mas enfim, vida que segue e aguardaremos os próximos epsódios que a vida nos proporciona.

Abraço!

Muito bacana sua história! Hoje, tenho 30 anos e comecei com o RPG Maker VX, aquele com os personagens já cabeçudos. Mas, na época, muita gente ainda usava o RPG Maker XP. É uma ferramenta fantástica, porque foi com ela que aprendi lógica de programação e desenvolvi o gosto por criar coisas, escrever roteiros, definir o game design e fazer os sistemas, mesmo que fossem sistemas de eventos. Depois disso, fiz curso técnico e percebi que a mesma lógica que usei no RPG Maker era a lógica de programação usada em linguagens de programação comerciais, empregadas em sistemas reais. Isso me surpreendeu muito na época, e, desde então, nunca mais quis sair dessa área! Que bacana! Hoje você dá aulas, então. Quais cursos você ministra e em quais plataformas? Muito obrigado pelo feedback e grande abraço!

Sem dúvida um artigo que deixa um gosto amargo na boca, mas é um gosto que todo mundo que está entrando nessa onda de criação de jogos indie precisa sentir.
Muitos cursos querem vender que fazer, publicar e ter sucesso com um jogo indie é algo trivial e simples, com uma fórmula pronta, mas a verdade é dura, a verdade está nesse post.

Vivo uma situação muito parecida, já consegui publicar na Play Store depois de anos de trabalho, mas não obtive nenhum retorno nem perto do trabalho que eu realizei pelos meus jogos. Mas uma coisa me faz continuar a criar jogos e foi citado nesse post: auto expressão e arte.

"No entanto, às vezes, eu preciso do meu jogo para mim mesmo - como um criador e artista, é uma forma própria de expressão. Não importa quantas pessoas irão jogá-lo; se forem apenas alguns amigos, desde que o façam com consideração e respeito pelo meu trabalho, isso já é o suficiente."

Hoje eu desisti de buscar sucesso e aprendi a criar pra mim mesmo e para meus amigos, se algum sucesso florescer disso algum dia, vai ser consequência e não o objetivo final. Acho que o maior sucesso pra um desenvolvedor de jogos indie é chegar a maturidade e as conclusões que você alcançou e compartilhou nesse post.

Muito obrigado.

Seu comentário é excelente! Parece que estamos alinhados em nossa visão sobre o desenvolvimento de jogos. De fato, buscar sucesso em um hobby pode se tornar uma responsabilidade pesada. Se eu decidisse criar um jogo agora, certamente seria por pura expressão pessoal e artística. Meu foco seria criar algo simples, porém profundamente pessoal, transmitindo uma mensagem sem grandes expectativas ou pressões.

Rapaz, muito bom esse seu texto! Sou dev web há mais de 10 anos, e alguns meses atrás decidi aprender a fazer jogos como hobby, é realmente algo bem complexo e quebra um pouco dessa rotina de CRUD que a web traz. Me aventurei a fazer jogos em C e C++ para meu console desbloqueado.

No meu caso, eu dou mais importancia a qualidade do código e ao jogo funcionar corretamente, independente do jogo ser feito com sprites copiados da web ou serem apenas quadrados e círculos, mas tenho me divertido no processo.

Muito obrigado pelo feedback! Lembro-me de um dia durante o horário de almoço no trabalho em que perguntei a um colega se a programação vai além do CRUD. hahahaha. Realmente, sendo alguém que sempre trabalhou com web, raramente me vi envolvido em algo diferente do CRUD. E quando isso acontece, é extremamente gratificante. O desenvolvimento de jogos está muito distante do ciclo de request e response, CRUD e bancos de dados. É um mundo completamente diferente, especialmente quando se considera o tipo de jogo que está sendo criado. Pessoalmente, a criação de jogos é a forma mais divertida de programação que encontrei até agora. Tanto é que consigo me dedicar a isso como um hobby, sem ganhar nada em troca. Nunca tive coragem de me aventurar na programação de jogos em C e C++, pois são linguagens de baixo nível. Sempre preferi utilizar C# para Unity e GDScript, que se assemelha ao Python, para o Godot. Ambas são linguagens bem abstraídas e acessíveis para mim. Eu tambem sempre me diverti muito no processo de desenvolvimento.

Eu tenho 16 anos e sempre gostei deste universo da criação de jogos, agora sei mais um pouco do que enfrentar e como me organizar. Começei pelo Python e faz pouco tempo que migrei para o C# e ainda estou aprendendo a linguagem, mas espero poder evoluir nessa área. Mas mesmo se não conseguir, vou continuar estudando para entrar para alguma área semelhante. Obrigado pelo artigo, me ajudou bastante.

Eu trabalho atualmente com C# e .NET, e mexi muito na engine de criação de jogos Unity. Você já ouviu falar? Obrigado pelo feedback. Fico feliz em ter ajudado de alguma forma. Qualquer coisa, estou por aqui!

Cara que legal de ler relatos assim como o seu pois eu acho que essa é a realidade de muita gente: se empolga com a ideia e depois se frusta por nao conseguir fazer tudo o que pensa pois sempre vai criando ideias novas. Sem contar que as vezes a ferramenta escolhida tem limitacoes (por exemplo um jogo complexo só usando javascript). Isso tudo acontece nao só com o desenvolvimento de jogos, acontece com sites e softwates. Uma ideia que eu te daria talvez seria primeiro estudar bem uma ferramenta, exemplo godot, e aprender as limitacoes. Depois disso voce pensa em um jogo e escreve tudo sobre o jogo e depois de definir o projeto coloca uma regra pra nao alterar nenhuma ideia no meio do caminho. Talvez funcione. Outra ideia talvez sobre as diferentes areas de conhecimento seria encontrar pessoas com habilidades diferentes da sua, pra fazerem juntos o jogo.

Todos os conselhos que você deu são realmente muito bons e fazem bastante sentido. Primeiro estudar uma ferramenta, fazer um curso, criar alguns mini-jogos e só depois pensar em um jogo maior, com um escopo fechado, tentando não alterá-lo durante o processo, faz total sentido. Isso só não aconteceu comigo em outras áreas porque, como na web, eu sempre segui os requisitos e casos de uso que a empresa em que trabalho apresenta. Então, meu papel era pensar na parte técnica e em como programar, o que deixou o processo bem mais organizado e produtivo. Como a necessidade era atender a um cliente específico, o foco sempre foi maior, diferente de um jogo que vou criando e tendo ideias com um escopo aberto, sem pensar em qual público vai querer jogar e quais são suas necessidades.