Search Results for ‘Processing’

Katsaus vuoteen 2020

Sellainen oli 2020. Kuvittelin viime vuoden olleen jotenkin poikkeuksellisen raskas, mutta tähän loppuvaan verrattuna ei se sitä tainnut ollakaan. Koronavirus vaikutti tietysti melkein kaikkeen tänä vuonna, kuten varmasti muillakin, mutta ehkäpä aiheesta ei nyt jaksa jauhaa juuri nyt paljon enempää – muistelmia etäkoulusta kirjoittelin jo keväämmällä. Yleensähän nämä pandemiat ovat “siellä jossain” eivätkä kosketa lintukotoamme, mutta tämänkertainen tuli ihan kotiovelle asti.

Töitä ja tutkimusta

Aallossa ryhdyttiin etätöihin suunnilleen ensimmäisten joukossa keväällä, mistä seurasi yllätys ja toinenkin, kun lähiopetukseen suunnitellut kurssit piti pikaisesti siirtää verkkoon. Osa opetuksesta, kuten opinnäyteseminaari, teki digiloikan odottamattoman helposti, siinä missä studiokurssit olivat paljon kinkkisempi tapaus. Eipä juuri käy kateeksi syksyllä aloittaneita uusia opiskelijoita, jotka eivät ole välttämättä nähneet luokkakavereitaan fyysisesti ollenkaan – toisaalta jotkut sanoivat opintojensa sujuneen nyt jopa paremmin, kun kursseihin pystyi osallistumaan kotoa käsin.

Videopuheluihin ei ole valitettavasti oikein standardia, ja vaikka suurin osa omista duuneista on hoitunutkin Zoomilla, on taloudessa eri tarkoituksiin käytetty myös ainakin Teamsia, TeamWieweriä, Google Meetiä ja Facebook Messengeriä. Suurin osa toimii Linuxissakin hyvin, mutta toisinaan on tarvinnut kaivaa vanha MBP kaapista.

2019 kypsyi poikkeuksellisen mukava artikkelisato, joten tänä vuonna on ollut sitten vastaavasti hiljaisempaa. Tapani Joelssonin kanssa kirjoitettu ”Another visitor!” – kun puhuvat koneet tulivat kotiin taisi jäädä ainoaksi vertaisarvioiduksi julkaisuksi. Populaaripätkiä tuli sentään työstettyä Skrolliin tavallista enemmän, vaikka niistä ei paljon akateemista glooriaa kerrykään. Hartaasti kokoon kursittu WiderScreenin tietokonekulttuuriaiheinen erikoisnumerokin saatiin lopulta kunnialla pihalle.

Vuoden akateeminen kohokohta osui elokuulle, kun Turun yliopiston humanistinen tiedekunta myönsi allekirjoittaneelle digitaalisen kulttuurin dosentuurin. Juuri mihinkään se ei ole vielä ehtinyt vaikuttaa (eikä välttämättä vaikutakaan), mutta oli silti mukavaa saada jotain tunnustusta vuosien rehkimisestä. Samalla karistin henkisesti viimeisetkin pitkän jatko-opiskelulimbon tomut jaloistani.

Skenetyksiä

Ensi hätään tuntui siltä, että eipä tänäkään vuonna paljon mitään tullut tehtyä, mutta ei tilanne aivan niin synkeältä näytä lähemmässä tarkastelussa. Muutama PETSCII-kuva tuli jälleen väkästettyä joko kilpailuihin tai omaksi huviksi, ja pariin niistä olen jopa näin jälkikäteenkin ihan tyytyväinen. Pariin kertaan laitoin merkistön myös opetuskäyttöön, kun havainnekuvia oli nopeaa tehdä petskarina. Vastoin odotuksiani koodasin jopa yhden ruudun minimalistisen pikku Processing-demon (Naien) Vammala Partyille. Ensi vuonna täytyy luultavasti aktivoitua hieman enemmän, sillä Fit täyttää pyöreät 30 vuotta.

Pitkään ja hartaasti väsätyt Marq’s PETSCII Editor ja Pixel Polizei saivat molemmat ison päivityksen. Merkittävin sisäinen muutos oli loikka Processingin versiosta 2 versioon 3, mutta ujutin kaikenlaista muutakin pikku lisätoimintoa ja bugikorjausta mukaan, kuten vaikkapa paremmat tiedostovalitsimet Linuxille ja Macille. Polliisi on näistä kahdesta se sivuraiteelle joutunut projekti, jolla ei liene paljonkaan aktiivikäyttäjiä, siinä missä PETSCII-editorilla niitä on varmasti ainakin useita kymmeniä ulkomaita myöten.

Virustilanne vaikutti myös skeneen, ja niinpä vain katkesi ’94 alkanut Assembly-putkeni (jos tätä katkoa voi laskea), kun kesäassyt peruttiin. Vammala Party saatiin sentään pidettyä melko normaalisti. Synkkyyden keskellä valopilkkuna loisti läpi mennyt hakemus, jonka myötä demoskene lisättiin kansallisen elävän perinnön luetteloon, mahdollisesti jopa ensimmäisenä digitaalisena kulttuurina maailmassa. 2021 alussa saanemme kuulla, miten kävi saksalaisten hakemukselle.

Tietotekniikkaa

Isot konepäivitykset tuli tehtyä pitkälti viime vuonna, mutta toki viime aikoinakin on tullut räpellettyä tietotekniikan äärellä varsin ahkerasti (jo etätöidenkin takia). Edelleen fokus on ollut siellä tuoreemman tekniikan puolella tyyliin peesee-Raspi-verkkolaitteet, joten retrokokoelma on saanut enimmäkseen odottaa aikaa parempaa. Linux-osaamista on karttunut vapaaehtoisesti ja hieman pakollakin, että videoneuvottelut ym. on saanut pyörimään.

Alla on nyt varsin pelikelpoinen peesee, mutta itse pelaamiselle ei ole oikein riittänyt aikaa, eikä jonossa ole ollut järin montaa kuumottavaa teostakaan, joita olisi ollut pakko päästä hakkaamaan. Proton on ollut jälleen ystävä, ja sen avustuksella tuli tahkottua läpi ainakin näyttävä Gris ja viihdyttävä Creaks. Inside taisi tulla pelattua taas ainakin kolme kertaa läpi pikku palasissa, mutta mihinkään speedrun-yritykseen en ole ainakaan vielä uskaltautunut. Steam-kirjastossani olisi varmaan toistasataa täysin kokeilematonta tekelettä – koskahan noidenkin äärelle ehtinee?

Shakkia

Korona puraisi shakkikerhoja pahasti, ja suuri(n) osa tämän vuoden kilpailuista on jouduttu peruuttamaan. Parit nappulaturnaukset sentään ehdittiin koluta ja puistoshakin kovatasoinen HM. Linjoilla on toki voinut pelata yllin kyllin, mutta hyppy takaisin oikealle laudalle ei ole aina ihan helppo, kun tilanteita hahmottaa oikeilla pelivälineillä heikommin. Nappuloita ja lautoja tuli kokoelmaan vain muutamat uudet, mutta sentään onnistuin parin vuoden etsimisen jälkeen lopulta hankkimaan aidot Tannit, joita on tehty Vammalassa.

