Sähköisen töhrimisseinän paluu
Koodailin joskus aikanaan reaaliaikaisen töhrimisalustan eli Kanveesin, jossa 1000x1000 pikselin kankaalle voi käydä piirtelemässä haluamiaan taideteoksia muiden kanssa. Nyt Purnufikaation yhteydessä otin ja päivitin sen serveri- ja clienttikoodia, eli on aika töhriä Kanveesi 2.0. 
Oho, nyt on tullut kyllä kirjoitettua blogipostauksia vähän liikaakin. Täytynee pitää loppuvuosi taukoa...
Alunperin Kanveesi julkaistiin muistaakseni Mineskene- tms. foorumipostauksen yhteydessä "ihmiskokeena" vuonna 2019. Olin kasannut hienon Node+Socket.io-serverin ja kauniin jQuery-frontin jossa piirtelyt synkattiin reaaliajassa kaikille clienteille. Lisäksi palvelin piirsi myös itselleen samaa kuvaa ja tallenteli sitä välillä timelapseja ja uudelleenkäynnistyksiä varten.
Ja olihan siinä sitten työmaata, kun ihmiskoe alkoi kiinnostaa väkeä: milloin serveri kaatui vahingossa ja milloin tahallaan, kun joku tai jotkut halusivat häkkeröidä tiensä kohti raakoja piirtopaketteja, jotta alustalle voisi töhriä myös koneellisesti. Muutamia patcheja täytyi siis toteuttaa, ja tunnetusti Kanveesi-serveri potkiikin käyttäjän pihalle kera runollisen tai filosofisen lainauksen, jos kohtaa vääränlaisia paketteja...

Tein myös itse oman hacked client -toteutukseni joka toiminee edelleen, siinä mukana mm. funktiot bittikarttakuvien ja pikselitekstin piirtelyyn :)
Oheisilta videoilta voi käydä ihailemassa Kanveesin originaaleja töherryksiä ajalta kesältä 2019.
"Uusi" versio
Oikeastihan tässä "uudessa" versiossa ei ole kovin paljoa mitään uutta. Vanha toteutus koostui erillisestä PHP-JS-HTML-frontista ja Node+Socket.io-serveristä, uudessa versiossa heitin wanhat jäsät bundlautumaan Parcelilla typarista, mutta varsinainen toteutus on yhä purkkaista jQueryä. Backend on myös uudemmalla Node- ja Socket.io -versiolla varusteltu, ja tällä kertaa tarjoilee myös varsinaisen frontin.
Tämä kaikki reverseproxytaan nätisti ulkomaailmaan (aiemmin Node-serveri oli suoraan kiinni ulkomaailmassa, ja SSL-sertifikaattien jatkuva päivittelytarve oli syy sille miksi Kanveesi oli yleensä hajalla). Uusi toteutus ei siis ole kovin uusi, mutta ainakin se on hieman helpommin ylläpidettävissä!

Muut versiot?
Vuonna 2023 lähdin koodailemaan "infinite canvas" -versiota Kanveesista ja sain sen kutakuinkin kivasti toimimaan. En vaan jostain syystä koskaan viimeistellyt sitä (+ palvelintilan mystinen loppuminen saattaisi tapahtua kun joku keksii tekaista botin joka syö kaikki kuvatiilet...pitäisikö kuvatiilien varausta rajoittaa ajan mukaan, hmm?)

Vuonna 2020 tuli sitten into tehdä Terraria-henkinen "Kanveesi 2D", jossa siis voi liikkua kauniina "pelaajana" (mustana boksina) randomisti generoidussa maailmassa ja asetella sinne erilaisia pikselipalasia. Tämä on periaatteessa toimintakunnossa edelleen, mutta kärsii samoista ongelmista kuin Kanveesi itse, eli täytynee seuraavaksi herätellä Palikkaveesiserveri sitten eloon koomastaan ja heittää se myös reverseproxyn taakse...
Päivitys 19.5.2026: Heitin wanhan serverin simppelisti saman wanhan porttinsa taakse mutta proxyn taakse, eli SSL toimii nyt varsin kiltisti.
Tätä voit kokeilla osoitteessa https://foo.purnu.dy.fi/experiment/palikka/

No sitten vuonna 2022 oli ilmeisesti vielä tylsyyttä ilmassa, joten lähdin nakertelemaan kasaan myös vastaavaa 3D-palikkapelitoteutusta. Serveri, maailmageneraatio ja client toimivat kyllä jokseenkin ihan hienosti, mutta tästäkään en vielä koskaan päätynyt tekemään viimeistellympää versiota jota pääsisi vapaasti interwebsissä testailemaan. Ehkä joskus kun iskee seuraava prokrastinaatiovaihe? (gradunkirjoitusprosessi lähestyy, eli varmaan piakkoin...)


...että kattellaan ny sitte kaivaako allekirjoittanut näitä kaikkia viritelmiä laatikoiden pohjilta ylös vaiko ei :D
Kokeile itse
https://foo.purnu.dy.fi/kanveesi/

Kommentit
Ei vielä yhtään kommenttia!
Jätä kommentti
Kommentoidessasi ip-osoitteesi ja nimimerkkisi tallennetaan systeemiin.