Stworzyć grę z AI: grywalny klon Dune 2000 zbudowany przez Codex

Od 6 do 9 września 2026 Codex z GPT-6 Astra budował dla mnie grywalny klon Dune 2000 w HTML, CSS i JavaScript. Po czterdziestu sześciu turach prototyp przechodzi 122 testy i mówi po francusku, a całość to równowartość 196 $ według cennika API.

Stworzyć grę z AI: grywalny klon Dune 2000 zbudowany przez Codex
Szybka odpowiedź

Codex z modelem GPT-6 Astra stworzył grywalny klon Dune 2000 w HTML, CSS i JavaScript w 46 turach, czyli w 11 h 16 min pracy agenta. Gra ma wygenerowane sprite'y, 34 komunikaty głosowe po francusku i 122 testy, a poprawienie błędów agenta wymagało 54 wiadomości i 12 zrzutów ekranu. Sesja kosztowałaby około 196 $ według cennika API, ale tutaj pokrył ją abonament ChatGPT.

W Google wygenerowana odpowiedź na zapytanie „stworzyć grę z AI” proponuje, żeby minigrę w HTML napisał ChatGPT albo Claude. Chciałem sprawdzić, co daje cięższy projekt: klon Dune 2000 powierzony na trzy dni agentowi kodu.

Dune 2000 to strategia czasu rzeczywistego stworzona przez Westwood Studios i wydana w 1998 roku jako remake Dune II. Agentem jest aplikacja desktopowa Codex z modelem GPT-6 Astra ustawionym na wysiłek rozumowania xhigh. Podane dalej liczby pochodzą z dziennika sesji, pliku JSONL o rozmiarze 1,3 GB, oraz z testów projektu uruchomionych ponownie 14 września 2026.

Końcowy prototyp uruchomisz poniżej, w swojej przeglądarce. Waży 51,6 MB i ładuje się dopiero po kliknięciu „Wypróbuj”.

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.

Protokół

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)

Projekt działa w odizolowanym sandboksie (iframe sandbox i CSP): bez dostępu do witryny, ciasteczek ani Twojej sesji. Nic nie ładuje się przed kliknięciem.

Otwórz osobno
Dostawca
OpenAI
Model
gpt-6-astra (xhigh)
Narzędzie
Codex, application de bureau
Data
2026-09-09
Czas trwania
11 h 16 min de travail sur 46 tours
Tokeny wejściowe
120 107 006, dont 116 244 736 lus en cache
Tokeny wyjściowe
822 700, dont 264 688 de raisonnement
Koszt
abonnement ChatGPT (≈ 196 $ au tarif API)
Rozmiar projektu
51,6 Mo, 393 fichiers
Uwagi
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.

Prompt startowy

Pierwsza wiadomość liczyła 66 słów. Oto ona w przekładzie z francuskiego. W oryginale poprawiłem tylko literówki.

Stwórz klon Dune 2000 w HTML, CSS i JavaScript, opierając się pomocniczo na projekcie OpenRA. Możesz generować wszystkie sprite’y, jakie chcesz i jakich potrzebujesz, razem z ich animacjami. Chcę grywalny prototyp partii 1v1, Atrydzi kontra Harkonnenowie. Projekt OpenRA znajduje się w folderze /Projets/OpenRA-bleed.

OpenRA to wolny silnik gier strategicznych czasu rzeczywistego napisany w C#, na którym działają Dune 2000 i pierwsze części Command & Conquer. Astra nie przeniosła jego kodu. Wzięła z niego reguły moda d2k, czyli koszty, ekonomię i łańcuchy wymagań, a potem napisała w JavaScript symulację niezależną od renderowania, testowalną w Node i wyświetlaną za pomocą frameworka Phaser 3.90.

