Criar um jogo com IA: um clone de Dune 2000 feito pelo Codex

De 6 a 9 de setembro de 2026, pus o Codex e o GPT-6 Astra a construir um clone jogável de Dune 2000 em HTML, CSS e JavaScript. Quarenta e seis turnos depois, o protótipo passa em 122 testes e fala francês, pelo equivalente a 196 $ à tarifa da API.

Criar um jogo com IA: um clone de Dune 2000 feito pelo Codex
Resposta rápida

O Codex, com o GPT-6 Astra, criou um clone jogável de Dune 2000 em HTML, CSS e JavaScript em 46 turnos, ou seja, 11 h 16 min de trabalho do agente. O jogo tem sprites gerados, 34 avisos de voz em francês e 122 testes, à custa de 54 mensagens e 12 capturas de ecrã para corrigir os seus erros. A sessão fica em cerca de 196 $ à tarifa da API, aqui coberta por uma subscrição do ChatGPT.

No Google, a resposta gerada para «criar jogo com IA» propõe pôr o ChatGPT ou o Claude a escrever um minijogo em HTML. Quis ver o que dá um projeto mais pesado, um clone de Dune 2000 entregue durante três dias a um agente de código.

Dune 2000 é o jogo de estratégia em tempo real desenvolvido pela Westwood Studios e lançado em 1998, um remake de Dune II. O agente é a aplicação de desktop do Codex, com o modelo GPT-6 Astra e o esforço de raciocínio definido como xhigh. Os números que se seguem vêm do registo da sessão, um ficheiro JSONL de 1,3 GB, e dos testes do projeto relançados a 14 de setembro de 2026.

O protótipo final pode ser lançado abaixo, no teu navegador. Os seus 51,6 MB só são carregados quando clicas em «Experimentar».

Clone de Dune 2000 : le prototype de Codex et GPT-6 Astra

Le prototype tel que Codex l'a laissé le 9 septembre 2026 : une escarmouche Atréides contre Harkonnen, à la souris et au clavier. Rien ne se charge avant votre clic.

Protocolo

Construit avec l'application Codex et le modèle gpt-6-astra en effort xhigh, du 6 au 9 septembre 2026 : 46 tours, 54 messages, 11 h 16 min de travail de l'agent. Compilé par Vite sans modifier le code du jeu, chemins des ressources rendus relatifs pour l'hébergement.

ACodex · GPT-6 Astragpt-6-astra (xhigh)

O projeto corre numa sandbox isolada (iframe sandbox e CSP): sem acesso ao site, aos cookies nem à sua sessão. Nada é carregado antes do seu clique.

Abrir à parte
Editor
OpenAI
Modelo
gpt-6-astra (xhigh)
Ferramenta
Codex, application de bureau
Data
2026-09-09
Duração
11 h 16 min de travail sur 46 tours
Tokens de entrada
120 107 006, dont 116 244 736 lus en cache
Tokens de saída
822 700, dont 264 688 de raisonnement
Custo
abonnement ChatGPT (≈ 196 $ au tarif API)
Tamanho do projeto
51,6 Mo, 393 fichiers
Notas
Clic gauche pour sélectionner, clic droit pour donner un ordre, A pour attaquer en se déplaçant, Espace pour la pause, ? pour l'aide. 122 tests Node au 14 septembre 2026.

O prompt inicial

A primeira mensagem tinha 66 palavras. Aqui fica, traduzida do francês e apenas com as gralhas corrigidas.

Quero que cries um clone de Dune 2000 em HTML, CSS e JavaScript, usando o projeto OpenRA como ajuda. Tens liberdade para gerar os sprites que quiseres e de que precisares, incluindo as respetivas animações. Quero um protótipo jogável de uma partida 1v1, Atreides contra Harkonnen. O projeto OpenRA está na pasta /Projets/OpenRA-bleed.

O OpenRA é um motor open source de jogos de estratégia em tempo real, escrito em C#, que faz correr Dune 2000 e os primeiros Command & Conquer. O Astra não portou o código. Foi lá buscar as regras do mod d2k, custos, economia e cadeias de pré-requisitos, e depois escreveu uma simulação em JavaScript independente da renderização, testável no Node e exibida com o Phaser 3.90.

Não dei nenhuma indicação sobre como organizar o trabalho. O Astra leu por iniciativa própria os skills do plugin Game Studio publicado pela OpenAI (web-game-foundations, phaser-2d-game, sprite-pipeline, game-ui-frontend, game-playtest) e o skill imagegen, que gera as imagens no Codex. São ficheiros SKILL.md que o agente carrega antes de agir, segundo o princípio explicado no nosso guia dos Agent Skills.

