LifeSimu – hubane 3D multiplayer-mäng saarestikul

04.07.2026 | Ajaveeb

Tänapäeva maailmas tekitab tehisaru korraga nii elevust, suuri küsimusi kui ka vastasseisu. Minu jaoks on see saanud eelkõige tööriistaks – süsteemiks, mis aitab muuta minu ideid töötavateks prototüüpideks ja päris projektideks.

Olen juba mõnda aega katsetanud programmeerimisega eri platvormidel ning õppinud samm-sammult, kuidas oma mõtteid digitaalsesse vormi panna. LifeSimu on selle teekonna üks viimaseid projekte: 3D-multiplayer-maailm protseduuriliselt loodud saarestikul, kus mängija saab avastada mägesid, randu ja veealuseid alasid, kohtuda teiste päris mängijatega ning liikuda nendega reaalajas samas maailmas.

Projekti tehnilise aluse moodustavad Three.js, TypeScript ja multiplayer-serveri lahendus Colyseus. Arenduses kasutan Claude Code’i, mille aluseks olev mudel on Claude Sonnet 5.

Tehisaru ei asenda minu ideid ega otsuseid. Pigem aitab see neid kiiremini katsetada, tehnilisi probleeme lahendada ning visiooni samm-sammult toimivaks maailmaks vormida.

LifeSimu keskmes ei ole võitlus, vastaste alistamine ega punktitabel. Keskmes on hoopis maastik, liikumine, atmosfäär ja tunne, et maailmas toimub päriselt midagi.

Saarestik, kus saab ronida, ujuda ja kohtuda teiste mängijatega

LifeSimu on hubane multiplayer-maailm protseduuriliselt loodud saarestikul. Siin tõusevad mäetipud üle orgude, liivarannad lähevad üle madalaks mereks ning vee all liiguvad haid, kilpkonnad ja teised vee-elanikud.

Mängija saab valida tegelase, ronida mäenõlvadel, jalutada rannajoonel või ujuda vee all. Kõik toimub reaalajas koos teiste mängijatega samas maailmas.

Paljud multiplayer-mängud alustavad lahingu, võistluse või punktisüsteemiga. LifeSimu lähtub teisest ideest: kõigepealt on maailm ja liikumine selles maailmas. Kas tegelane ronib mäenõlval, kõnnib rannas, ujub vee all või kohtub teel teiste mängijatega.

Mängu server hoiab kontrolli füüsika, liikumise ja mängijate asukohtade üle. See tähendab, et kõik mängijad näevad sama maailma ning teiste tegelaste liikumine on võimalikult ühtlane ja usaldusväärne.

Klient joonistab ainult seda, mida server on juba tõeks pidanud.

Ekraanipilt arvutimängust “The Multiplayer Life Simulator”. Mängumaailmas on näha suur ranniku- ja saarestikuala: roheline maapind, madalad saared ning nende vahel lai veepind, mille kaldal on valge vahune surf. Taamal ulatub silmapiirini mitmest väikesaarest koosnev maastik ning taevas on helesinine, üksikute uduste pilvedega. Vasakus ülanurgas paikneb tumedal taustal Game Stats paneel, kus kuvatakse FPS-i väärtus 30 ning märge, et aktiivne on Free Camera ehk vaba kaameravaade. Vasakul servas on üksteise all ümmargused nupud: Help, Players, Chat ja Camera. Alumises vasakus nurgas on suur sinine Jump-nupp ning paremas alumises nurgas läbipaistev virtuaalne juhtkang, mis viitab puuteekraanil või mobiiliseadmes kasutatavale liikumisjuhtimisele.

Mäetipust rannajooneni

LifeSimu maailm on umbes 3000 × 3000 ühiku suurune. Seal on kõrgemad mäetipud, orud, järsemad nõlvad, madalamad rannikualad ja ookean.

Maastik ei ole käsitsi valmis joonistatud, vaid tekib protseduuriliselt. See tähendab, et saarestiku kuju, kõrgused ja maapinna erinevad alad sünnivad reeglite abil. Nii saavad tekkida looduslikumad mäed, rannad ja madalikud.

Ka ookean ei ole lihtsalt sinine tasapind. Vee liikumine, valgus, taevas ja pilved aitavad luua atmosfääri, kus rannajoon ja meri näevad eri hetkedel pisut erinevad välja.

Eesmärk ei ole ainult tehniline efekt. Vesi, taevas, rannajoon ja mäed peavad koos looma koha, kus mängijal on mõnus lihtsalt ringi liikuda, avastada ja teistega kohtuda.

Ujumine ei ole lihtsalt kõndimine vee all

Üks LifeSimu olulisemaid hetki on see, kui tegelane liigub rannast või madalamalt nõlvalt vette.

Ujumine vajab eraldi loogikat. Vee all liigub tegelane teistmoodi kui kuival maal: gravitatsioon on väiksem, vesi hoiab tegelast pinnale lähemal ning tegelase sügavus sõltub sellest, kas ta liigub või seisab paigal.

Ujumise füüsika ja tegelaste mõõtkava lähtepunktiks on minu enda prototüübi põhjal loodud Mella-tegelane, kelle pikkus on 1,79 meetrit.