Uskaltauduin helmikuussa kokeilemaan pikashakkia Lichessissä, vaikka olinkin jo ennalta tuominnut sen itselleni liian kiivastahtiseksi ja mahdottomaksi. Ennustukset näyttivät käyvän toteen, kun alkuunsa tuli takkiin melkein järjestään. Kaikkeen tottuu ja nyt joulukuun lopussa vertailulukuni on noussut pohjamudista jo melkein 500 pistettä, eikä 3+2 tunnu enää ollenkaan niin hätäiseltä huiskimiselta kuin aluksi. Noin kaikkiaan alan huomata omassa pelaamisessani näin kolmen vuoden jälkeen jotain tiettyä rutinoitumista ja kokemusta, kun kuvioita alkaa tunnistaa helpommin ja törkeiden munausten määrä on hiljalleen pienentynyt.

Leffoja ja sarjoja

Taloyhtiö laittoi kerhohuoneen oven säppiin – tämäkin taas koronan vuoksi – joten vuoden molemmat länkkärimaratonit oli harmillisesti pakko perua. Toivottavasti edes ensi keväänä tärppää, koska pitäisi jo päästä näkemään sinne jyvitetty The Ballad of Buster Scruggs. Noin muuten olen jatkanut länkkäreiden kuluttamista, mutta selvästi enemmän vanhoja laatufilkkoja uudelleen katsellen kuin aiemmin näkemätöntä bulkkia haalien. Eräänä aluevaltauksena oli sentään ehta 3D-länkkäri, vaikka kokemusta ei voi kovin nautinnolliseksi luonnehtiakaan.

Yhtenä kartoitusprojektina katsoin läpi puukkojunkkarileffat, missä ei juuri aikaa vierähtänyt “genren” niukkuuden takia. Täysmittaisille filkoille on usein vaikea löytää aikaa, kun taas sarjoja on helpompi koluta, joten ysärin vanha suosikki Kyllä Jeeves hoitaa sai uuden kierroksen. Muuten työn alla on ollut ainakin Star Trekiä, useampi kausi Merilinjaa sekä aivan hiljattain korealaista zombidraamaa Kingdom.

Muita puuhia

JavaScript on kökköyksistään huolimatta nykyään tärkeä työkalu, joten opettelin sitä sen verran kuin oli tarpeen omien interaktiivisten kikkareiden saamiseksi verkkoon. Tyypitettyjen perinteisten kielten suunnasta tulevalta “kaikki käy” -mentaliteetti ei irtoa noin vain, mutta on sitä kaikenlaista muutakin tullut neppailtua, joten miksipä ei tuota. Mihinkään loputtomaan frameworkkien suohon en ajatellut sukeltaa, vaan pitäydyn näillä näkymin tutunoloisessa P5.js:ssä, jota voi kirjoittaa vaikkapa Processingin editorilla suoraan. Pistin linjoille pari ensimmäistä kokeilua: Frozen ja Jsrokit.

Vuoteen on väsähtänyttä huumoriaan suonut IL-kroppailu, jossa yhdistetään jonkin iltiksen artikkelin otsikko ja seuraavan artikkelin kuva koomiseksi hybridiksi. Näitä on tullut väkästeltyä jo useita satoja ja joukossa on jokunen helmikin. Olen postaillut silloin tällöin best of -kokkareita Feseen, joten alla olevassa kollaasissa on vain yksi näytteenä.

Iskän vuosikatsaus ei voi tietenkään olla kattava, jos muksuista ei mainita mitään. Ihan hyvin on onneksi mennyt: poitsu selvisi kotikoulusta ilman sanottavia ongelmia (itsestäni en ole niin varma) ja tyllerö on kasvanut jo niin, että vuoden päästä odottaa eskari. Rakkaiden sisarusten rähinä tuntuu loputtomalta, mutta koitan lohduttaa hermojani, että tämä on vain ohimenevä vaihe… Koronaa ei ole perheeseen toistaiseksi tärpännyt, ja tämän vuoden 2020 ikimuistoisen ilmiön sivuutammekin varsin mieluusti.

Add comment December 31st, 2020

3D-länkkärihuumaa

3D-länkkäreitä ei ole tehty paljoa ja niiden vähienkin saatavuus on surkean heikkoa – 2D-versioita samoista leffoista toki löytää helpostikin. Tunnetuin pläjäys lienee Wäynän tähdittämä Hondo (1953), jonka lisäksi ainakin André De Toth ohjasi Randolph Scott -leffat The Stranger Wore a Gun (1953) ja The Bounty Hunter (1954). Nämä kaikki osuvat sinne fiftarin 3D-aallon ytimeen.

Terppa sai hankittua käsiinsä 3D-DVD:nä julkaistun spagettipätkän Comin’ at Ya! (1981), jota voi pitää melkoisena harvinaisuutena, koska kotikatsomoihin ei stereoskooppisia länkkäreitä ole koskaan juuri myyty. Pääosiin värvättiin ihan nimiä, Tony Anthony sekä Victoria Abril, ja kuvaushommat hoidettiin monen muun italowesternin tapaan Espanjan Almeríassa.

En oikein tiedä, kuinka “standardi” formaatti 3D-DVD on ja millaiset laitteet tarkalleen vaadittaisiin sen suoraan katsomiseen. Sopiva soitin, telkkari ja sulkijalasit varmaankin olisivat tarpeen, mutta sellaisia ei taloudesta – eikä varmaan kovin monesta muustakaan taloudesta – löydy, joten piti keksiä jokin muu katselukeino. Vasemman ja oikean silmän kuva on tallennettu vuororiveille, joten sinältään elokuva näyttää melkoiselta viivasössöltä:

Vaude, kolmedeetä!

Ei hyvä. Video on tallennettu 720×480-resolla, joten yhdelle silmälle jää 720×240 pikseliä, josta voi vielä vähentää yllä näkyvät mustat reunukset, jolloin todellista kuvaa jää enää jäljelle silmää kohti noin 720×160. Ei liene siis suuri yllätys, että laatu on varsin möhmöä. Ensimmäisenä askeleena oli dumpata yksittäiset framet png-tiedostoiksi, jonka jälkeen oma Processing-koodinpätkä erotteli vasemman ja oikean silmän viivat erillisiksi kuvapareikseen.

Köyhän miehen helppona ratkaisuna olisi sinipunalaseilla katseltava anaglyfistereo, jollaisen tekaisinkin kokeeksi. “Hieman” ankeaksi menee mustavalkoisena, joten en ruvennut katsomaan filkkaa siinä muodossaan, vaikka sopivia laseja olikin plakkarissa. Ainakin sain tuolla kokeilulla varmistettua, että stereokuvassa on mitään järkeä. Järkevämpi muoto on kuitenkin laittaa vasen ja oikea kuva vierekkäin (side-by-side stereo), jota voisi tiirailla vaikkapa VR-silmikkonäytöllä, kuten HTC Vivellä tai Oculus Riftillä.