Nie dałem żadnych wskazówek co do organizacji pracy. Astra sama przeczytała skille pluginu Game Studio opublikowanego przez OpenAI (web-game-foundations, phaser-2d-game, sprite-pipeline, game-ui-frontend, game-playtest) oraz skill imagegen, który generuje obrazy w aplikacji Codex. To pliki SKILL.md, które agent wczytuje przed działaniem, na zasadzie opisanej w naszym przewodniku po Agent Skills.

Sesja działała bez sandboksa i bez próśb o zatwierdzenie (danger-full-access, zatwierdzenia ustawione na never). Astra mogła uruchamiać Chrome, instalować pakiety npm i zapisywać pliki w dowolnym miejscu na dysku, bez żadnego z zabezpieczeń opisanych w naszym artykule o tym, co blokuje sandbox agenta Codex.

Trzydzieści jeden minut do pierwszej rozgrywki

Pierwsza tura trwała 31 min 30 s i objęła 25 wywołań narzędzi. Astra wygenerowała sprite’y budynków, żniwiarki, czołgów i piechoty, a potem zakodowała zbieranie przyprawy, energię, kolejki produkcji, walkę i komputerowych Harkonnenów atakujących falami. Mgła wojny, minimapa, zaznaczanie ramką i ruch z atakiem pod klawiszem A były gotowe już w tej turze.

Astra zakończyła turę jedenastoma testami symulacji, próbami w Chrome sterowanym przez Playwright i automatyczną partią, która wygrywa na poziomie trudności „Découverte” (Odkrywanie). Tura kosztowała równowartość 5,96 $ według cennika API.

Gra działała, ale jeszcze nie przypominała Dune 2000. Moja druga wiadomość wymieniała, czego brakuje: animacji, obracających się luf czołgów, większej liczby tekstur podłoża, jednostek właściwych tylko Harkonnenom i szybszej budowy. W 32 minuty Astra oddzieliła podwozia od wież, żeby czołgi celowały w pełnym zakresie 360°, narysowała czarno-czerwoną armię Harkonnenów z quadem i dwulufowym Devastatorem, a każdy budynek wznosi się teraz w czasie od 4 do 6 sekund, z fundamentami, rusztowaniem i dźwigiem. Projekt liczył wtedy 17 testów.

Czterdzieści sześć tur w trzy dni

Tura zaczyna się od mojej wiadomości i kończy odpowiedzią Astry. Pomiędzy nimi agent sam wydaje polecenia, generuje obrazy, robi zrzuty przeglądarki i uruchamia testy. Wysłałem 54 wiadomości, dołączyłem 12 zrzutów ekranu, często z adnotacjami naniesionymi bezpośrednio na stronę gry w przeglądarce aplikacji Codex, i przerwałem 4 tury.

Dzień Tury Praca agenta Główne prośby Testy na koniec dnia Koszt według cennika API
6 września 20 5 h 01 min animacje, 157 kafelków terenu, osiem kierunków dla piechoty, czerwie pustyni, kursory, pierwsze dźwięki ElevenLabs 56 83,86 $
8 września 23 5 h 51 min interfejs oryginalnej gry, francuskie głosy, Carryall, sześć budynków i ich jednostki, tekstury, dekoracje, płyty betonowe 119 100,53 $
9 września 3 24 min płyty na jedno pole, układane przeciąganiem 122 11,62 $

Astra dodawała testy do każdej funkcji, choć nie prosiłem ani o jeden. Licznik rósł z 11 do 17, 24, 29, 33, 41, 44, 51, 56, 67, 69, 75, 85, 90, 106, 111, 119, a 9 września doszedł do 122. Uruchomione ponownie 14 września, wszystkie 122 testy w Node przechodzą w 2,1 sekundy. Projekt zawiera też 24 scenariusze przeglądarkowe, po jednym na każdą większą funkcję, oraz 16 skryptów przygotowujących obrazy i dźwięki.

Gdzie Astra się pomyliła

Poprawka, która psuje ruch jednostek