Viimaste arenduste käigus muudeti ka seda, kuidas mäng arvutab tegelase sügavust vees. Varem lähtuti pigem jalgade asukohast, nüüd kasutatakse keha keskpunkti. See annab loomulikuma tulemuse, eriti siis, kui tegelane ujub või jääb vee all paigale hõljuma.

Samuti on edasi arendatud tegelast jälgivat kaamerat, et mängija vaade oleks vee all rahulikum, loomulikum ja kaasahaaravam.

Tegelased, kellel on päriselu taust

LifeSimu maailm ei ole tühi. Lisaks mängijatele liiguvad seal ringi ka NPC-d.

NPC tähendab ingliskeelset väljendit non-player character ehk tegelane, keda ei juhi päris mängija. NPC liigub maailmas oma reeglite, tehisintellekti ja animatsioonide järgi. Näiteks võib ta jalutada, ujuda, otsida teed või lihtsalt maailmas ringi liikuda.

LifeSimu tegelaste taga ei ole ainult tehniline süsteem. Mitmed neist on seotud meie päriseluga.

Valitavad tegelased:

  • Mella – minu enda prototüübi põhjal loodud tegelane, mis on ühtlasi mängu mõõtkava ja füüsika üks lähtepunkte;
  • Lucas – minu poja järgi loodud valitav tegelane;
  • Gadgeteer – valitav tegelane;
  • Pinky – valitav tegelane;
  • Alien – valitav tegelane.

NPC-d ja vee-elanikud:

  • Tom – meie enda kassi järgi loodud NPC, kes liigub kuival maal;
  • Kilpkonn – meie päris kilpkonna järgi loodud tegelane, ainult mängumaailmas suuremas mõõtkavas;
  • Hai – veealune NPC, kellel on oma liikumisloogika;
  • Kaheksajalg – veealune olend, mille lõi Lucas ise Meshy.ai keskkonnas.

Tom on eriti huvitav tegelane, sest tema liikumisloogika on arenduse jooksul palju muutunud. Alguses oli tema käitumine lihtsam, kuid ajapikku on ta saanud parema rajaleidmise oskuse.

See tähendab, et Tom peab suutma liikuda eri kõrgusega maastikul, vältida liiga madalaid alasid ning leida mõistliku tee mägede, randade ja kõrgemate piirkondade vahel.

Ekraanipilt mängust “The Multiplayer Life Simulator”, kus mängutegelased seisavad mereäärsel liivarannal. Taustal on rahulik veepind, madalad rohelised saared ja heledalt pilvine taevas. Pildi keskosas on pikk koomiksilik meeskarakter, kellel on suured sinised silmad, lai naeratus ja väljas keel. Tal on seljas punane T-särk, sinised teksad ja punased tossud. Tema kõrval seisab väiksem lapselik tegelane tumeda pluusi ja heledate pükstega. Karakterite ümber on mängumaailma objekte: vasakul värviline korallilaadne dekoratsioon ning paremal suur sinakasroheline kaheksajala kujuline olend. Mõlemad tegelased heidavad rannale pikki varje. Vasakus ülanurgas on Game Stats paneel, kus kuvatakse FPS väärtus 30 ning mängija asukoha koordinaadid ja kaugus. Vasakul servas paiknevad ümmargused juhtnupud Help, Players, Chat, Camera ja Games. Alumises vasakus nurgas on sinine Jump-nupp ning paremas alanurgas läbipaistev virtuaalne juhtkang liikumise juhtimiseks.

Meshy.ai: fotost mängutegelaseks

LifeSimu 3D-mudelid on loodud Meshy.ai keskkonnas. See on andnud võimaluse muuta ideed või foto kiiresti mängumaailmas kasutatavaks 3D-mudeliks.

Meshy.ai abil saab näiteks kasutada fotot lähtepunktina, luua sellest 3D-kuju ning lisada mudelile hiljem luustiku ja animatsioonid. Nii saab tavalisest pildist või ideest edasi liikuda tegelaseni, kes suudab mängumaailmas seista, kõndida, ujuda või iseseisvalt ringi liikuda.

See on olnud eriti põnev LifeSimu tegelaste puhul. Mella on loodud minu enda prototüübi põhjal, Lucas on seotud minu pojaga, Tom on meie kass ning kilpkonn meenutab meie päris kilpkonna. Ka kaheksajalamoodi veealune tegelane ei ole lihtsalt valmisvara, vaid Lucase enda loodud olend.

Need detailid annavad mängule isikupära. LifeSimu maailm ei koosne ainult juhuslikest mudelitest, vaid sinna jõuavad meie enda inimesed, loomad, ideed ja looming.

Multiplayer ilma sõjata

LifeSimu multiplayer-osa ei tähenda lahinguid ega vastaste alistamist. Selle eesmärk on luua sotsiaalne kiht – tunne, et maailmas ei olda üksi.

Igal mängijal on oma kasutajanimi. Mängu sisenedes saab näha teiste mängijate nimekirja ning suhelda nendega reaalajas vestlussüsteemi kaudu.