Pankkiryöstö (vasen) ja pankkiryöstö (oikea).

VR-härpättimiäkään ei meiltä löydy, joten projekti jäi hyllylle siihen asti, kunnes Terppa bongasi kirppikseltä halvan VR Shineconin, johon voi sovitella kännykän sisään. Viime kädessä laite on lähinnä hiukan tuotteistettu Google Cardboard. Oma tuore puhelimeni on liian iso suoraan käytettäväksi, joten edessä oli vielä yksi tappelu ffmpegin kanssa, kun videoon piti lisätä sivuille surureunaa kuvan kaventamiseksi. Nämä lukuisat konversiokierrokset eivät jo valmiiksi rupuista kuvanlaatua juuri parantaneet.

I’ve seen things you people wouldn’t believe.

Kaiken tämän vääntämisen jälkeen – hieman yllättäin – homma jopa toimii. Koko leffaa en ole vielä ehtinyt katsoa, mutta sieltä täältä poimituissa pätkissä syvyysefekti pelittää kohtuullisen hyvin, vaikkakaan ei ihan aina (stereopareissa on välillä esim. liikaa pystysuuntaista eroa). Puhtaasti elokuvana Comin’ at Ya! edustaa valitettavasti normaalia, tuskastuttavaa spagusekoilua, joten ihan helppo kokemus ei ole tiedossa. Katsojalle on haluttu tarjoilla 3D-effuja koko rahalla, kuten jo filkan nimikin vihjaa, joten kameraa kohti osoitellaan asetta ja lapioidaan hidastettuna kaikenlaista skeidaa enemmän kuin olisi tarinankerronnan puolesta tarpeen. Mutta silti, 3D-länkkäri!

edit: Nyt on koko filkka nähty. 3D-vaikutelma hajosi aika usein ja tuntui siltä, että silmäväliä piti tviikata kohtauksesta toiseen. Juoni oli odotetusti klisekasa, ja monet kohtaukset olivat tarpeettoman pitkitettyjä; usein ihan siksi, että saatiin jotain roinaa heiluteltua stereokameran edessä. Shinecon on näyttölaitteena hieman tuskallinen, sillä härpättimen kehys painaa nenänselkää, vaikka lisäsin väliin jo pehmustettakin. Noh, tulipa nähtyä ja tämä lievä simulaattorisairauskin kohta haihtunee…

Add comment December 29th, 2020

Vanha koira ja P5.js

En ole koskaan erityisemmin kiinnostunut JavaScriptistä — perinteisten tyypitettyjen kielten suunnasta tulevalle “kaikki käy” -asenne ei tule luonnostaan, minkä lisäksi kaikenlaisten kirjastojen ja alustojen kirjo on jokseenkin masentava. Samaan aikaan on toki pakko myöntää, että JS on nykypäivää ja kehittynyt hurjasti takavuosien turhista mouseover-ajoista. Aina välillä olisi myös ihan kätevää saada oma Processing-kikkare webaselaimen kautta muiden nähtäväksi, kun Java-applettien aika on auttamattomasti ohi.

Olen käyttänyt sillanrakennukseen aiemmin Processing.js:ää, joka kuitenkin lakkasi jossain vaiheessa päivittymästä eikä ollut muutenkaan koskaan täysin ongelmaton. Pienet kikkarat siirtyivät kyllä, mutta vähänkin mutkikkaamman pätkän kanssa tuli nopeasti seinä vastaan. Tuoreempaa tulokulmaa edustaa välimallin ratkaisu P5.js, joka on lähinnä kirjasto Processingin käteviä funktioita JS:lle. P5.js on sikäli virallinen ja tunnustettu, että sitä voi kirjoitella suoraan Processingin editorilla, kunhan vaan asentaa tarvitun laajennuksen. Sketsiä ajettaessa lopputulos menee suoraan tabiksi oletusselaimeen, eikä ympärille tarvitse onneksi räpeltää itse mitään HTML/CSS-purkkaa.

Ensimmäisenä yritelmänä oli joulun aikaan sopiva piirto-ohjelma, joka peilaa hiirellä piirrettävän viivan kahteentoista kertaan symmetrisesti. Härpättimellä saa helposti aikaan etenkin lumihiutaleita (sekä pitsipöytäliinoja):

Lumi on jo peittänyt canvasin webasessa.

Perustutoriaaleja googlaamalla pääsi nopeasti alkuun, eikä kokeiluun paljoa aikaa seonnut. Melko varmasti joitakin asioita tuli tehtyä tarpeettoman kierosti, mutta pluralismi näyttää olevan JS:lle luonteenomaista. Saman asian voi tehdä monella eri tavalla ja hyvin kyseenalainenkin “ratkaisu” saattaa vahingossa toimia. Mieluummin tietysti opettelisin alusta saakka niitä hyviä tapoja. Muuttujien näkyvyysalue ja esittely tuntuu edelleen hiukan randomilta: perinteinen var-tapa on oikeastaan ihan suoranaisen huono, mutta nykyään on sentään tarjolla järkevämpi let.

Sormiharjoituksena tiivistin vielä koodin mahdollisimman lyhyeksi, missä puuhassa tuli opittua sitä sun tätä uutta jekkua. Luettavuus on edelleen yllättävän hyvä, joten en varmaankaan osannut vielä käyttää kaikkia mahdollisia optimointikonsteja: frozen3.js. Pätkää voisi toki vielä merkittävästi lyhentää toiminnallisuutta heikentämällä — vaikkapa kumituksen poistolla ja värejä rumentamalla — mutta moinen kikkailu ei ole järin kiinnostavaa. Tulipa nyt tätäkin kokeiltua ja tulevaisuudessa ehkä lisääkin.

Mikään pakkohan ei ole piirtää hiutaleita.

Add comment December 16th, 2020

Poliisi pamputtaa taas

Värkkäilin 2016 retrograafikoille Pixel Polizein, joka on tarkoitettu pikemminkin toisaalla piirrettyjen kuvien tarkastamiseen kuin yleiseen formaatista toiseen konvertointiin ja ditherointiin (vaikka sillä formaattikonversioita kohtuudella pystyykin tekemään). Siinä missä tekstigraffaeditorilleni löytyi nopeasti käyttäjäkunta, jäi Poliisi hieman marginaaliin, kenties siksi, että samat asiat sai tehtyä muillakin ohjelmilla.

Alkuinnostuksen voimin jaksoin väsätä tukea aika monelle plattikselle ja moodille, mutta lopulta se polttoaine oli käytetty ja 2017 tein enää pieniä korjauksia. Sen jälkeen tuli yli kolmen vuoden tauko, ja kuvittelin jo koko projektin tulleen tiensä päähän – näinhän on tunnetusti käynyt monille muillekin innolla aloitetuille graffatyökaluille. Läsähdyksestä huolimatta prokkis toimi kuitenkin hyvänä olio-ohjelmointi- ja ohjelmistosuunnitteluharjoituksena: kokonaisrakenne on kohtuullisen selkeä, uusia koneita on helppo lisätä eikä missään ole kohtuuttoman mutkikkaita söheröitä, joihin en uskaltaisi enää itsekään koskea. Samaa ei voi valitettavasti sanoa PETSCII-työkalusta, joka mutatoitui pikaisen yhden illan kokeilun ympärille.

