Sähköisen töhrimisseinän paluu | purnukka

purnukka

Koodinsekaisia kirjoituksia virityksistä ja kokeiluista.

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...

Jotkut tuskailivat yrittäessään lähettää dataa serverille vielä vuosia myöhemmin...
Jotkut tuskailivat yrittäessään lähettää dataa serverille vielä vuosia myöhemmin...

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ä!

Käyttö_liittymä
Käyttö_liittymä

 

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?)

Kanveesin toistaiseksi julkaisematon jatkohanke
Kanveesin toistaiseksi julkaisematon jatkohanke

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/

Palikkaveesi eli 2D-pelimäinen töhrimisalusta
Palikkaveesi eli 2D-pelimäinen töhrimisalusta

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...)

Kanveesi3D eli "tee-se-itse-Minecraft"
Kanveesi3D eli "tee-se-itse-Minecraft"

Kehitysprosessin kulkua on seurattu jälleen Xenon Discordissa.
Kehitysprosessin kulkua on seurattu jälleen Xenon Discordissa.

...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.