A sessão correu sem sandbox e sem pedidos de aprovação (danger-full-access, aprovações em never). O Astra podia abrir o Chrome, instalar pacotes npm e escrever em qualquer parte do disco, sem nenhuma das salvaguardas descritas no nosso artigo sobre o que a sandbox do Codex bloqueia.

Trinta e um minutos para uma primeira partida

O primeiro turno durou 31 min 30 s, com 25 chamadas de ferramentas. O Astra gerou os sprites dos edifícios, da ceifeira, dos tanques e da infantaria, e depois programou a recolha de especiaria, a energia, as filas de produção, o combate e uma IA dos Harkonnen que ataca em vagas. O nevoeiro de guerra, o minimapa, a seleção por retângulo e o movimento ofensivo na tecla A já estavam presentes neste turno.

Terminou com onze testes de simulação, ensaios no Chrome controlados pelo Playwright e uma partida automatizada que vence no nível de dificuldade «Découverte» (Descoberta). O turno custou o equivalente a 5,96 $ à tarifa da API.

A partida corria, mas ainda não se parecia com Dune 2000. A minha segunda mensagem enumerava o que faltava: animações, canhões de tanque que rodam, mais texturas de solo, unidades próprias dos Harkonnen e uma construção mais rápida. Em 32 minutos, o Astra separou chassis e torres para apontar a 360°, desenhou um exército Harkonnen preto e vermelho, com quad e Devastator de dois canhões, e pôs cada edifício a erguer-se em 4 a 6 segundos, com fundações, andaimes e grua. O projeto tinha então 17 testes.

Quarenta e seis turnos em três dias

Um turno começa com a minha mensagem e acaba com a resposta do Astra. Pelo meio, o agente encadeia sozinho comandos, gerações de imagens, capturas do navegador e testes. Enviei 54 mensagens, anexei 12 capturas de ecrã, muitas vezes anotadas diretamente na página do jogo, no navegador do Codex, e interrompi 4 turnos.

Dia Turnos Trabalho do agente Principais pedidos Testes no fim do dia Custo à tarifa da API
6 de setembro 20 5 h 01 animações, 157 tiles de terreno, oito direções para a infantaria, vermes da areia, cursores, primeiros sons do ElevenLabs 56 83,86 $
8 de setembro 23 5 h 51 interface do jogo original, vozes em francês, Carryall, seis edifícios e as respetivas unidades, texturas, elementos decorativos, placas de betão 119 100,53 $
9 de setembro 3 24 min placas de uma célula colocadas ao arrastar 122 11,62 $

O Astra acrescentou testes a cada funcionalidade sem que eu pedisse um único. O contador passou de 11 para 17, 24, 29, 33, 41, 44, 51, 56, 67, 69, 75, 85, 90, 106, 111, 119 e depois 122 a 9 de setembro. Relançados no dia 14, os 122 testes Node passam em 2,1 segundos. O projeto contém também 24 cenários de navegador, um por cada grande funcionalidade, e 16 scripts que preparam as imagens e os sons.

Onde o Astra se enganou

Uma correção que estraga os movimentos

No turno 12, assinalei tanques cujos sprites se sobrepunham. O Astra mediu veículos que chegavam a 30 píxeis uns dos outros quando o chassis mede mais de 60, e depois deu a cada um uma área de colisão à sua medida. Um ataque de doze veículos Harkonnen, com zoom a 165 %, validou a correção, e os 51 testes passavam.

Cinco turnos depois, as unidades ficavam demasiado afastadas umas das outras e algumas recusavam-se a passar entre dois edifícios bem afastados um do outro. O Astra encontrou duas causas, uma delas a sua própria correção. As colisões cobriam toda a diagonal dos sprites, e a grelha de navegação escondia passagens. A reparação levou 24 min 54 s e 32 chamadas de ferramentas, com uma grelha de 16 píxeis, uma área de ocupação no solo para cada veículo e unidades que se afastam para deixar passar. O teste do turno 12 media a sobreposição dos chassis e nada mais, por isso não podia detetar esta regressão.

O que se perde com uma interrupção

A 8 de setembro, uma mesma mensagem pedia ceifeiras diferentes para cada Casa, um Carryall que as levasse de volta à refinaria, refinarias que só descarregassem uma ceifeira de cada vez, e seis edifícios do jogo original com as respetivas unidades. Ao fim de seis minutos, interrompi esse turno para enviar uma captura da ceifeira original. O Astra redesenhou a ceifeira em oito orientações, e mais nada.