Innostuin päivittämään petskariedikkaa jälleen tänä syksynä sieltä täältä, etenkin kun Processing 2:ssa jumittamisesta alkoi tulla todellisia ongelmia. Lopetin siis vetkuttelun ja kohtuullisen pienin muutoksin sain siirryttyä Processing 3:een. Sitä myötä muistin myös Poliisin ja hyvin pikaisesti modernisoin senkin. Kopypastesin samalla mukaan uudistettua UI-koodia toisesta projektista, mitä myötä käyttöliittymä hieman koheni. Jo pelkästä P3:een siirtymisestä koitui jotain etuja korjattujen tiedostopolkujen ja uudemmilla JRE:n versioilla toimimisen muodossa.

Samaltahan se näyttää.

P3:ssa ei voi enää pompotella piirtäessä grafiikan pehmennystä pois smooth/noSmooth-funktioilla, joten oli pakko valita pikselien erottuvuuden vuoksi pehmentämätön graffa. Asiasta ei onneksi sanottavaa harmia koitunut muuten kuin hieman rösöisempien painonappien muodossa. Eri zuumitasoja kokeillessa huomasin käyttöliittymätekstien menevän joskus kuvan päälle, joten tulipa korjattua sekin pitkäikäinen bugi samalla. Katsotaan nyt, mitä teen seuraavaksi: retrokoneita ja niiden graffamoodeja olisi loputtomasti, mutta energiaa taas ei ole loputtomasti, joten jollei jostain paljastu suurta lojaalia käyttäjäkuntaa, niin taidan tyytyä lähinnä korjailemaan pikku bugeja.

Add comment December 1st, 2020

Mint 20, minulleko? Ei kiitos.

Jälleen kerran tuli työn alle uusi läppäriprojekti, kun kierrosta poistuneesta Dell Latitude E7270:stä piti tekemän itselleni liikkuvaa työasemaa. Linux Minttiä koneeseen toki, mutta päätin saman tien päivittää tuoreimpaan eli versioon 20, josta ei ollut vielä muuten kokemusta. Muutaman päivän kokemusten jälkeen tunnustin tosiasiat, vedin koneen sileäksi ja asensin tilalle hyväksi todetun 19.3:n. Jaa että miksikö?

  • Javan JOGL ja sitä myötä Processingin rautakiihdytetty 2D sekä 3D eivät toimi.
  • Varmaankin edelliseen liittyen OpenGL-ohjelmien kanssa on vähän kaikenlaista muutakin epämääräistä pykimistä, kuten mustia ruutuja.
  • Viimeisimmän päivityksen myötä hajosi myös Steam, mikä oli aika lailla viimeinen pisara. Veikkaan näiden kyseisten kompurointien johtuvan epäonnisesta Mesan, X11:n tai kernelin versiosta, mutta motivaatio syvällisempään selvittelyyn puuttuu.
  • Chromium on heivattu paketinhallinnasta ja tilalle tuputetaan Firefoxia. Tämä ei ole sen tyylistä valinnanvapautta, jota Linux-käytöltäni haen.
  • Kaikenlaisia legacy-kirjastoja on niin ikään hävitetty pakettitarjonnasta, mikä on tavallaan ymmärrettävää, mutta samalla rikkoo väistämättä joidenkin vanhojen ohjelmien yhteensopivuuden.

Tahdon uskoa, että nämä ovat tuoreen version lastentauteja, jotka ajan oloon ainakin osittain ratkotaan (paitsi kenties ideologiselta haiskahtava Chromium-kupru, jonka sentään sai ohitettua PPA:n avulla). Juuri tällä hetkellä tilanne on kuitenkin se, että tarvitsen läppärin oikeaan käyttöön enkä lelutukseen, joten yritetäänpä uudestaan joskus toiste – eikä tuotantokoneella.

Add comment September 23rd, 2020

Vammala Party 2020

Vammala Party – jolla on taas kotisivutkin – saapui vääjäämättä, mutta koronatilanteen vuoksi osallistuminen oli tällä kertaa mahdollista myös streamin välityksellä. Entryjä tuli taas tehtyä muutamaan kompoon enemmän ja vähemmän onnistuneesti: hutaistut tuplainvideot menestyivät mainiosti, samoin kuin satunnainen kännykkäkuva, siinä missä omalaatuinen Processing-demo ja teknisesti edistynyt petskari jäivät kompon hännille. Levykkeenheitossa jäin niukasti toiseksi, mikä kertonee ainakin vuodesta toiseen tasaisesta tuloskunnosta 🙂

Tuplaimet:

edit: Päivitin viimevuotisen tuplainentryn paremmalle tuplaimelle: Slapsticksucker

edit2: Demon voi nyt katsoa videonakin.

Add comment July 19th, 2020

Vuosikatsaus 2019

Olipa siinäkin taas vuosi. Päällimmäisenä mieleen ovat jääneet monenlaiset velvoitteet, kahden työn välillä pomppiminen sekä lähes krooniseksi kääntyvä uupumus. Muuttaminen on aina raskasta puuhaa, ja vaikka vaihdoimme vain kämppää samassa talossa, niin melkoinen huhkiminen siihenkin tarvittiin. Ei vuosi toki mitään pelkkää kurjuutta ollut: muksuista on alati iloa – jos sitten lisästressiäkin – ja tutkimuksen saralla monenlaista tuli valmiiksi. Harrastuksille on jäänyt aikaa vaihtelevasti, mutta näistä kaikista tarkemmin sitten omissa kohdissaan.

Töiden paiskintaa

Kahden vuoden puolipäiväinen postdoccini pelikulttuurien tutkimuksen akatemiahankkeessa tuli juuri loppuunsa, joten nyt on palattava täysipäiväisesti opetushommiin Aallossa. En toki ole lopettamassa tutkimuksen tekemistä mihinkään ja pysyn hankkeessa roikkumassa edelleen jollain nimikkeellä, vaikka palkka lakkaakin juoksemasta. Ajan jakaminen kahden työpaikan välillä ei ole ollut mitenkään helppoa, ja opetustehtävien pakottavan luonteen vuoksi tutkimus on usein joutunut väistämään. 2018 oli aika kuiva julkaisujen suhteen, mutta viime vuonna pitkään limbossa roikkuneita papruja tuli pihalle peräti oikein mukavasti. Tässä näitä tärkeimpiä:

Olen laiska kirjoittelemaan mitään yksinäni, joten suurin osa on yhteisjulkaisuja muiden kanssa. Musiikissa julkaistun träkkeripläjäyksen tein kuitenkin ihan peräti itse. Yksin kirjoittamisessa on joitakin selviä etuja, kun muutoksia voi tehdä nopeasti, eikä erilaisia tyylejä tarvi sovitella yhteen. Toisaalta motivaatiota on vaikeampi pitää yllä, kun kaikesta on vastuussa lähinnä itselleen.

