Tässä kun on sairausloman ohessa tullut leikittyä peliohjelmoinnin kanssa niin minulla on fiilis, että yksi sen pirullisimpia haasteita on tilojen hallinta. Toki niitä on muitakin, mutta tuo on sellainen, joka nyrjäyttää omat aivoni tosi helposti.

Tavallisten sovellusten toiminta on usein verrattain lineaarista. Asia A käynnistää prosessin, jossa toteutuu asiat B, C, D, E ja F. Ne voivat suoriutua yhtä aikaa, mutta ison osan ajasta asioilla on alku ja selkeä loppu.

Peliohjelmointi ei ole lainkaan tällaista. Siinä sinulla on miljoona asiaa, jotka kaikki elävät omaa elämäänsä. Monilla asioilla ei ole alkua ja loppua. Ne ovat kaiken aikaa olemassa ja vaihtelevat tekemisiään ja toimintalogiikoitaan milloin mistäkin syystä. Eivätkä ne toimi eristyksissä, vaan asiat voivat reagoida toistensa tekemisiin, maailmassa tapahtuviin asioihin ja niin edelleen.

Tämä eri tiloissa olevien asioiden hallinta ja vastuun jakaminen saa ainakin minun pään ihan pyörälle. Teen yhden ratkaisun, ja kun peliin tulee uusi ominaisuus, tajuan, ettei vanha ratkaisu toimikaan ja joudun kirjoittamaan sen uusiksi. Tekeminen on jatkuvaa koodin refaktorointia ja uudelleen suunnittelua.

Toki minun kokemusta värittää kokemattomuus. Vaikka olen vääntänyt koodia vuosia, en ole peliohjelmoija. Pelien ongelmat ovat minulle ihan uusia ☺️

#ohjelmointi

@saaste Ite opin ohjelmoimaan pelikoodaamisen kautta niin itselle "ei pelien" ymmärtämiseen meni aikaa :D

Esim. peleissä "front- ja backend" on aika yhdessä integroituneita ja softapuolella ne on taas selkeästi erillään ja monesti jopa tehty eri kielillä.

@mika @saaste Toki riippuu ihan siitä miten tota haluaa lähestyä. Oma peli mitä oon duunaillut on C:llä toteutettu moottori ja simulaatiokerros, joka ekspoussaa Lua-API:n "fronttia" varten, et voin kirjoittaa kaiken käyttöliittymäkoodin Fennelillä ja kaiken pelilogiikan C:llä.

Varmaan vois enemmänkin ulkoistaa skriptaukselle halutessaan, mut toi käli oli just semmonen asia minkä halusin pitää täysin erillään ite pelistä.

Pystyn jopa ajamaan testejä pelisimulaatiota vasten ku se on erillään.