Na mensagem seguinte, tive de escrever «Não fizeste», seguido do Carryall e dos cais esquecidos. A resposta do Astra cabe numa frase, «Tens razão, terminei os sprites sem acrescentar a logística pedida». No mesmo dia, uma anotação sobre pequenas montanhas reaproveitadas como pedras na areia perdeu-se da mesma maneira, num turno interrompido, e voltei a copiá-la três turnos depois. Já a logística levou 35 minutos e 40 chamadas de ferramentas, e o projeto passou para 85 testes.

Imagens para refazer

Vários lotes de imagens tiveram de ser refeitos. No turno 36, as miniaturas dos seis novos edifícios eram todas parecidas e não tinham o aspeto do captador de vento desenhado dois dias antes. Refazê-las uma a uma, ao mesmo tempo que se integravam as novas unidades, levou 47 min 54 s e 67 chamadas de ferramentas, por 16,16 $ à tarifa da API, o turno mais caro da sessão.

O Astra também detetava defeitos antes de mim. As suas primeiras folhas de sprites de infantaria em oito direções mostravam vistas demasiado parecidas entre si, e ele refê-las antes de as integrar. No turno 41, duas gerações de texturas, a rocha e o cascalho, voltaram sem imagem, e ele relançou-as.

Quando o Astra foi verificar o jogo original

Várias vezes, o Astra foi ler o manual de Dune 2000 antes de aplicar um pedido. Eu queria saber se o jogo original associava um Carryall a cada refinaria. O Astra respondeu que não, citando as páginas 16, 17 e 45 do manual de 1998. Cada refinaria vem com uma ceifeira, trazida por um Carryall, e os Carryalls de transporte constroem-se à parte, na fábrica de alta tecnologia. Reli essas páginas, e dizem mesmo isso.

Na noite de 8 de setembro, pedi que fosse possível construir na areia, sobre placas de betão. O Astra começou por lembrar que o jogo original reserva as construções à rocha, onde as placas protegem os edifícios do desgaste, e depois aplicou a minha variante. Um edifício colocado em rocha nua começa danificado, um local de construção totalmente coberto de betão dá-lhe todos os pontos de vida, e o estaleiro inicial assenta em nove placas. Os vermes da areia contornam este betão, mesmo colocado na areia, e no dia seguinte reduzi a placa a uma célula, colocada com um clique ou ao arrastar, a 5 créditos por célula.

Efeitos sonoros e vozes gerados com o ElevenLabs

Os primeiros sons eram sintetizados pelo código. No turno 13, pedi-lhe que passasse a usar o ElevenLabs através de um skill. O Astra instalou o skill oficial sound-effects do ElevenLabs e preparou um ficheiro .env.local, excluído do Git, para a chave. A primeira chave foi recusada (401 invalid_api_key). A segunda, válida durante 24 horas, produziu 20 efeitos com o modelo eleven_text_to_sound_v2, convertidos para WAV mono pelo FFmpeg.

A 8 de setembro chegaram 34 avisos de voz em francês, de «Alerte ! Notre base est attaquée» (Alerta! A nossa base está a ser atacada) a «Commandant, votre base est opérationnelle» (Comandante, a sua base está operacional). Como a voz francesa da biblioteca do ElevenLabs está reservada aos planos pagos, o Astra escolheu uma voz multilingue padrão com eleven_multilingual_v2 e depois pôs o Scribe v2 a transcrever os 34 ficheiros para verificar cada frase. Os avisos passam por uma fila de prioridade, baixam o volume da música e aparecem em legendas. Seguiram-se doze efeitos sonoros de veículos no turno 39.

A música não foi gerada. Command of the Scorched Plain é um ficheiro MP3 que eu forneci, tocado em loop com o seu próprio volume. Todos os sons são servidos a partir do projeto, sem chamadas à API durante a partida, e a expiração da chave não afeta a sua reprodução.

Tempo, tokens e custo

Cada resposta do modelo deixa uma linha token_usage_record no registo da sessão, guardado em ~/.codex/sessions/. Este comando calcula o total sem carregar o registo inteiro na memória:

bash
jq -c 'select(.type == "token_usage_record") | .payload.usage' \
  ~/.codex/sessions/2026/09/06/rollout-2026-09-06T13-20-25-01a07672-bb68-7500-b23a-db1fc7ccbe3e.jsonl \
  | jq -s '{reponses: length, entree: (map(.input_tokens) | add), cache: (map(.cached_input_tokens) | add), sortie: (map(.output_tokens) | add)}'