Skenepuuhat

Tämä puoli oli jälleen hieman paitsiossa, mutta eipä sentään kokonaan. Suurin osa skenetyksestäni keskittyi jälleen PETSCII-grafiikan ympärille muodossa tai toisessa: sain aikaiseksi jokusen kuvan ja pitkästä aikaa myös entistä ehomman version editoristani. Samoille “markkinoille” tuntuu olevan jo kovasti tunkua, mutta ainakin toistaiseksi näkisin, että omassa kikkaleessani on sujuvin työnkulku, kunhan vaan jaksaa opetella niitä pikanäppäimiä. Ainoa varsinainen koodaamani demo oli Vammala Partyille Processingilla väsätty Machine Make Machine, jota ei tosin sen virallisemmin julkaistu.

Hieman meta-skenetyksen puolelle menee vuoden toinen merkkipaalu, demoskenen hakemus kotimaiseen elävän kulttuuriperinnön luetteloon. Suomen hanke on osa isompaa kokonaisuutta, jonka tavoitteena on saada demoskene UNESCO:n aineettoman kulttuuriperinnön listalle. Oman osuuteni työryhmässä piti alkujaan olla pieni, mutta lopulta päädyin kirjoittamaan lähes koko hakemuksen ja hankkimaan sille tukijatkin. Katsotaan, miten käy!

Shakkivuosi

Innostus ja omat kyvyt ovat aaltoilleet stressitason mukaan, mutta shakkia tuli harjoiteltua ja pelattua jälleen verrattain ahkerasti. Osallistuin laskujeni mukaan ainakin neljään viralliseen kilpailuun ja päälle vielä puistoshakin Helsingin mestaruuskisoihin. Mitään sanottavaa menestystä ei edelleenkään herunut, mutta vahvuuslukuni (Selo) lipsahti sentään 1400:n päälle ja pari kertaa voitin jopa selvästi vahvempia pelaajia. Nurkissa alkaa olla jo sen verran paljon välineistöä, että koitan hillitä enimpiä hankintoja – toki perheeseen silti ilmaantui taas muutamat uudet napit sekä laudat, ja vissiin pari shakkikelloakin.

Tärkeämmässä roolissa olen joka tapauksessa ollut perheen varsinaisen lahjakkuuden huoltajana. Poitsu kuskasi tänä vuonna kotiin peräti kolme SM-mitalia, joista viimeinen oli se pitkään odotettu kulta koululaisten SM-kisoista Espoosta. Lisäksi pikashakista hopeaa keväällä ja nuorten SM:istä pronssia. Näiden ansiosta aukesi samalla mahdollisuus osallistua kansainvälisiin kisoihin, joihin ei vielä kuitenkaan pystytty repeämään aikataulujen takia. Vuosi loppui vielä mukavasti pääkaupunkiseudun tokaluokkalaisten jaettuun koululaismestaruuteen. 2020 tulee olemaan jälleen se vaikeampi joka toinen vuosi, kun samassa sarjassa ovat vastassa vuotta vanhemmat pelaajat.

Koneiden koppulointia ja hieman käyttöäkin

Huomattavan suuri osa vapaa-ajasta on seonnut tietokoneiden ja niiden ohjelmien säätämiseen. Tällä erää ei niinkään retroraudan äärellä kuten yleensä, vaan pikemminkin kohtuullisen tuoreiden PC-koneiden. Satunnaisesta päähänpistosta keväällä alkanut koneprojekti kasvoi lumipallon lailla, ja lopulta kaikki perheen käyttökoneet menivät vaihtoon. Osa virittelystä on ollut hieman tuskallista (ja kallista) kantapään kautta opettelua, mutta suurelta osin ihan hauskaakin, ja tunnen nyt olevani paremmin kartalla muisteista, näyttiksistä, prosuista ja muista nykytekniikan ihmeistä kuin pitkään aikaan.

Käytettyjen bisneskoneiden kunnostus ja myynti nousi 2019 entistä näkyvämmäksi kotimaisen tietoteollisuuden haaraksi, ja samoista markkinoista kamppailevat jo varmaankin kymmenet yrittelijät; katsotaan nyt sitten, alkavatko jossain vaiheessa pudotuspelit. HP:n raatoja meillekin hankittiin edullisuuden ja luotettavuuden nimissä, vaikka näin jälkiviisaana olisin ehkä tehnyt toisin, sillä merkkikoneiden laajennettavuus on vähän niin ja näin.

Alati kehittyvä Proton osoittautui isoksi jutuksi Linux-pelaajalle, kun ennen hankalan tunkkauksen takana olleet tuhannet Windows-pelit tulivat helposti saataville Steamin kautta. Vuoden merkittävimpiä kokemuksia olivat etenkin Inside sekä joskus ammoin hankkimani Tales of Monkey Island -sarja. Samalla vauhdilla rupesin hakkaamaan läpi muitakin Mankeja, eikä jäljellä ole enää kuin Escape, jonka karu 3D-grafiikka ja etenkin kankea ohjaus ovat toistaiseksi onnistuneet viivyttämään maaliin pääsyä.

Leffat: sitä sun tätä

Shakki- ja lännenelokuvien vahtaaminen on jatkunut yhä, tosin aiempaan verrattuna jokseenkin säästöliekillä. Näistä saattaa taas joskus päätyä jotain julkaisuksi asti, kunhan sopiva tilaisuus tarjoutuu. Noin muuten ruudulla on pyörinyt jälleen paljon scifiä ja ihan vuoden loppua kohti hieman pukudraamaakin (Ylpeys ja ennakkoluulo -BD on tulossa postissa). Uusien sisältöjen haalimisen sijasta olen palaillut jälleen myös vanhojen klassikoiden äärelle: Alien toimi edelleen kuin häkä, vaikka Scottin myöhemmät yritelmät kuinka hyvänsä ovatkin yrittäneet paskoa sarjan maineen 🙂

Länkkärivuoden parhaita aiemmin näkemättömiä teoksia oli tuoreehko The Sisters Brothers. Pitkään odottanut The Ballad of Buster Scruggs pitää nähdä viimeistään tänä vuonna – sopiva tilaisuus voisi olla vaikkapa kevään länkkärimaraton. Maratonit pyörivät vanhaan malliinsa ja katsojamäärä oli sikäli korkea, että eiköhän tuokin perinne tule hengissä pidettyä. Scifin puolella Aniara oli vaikuttavan kyyninen kuvaus ihmismielestä, ja jostain syystä aikanaan täysin ohi mennyt Moon sekin vuoden parhaita kokemuksia. Eräänä sivujuonteena katsastin vielä rillumarei-elokuvat.

Semmosta. 2020 pitää yrittää huolehtia hieman paremmin niin fyysisestä kuin psyykkisestäkin terveydestä – enemmän lepoa, jos vain suinkin mahdollista ja vähemmän stressaavaa silppua. Parempaa vuotta ja jaksamista kaikille muillekin ryytyneille!

Add comment January 1st, 2020

Vammala Partyiltä palatessa

