Prusaks, kas nogurst: sacīkšu bioloģijas modelēšana
Partneru uzdevums bija vienkāršs: uztaisīt prusaku sacīkstes — ātru prototipu, ko parādīt investoriem. Es ierosināju izlaist viltojumu un uzreiz būvēt pašu spēli: mums jau bija prusaku modeļi, es varēju tos ielikt, un cilvēki varētu patiešām ienākt un spēlēt. Kāpēc tērēt laiku maketam?
Un es negribēju prusakus, kas vienkārši skrien. Es gribēju, lai sacīkstes izskatās dzīvas: ātrs starts, par kuru vēlāk jāmaksā, sāncensis, kuram pēdējā posmā zūd spēki, finiša spurts, kas izdodas tikai tad, ja bākā vēl kaut kas ir palicis. Tāpēc katram prusakam es iedevu iekšēju bioloģisku sistēmu, kas modelēta pēc tā, kā darbojas īsta skrējēja ķermenis. Ar šīs spēles daļas izgudrošanu es lepojos visvairāk.

Sacīkšu modelis v2: no skābekļa un ATP līdz jaudai, spēkam un ātrumam.
Degviela ir ATP. Skriešana patērē tikai ATP, un ar tā krājumu pie pilnas jaudas pietiek aptuveni desmit sekundēm. Pēc tam ķermenim tas jāražo no jauna, vienā no diviem veidiem:
- Aerobais: tauki plus skābeklis dod ATP. Tas patērē daudz skābekļa un dod maz ATP sekundē.
- Anaerobais: glikoze dod ATP plus laktātu. Skābeklis nav vajadzīgs, un modelī šis veids ieslēdzas, kad slodze kļūst liela.
Laktāts ir cena. Tas uzkrājas muskuļos un rada nogurumu, un spēks krītas. Tā izvadīšanai vajag ATP no aerobās sistēmas, tāpēc tā notiek tikai tad, kad skābekļa ir pietiekami. Cik labi darbojas skābekļa sistēma, ir atkarīgs no pulsa.
Virs ķermeņa ir mehānika: jauda pārvēršas spēkā, kas cīnās ar vēju, mehānisko pretestību un masu. Prusaks, kas skrien tieši aiz cita, sastop mazāk gaisa — tas skrien līdera aizvējā.

Viens prusaks sacīkšu laikā: ātrums, ATP, skābeklis, laktāts, nogurums un jaudas slēdzis. Laktāts sāk uzkrāties, kad slodze pieaug; finiša spurtā jaudas slēdzis pāriet uz 100, un laktāts un nogurums strauji kāpj augšup.
No kurienes nāk skaitļi. Katra prusaka rādītājus nosaka tā ģenētika un perki, ko tas savāc pa ceļam:
- ATP sistēma: ATP bākas izmērs un tas, cik efektīvi ATP pārvēršas skriešanas jaudā, — nogurums to samazina.
- Aerobā: skābekļa bākas izmērs, cik ātri skābeklis atjaunojas, cik daudz skābekļa sekundē var aiziet ATP ražošanai (tas atkarīgs no asins piesātinājuma) un cik daudz ATP dod viena skābekļa vienība.
- Anaerobā: laktāta bākas izmērs un tas, cik ātri laktāts ražo ATP, — jo mazāk skābekļa asinīs, jo tuvāk maksimumam. Nogurums sākas pie 5% laktāta un aug eksponenciāli. Laktāts tiek izvadīts tikai tad, kad ATP bāka ir vairāk nekā pusē pilna.
- Fiziskie: masa; pretestība, kas eksponenciāli aug līdz ar masu, tāpēc smagāks prusaks par to maksā gaisā; fiksēta mehāniskā pretestība; un vēja ātrums un virziens no datu plūsmas.
Balansēšanai vajadzēja rīku. Modeli ar tik daudz parametriem nevar noregulēt pēc izjūtas, tāpēc es uzbūvēju administratora simulatoru: noliec prusakus ar dažādiem rādītājiem uz vienas trases, palaid sacīkstes un skaties grafikus.

Desmit viena un tā paša prusaka varianti ar dažādiem rādītājiem sacenšas savā starpā. Lodziņi augšpusē rāda katra rezultātu.

