Biome3D atgriežas: multiplayer 3D spēle ar AI divās stundās
Pirms daudziem gadiem, kad tā bija populāra, pārlūkā spēlēju Biome3D — agar.io stila spēli, tikai trīs dimensijās. Tu esi maza krāsaina šūna uz zaļa laukuma, ēd krāsainus kristāliņus, aug un sargies no tiem, kas ir lielāki par tevi. Vienkārši, bet ļoti aizraujoši. Kādā brīdī spēle pazuda, un es par to aizmirsu.
Šonedēļ tā man atkal ienāca prātā, un radās jautājums: cik ilgā laikā šādu spēli var uzbūvēt no jauna, ja programmēšanu lielākoties dara AI? Atbilde — aptuveni divas stundas. Ar online multiplayer, botiem, mobilo versiju un izvietošanu uz servera.
Spēle ir šeit: biome3d.rozensteins.lv — atver, ievadi niku un spēlē. Ja tobrīd neviena cita nav, laukumu aizpilda boti, tāpēc tukšs tas nekad nav.
Kas bija Biome3D
Biome3D parādījās 2015. gadā, kad .io spēles bija savā ziedu laikā. Noteikumi bija ņemti no agar.io: ēd mazākos, bēdz no lielākajiem, sadalies, lai kādu noķertu, un mēģini tikt topa desmitniekā. Atšķirība bija trešā dimensija — šūnas bija puslodes uz zāles laukuma starp stūrainiem low-poly kokiem, visapkārt migla, un kamera pacēlās jo augstāk, jo lielāks tu kļuvi.
Spēle darbojās līdz aptuveni 2022. gadam. Tagad tās domēns pāradresē uz pavisam citu lapu, un spēlēt vairs nav kur. Cik atceros, to bija veidojis kāds latviešu izstrādātājs, taču publiski autors nekur nav nosaukts, tāpēc pārliecināties neizdevās.
Pirmais solis: AI kā pētnieks
Es nesāku ar „uztaisi man spēli”. Pirmais uzdevums Claude Code — AI aģentam, kas strādā tieši ar kodu un termināli — bija izpētīt visu, kas internetā par Biome3D vēl atrodams, un sagatavot plānu, ko prasītu šādu spēli uzbūvēt.
Rezultāts mani pārsteidza. Claude izrakņāja Wayback Machine arhīvu un atrada, ka oriģinālās spēles klienta kods — apmēram 20 KB JavaScript — tur ir saglabājies pilnībā. No tā tika nolasīta visa mehānika un pat tīkla protokols: spēle bija būvēta uz three.js un React, serveris — uz Play Framework, un ar pārlūku tas sazinājās caur WebSocket binārā formātā.
Plāna novērtējums: 6–8 nedēļas jeb 240–320 stundas vienam pieredzējušam izstrādātājam līdz publiskai versijai. Paturi šo skaitli prātā.
Viena svarīga lieta: oriģinālo kodu es nekopēju. Tas ir cita autora darbs, tāpēc arhīvs kalpoja tikai kā atsauce — kā spēlei jāuzvedas. Viss kods ir uzrakstīts no jauna. Tas pats ar tēliem: oriģinālā bija Pikačū, Homērs Simpsons un citi sveši tēli, bet jaunajā versijā ir pašu zīmēti — varde, lapsa, bite, robots, pūce, arbūzs un, protams, Latvijas karogs.
No idejas līdz online spēlei vienā pēcpusdienā
Šī ir reālā laika līnija pēc git vēstures:
| Laiks | Kas notika |
|---|---|
| 13:47 | Uzdevums: izpētīt Biome3D un sagatavot plānu |
| 14:00 | Pirmā spēlējamā versija pārlūkā — viens spēlētājs pret botiem |
| 14:06–14:19 | Labojumi pēc testēšanas: sienas, lielāks laukums ar miglu, raustīšanās |
| 14:28 | Online multiplayer un izvietošana uz servera biome3d.rozensteins.lv |
| 14:42 | Gludāka kustība tiešsaistē |
| 14:47 | Jaunu versiju izvietošana, nepārtraucot spēli |
| 14:53 | 17 pašu zīmēti tēli un divreiz mazākas šūnas |
| 15:10–15:17 | Mobilā versija: vadība ar pirkstu un poga „Sadalīties” |
| 16:34 | Agresīvāki un gudrāki boti, kas arī dalās |
Kopā — aptuveni divas stundas aktīva darba, ar pauzēm, kad vienkārši spēlēju un testēju. Ap trijiem divas Claude Code sesijas strādāja paralēli: kamēr viena zīmēja tēlus, otra pielāgoja spēli telefoniem.