Viikonloppuna pidettiin taas Vammala Partyt – Ikaalisissa. Ohessa omia kilpailutuotoksiani sekä Emilin PETSCII-kuva (Monster). Ajettavassa muodossa CSDb:n partysivulla. Menestystä ei kompoissa irronnut, lukuun ottamatta YouTube-mashuppiani Slapsticksucker. Processingilla väkästettyä Demoa (Machine Make Machine) tuskin julkaistaan tuossa muodossaan sen virallisemmin, mutta itse effu nähnee vielä käyttöä joskus.

Add comment July 28th, 2019

Pixel Polizei

ppolizei-msx ppolizei-plus4 ppolizei

“Systeemin vartija se poliisin on työ / Poliisi hippejä pampulla lyö”

News

  • 22.1.2021: Koala bg color wasn’t correctly exported, but perhaps now.
  • 6.12.2020: Another little fix: removed the useless exit nag dialog, as we’re not doing any real editing here. Some minor layout fixes to the platform selector.
  • 1.12.2020: A quick hotfix to deal with blurry pixels when zooming. Platform names better visible in the initial selector. Binary updated too.
  • 1.12.2020: After a break of three years, a new binary release with the following goodies:
    • The source is now Processing 3 compatible, and thus the program will work better with recent Java versions
    • New AWT-based fileselector on Linux and Mac, should be much better (override with the AWTSELECTOR setting)
    • More native UI look on Linux and Windows for Java dialogs
    • Improved platform selector window
    • Added a nag dialog when trying to close the window
    • Better layout on zoomlevels >2
    • More robust preferences handling, Macs should find it better now too
  • 1.12.2020: You thought Polizei was dead, and so did I. I’ve started migrating the source to be Processing 3 compatible and thus more futureproof.
  • 8.7.2017: What, updates? Yes! Fixed BG colors should work now with Plus/4 multicolor. Thanks to Ptoing for the bug report. In addition, the latest source-only features are now part of the binary distribution.
  • 6.5.2016: Source-only: You can set your own error color with ERRORCOLOR in prefs.txt
  • 31.5.2016: Source-only: Loading transparent images doesn’t create a mess anymore. Fix kindly submitted by Dr. TerroZ.

What?

Pixel Polizei is a tool for the retro/scene/retroscene artist. It lets you automatically check whether an image conforms to the color limits of a particular oldschool platform and save the result in certain native formats. The underlying idea is that you can use whatever paint program you happen to prefer for creating the images and observe – almost real-time – if you’ve made a mistake somewhere. One more fundamental bit is that the tool is multiplatform unlike many others.

Pixel Polizei is not a paint program or a generic image format converter, even though the aim is to implement at least the most typical file types for the supported platforms. Neither is it meant to be used as a converter for random family photos. You can use it for that purpose too, but the end results won’t be as good as with dedicated tools. For converting various old formats to modern images check out the Recoil project.

Usage

There’s not much to it: load an image, check whether it’s ok and save it in another format. In the case of errors you can either fix them in your favorite paint program and retry or force the colors to comply. When a piccy is loaded it is automatically converted to the native colorset without dithering, so do that kind of magic elsewhere if needed. Furthermore, remove any borders that you might have or the image will be scaled incorrectly.

If the loaded png or gif is not of the native resolution, it will be down- or upscaled as necessary, which might or might not produce the desired result. Therefore it’s generally better to do the scaling elsewhere. C-64 multicolor and CPC mode 0 have very flat pixels, so drawing a 320×200 image will probably be easier; every second column will just be discarded.

Checking and forcing can be done automatically. In that case Polizei works according to its name and constantly polls whether you’ve saved the file anew. If there is an updated version, it’s loaded and checked automatically. This way you can quickly find and fix color clashes – keep the Polizei window always visible on another screen or in some corner.

The zoom toggle lets you look at the image closer, and a grid is available for you as well to better see the character block locations. If the platform has a selectable border color, just click on the color selector.

Check out the “palettes” directory to find the exact colors used on each platform. Drawing with those colors ensures that there’s no complications when importing the image.

Keyboard shortcuts

  • c – check
  • f – force
  • g – grid on/off
  • r – revert
  • z – zoom on/off

In some modes you need to press shift when clicking the color selector to set the background color.

Settings

Some settings can be controlled through prefs.txt which should reside in the same directory as the program itself. The following options can be used:

  • ZOOM=x where x is 1 or more. Note that with ZOOM=1 pixels are never stretched to mimick a real aspect ratio. The larger the value the slower it gets. This is all about UI zooming, not the zoom function of Polizei.
  • GRID=x, set to 1 to show the grid when starting the program.
  • PATH=x where x is the absolute path of the directory where your images can be found. Leave blank to go with the default. Do not use quotation marks.
  • ASPECT=x, which can be one of PAL, NTSC or SQUARE. Used for stretching the pixels like the real machine would. Not relevant on all platforms.
  • AWTSELECTOR=x, force the use of the new AWT-based fileselector (1) or use the old Swing one (0). Leave empty to use the default.

Supported Platforms

Next follows a list of the supported machines, graphics modes and file formats, coupled with platform-specific quirks (if any). New file formats and machines will most likely be added later.

Amstrad CPC

The CPC is an exceptional 8-bit as you don’t need to care about color clashes: any pixel can be of any color (16 colors in mode 0 and 4 in mode 1). It also has a palette of 27 jolly happy colors to choose from. I found myself wondering what the heck they were thinking when designing the bitmap layout like that.

  • Supported modes: Mode 0 and 1, with or without overscan (160×200/192×272 and 320×200/384×272).
  • Supported formats: bin and asm. When copying the files to a dsk image the needed start/load address is $6000 for ordinary images and $100 for overscan pics.

To display the image on an emulator or a real machine, you need to get the file to a floppy – most likely a DSK image. There’s ManageDSK for Windows and iDSK for the rest of us. iDSK probably won’t compile out of the box, but just keep adding #include <stdio.h> to the offending source files until it does. After that you should be able to do this:

iDSK mydisk.dsk -n
iDSK mydisk.dsk -i piccy.bin -t 1 -e 6000 -c 6000

And run the binary from BASIC with:

run"piccy

ColecoVision

This console is so close to MSX (same CPU and VDP) that it was easy to add trivial support for it.

  • Supported modes: screen 2.
  • Supported formats: col and asm. MSX sc2 files can be loaded or saved, too, since it’s the exact same mode.

COL is essentially a module dump that you can feed to any emulator or flash cart. I’m not sure if there’s much use for this particular converter, but at least you can show pics on your old hardware – a nostalgic birthday gift for a Coleco fan maybe?

Commodore 64

This old workhorse has been explored over and over again throughout the years. From a graphician’s perspective there are dozens of curious hacks that let you display more colors and pixels than what the standard modes allow. Use the well-known Pepto palette to ensure a faithful conversion.

  • Supported modes: hires and multicolor. At least basic FLI support will probably follow at some point, but as there’s a plethora of hacked modes, don’t expect all of them to make an appearance.
  • Supported formats: (Advanced) Art Studio, Doodle, Koala, prg and asm.

