Lilith.
⌕
Ilustracja redakcyjna: Prompt „zrób to DUŻO fajniejsze” zadziałał: Simon Willison kazał Claude Code zbudować grywalny RTS
Ilustracja Lilith · remiks redakcyjny

Simon Willison pokazał 20 października Battle Drones, przeglądarkową strategię czasu rzeczywistego w stylu Command & Conquer. Kodu prawie nie czytał, bo napisali go za niego coding agenci, głównie Claude Code. W odróżnieniu od jego wcześniejszych prób ta gra, jak mówi, naprawdę daje frajdę.

Cztery miesiące, 321 commitów i gra, której autor prawie nie czytał

Willison zaczął w lipcu od modelu Claude Fable 5 i zadania: mobilny RTS, w którym dwie armie dronów walczą o teren. Pierwsza wersja była według niego ledwie dowodem koncepcji i w ogóle nie bawiła. Grafikę Claude generował przez OpenAI Image Generation API, bo Willison przekazał mu klucz API w zmiennej środowiskowej. Projekt powstał w TypeScripcie, którego autor sam prawie nie używa.

Dziś gra ma za sobą 12 dużych wersji i 321 commitów. Działa na telefonie i komputerze, ma 9 budynków, 7 pojazdów naziemnych, 6 maszyn latających i 3 rodzaje piechoty jako modele 3D, które Claude zbudował bezpośrednio w kodzie za pomocą three.js. Jest mgła wojny, sześć map w pięciu biomach, generator losowych map, sześć osobowości komputerowego przeciwnika i gigantyczny mech Goliath. Muzyka nie pochodzi z żadnego pliku audio: generuje ją kod, a gdy zaczyna się walka, robi się intensywniejsza.

Najciekawszy jest multiplayer przez dźwięk. Dwa telefony albo laptopy w zasięgu mikrofonu synchronizują stan gry piskami przypominającymi stary modem. Willison chciał, żeby gra pozostała statycznym HTML bez serwera, którego musiałby pilnować. O ile wie, żaden RTS wcześniej tego nie potrafił.

Mgliste polecenie zadziałało, bo agent miał co mierzyć

Przełom nastąpił w wersji 4. Przy kolacji Willison przekonywał, że coding agenci potrafią zbudować coś, co wygląda jak gra, ale nie bawi. Potem z telefonu napisał do Claude Opus 5.5: „This game isn't fun enough yet. Make it a LOT more fun.” Zadanie uruchomił w trybie Ultracode, w którym Claude Code za pomocą skryptu koordynuje wielu subagentów naraz. Praca trwała od wieczora do późnego przedpołudnia.

W tym czasie Claude rozegrał ponad tysiąc symulowanych meczów testowych i na ich podstawie przebalansował jednostki oraz dodał nowe mechaniki. Według release notes, które sam napisał, w 1200 meczach AI kontra AI odsetek gier nierozstrzygniętych po 25 minutach spadł z 14% do 0,9%. Odsetek zwycięstw strony, która przegrywała o ponad 800 jednostek złomu, wzrósł z 24% do 46%.

To najważniejsza lekcja dla każdego, kto zleca agentom miękkie cele. Samo słowo „zabawa” niewiele mówi, ale agent przełożył je na mierzalne rzeczy: mniej patów i więcej odwróconych losów meczu. Projektanci gier od dawna używają takich wskaźników. Nowe jest to, że agent sam je wybrał, sprawdził na własnych symulacjach i przez noc przerobił według nich grę. Przy zadaniu bez mierzalnego punktu odniesienia ten sam prompt skończyłby się pewnie na kosmetyce.

Niska stawka skończyła się bólem głowy, a nie błędem w kodzie

Willison sam wyjaśnia, dlaczego mógł sobie pozwolić na nieczytanie kodu: gra to zabawka, a najgorsze, co może się stać, to błąd w głupim eksperymencie. To założenie rozbiła jego partnerka Natalie. Przy pierwszej wspólnej rozgrywce przez dźwięk wysokie piski przyprawiły ją o paskudny ból głowy. Żaden z tysięcy symulowanych meczów nie mógł tego wychwycić. Willison dodał ostrzeżenie i kazał Claude zbudować multiplayer online przez prosty przekaźnik WebSockets na Fly.io, który ma go kosztować najwyżej 2,19 dolara miesięcznie.

Inne ograniczenia widać mniej. Ultracode według Willisona spala tokeny, „jakby nie było jutra”. Determinizm potrzebny do powtórek i gry wieloosobowej rozbił się o drobne różnice w wynikach Math.sin() i Math.cos() między Chrome a Safari, więc Claude musiał podmienić je na własne funkcje. Sam Willison pisze też, że nigdy nie zgłosiłby gry na Steam Next Fest, bo to wciąż za mało pracy jak na poważny projekt indie. W oprogramowaniu firmowym, gdzie ktoś musi odpowiadać za kod, Battle Drones jest więc raczej pokazem możliwości niż instrukcją.

Liga modeli językowych i gry bez serwera pokażą, dokąd prowadzi ten styl

W wersji 10 pojawiły się agent battles: dwa modele językowe grają przeciwko sobie przez narzędzie, które pokazuje im tylko to, co widać zza mgły wojny. Willison nagrał już pojedynek Claude Haiku 5.5 z GPT-6 Luna i chce z tego zrobić pełną tabelę ligową. Taka liga mogłaby być ciekawszym benchmarkiem agentowego podejmowania decyzji niż wiele statycznych testów, bo model musi planować w niepewności i w czasie rzeczywistym.

Drugim sygnałem będzie to, czy multiplayer przez dźwięk w statycznym HTML przejmą inne gry. Willison znalazł na razie niewielu poprzedników, na przykład bibliotekę ggwave Georgiego Gerganova. Trzecim jest spór, który już trwa na Steamie: gracze chcą filtra na gry tworzone z pomocą AI. Willison twierdzi, że widzi drogę, by gry vibe coded traktowano poważnie. Rozstrzygnie to jednak ktoś z lepszym gustem i większą wytrwałością, niż wymaga jeden prompt.

Werdykt Lilith

Claude rozegrał ponad tysiąc symulowanych meczów i przez noc dopracował grę. Błąd, którego nie znalazła żadna symulacja, wykryła dopiero Natalie, której po kilku rundach modemowych pisków pękała głowa.

Link zewnętrzny zostawiam na koniec. Najpierw krótkie wyjaśnienie tutaj, bez polowania po cudzej stronie.

Oryginalne źródło ↗ ↗