W 12. turze zgłosiłem czołgi, których sprite’y na siebie zachodziły. Astra zmierzyła, że pojazdy zbliżają się do siebie na 30 pikseli, choć ich podwozie ma ponad 60, i dała każdemu obszar kolizji odpowiadający jego rozmiarowi. Atak dwunastu pojazdów Harkonnenów w powiększeniu 165% potwierdził poprawkę, a 51 testów przechodziło bez błędów.

Pięć tur później jednostki trzymały zbyt duże odstępy, a niektóre nie chciały przejść między dwoma budynkami, choć miejsca było aż nadto. Astra znalazła dwie przyczyny, w tym własną poprawkę. Kolizje obejmowały całą przekątną sprite’ów, a siatka nawigacyjna zasłaniała przejścia. Naprawa zajęła 24 min 54 s i 32 wywołania narzędzi: siatka z polami po 16 pikseli, osobny obrys na podłożu dla każdego pojazdu, a do tego jednostki, które usuwają się na bok, żeby przepuścić inne. Test z 12. tury mierzył wyłącznie nachodzenie podwozi na siebie, więc nie mógł wychwycić tej regresji.

Co ginie po przerwaniu tury

W jednej wiadomości z 8 września prosiłem o osobne żniwiarki dla każdego rodu, Carryall, który odwozi je do rafinerii, rafinerie rozładowujące tylko jedną żniwiarkę naraz oraz sześć budynków z oryginalnej gry wraz z ich jednostkami. Po sześciu minutach przerwałem tę turę, żeby wysłać zrzut oryginalnej żniwiarki. Astra przerysowała żniwiarkę w ośmiu orientacjach i nic poza tym.

W kolejnej wiadomości musiałem napisać „Nie zrobiłaś”, a dalej wypisać Carryall i zapomniane doki. Odpowiedź Astry zmieściła się w jednym zdaniu: „Masz rację, skończyłam sprite’y, nie dodając logistyki, o którą prosiłeś”. Tego samego dnia, razem z inną przerwaną turą, w ten sam sposób przepadła adnotacja o małych górach użytych ponownie jako kamienie na piasku. Skopiowałem ją jeszcze raz trzy tury później. Sama logistyka zajęła 35 minut i 40 wywołań narzędzi, a projekt doszedł do 85 testów.

Obrazy do przerobienia

Kilka partii obrazów trzeba było zrobić od nowa. W 36. turze wszystkie ikony sześciu nowych budynków wyglądały podobnie i nie miały stylu łapacza wiatru narysowanego dwa dni wcześniej. Przerobienie ich jedna po drugiej, razem z włączaniem nowych jednostek do gry, zajęło 47 min 54 s i 67 wywołań narzędzi, za 16,16 $ według cennika API. To najdroższa tura całej sesji.

Astra wyłapywała też usterki, zanim ja je zauważyłem. Jej pierwsze arkusze sprite’ów piechoty w ośmiu kierunkach pokazywały ujęcia zbyt podobne do siebie, więc przerobiła je przed dodaniem do gry. W 41. turze dwie generacje tekstur, skały i rumowiska, wróciły bez obrazu, więc uruchomiła je ponownie.

Kiedy Astra sprawdziła oryginalną grę

Kilka razy, zanim wykonała prośbę, Astra zaglądała do instrukcji Dune 2000. Chciałem wiedzieć, czy w oryginalnej grze do każdej rafinerii przypisany jest Carryall. Astra odpowiedziała, że nie, i powołała się na strony 16, 17 i 45 instrukcji z 1998 roku. Każda rafineria dostarcza żniwiarkę, którą przywozi Carryall, a transportowe jednostki Carryall buduje się osobno, w fabryce zaawansowanych technologii. Sprawdziłem te strony i rzeczywiście tak jest.