There is automated logic which tries to choose the multicolor common “background” color wisely, but as it doesn’t always work out, you can also select the color yourself (shift-click or rmb) and turn fixed bg on.

The resulting PRG files can be run directly by using VICE, 1541 Ultimate or SD2IEC. For some situations you may want to create a floppy image, which can be done with for example c1541 that comes with VICE:

c1541 -format mypic,0 d64 mypic.d64 -attach mypic.d64 -write piccy.prg piccy

Commodore Plus/4

It wasn’t a biggie to add support for the Plus/4 after getting the C-64 side working. A lot of colors available for you (121 shades) and practically square pixels in hires. Not that different otherwise to the C-64, except in multicolor you have 2 global colors and only 2 free colors per block.

  • Supported modes: hires and multicolor.
  • Supported formats: Multi Botticelli, prg and asm. Name Multi Botticelli files m.something.prg so that the original program finds them too.

There is automated logic which tries to choose the common “background” colors for multicolor pics, but you can also select the color yourself (shift-click and rmb) and turn fixed bg on.

Running the resulting PRG files is pretty much the same as on the C-64. See above.

MSX

A plain MSX1 can do 256×192 pixels with 15 – not 16 – washed-out colors. PAL machines produce a really flat “widescreen” image, whereas the NTSC ones are more or less 4:3. MSX2 computers could display a lot more colors at better resolutions, but at least as of now they’re not supported, as they’re not that special from a conversion point of view.

  • Supported modes: screen 2 and 3. S2 has otherwise free color placement except that a block of 8×1 pixels can only have two colors. S3 is blocky and has free pixel placement.
  • Supported formats: sc2, sc3, com and asm. Name table supported with sc2, but sprites not.

The com files are normal MSX-DOS programs that you can copy to a floppy or an image for running them on a real machine or an emulator. The good old wrdsk will do the trick:

wrdsk myfloppy.dsk msxdos.sys command.com piccy.com

SC2 files are essentially screen memory dumps that can be directly loaded from BASIC like this:

bload"piccy.sc2",s

Oric

Le Oric’s graphiques are completely different to almost any other machine. It’s a bit like teletext in some sense: you can either show pixels or change the paper/ink color. To make it even more complicated, any 6×1 block can also be shown in inverted colors and the bottom of the screen (3 character rows) is hardwired to text mode. Read this.

  • Supported modes: hires. 240×200 pixels with 8 colors. Setting the border color will only affect the last three text lines.
  • Supported formats: tap, hrs/hir and asm.

The tap files can be run from basic with a CLOAD”” or CLOAD”PICCY” depending on the emulator. Use the tap2wav utility to turn the emulator file into audio that can be played back to the cassette port on a real machine. I’ll look into disk files later, but no promises yet.

HRS (HIR) files are simple screen memory dumps saved from BASIC. They can be displayed by switching to HIRES and then simply cloading the file as above. To save one on a real machine, try this:

CSAVE"PICCY.HRS",A#A000,E#BF3F

Panasonic JR-200

Not many have ever even seen this failed Panasonic venture. See here for some technical discussion. From an artist’s standpoint it’s not unlike the Spectrum, except there’s no brightness bit and you can only have 320 different 8×8 character blocks. In addition, there’s blocky 64×48 pseudographics without attribute limits – both “modes” can be mixed freely.

  • Supported modes: 256x192x8 hires.
  • Supported formats: cjr and asm.

Panasonic emulators are scarce, but Virtual Panasonic JR-200 will get you started at least. CJR files can be loaded to the emulator or converted to wavs for playing back to the cassette port. See here again. If your goal is to convert Spectrum images to the JR-200, check you-know-where for an interactive tool aimed specifically for that. The images can be displayed as follows:

mload:a=usr($1000)

Sharp MZ-700

The MZ-700 is a slightly revamped consumer version of Sharp’s old microcomputer series. 64k memory, color graphics and… wait, there’s only 80×50 pseudographics with a 40×25 color grid.

  • Supported modes: 40×25 character approximation and 80×50 pseudographics.
  • Supported formats: mzf and asm.

When approximating pixel graphics with characters you may gain a slight advantage by including the absurd 2nd character set in the conversion. Beware, however, that the output won’t work correctly on Japanese machines that used the 2nd set for something useful instead of various 2×2 character faces and Pacmen.

Pretty much any emulator supports MZF files, which you can load from the monitor by typing L. For a real machine take a look at mzf2wav.

Sharp MZ-800

A lot more capable than its predecessor, the MZ-800 can display 320×200 pixels with four colors or 640×200 with two. Rather exceptionally the graphics are planar and thus pixel placement is free. Add another 16k of VRAM and you get 320x200x16 and 640x200x4.

  • Supported modes: mode 1/2. 320x200x4 on a stock machine, 16 colors with 32k VRAM.
  • Supported formats: mzf and asm.

Like with the MZ-700, emulators support MZF loading. In addition to the monitor method you can also choose option ‘C’ from the main menu. mzf2wav is again your friend when dealing with real machines.

ZX Spectrum

The British miracle can display 256×192 pixels with 15 different colors, but in a block of 8×8 you can only have two different colors, which makes the machine a true giant when it comes to color clashes. Furthermore, you can’t have bright and dark colors in the same block.

  • Supported modes: eh… there is just one.
  • Supported formats: scr, tap and asm.

An scr file (also known as SCREEN$) is a simple memory dump of the Spectrum screen and supported by various tools and emulators. A tap file can be loaded by emulators or from a card reader such as divIDE. You can also convert .taps to audio using tap2wav and then play them back to a real Spectrum through the cassette port. LOAD”” is all you have to type.

Download

The latest stable binary is available here: ppolizei.zip. If you’re after the latest features and bugs, check out the source at svn://kameli.net/marq/ppolizei (the last Processing 2 compatible revision is 717). Because the program is written in Processing you – unfortunately – need to install Java 8 or newer to run it. The old version from 2017 can still be downloaded here.

Mac users should visit System PreferencesSecurity & Privacy if you see something like “blah blah is damaged and can’t be opened”. Allow “any” software to run to correct the problem. If all else fails, download Processing and run from source: copy the “ppolizei” folder from “src” to your sketchbook and open ppolizei (.pde if you’re using the file selector).

It shouldn’t be too tricky to add new file formats or even totally new machines. Contributions are welcome, but let’s stick to a 4-char tab to keep the source uniform. The code is released under the liberal WTFPL license.

Credits

  • Most code and design: Marq/Fit^L!T^Dkd (see also: PETSCII)
  • Several templates and other help: Dr. TerrorZ/L!T (see also: Multipaint)
  • C-64 palette: Philip “Pepto” Timmermann
  • MZ-800 palette: Chaky

May 16th, 2016

PETSCII editors – design thoughts

After more than two years of improving and honing my own project, and checking the competition I got the urge to share some of my thoughts on what makes or breaks a PETSCII editor. A lot of this stuff is actually pretty self-evident in the end, but it has taken hours and hours to figure it out. Bear with me 🙂

Not pixels

