Střílečka z pohledu první osoby, která běží přímo v prohlížeči, má vlastní fyziku a jedenáct oddělených částí kódu. Dohromady asi 55 tisíc řádků rozdělených do jedenácti podsystémů, postavených na Three.js r180 a WebGL2. Nikdo do ní nenahrál jednu jedinou texturu ani zvukový soubor. Celý kód napsal Claude Opus 5 po jednom zadání od Matta Shumera, který projekt pojmenoval Claude of Duty a spolu s ním vystavil i celé zadání na GitHubu.
Zadání střílečky
Shumer po modelu chtěl střílečku na úrovni nejnovějších dílů Call of Duty, v naprosté kvalitě od textur po fyziku. Součástí instrukce bylo i to, aby model rozdělil práci mezi podřízené agenty, u každé části se opakovaně vracel k výsledku a nechal ho hodnotit zvlášť vyčleněným, nemilosrdným kritikem. Práce měla skončit teprve tehdy, až tento kritik ve slepém srovnání se skutečnou hrou uzná, že vypadá stejně dobře.
Právě proto je slovo "jeden pokus" trochu zavádějící. Znamená jedno vložené zadání od člověka, ne jeden průchod modelu bez smyček, kritiků a pomocných nástrojů. Když si Shumerův příspěvek na síti X začali lidé oťukávat s tím, že za tím musí být několik dní ruční práce, zveřejnil repozitář i zadání.
Textury i zvuky vznikají až při načtení hry
V projektu nenajdete žádné umělecké podklady. Každá textura, model, animace i zvuk se dopočítávají procedurálně při načtení hry a jedinou závislostí zůstává balíček three. Zvuk se skládá přes Web Audio, tedy výstřely, dozvuk i prostorové umístění vznikají výpočtem, ne přehráním nahrávky.
Fyzikální část si model napsal od základu, bez knihovny. Zvládá průstřely více materiálů, tuhá tělesa se spojitou detekcí kolizí a hadrové panáky při smrti. Mapa má rozměry přibližně 120 krát 120 metrů, jde o tržní ulici s budovami, do kterých se dá vstoupit, a několika stovkami rozmístěných objektů.
Důležitou roli tu hrály pomocné nástroje. Ukázaly totiž dva problémy, které předchozí měření znehodnotily. Test se statickou kamerou hlásil 94 snímků za sekundu, zatímco skutečné hraní na displeji Retina běželo na 12 až 17 snímcích a zasekávalo se na 728 až 1236 milisekund, protože se přes tři desítky programů pro grafickou kartu kompilovaly až uprostřed snímku. Druhý problém se skrýval ve snímcích obrazovky. Jedna stránka použitá pro všech jedenáct záběrů si přenášela stav částic, odlesků a expozice, takže dvě shodně nastavená spuštění se lišila v deseti záběrech z jedenácti.
Optimalizace pak proběhla s tvrdým pravidlem, že se obraz nesmí změnit ani o pixel, a kontroloval to nástroj na porovnávání snímků. Výsledek posunul hru z 12 až 17 na 28 až 30 snímků, nejhorší snímek spadl z více než sekundy na 66 až 82 milisekund a načtení se zkrátilo z devíti až dvanácti sekund na necelých pět.
Cíl dorovnat Call of Duty hra nesplnila
Shumer píše, že cíl dorovnat moderní Call of Duty hra nesplnila. Jedenáct nezávislých kritiků dávalo záběrům postupně 3,59, pak 4,14, pak 4,05 a nakonec 5,05 bodu z deseti. Dva záběry se dostaly na hodnocení "blízko", ostatní zůstaly amatérské a ve slepém srovnání vybral každý kritik v každém kole skutečnou hru.
Hra má slabá místa. Ruce působí jako hranaté kusy, které zbraň nedrží přesvědčivě, povrchy z blízka prozrazují, že jde o vypočítaný šum, a nepřátelé na dálku vypadají jako výkladní panáci. Výtvarné úpravy navíc zdvojnásobily počet trojúhelníků z 5,9 na 11,3 milionu a optimalizace vrátila zpět jen asi polovinu ztraceného výkonu.
Paralelní nasazení agentů skončilo horším obrazem
Zápisky o průběhu práce mají pro ostatní vývojáře možná větší cenu než samotná hra. Tři kola po šesti agentech, z nichž každý spravoval jednu složku, zvedla hodnocení jen o 0,46 bodu a počet vad kazících obraz nakonec vzrostl z šedesáti na 66, protože tónování, obloha a nepřímé světlo tvoří jeden propojený celek a oddělení agenti si navzájem bourali předpoklady. Jediný postupný průchod, kde měl každou provázanou oblast na starosti jeden vlastník, přinesl plný bod a vady stlačil z 66 na 26.
Nejcennější posun přišel ve chvíli, kdy jeden z agentů odmítl vlastní pokyny. Kritici tři kola dokola tvrdili, že zbraň nemá texturu, přitom jí jen dominovaly odlesky a rozptýlená složka svítila hluboko pod výslednou hodnotou. Předchozí kola srážela jasnost povrchu dolů, čímž rozptýlené světlo dusila a stížnost tím jen zhoršovala. Opravou bylo přesně to opačné, než co si kritici žádali.
Zdroj: explainx.ai