Wieczorem 8 września poprosiłem o możliwość budowania na piasku po wyłożeniu płyt betonowych. Astra najpierw przypomniała, że oryginalna gra pozwala budować tylko na skale, gdzie płyty chronią budynki przed zużyciem, a potem wdrożyła mój wariant. Budynek postawiony na gołej skale jest od początku uszkodzony, miejsce w całości wyłożone betonem daje mu pełne punkty życia, a startowy plac budowy stoi na dziewięciu płytach. Czerwie pustyni omijają ten beton, nawet położony na piasku. Następnego dnia zmniejszyłem płytę do jednego pola. Kładzie się ją kliknięciem albo przeciąganiem, po 5 kredytów za pole.

Efekty dźwiękowe i głosy wygenerowane w ElevenLabs

Pierwsze dźwięki były syntetyzowane w kodzie. W 13. turze poprosiłem o przejście na ElevenLabs za pomocą skilla. Astra zainstalowała oficjalny skill sound-effects od ElevenLabs i przygotowała na klucz plik .env.local wykluczony z Gita. Pierwszy klucz został odrzucony (401 invalid_api_key). Drugi, ważny 24 godziny, dał 20 efektów z modelu eleven_text_to_sound_v2, przekonwertowanych przez FFmpeg na WAV mono.

Do gry trafiły 8 września 34 komunikaty głosowe po francusku, od „Alerte! Notre base est attaquée” (Alarm! Nasza baza jest atakowana) po „Commandant, votre base est opérationnelle” (Dowódco, twoja baza jest gotowa do działania). Francuski głos z biblioteki ElevenLabs jest dostępny tylko w płatnych planach, więc Astra wybrała standardowy głos wielojęzyczny z modelem eleven_multilingual_v2, a potem zleciła Scribe v2 transkrypcję wszystkich 34 plików, żeby sprawdzić każde zdanie. Komunikaty trafiają do kolejki priorytetowej, ściszają muzykę i wyświetlają się jako napisy. W 39. turze doszło dwanaście efektów dźwiękowych pojazdów.

Muzyka nie była generowana. Command of the Scorched Plain to plik MP3, który sam dostarczyłem, odtwarzany w pętli z osobną głośnością. Wszystkie dźwięki są serwowane z projektu, bez wywołań API w trakcie gry, więc wygaśnięcie klucza nie wpływa na ich odtwarzanie.

Czas, tokeny i koszt

Każda odpowiedź modelu zostawia wiersz token_usage_record w dzienniku sesji, zapisanym w ~/.codex/sessions/. To polecenie sumuje te wiersze bez wczytywania całego dziennika do pamięci:

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
}
Pomiar Klon Dune 2000
Okres od 6 września, godz. 13:23, do 9 września, godz. 11:26 (czas paryski)
Praca agenta 11 h 16 min w 46 turach
Odpowiedzi modelu 856
Wywołania narzędzi 800
Kompakcje kontekstu 15
Tokeny wejściowe 120 107 006, w tym 116 244 736 odczytanych z cache’u (96,8%)
Tokeny wyjściowe 822 700, w tym 264 688 tokenów rozumowania
Koszt według cennika API 196,00 $

Wyliczenie opiera się na cenniku GPT-6 Astra opublikowanym na OpenRouter i sprawdzonym 14 września 2026: 10 $ za milion tokenów wejściowych, 1 $ za odczyt z cache’u i 50 $ za tokeny wyjściowe, przy kontekście poniżej 272 000 tokenów. Okno kontekstu w aplikacji Codex sięgało najwyżej 258 400 tokenów, więc wszystkie zapytania mieszczą się w tym przedziale. Daje to 38,62 $ za wejście spoza cache’u, 116,24 $ za cache i 41,14 $ za wyjście.

Za tokeny nie zapłaciłem osobno. Codex działał w ramach mojego abonamentu ChatGPT, który rozlicza użycie w limicie, więc ta kwota służy jako punkt odniesienia. Bez cache’u same tokeny wejściowe kosztowałyby 1 201 $, prawie osiem razy więcej niż naliczone 154,87 $. Poprawka kursora w 4. turze zajęła 1 min 24 s i kosztowała 0,86 $. Jak GPT-6 Astra wypada na tle Claude Fable 5.1 w krótszym zadaniu, pokazuje nasze porównanie w three.js.