When comparing a PETSCII editor to a generic paint program there are plenty of similarities, but also notable differences. Instead of tens of thousands of individual pixels we’re dealing with a relatively low-resolution grid consisting of predefined symbols. On the one hand it is easier to deal with text, since tools such as lines, ellipses and curves are rather useless, but on the other hand there is a constant need to effectively choose and alternate between the available symbols, which requires different kind of thinking altogether. In other words, adopting tried and tested methods from paint programs alone will not lead to optimal outcome.

Among the most powerful features of PETSCII (the editor) are smart rotation and flipping of a selected area which take into account the form of the character. I take no credit for these, as it was Tero who came up with the idea in the first place and wrote the remapping tables. Not every character can be rotated or flipped, but even so you’ll save a lot of time when working with symmetric forms. See the following image for an example of how “smart” flipping works as opposed to simply moving the characters:

flippi

Typing vs. drawing

In essence there are two main methods to get characters on the screen. The traditional way, typing, was initially the only possible option and is still heavily present in modern-day editors (for example AAE). A mouse is something of a rarity on C-64s and graphical symbols can be conveniently found on the keys, so on a real machine typing makes all sense – but a lot less so on your PC or Mac which has a different keyboard to begin with.

I’ve included a half-assed typing mode in PETSCII, mostly for the sake of actually writing text, even though all the symbols can be typed too if it’s really necessary. In any case, drawing with a mouse was the preferred metaphor right from the beginning. There are pros and cons to both, but using a mouse definitely makes it quicker to sketch forms in the spirit of direct manipulation. A little but important detail is to show the character before it is actually placed: otherwise you end up constantly undoing the operation.

Character selection

When drawing, a great deal of time is spent on selecting the next character. The first thing to do was to reorganize the otherwise messy character set to group related symbols together (thanks go to Tero again). Jambonbill went even further and repeated the same characters multiple times to create visually continuous groups.

char-charts

A well-organized character selector is a good start, but much more can be done to facilitate an efficient workflow. For example in PETSCII the aforementioned rotate and flip operations work with individual characters as well: press a single key and get the next corner for a window or a box. In the same lines I came up with “smart sets”, predefined sets that you can walk through with a keypress. Another little bit that arose from a real need was to let the user quickly shift stick characters (used for various lines) right/left/up/down.

As a piece of PETSCII art is drawn, you typically start accumulating useful characters and their combinations in the image itself. Instead of always going for the selector – which in Playscii even occludes part of the canvas – it makes sense to quickly pick a character from the surroundings.

Grid

You can get away without a grid if the images are comparably small, but all in all a well-working grid can be of great benefit when selecting regions and aligning symbols with each other. After at least three complete rewrites of the drawing code I’ve eventually come up with the following findings:

  • Don’t make the grid intrusive (thick, contrasty etc.)
  • No single color works for the grid alone. Instead, darken light colors and lighten dark colors to keep it harmonious.
  • It’s useful to have a quick on/off toggle

Below a few real-life examples of how the grid looks like in different editors.

gridit

File formats

The file formats supported by an editor tend to reveal its intended use. Some editors are clearly geared toward actual machines, stick to their limitations and facilitate easy exporting to formats like .prg, which can be run on real hardware. At the other end of the spectrum you might get only PNG files or GIF animations out for easy distribution on the web.

I’ve been balancing between the two extremes myself: initially the idea was to support software development and participate in demoscene competitions. However, it soon became evident that many people needed and wanted to distribute their works online for easy viewing, so I had to give in and add a PNG exporter. Supporting multiple exporters for multiple machines obviously means plenty of error-prone extra work.

Automatically converting existing images to PETSCII is a different discussion altogether. Having said that, many users would welcome such a feature for, say, converting their self-portrait into retro character art. In addition, an artist can benefit from a reference image, as some of them prefer sketching on paper first before firing up the actual editor.

Animation and other fancy features

Creating proper support for animation is probably as big a task as all the others combined. As of now there are animation features in multiple editors, but none of them really go beyond simple copy/paste and playback of the frames. Think of a proper video or animation editor to realize how many possible features there could be.

Undo and redo aren’t exactly “fancy” features from a user perspective, but it takes some effort to include them in your editor. It’s definitely a good idea to implement them early on, as adding them as an afterthought might prove painful – speaking from experience 🙂 There are more and less sophisticated ways to go about undo, but as we’re dealing with quite little data it’s not all that bad to just save the buffers between operations for undoing or repeating the steps. Another welcome safety network comes in the form of automated backups.

There are a couple of editors that support layers, approximately in the lines of your familiar photo editing software. I can definitely see some uses for them, for example for separating the background from foreground figures. Then again, to fully support layers requires considerable effort, and they aren’t quite as useful as in photo editing, as you can’t really have things like translucency or color manipulation.

Accessibility

While some users are after a genuine user experience – tapping away on a real C-64 – most seem to welcome the ease of cross-development. Supporting the three main desktop platforms (plus their different flavors) is tedious at best, and thus some of the editors run on Windows only. Being a Mac/Linux user myself this was, of course, out of the question, but luckily Processing lets you export multiplatform applications with little extra effort. On the downside, Java is required on the target machine, which will turn off some possible users (and rightfully so).

As I see it, the best bet these days would be to develop for the web. In spite of the possible troubles with browser compatibility, web applications tend to be multiplatform by nature. In addition, you don’t need to go through the trouble of installing anything on the local computer. If I were to start from scratch, I’d probably take this route. As of now there are two online editors already, even if neither of them is quite complete yet (see my previous post).

Another angle to accessibility follows from the fact that people use laptops and tablets with a crammed keyboard. Therefore, relying on numpad or function keys beyond F10 is obviously out. Likewise, touch pads (esp. Apple ones) might not have more than one or two mouse buttons available, which requires some thought. Even more so for touch screens, which again introduce a new set of challenges.

Documentation

I can wholeheartedly relate to programmers that want to spend their free time on interesting coding problems instead of writing documentation. Even if it’s not exactly fun, there is a need for at least some product support: be it a manual, online help or a website. A few nice example works done with the editor definitely don’t hurt, as they show what’s possible and spark user interest.

Conclusion

Cross-development tools for PETSCII are a surprisingly new phenomenon. As far as I know, they’ve been around for not much more than five years, after which things have really started picking up speed. The threshold of starting to do character art has probably never been lower, and new authors are popping up every now and then.

All in all, the challenge of programming a PETSCII editor is twofold: there’s the tech and then there are the users. It’s not hard to put together basic minimum functionality, but going beyond that has turned out so laborious that most projects have been abandoned shortly after their initial release. PETSCII too would require quite an overhaul by now to accommodate any new major features – feature requests are, of course, neverending.

Implementing new modes, tools and so on is one thing, but thinking about the workflow and making the features useful is another. If you’re not much of an artist yourself, it’s at least good to have one in the loop: user feedback or even going so far as to observe someone’s work over their shoulder provide valuable insight and motivation. Ok ok, that was the design teacher in me speaking 🙂

2 comments April 6th, 2016

Next Posts Previous Posts


Kommenttien virta

Aiheet