Lisaks on olemas tegelaste reserveerimissüsteem. Kui keegi valib näiteks Lucase, reserveeritakse see tegelane lühikeseks ajaks. Nii välditakse olukorda, kus kaks mängijat satuvad samal ajal maailma täpselt sama tegelasena.

Rahulikust maailma avastamisest saab igal hetkel liikuda väikese tegevuse juurde. Üks selline minimäng on Star Game, kus mängijad otsivad maailmas laiali paiknevaid tähti.

Tähti ei teki lõputult. Server hoiab nende arvu piiratud, et otsimine oleks huvitav ka siis, kui samas maailmas liigub korraga rohkem mängijaid.

Mängitav ka telefonis

LifeSimu on loodud PWA-na ehk veebirakendusena, mida saab kasutada ka telefonis.

Mängu alguses hoolitsevad splash screen ja preloader selle eest, et vajalikud mudelid, tekstuurid ja muud varad jõuaksid kohale enne maailma sisenemist. Hiljem aitab vahemällu salvestamine mängu kiiremini avada.

Puutejuhtimine võimaldab LifeSimu maailmas liikuda ka mobiilseadmega. Nii ei ole mäng seotud ainult arvuti, hiire ja klaviatuuriga.

Arenduspäevik Git-ajaloos

Git-ajalugu näitab hästi, kuidas LifeSimu on kasvanud. See ei ole lihtsalt nimekiri tehnilistest muudatustest, vaid arengulugu, kus uued kihid on aja jooksul üksteise peale ehitatud.

Alus
Tegelaste ujumisanimatsioonid ja multiplayer-sünkroniseerimise parandused. See oli esimene hetk, mil vesi hakkas mängus päriselt tunduma.

Elustik
Maailma lisati uued NPC-d ja teavitused. Saarestik muutus kohaks, kus ei liigu ainult mängija.

Tehisintellekt
Tomi AI esimesed sammud. Lihtsast liikumisest kasvas välja rajaleidmine, mis peab hakkama saama ka siis, kui maailmas on korraga mitu mängijat ja NPC-d.

Tegelaste valik
Lisati tegelaste valimise ekraan ning võimalus see arenduse või testimise ajaks välja lülitada.

Visuaal
Ookeani lained liikusid arvutamiselt rohkem graafikakaardi abil töötavaks lahenduseks. Lisati Alien-tegelane ning täiustati animatsioone.

Kogukond
Lisati reaalajas vestlussüsteem ning parandati kasutajaliidest ja mobiilseadmete juhtimist.

Peensus
Ujumissügavuse arvutamine muutus täpsemaks, lisati hai ning täpsustati maastiku ja vee all liikumise reegleid.

Praegu
Jälgimiskaamera ja ujumise käitumine on muutunud immersiivsemaks. Samuti on lisatud automaatse sisselogimise võimalus, mis muudab testimise kiiremaks.

Projekt, mis kasvab koos minuga

LifeSimu on alles algusjärgus. Plaanis on lisada saarestikku rohkem objekte, rohkem tegevusi ja minimänge nagu Star Game. Lisaks tahan katsetada veel mitmesuguste ideedega, mis muudaksid maailma elavamaks, mängulisemaks ja huvitavamaks.

Areng peab olema pidev. Iga uus tegelane, objekt, animatsioon või mängufunktsioon annab võimaluse midagi õppida ja edasi mõelda.

Koos mänguga arenen ka mina. Sellise maailma loomine vajab palju mõttetööd, katsetamist, probleemide lahendamist ja valmisolekut oma varasemaid ideid muuta. Just see teebki selle projekti minu jaoks huvitavaks.

LifeSimu ei ole ainult tehniline katsetus. See on kasvav maailm, kuhu jõuavad minu enda ideed, minu prototüüp, mu poja looming ning meie päris elu loomad.

See on maailm, mis kasvab samm-sammult sügavamale – sõna otseses mõttes.

Helge ja kvaliteetne 3D-koomiksistiilis illustratsioon rõõmsast ning naljaka välimusega noormehest, kes seisab väikese äärelinna maja ees. Taustal paistab moodne linnasiluett. Mehel on lühikesed tumedad juuksed, suured sinised silmad, veidi liialdatud näojooned, lai naeratus, väljas keel ja kerge habemetüügas. Tal on seljas punane T-särk ja sinised teksad. Ühe käega näitab ta rahumärki ning teine käsi toetub puusale.</p>
<p>Tema ümber hõljuvad punane süda, kollane täht ja pruun portfell, mis sümboliseerivad suhteid, saavutusi ja karjääri. Taevas on päikeseline ja sinine, näha on pehmeid pilvi ning värvilisi puid. Üldmulje on mänguline, rõõmus ja värvikas, nagu mobiilimängu ikoon või kaasaegne 3D-animatsioon. Pilt on paigutatud ümardatud nurkadega ruudukujulisse rakenduse ikooni kompositsiooni.

Proovi Sinagi mängu!

NB! Mänguseadme osas ei saa lubada, et see mäng igal arvutil/nutiseadmel ilma raskusteta jookseb, sest tegu on 3D-tehnoloogiaga.