Co jest w folderze projektu

Końcowy projekt liczy 41 plików źródłowych (3 261 linii, 332 KB), 956 linii testów i 2 172 linie skryptów. Folder public/ serwuje 227 obrazów PNG, 57 WebP, 32 pliki WAV i 35 MP3, a jedenaście plików JSON przechowuje prompty wygenerowanych obrazów. Prototyp nie korzysta z żadnego pliku Dune 2000: jego sprite’y, grafiki i dźwięki powstały specjalnie dla niego.

To potyczka jednoosobowa przeciwko AI, bez kampanii, bez trybu wieloosobowego i bez zapisu gry. Reguły OpenRA zmieniano, kiedy o to prosiłem, jak przy betonie na piasku albo produkcji równoległej, gdzie dwie fabryki skracają czas produkcji czołgu o połowę, a trzy do jednej trzeciej. Ten sam agent zbudował potem w jeden wieczór RPG zupełnie inną metodą, opisaną w tekście Stworzyć grę z ChatGPT: RPG w stylu EarthBound.

Co warto zapamiętać

  • Codex i GPT-6 Astra stworzyły grywalną strategię czasu rzeczywistego w 46 turach i 11 h 16 min pracy agenta, a ja wysłałem 54 wiadomości, żeby korygować kierunek prac.
  • Projekt OpenRA dostarczył reguły wyjściowe, a instrukcja z 1998 roku rozstrzygnęła sprawę jednostek Carryall i płyt betonowych.
  • Przerwanie tury kasuje prośby, które w niej padły. Dwa razy trzeba było wysłać je ponownie.
  • Liczba testów wzrosła z 11 do 122 bez mojej prośby, a żaden z nich nie wychwycił regresji ruchu z 17. tury.
  • O rachunku decyduje cache. Z cache’u odczytano 96,8% tokenów wejściowych, po 1 $ za milion zamiast 10 $, co dało łącznie 196 $ według cennika API.

Częste błędy

Przerwanie tury bez ponowienia prośby Agent nie wraca do próśb z przerwanej tury. Tak przepadły Carryall i adnotacja o dekoracjach. Skopiuj prośbę do wiadomości wysłanej po przerwaniu.
Zatwierdzenie poprawki kolizji bez scenariusza przejścia Poszerzenie kolizji czołgów zablokowało piechotę między dwoma budynkami. Zanim zatwierdzisz poprawkę, zleć napisanie scenariusza, który przechodzi przez wąskie przejście, jak tutaj npm run test:pathfinding.
Wklejenie klucza API do rozmowy Zostaje zapisany otwartym tekstem w dzienniku ~/.codex/sessions/…/rollout-….jsonl. Umieść go w .env.local, wykluczonym z Gita, i podaj agentowi tylko nazwę zmiennej.
Akceptowanie partii wygenerowanych obrazów bez wzorca stylu Sześć ikon budynków wygenerowanych za jednym razem było do siebie podobnych i nie trzymało stylu pierwszych. Podaj jako wzór obraz już zatwierdzony, tutaj łapacz wiatru.
Zostawianie agenta bez sandboksa w prawdziwym projekcie Ta sesja działała w trybie danger-full-access, bez zatwierdzeń. Używaj tego ustawienia tylko w folderze do wyrzucenia, bez kluczy produkcyjnych w zasięgu.

CodexGPT-6 AstraJavaScriptJeu vidéoPhaser

Damien Flandrin Web developer od 2010 roku, twórca Gekkode i Email Impact. Każdy artykuł jest sprawdzany na prawdziwym projekcie przed publikacją. Kontakt
Newsletter

Nowe testy, poradniki i projekty, e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.