Sākuma ekrāns: niks un 25 izskati — 8 krāsas un 17 pašu zīmēti tēli
Mana loma: nevis rakstīt kodu, bet spēlēt un pateikt, kas nav kārtībā
Interesantākais šajā procesā — kodā es gandrīz neskatījos. Mana loma bija produkta īpašnieks un testētājs vienā personā: spēlēju, pamanīju, kas nav labi, un aprakstīju to vienkāršiem vārdiem. Daži no maniem reālajiem uzdevumiem:
- „Spēlējot var iziet cauri sienām, bet vajadzētu būt tā, ka pie sienas atduras atkarībā no izmēra.”
- „Laukumam vajadzētu būt lielākam, un tā, lai pārējos neredz — veidojas kā migla.”
- „Live nedaudz raustās bumbiņas.”
- „Var piegādāt jauno versiju paralēli, lai nav pārtraukuma, jo tagad apstājās viss projekts.”
- „Vajag botus agresīvākus un gudrākus, lai grūtāk uzvarēt, un lai viņi arī dalās.”
Neviens no tiem nav tehnisks uzdevums. Es nerakstīju „ieviest klienta interpolācijas buferi” vai „blue-green deploy ar savienojumu notecināšanu” — es aprakstīju, ko redzu un ko gribu. Tehnisko risinājumu izvēlējās un uzrakstīja AI. Tieši tā ir vibe coding būtība, par ko rakstīju arī iepriekšējā rakstā.
Kas ir zem pārsega
Lai gan spēle tapa ātri, tehniski tā nav rotaļlieta:
| Daļa | Tehnoloģija | Ko tā dara |
|---|---|---|
| Grafika | three.js (WebGL), TypeScript, Vite | 3D laukums, šūnas, koki un 22 000 ēdiena gabaliņu |
| Serveris | Node.js 22 + WebSocket | viena kopīga pasaule visiem spēlētājiem |
| Spēles loģika | kopīgs TypeScript kods | tie paši noteikumi pārlūkā un serverī |
| Boti | tā pati loģika serverī | aizpilda laukumu līdz 80 dalībniekiem |
| Izvietošana | Docker, GitLab CI, Traefik | push uz main → jauna versija tiešsaistē apmēram minūtes laikā |
Dažas lietas, kas man šķita īpaši interesantas:
- Serveris ir „autoritatīvs”. Pārlūks sūta tikai to, kurp tu gribi kustēties; visu pārējo — kustību, ēšanu, sadalīšanos — serveris aprēķina 60 reizes sekundē. Tāpēc ar pārveidotu pārlūku nevar sev piešķirt masu vai iziet cauri sienai.
- Katrs spēlētājs saņem tikai to, ko redz. Serveris sūta stāvokli 20 reizes sekundē un tikai tās šūnas, kas nav aiz miglas. Jo lielāks tu esi, jo augstāk kamera un jo tālāk redzi — tāpat kā oriģinālā. Ieskatīties aiz miglas ar viltotu klientu nevar.
- Kustība ir gluda, lai gan dati pienāk 20 reizes sekundē. Pārlūks starp atjauninājumiem pozīcijas interpolē, tāpēc šūnas neraustās.
- 22 000 ēdiena gabaliņu zīmē vienā piegājienā. three.js
InstancedMeshļauj uzzīmēt tūkstošiem vienādu objektu ar vienu izsaukumu, tāpēc spēle strādā arī uz vājākiem datoriem un telefoniem. - Jaunu versiju var izvietot spēles laikā. Jaunā versija startē blakus vecajai: jaunie spēlētāji nonāk jaunajā, bet esošie spēlē līdz savai „nāvei” un tikai tad pārlādējas. Neviens netiek izmests no spēles.
- Datubāzes nav. Nav kontu, nav paroļu — tikai niks. Viss stāvoklis glabājas servera atmiņā.
Viss kopā — ap 2700 rindiņu TypeScript, un darbībai vajadzīgas tikai divas bibliotēkas: three.js un ws.

