Tälle sivulle olen koonnut SpaceWar-projektin kehitysvaiheet: miten selainpohjainen yhden HTML-tiedoston proto kasvoi moderniksi client–server -arkkitehtuuriksi ja lopulta Unity-versioksi, joka pyörii kauniisti myös selaimessa.
Päätös jatkaa kehittämistä. Näyttötyön aiheeksi valikoitui pelin refaktorointi client-server -arkkitehtuuriin, mikä teoriassa mahdollistaisi myös moninpelin tulevaisuudessa.
10.06.2025
Projektin aloitus ja uudelleensuuntaus
Projekti käynnistyy. Alkuperäinen idea koko pelin kehittämisestä tarkentuu olemassaolevan SpaceWar-pelin refaktorointiin client-server-arkkitehtuuriin.
13.06.2025
Projektisuunnitelma hyväksytty
Huolella työstetty projektisuunnitelma saa hyväksynnän ja positiivista palautetta: “todella hyvin laadittu projektisuunnitelma”.
18.06.2025
Ensimmäinen kättely: Backend ja Frontend
Backend pystytetään MongoDB:llä ja Socket.IO:lla. Tietokanta, paikallinen palvelin ja selain saadaan onnistuneesti keskustelemaan keskenään. Alun haparoinnin jälkeen tämä oli valtava virstanpylväs.
19.06.2025
Peli herää eloon: Data-ohjattu renderöinti
Toinen valtava edistysaskel: frontend ei enää itse arvo pelimaailmaa, vaan piirtää sen täysin backend-palvelimelta saadun datan pohjalta. Peli näyttää jälleen tutulta.
20.06.2025
Kriittinen bugi korjattu ja mahdollistettu useampi samanaikainen peli-istunto
"Zombie-pelien" aiheuttama ongelma korjataan. Samalla otetaan käyttöön express-session, joka mahdollistaa usean erillisen pelin pyörittämisen samanaikaisesti.
23.06.2025
Suorituskyvyn vallankumous: N*M-ongelma ratkaistu
Tekoälyn avustuksella tunnistetaan ja korjataan massiivinen, piilevä suorituskykyongelma taistelulogiikassa. Laskentaoperaatioiden tarve vähenee yli 99%.
25.06.2025
Grafiikan optimointi: Instansointi pelastaa suorituskyvyn
Pelin takkuaminen suurilla yksikkömäärillä korjataan siirtymällä alusten ja rakenteiden renderöinnissä InstancedMesh-tekniikkaan, joka vähentää CPU-kuormaa dramaattisesti.
26.06.2025
Todellinen suorituskykysyöppö paljastuu ja korjataan
Suorituskykyongelmien todellinen syy paljastuu paitsi tarkkailemalla CPU-prosesseja, myös vahingoossa visuaalisesti: peli ei poistanut vanhoja kaivosindikaattoreita, mikä johti tuhansien näkymättömien objektien kertymiseen. Korjauksen jälkeen peli pyörii vakaasti.
28.06.2025
Refaktorointi valmis ja tavoitteet ylitetty
Kaikki alkuperäisen prototyypin ominaisuudet on siirretty uuteen arkkitehtuuriin. Lisäksi toteutetaan "nice to have" -ominaisuus Galactic Hub sekä palautetaan pelin alkuperäinen äänimaailma.
10.07.2025
Peli livenä internetissä!
Pelipalvelin pystytetään onnistuneesti Render.com-palveluun ja tätä testataan osana CV-sivustoa. Samalla alkaa mittava koodin dokumentointi JSDoc-kommentein.
15.07.2025
Elävä tarina: Dynaaminen tutoriaali ja neuvonantajat
Peliin rakennetaan toinen nice-to-have -ominaisuus: dynaaminen tarinankerrontajärjestelmä. Neuvonantajat kommentoivat aktiivisesti pelin tapahtumia ja pelaajan strategisia valintoja, mikä tekee maailmasta elävämmän.
17.07.2025
Julkaisu Itch.io:ssa
Peli julkaistaan onnistuneesti myös itch.io-alustalla. Tämä vaatii palvelimen CORS-asetusten säätämistä, jotta pelin eri osat voivat kommunikoida keskenään.
21.07.2025
Projekti valmis: Viimeistely ja laadunvarmistus
Projekti saatetaan päätökseen. Vaaditut Jest-yksikkötestit ajetaan onnistuneesti läpi ja näyttötyödokumentaatio viimeistellään analysoimalla suorituskykydataa live-palvelimelta.
syksy 2025 →
Seuraava askel: Unity
Refaktoroinnin jälkeen oli aika siirtää konsepti Unityyn.
1.8.2025
Unity-siirto
Koodi ja mekaniikat Unityyn (C#), projekti-setup ja resurssien tuonti. Koodin rakenne oli käynyt hyvin tutuksi kesän mittaan, mutta Unity ja C# olivat täysin uusia tuttavuuksia. Siirto aloitettiin kylmästi pala kerrallaan, välillä UI:ta kehittäen, välillä skripteihin syventyen.
Elokuu 2025
Siirto etenee päivä kerrallaan
Unityn haltuunotto kävi lopulta suhteellisen kivuttomasti. Prefabit, skriptit, shaderit ja materiaalit alkoivat hiljalleen käydä järkeen.
30.8.2025
WebGL pipeline & performanssi
Build-profiilit, selainoptimoinnit ja käyttöliittymän viimeistely.