O meu Pokémon único no mundo
julho de 2026
Resumo
A meio do jogo, numa janela dentro do próprio jogo, o jogador escreve umas poucas palavras. Com o jogo ainda a correr, uma IA transforma-as numa espécie de Pokémon inteiramente nova — ilustração, nome, tipo, estatísticas base e ataques — e regista-a como espécie de pleno direito. Encontra-la na erva alta, apanha-la, dás-lhe alcunha e crias-la como a qualquer outra.
Nada está escrito de antemão. A espécie que acaba no ficheiro de gravação nunca existiu antes e não existe em mais lado nenhum.
Parte do que os videojogos sempre ofereceram é fazer algo que seja teu. Na prática, isso significou escolher dentro de um conjunto fixo. Este projecto existe para testar se a IA generativa torna teu literalmente verdadeiro e, sobretudo, se algo literalmente teu é algo a que um jogador realmente se afeiçoa.
Percurso
Tudo começa ao falar com uma senhora idosa no Bosque de Petalburg. Descreves a criatura que tens em mente; essas palavras são transformadas numa espécie enquanto continuas a jogar; e uns minutos depois ela está à espera na erva alta — para ser encontrada, apanhada e usada a partir daí exactamente como qualquer outra coisa do jogo. Tudo é feito na hora: o nome, o tipo, as estatísticas base, o conjunto de ataques, os dois sprites de combate e o ícone da equipa.
Uma partida completa, do início ao fim, está registada aqui: My Own Pokémon Generation — demo02.
Porquê isto e não um gerador de criaturas
O problema interessante não é se uma IA consegue inventar um Pokémon. É se consegue inventar um que o jogo seja capaz de absorver sem se desfazer. Entregue a si mesmo, um gerador produz ou algo inutilizável — um monstro de 900 pontos de estatísticas que trivializa o jogo — ou algo desagradável: um sprite deformado que deixa de se ler como criatura.
Portanto o trabalho de design aqui não é a criatura. É o espaço dentro do qual ela é gerada: as faixas de estatísticas, as regras de legalidade dos ataques, as silhuetas que sobrevivem a um sprite de 64×64, o vocabulário com que o jogador sequer pode descrever. O modelo explora esse espaço. Não chega a defini-lo.
Este projecto é onde a minha filosofia de design deixa de ser um argumento e é posta à prova: definir os objectivos, valores, restrições e limites que dão forma a um espaço de design, deixar a geração acontecer lá dentro, e descobrir se o resultado se aguenta.
O enquadramento é a investigação
O LLM nunca escreve livremente. Preenche espaços de um esquema fixo, e cada saída é novamente verificada por um validador. As violações são devolvidas para regeneração juntamente com a regra concreta que foi quebrada.
As restrições de equilíbrio mantêm o jogo jogável. O total de estatísticas base é mantido numa faixa fixa — de 280 a 360, aproximadamente o nível de um inicial — com intervalos por estatística, e especificações fora da faixa são rejeitadas de imediato. Os ataques são extraídos automaticamente do código do pokeemerald e depois filtrados para o tipo da própria espécie ou Normal, removendo ataques de derrube imediato, efeitos de autodestruição e dano fixo ou excessivo. O conjunto resultante é verificado quanto à solidez: ataques ofensivos suficientes, pelo menos um ataque do mesmo tipo, no máximo um ataque de alta potência. A atribuição de níveis é feita de forma determinista pelo enquadramento, não pelo modelo. Tudo o resto está fixado — uma habilidade por tipo, taxa de captura, curva de crescimento, proporção de géneros, compatibilidade com MT — de modo que a variação individual fica confinada aos espaços do esquema e as execuções continuam comparáveis.
As restrições de aparência impedem que a saída se desfaça. Os planos corporais vêm de uma lista branca de silhuetas que sobrevivem a um sprite de 64×64: quadrúpede, roedor, ave, lagarto. A cor é escolhida de uma lista branca com nomes, e a cor corporal da Pokédex é derivada mecanicamente. As características limitam-se a uma a três frases curtas pré-definidas, com uma lista de bloqueio que rejeita traços humanos, sangue, armas e texto. O enquadramento compõe ele próprio a instrução final e acrescenta-lhe um epílogo fixo: uma só criatura, corpo inteiro, anatomia coerente, sem membros a mais, expressão serena.
Funciona, e pode ver-se a funcionar. Numa execução registada, o modelo propôs um total de estatísticas base de 380; o validador devolveu-o três vezes — 380, 360, 340 — até a especificação aterrar dentro da faixa, em 320.
Como funciona
O jogo em si não gera nada. O trabalho é feito por um processo Python residente no PC, e as duas metades falam através de uma caixa de correio em ficheiros que um script Lua no mGBA consulta a cada fotograma.
- Texto. Um modelo local (
qwen3:8b) transforma as palavras num registo de espécie validado. - Imagem. Um modelo de imagem desenha uma ilustração de referência e, a partir dela, três vistas coerentes entre si: o sprite frontal de combate, o traseiro e o ícone da equipa.
- Conversão. A arte é quantizada para uma paleta comum de 15 cores e convertida para o formato de sprites do pokeemerald.
- Codificação. Os sprites passam a binários de GBA: tiles de 4bpp e 1bpp, paletas
gbapale compressão LZ77 compatível com a BIOS. - Injecção. Os binários são escritos numa região reservada da ROM.
Escrever na cassete em tempo de execução significa que a instância em curso apanha a nova espécie sem reiniciar, e que a mesma sequência de bytes vai para o disco, pelo que a alteração sobrevive a um recarregamento.
O que aparece é permanente e irreversível. Anda pelo mundo: se fugires ou perderes, fica lá. Se o derrubares, desaparece para sempre.
Implementação
O gerador, o enquadramento de restrições, os codificadores de GBA e a alteração do lado do jogo estão publicados na íntegra: github.com/takafumihoriuchi/my-own-pokemon-generation.
Posfácio — sobre o apego
O protótipo resolve uma questão técnica. Atrás dela está aquela com que realmente me importo: um Pokémon gerado para ti, que não existe em mais lado nenhum, acaba por significar mais do que um que veio com o jogo?
De jogar a minha própria versão — uma amostra de um, e não vale a pena lê-la como mais do que isso — parecem sobressair duas condições que governam a resposta.
- Quanto de ti entrou nele. Escrever seis palavras é participar, mas de forma fina: o que volta parece entregue mais do que feito. O que parece contar não é o volume do contributo, mas o seu carácter — esforço, iteração, espaço para rever, e alguma responsabilidade pelo modo como ficou.
- Qualidade. O apego parece precisar que aquilo que foi gerado ultrapasse um limiar. Abaixo dele, o facto de algo ser único e teu não sustenta o sentimento sozinho.
Um caso de fora do jogo fala das duas. A trabalhar à mão com o ChatGPT, indo e voltando até ficar satisfeito, desenhei uma espécie minha — Hanagitsune. Tenho-lhe apego. Tinha-a feito em vez de a encomendar, e o que saiu ultrapassava a fasquia da qualidade.
Ambas as condições são acessíveis. Um processo de criação mais fundo — escolher, rever, recusar — mexe na primeira; melhores modelos e um enquadramento de instruções desenhado com mais cuidado mexem na segunda. É para aí que isto segue.
Portanto o resultado do protótipo não é um veredicto sobre a pergunta. É a pergunta tornada mensurável: duas variáveis que agora podem ser movidas de propósito e observadas.
Construído sobre a descompilação pret/pokeemerald como investigação pessoal. Nenhuma ROM, alteração de ROM ou recurso do jogo é distribuído, e todos os sprites aqui apresentados são arte original gerada por IA. Pokémon é uma marca registada da Nintendo, da Creatures Inc. e da GAME FREAK Inc.; este projecto não tem qualquer ligação a essas empresas nem o seu aval.