Boti nav tikai fons — „Zutis” sadalījās vairākās šūnās un tuvojas manai
Kā spēlēt
Datorā:
- pele — kustības virziens;
- atstarpe — sadalīties, lai noķertu kādu mazāku;
- WASD vai bultiņas — pagriezt kameru;
- − / + — izšķirtspēja, ja dators velk lēni.
Telefonā kustību vadi ar pirkstu, sadalies ar pogu „Sadalīties”, bet kameru pagriez, velkot ar otru pirkstu.
Noteikumi ir vienkārši: ēd krāsainos kristāliņus, lai augtu, un šūnas, kas ir vismaz par piekto daļu mazākas par tevi. Lielas šūnas kustas lēnāk un pamazām zaudē masu, tāpēc mūžīgi augt nevar. Un uzmanies no botiem — kamēr tapa ekrānšāviņi šim rakstam, tie manu šūnu apēda divas reizes, abas reizes apmēram minūtes laikā.

Mobilā versija: tā pati pasaule un tie paši spēlētāji, tikai vadība ar pirkstu
Ko AI izdarīja labi un kur vajadzēja cilvēku
AI izdarīja ļoti labi:
- izpēti — izraka 10 gadus vecu spēli no interneta arhīva un saprata tās uzbūvi;
- arhitektūru un garlaicīgo daļu — tīkla protokolu, Docker, CI, servera konfigurāciju;
- drošību — pēc katras izmaiņas automātiski palaists drošības pārskats atrada, ka viens bojāts URL var nogāzt visu serveri, un tas tika salabots dažās minūtēs.
Cilvēks bija vajadzīgs:
- sajūtai — ka laukums raustās, ka boti ir par vājiem, ka migla ir par tuvu. To var pamanīt, tikai spēlējot;
- lēmumiem — kur spēle dzīvos, vai vajag mobilo versiju, vai drīkst pārtraukt spēli izvietošanas laikā;
- infrastruktūrai. Šis ir svarīgs punkts: man jau bija serveris, domēns, GitLab un izvietošanas konveijers. AI to visu ātri sakonfigurēja, bet nesāka no nulles. Bez šī pamata divas stundas būtu kļuvušas par krietni vairāk.
Divas stundas pret 6–8 nedēļām
Vai tas nozīmē, ka plāns kļūdījās? Nē. 6–8 nedēļas bija novērtējums publiskam produktam — ar kontiem, rezultātu vēsturi, aizsardzību pret krāpšanos, slodzes testiem un rūpīgu balansu. Tā visa man nav. Man ir spēle, ko var atvērt, uzaicināt draugus un spēlēt kopā. Vēl pirms dažiem gadiem arī tas prasītu vismaz pāris nedēļu.
Un tieši tā ir galvenā doma. Attālums starp „man ir ideja” un „te ir saite, pamēģini” ir sarucis no nedēļām līdz vienai pēcpusdienai. Tas attiecas ne tikai uz spēlēm: iekšējs rīks uzņēmumam, prototips sarunai ar investoru, MVP biznesa idejas pārbaudei — to visu tagad var uzbūvēt un parādīt reāliem cilvēkiem dažās dienās, nevis mēnešos.
Taču pieredze nav kļuvusi mazāk svarīga. Jāzina, ko prasīt, kā pārbaudīt rezultātu un kur slēpjas riski — drošība, izvietošana, dati. AI ir ļoti ātrs izpildītājs, bet virzienu joprojām nosaka cilvēks.
Pamēģini pats
Spēle ir pieejama šeit: biome3d.rozensteins.lv. Ieej, izvēlies tēlu un mēģini tikt topa desmitniekā — boti nežēlos.
Un ja tev ir ideja, ko gribi ātri pārbaudīt dzīvē — spēle, rīks vai produkts —, uzraksti man. Labprāt izrunāšu, ko un cik ātri var uzbūvēt.