json
{
  "reponses": 856,
  "entree": 120107006,
  "cache": 116244736,
  "sortie": 822700
}
Medição Clone de Dune 2000
Período de 6 de setembro, às 13h23, a 9 de setembro, às 11h26 (hora de Paris)
Trabalho do agente 11 h 16 min em 46 turnos
Respostas do modelo 856
Chamadas de ferramentas 800
Compactações do contexto 15
Tokens de entrada 120 107 006, dos quais 116 244 736 lidos em cache (96,8 %)
Tokens de saída 822 700, dos quais 264 688 de raciocínio
Custo à tarifa da API 196,00 $

O cálculo segue a tabela de preços do GPT-6 Astra publicada no OpenRouter e consultada a 14 de setembro de 2026, ou seja, 10 $ por milhão de tokens de entrada, 1 $ na leitura de cache e 50 $ na saída, abaixo dos 272 000 tokens de contexto. A janela do Codex estava limitada a 258 400 tokens, pelo que todos os pedidos ficam dentro desse escalão. Isso dá 38,62 $ de entrada sem cache, 116,24 $ de cache e 41,14 $ de saída.

Não paguei nada por consumo. O Codex corria com a minha subscrição do ChatGPT, que desconta o uso numa quota, e este montante serve de referência. Sem cache, só os tokens de entrada teriam custado 1 201 $, quase oito vezes os 154,87 $ contabilizados. Uma correção do cursor, no turno 4, levou 1 min 24 s e custou 0,86 $. Para situar o GPT-6 Astra face ao Claude Fable 5.1 num exercício mais curto, vê o nosso comparativo em three.js.

O que contém a pasta

O projeto final tem 41 ficheiros de código-fonte (3 261 linhas, 332 KB), 956 linhas de testes e 2 172 linhas de scripts. A pasta public/ serve 227 imagens PNG, 57 WebP, 32 ficheiros WAV e 35 MP3, e onze ficheiros JSON guardam os prompts das imagens geradas. O protótipo não usa nenhum ficheiro de Dune 2000: os sprites, as ilustrações e os sons foram produzidos para ele.

Trata-se de uma escaramuça a solo contra a IA, sem campanha, sem multijogador e sem possibilidade de guardar o jogo. As regras do OpenRA foram adaptadas quando eu o pedia, como o betão na areia ou a produção em paralelo, em que duas fábricas reduzem para metade o tempo de fabrico de um tanque e três reduzem-no para um terço. O mesmo agente construiu depois um RPG numa noite com um método completamente diferente, descrito em criar um jogo com o ChatGPT, um RPG ao estilo de EarthBound.

A reter

  • O Codex e o GPT-6 Astra produziram um jogo de estratégia em tempo real jogável em 46 turnos e 11 h 16 de trabalho do agente, com 54 mensagens minhas para corrigir o rumo.
  • O OpenRA forneceu as regras iniciais, e o manual de 1998 resolveu a questão do Carryall e a das placas de betão.
  • Uma interrupção apaga os pedidos do turno em curso. Por duas vezes, foi preciso reenviá-los.
  • Os testes passaram de 11 para 122 sem que eu os pedisse, e nenhum antecipou a regressão de movimento do turno 17.
  • É a cache que decide a fatura. 96,8 % dos tokens de entrada foram relidos a 1 $ por milhão em vez de 10 $, num total de 196 $ à tarifa da API.

Erros frequentes

Interromper um turno sem reenviar o pedido Os pedidos de um turno interrompido não são retomados. O Carryall e uma anotação sobre os elementos decorativos perderam-se assim. Copia de novo o pedido na mensagem que se segue à interrupção.
Validar uma correção de colisões sem testar a passagem Alargar as colisões dos tanques bloqueou a infantaria entre dois edifícios. Manda escrever um cenário que atravesse uma passagem estreita, como npm run test:pathfinding aqui, antes de validar.
Colar uma chave de API na conversa Fica em texto simples no registo ~/.codex/sessions/…/rollout-….jsonl. Coloca-a no .env.local, excluído do Git, e dá ao agente apenas o nome da variável.
Aceitar um lote de imagens geradas sem referência de estilo Seis miniaturas de edifícios produzidas de uma vez eram parecidas entre si e já não seguiam o estilo das primeiras. Dá como modelo uma imagem já validada, aqui o captador de vento.
Deixar o agente sem sandbox num projeto real Esta sessão corria em danger-full-access, sem aprovações. Reserva esta configuração para uma pasta descartável, sem nenhuma chave de produção ao alcance.

CodexGPT-6 AstraJavaScriptJeu vidéoPhaser

Damien Flandrin Programador web desde 2010, criador da Gekkode e do Email Impact. Cada artigo é testado num projeto real antes de ser publicado. Contacto
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.