Prusaku redaktors administrēšanas panelī: augšā izskats, zemāk bioloģiskie rādītāji — ATP un skābekļa krājumi, laktāts, pulss, vēja pretestība, masa.
Otrā ideja: prusaki no detaļām. Katrs prusaks bija NFT, kas sastāvēja no īpašībām — ķermeņa daļām, — un daļām bija līmeņi: jo augstāks līmenis, jo labāk. Teorētiski īpašībām vajadzēja ietekmēt šos bioloģiskos rādītājus, lai spēlētāji medītu labākās. Arī to noraidīja godīguma dēļ: visiem prusakiem ir vienādi rādītāji. Bet krāsas palika — katrai īpašībai ir savs tonis, piesātinājums un gaišums. Backend saliek modeli no ķermeņa daļām, uzliek tās uz kopīga skeleta, piemēro animācijas un nokrāso katru daļu tās krāsās. Bija plāns, lai krāsām būtu nozīme arī sacīkstēs — teiksim, pie 20 °C dzeltenāks prusaks skrietu labāk.
Kā spēlētāji to vadīja. Pirmajā versijā savu prusaku tu vadīji ar slīdni: cik daudz jaudas ielikt. Ja pārspīlēji, tas nogura, skrēja neefektīvi un zaudēja sacīkstes.
Labākā stratēģija izrādījās īsta skrējēja stratēģija. Turi jaudas slēdzi ap 20–25%, tad pirms finiša pārej uz 100% — elpu atgūt var arī aiz finiša līnijas. Āķis ir zināt, cik tālu no finiša sākt spurtu. Un, ja skrien cita prusaka aizvējā, vari iestatīt mazliet mazāku jaudu nekā viņš — viņš skrien ar 20%, tu ar 19% —, palikt svaigāks un beigās atrauties. Būtībā prusaki veidoja pelotonu.
Kas notika tālāk. Komanda to noraidīja kā pārāk sarežģītu spēlētājiem. Kopā mēs nonācām pie vienkāršākas vadības: tu liec likmi uz, teiksim, Bitcoin cenu, un veiksmīgs vai neveiksmīgs darījums paaugstina vai pazemina tava prusaka motivāciju. Tā ir spēle, kurā spēlētāji sacenšas šodien.
Taču bioloģija nekur nepazuda — tā joprojām darbojas zem pārsega. Tagad katram prusakam ir AI, kas katrā brīdī izvēlas tam jaudas slēdža stāvokli: tas prognozē nākamās 10–20 sacīkšu sekundes un izvēlas iestatījumu, kas neļauj prusakam pārgurt, bet pie finiša tas var atļauties izdegt. Tas padara sistēmas iekšieni mazliet sarežģītāku, bet spēlētājam viss ir vienkārši. Un sacīkstes izskatās tā, kā mēs gribējām: vadība visu laiku mainās, uz priekšu izraujas te viens prusaks, te cits.

Sacīkstes tiešraidē 2025. gada aprīlī: līdz desmit spēlētājiem, katrs prusaks piesaistīts savam kriptovalūtu pārim.
Pats galvenais — zem pārsega nav nejaušības. Visu aprēķina modelis. Vienīgais nejaušības avots ir valūtu kursi, kas reāllaikā tiek ņemti no kriptobiržām.
No kurienes nāk nejaušība. Arī šī daļa bija mans dizains. Sākumā domājām par akcijām, bet akciju cenas neatjaunojas pietiekami bieži, un biržas naktī ir slēgtas, — tāpēc kripto. Arī decentralizētās biržas atkrita: blokķēde atjaunojas pārāk reti. Palika centralizētās biržas.
Tāda monēta kā Bitcoin vienlaikus tiek tirgota kādās desmit biržās. Mēs varējām ņemt cenas tikai no Binance, bet tirdzniecība notiek visur, un spēlei vairāk kustības nozīmē lielāku svārstīgumu, bet tas nozīmē vairāk jautrības — grafiks izskatās dzīvs. Tikai Binance vien tāda monēta kā XRP var stāvēt uz vietas 20 sekundes, kas sacīkstēm neder. Tāpēc mēs ņemam pēc apjoma svērto vidējo vairākās biržās. Turklāt jebkura birža, kas nav atjaunojusies ilgāk par 60 sekundēm, vairs netiek skaitīta — tās pēdējās cenas svars dzīvo 60 sekunžu slīdošajā logā.
Tas strādāja pietiekami labi, un daži spēlētāji tajā patiešām iemanījās: viens no viņiem spēlē nopelnīja nopietnu naudas summu.
Ko es no tā iemācījos: saglabā dziļumu, bet paslēp to. Modelis katram parametram piešķir nozīmi, par kuru cilvēks var spriest, un simulators parāda, ko izmaiņa dara, pirms to ierauga kāds spēlētājs. Spēlētājam gan vajag vienu skaidru sviru — bet sarežģītība var dzīvot iekšā, un to vada paša prusaka AI.