Programo desde os meus 12 anos. Comecei com Python, apenas escrevendo programas simples de terminal. Quando descobri o Pygame, meus olhos se abriram para o mundo gráfico e, como quase todo garoto que descobre como pintar pixels na tela, decidi que meu sonho era desenvolver jogos. O único detalhe técnico que atrapalhava esse plano brilhante é que eu não tinha um computador. Durante um bom tempo, escrevi todo o meu código diretamente na tela de um celular.

Quando finalmente consegui um computador de verdade, fui correndo experimentar as famosas game engines. Comecei pela Godot. Em algum momento dessa época, bateu uma insegurança estranha: eu achava que o meu conhecimento medíocre de programação não seria suficiente para construir um jogo inteiro do zero. Fui atrás de ferramentas visuais que fizessem parte do trabalho pesado por mim e acabei esbarrando no GDevelop. Só que essa aventura visual me ensinou uma lição valiosa: eu percebi que prefiro mil vezes olhar para linhas de código coloridas do que ficar arrastando lógicas pré-prontas. Com essa certeza, dei meia-volta e retornei para a Godot.

Gostei bastante da Godot por um longo período, mas as coisas começaram a desandar. A sintaxe e a interface me incomodavam cada vez mais. Foi aí que eu cometi minha primeira grande traição: larguei a Godot de vez e fugi com o LÖVE2D.

Eu realmente amei o LÖVE2D. A linguagem Lua me conquistou de um jeito absurdo. Mas foi enquanto usava o framework que uma verdade desconfortável começou a aparecer. Eu percebi que não gostava tanto assim de fazer jogos. O que eu realmente gostava era de construir as engrenagens que ficavam por baixo deles. Eu queria escrever o meu próprio código, criar as fundações do zero e desenhar os sistemas que fazem tudo funcionar.

Em outras palavras: eu achava que queria fazer jogos, mas aparentemente eu queria mesmo era escrever game engines. (O que explica perfeitamente por que eu nunca fui particularmente criativo para inventar histórias ou desenhar fases. Foi apenas uma pequena falha de planejamento na minha carreira de gamedev).

Com essa epifania, me afastei um pouco e comecei a usar Go, que por muito tempo foi a minha linguagem de estimação para coisas de “sistemas” (tirando Lua, claro). Até que eu esbarrei no Odin.

O Go era ótimo, mas eu começava a me sentir um pouco preso nas suas convenções. Odin me deu a sensação de liberdade que eu estava procurando. As bibliotecas nativas eram incríveis e a proximidade da linguagem com C tornava bizarramente simples fazer integrações com bibliotecas C de terceiros. Ironicamente, eu passei boa parte da minha vida fugindo de C e C++ como o diabo foge da cruz, e ali estava eu, abraçando a vizinhança.

Com o Odin como minha nova ferramenta favorita, comecei a desenvolver a Sweet Engine, o meu próprio motor de jogos 2D.

O problema de construir motores é que você começa a olhar cada vez mais fundo na toca do coelho. Pouco depois de iniciar a engine, minha curiosidade me arrastou para outro buraco completamente diferente: o design e o desenvolvimento de linguagens de programação e arquiteturas complexas. Acabei devorando a sagrada bíblia da área, o clássico Design Patterns da famosa Gang of Four (GoF), além de ler obras-primas como os excelentes Crafting Interpreters (do Robert Nystrom) e Writing a Compiler in Go (do Thorsten Ball). Fiquei tão obcecado que cheguei a começar a escrever a minha própria linguagem, a Dew. Não fui muito longe com ela, mas o estrago já estava feito.

Olhando para trás, minha trajetória não tem nada de um plano mestre bem executado. Parece muito mais uma sequência de paixões intensas por linguagens, engines e ferramentas que, no fim das contas, acabam apenas me servindo de ponte para o próximo buraco de coelho.

E, considerando como essas coisas funcionam, duvido muito que eu já tenha chegado no fundo.