v Palikasta botiksi: Älyleegon tarina SQL-injektiot Hyi! Demoja! Dwarf Fortress — Sano ystävä ja astu sisään Tie 3D-velhoksi alkaa: OpenGL:n alkeet Tietokonekulttuurin erikoislehti 2013.2 S k r O L L i . F i Hackerspacet Suomessa: Luovien nerojen pesimäpaikat Ohjeet aikamatkaajalle: Tietokoneen rakentaminen muinaisuudessa
14 Miksi demot ovat niin tympeitä. 12 Salattuja purskeita Langaton näppäimistö ei ole kovinkaan turvallinen. 50 256 tavun ohjelmia Kuvasta softaksi QR-koodeilla. 34 OpenGL:n perusteet Aloittelemme 3D-ohjelmointia. 22 Ohjelmoitavan Legon historiaa LEGO-palikat ohjelmoinnin opetuksessa yleistyvät Suomessa. Sisällysluettelo. 18 Homebrew Vanhat ja kielletyt laitteet auki omille ohjelmille. 48 Needs more Atari! Haastattelussa chiptune-muusikko Ultrasyd. 31 kuivilla kääpistä, nyt Tapio Berschewskyn kolumni. Vinkkejä aikamatkalaisille. 24 Dwarf Fortress Oman Morian rakennus alkaa tänään. 28 SQL-injektiot Näin suojaat järjestelmäsi yleisiä hyökkäyksiä vastaan. 2 2013.2 3 Pääkirjoitus 4 Pelle Pelottoman työhuoneella Hackerspacet ovat tekijöiden yhteisöpajoja. 38 Shader-ohjelmointi Upeita efektejä muutamalla koodirivillä. 7 MikroBiTTi in memoriam Markku Alasen kolumni. Vinkkejä demoestetiikan lähestymiseen. 41 Perusviileä yhteisö Coolbasicilla tehdään pelejä ja muutakin. 8 Tietokone menneisyydessä. 44 Tietokonekulttuuri ja sukupuoli Naiset IT:n ytimessä. 32 Ei näin! Konix tähtäsi tähtiin epäonnistuen julmasti
Jotkin ovat syntyneet yhden projektin ympärille, toiset taas laajemman ideologian. Ensimmäinen numero otettiin vastaan niin innostuneesti, että toiminnan ensimmäinen vuosi on taattu. Mitä hackerspaceissa tapahtuu. Myös pitkään harkinnassa ollut keskustelufoorumi perustetaan irkkikanavan ohelle. Kuinka tekniikan rajat vaikuttavat yhteisön kehitykseen. Tietokonekulttuuri on täynnä yhteisöjä ja alakulttuureita. On tullut aika vahvistaa tukirankaa. Lehteä tekevä yhteisö on innostunutta ja sinnikästä porukkaa, mutta kuinka pitkälle pelkkä vapaaehtoishenki riittää. Hieno homma, jatkakaa samaan malliin! Desimaali Binääri Trinääri -7 1001 -+-6 1010 -+0 -5 1011 -++ -4 1100 0--3 1101 0-0 -2 1110 0-+ -1 1111 000000 000 +1 0001 00+ +2 0010 0++3 0011 0+0 +4 0100 0++ +5 0101 +-+6 0110 +-0 +7 0111 +-+ 441 878 Painotuote. Kuppikunnan kohtaloa on vaikea arvata ensivaiheittensa perusteella, ja niinpä Skrolli-projektiinkin on alusta saakka liittynyt pieni epävarmuus. Lehden asioita hoitamaan perustetaan loppukesästä yhdistys, Skrolli ry. Projekti alkaa kuitenkin olla jo sen verran vakiintunut, ettei tulevaisuutta voi enää laskea pelkän luontaisen innostuksen ja hyväntekeväisyyden varaan. Monet saavat lehden käsiinsä sopivasti kesälomaksi, jolloin on aikaa askarrella yhden jos toisenkin tietokonekulttuurisen aiheen parissa. Siinä missä ykkösnumeron jutut keskittyivät paljolti tekniikkaan ja historialliseen jatkuvuuteen, kakkonen painottaa luovaa yhteisöllisyyttä. 3 Skrolli kasvattaa selkärangan Kuten näkyy, Skrolli ei jäänyt yhden numeron ihmeeksi. Lehti ei kuitenkaan aio suistua kilpailijoidensa viitoittamalle tielle, vaan pysyy edelleen yhteisöllisenä. Lehdenteon prosesseja vakavoitetaan ja nimellisiä palkkioitakin ruvetaan maksamaan. Skrolli lähti liikkelle yhteisövetoisena vapaaehtoisprojektina, johon ihmiset ovat tarjonneet sisältöä oma-aloitteisesti ja talkoohengessä. Tulkaa siis foorumille kertomaan tekemisistänne ja vahvistamaan samalla Skrolli-yhteisöä entisestään! Ville-Matias Heikkilä päätoimittaja Pääkirjoitus Skrolli Tietokonekulttuurin erikoislehti Yhteydenotot toimitus@skrolli.fi ircnet — #skrolli Päätoimittaja Ville-Matias Heikkilä Toimitus Lauri Alanko, Tapio Berschewsky, Jari Jaanto, Mikko Heinonen, Ronja Koistinen, Anssi Kolehmainen, Sade Kondelin, Ninnu Koskenalho, Toni Kuokkanen, Juho Lehtinen, Elias Linjama, Risto Mäki-Petäys, Oona Räisänen Avustajat Markku Alanen, Eetu Korhonen, Matti Hämäläinen, Ville Lahdenvuo, Olavi Lintumäki, Juuso Metsänvuori, Tomi Pieviläinen, Visa-Valtteri Pimiä, Ville Ranki, Mikko Rasa, Jari Sihvola, Hannu Viitala kannen kuvat Risto Mäki-Petäys, Olli Oikarinen, Nuppu Oikarinen, Unna Oikarinen Julkaisija Alternative Party ry Painopaikka Tammerprint, Tampere, ISSN 2323-8992 (painettu) ISSN 2323-900X (verkkojulkaisu) Skrollin ykkösnumeroa luettiin niin innokkaasti ja tarkasti, että saimme kuulla sivun 40 huolimattomuusvirheestä kymmeniä kertoja. Suomalaisen tietokonekulttuurin rönsyt johtavat hyvin usein demoskeneen, johon törmätään myös monissa tämän numeron jutuissa. Tämä näkyy myös kakkosnumeron aiheissa. Monet yhteisöt ovat näivettyneet innokkaan alun jälkeen, muutamat ovat pysyneet elinvoimaisina vuosikymmentolkulla. Millaisia taidemuotoja hakkerialakulttuureissa syntyy. Tässä siis trinäärilukutaulukko korjattuna
Mikään ei estä vaikka ruuanlaittoa tai sukkien virkkaamista, jos motivaatio on kohdallaan. Nimi ei yhdistystä pahenna, ja sen keksimisessä voi käyttää luovuuttaan vapaasti. Hacklab-termi on suomalaisittain helpompi lausua, mutta hackerspace taas on maailmanlaajuisesti käytetympi ”brändi”. Utilitaariseen hakkerointiin kuuluu rikkinäisten laitteiden korjaamista tai uusien rakentamista rahan säästämiseksi, kuten esimerkiksi elektroniikan korjaus tai putkivahvistimen rakentaminen rakennussarjasta. Lisäksi on mukava tavata samanhenkistä seuraa ja tehdä projekteja yhdessä. ” Hakkeri on henkilö, joka tekee paahtoleipää kahvinkeittimellä. Tässä artikkelissa ja hackerspace-skenessä hakkeri-sanaa käytetään alkuperäisessä merkityksessään. – Wau Holland, Chaos Computer Clubin perustajajäsen kulttuuri Pelle Pelottoman työhuoneella — hackerspacet ja itse tekemisen huuma Hackerspacet ovat erilaisten projektien toteuttamiseen tarkoitettuja yhteistiloja, jotka ovat kaikkien jäsentensä käytettävissä. Vaikka lämpömittarin saa marketista pikkurahalla, on Arduinolla itse tehty tuhat kertaa hienompi ja opettaa uusia taitoja. 4 2013.2 Tarve rakenteluun varatulle fyysiselle tilalle syntyy, koska erityisesti kaupungeissa on hankalaa löytää kotoa tarpeeksi työtilaa. Teksti: Ville Ranki, Kuvat: Ville Ranki, Juuso Metsävuori. Mitä haluaisit rakentaa tänään. Olisi kuitenkin virheellistä kutsua hackerspacea tietotekniikka-, elektroniikkatai robotiikkakerhoksi. Suomessa on hackerspaceja tällä hetkellä ainakin seitsemässä kaupungissa. Softan tekeminen ei vaadi muuta kuin tietokoneen, mutta kun Hackerspace vs. Keskeistä toiminnassa on into oppia uutta. Rakentelu voi liittyä myös toiseen harrastukseen, ja valokuvauksen harrastaja saattaa rakentaa gyrovakauttimen tai kiskon timelapse-kuvausta varten. Taiteellista puoltaan pääsee toteuttamaan vaikkapa syntetisaattorin rakentamisella tai demokoodauksella. Suomessa hakkeri-termi on vakiintunut kuvaamaan tietoverkkoihin murtautujaa. Niiden toiminnassa keskeistä ei välttämättä ole tekemisen muoto, vaan aito motivaatio ja kiinnostus tekemiseen. Kun omiin tarpeisiin sopivaa tuotetta ei ole olemassa, se tehdään itse, ohjelmistoprojekteista huonekalujen kustomointiin. Hacklab Suomessa suurin osa hackerspaceista käyttää nimessään termiä Hacklab. Hackerspace on terminä hankala. Hakkeria ajaa oppimisen halu ja sellaisten asioiden tekeminen, jollaisia ei kenties kukaan ole aiemmin tehnyt. Erityisten tilojen tarve Joitain projekteja pystyy tietenkin tekemään kotonakin. Hakkerointiprojekteja on ties kuinka monta sorttia. Yleisimmät hackerspaceissa tehtävät projektit liittyvät tietotekniikkaan, elektroniikkaan ja robotiikkaan. Saisiko ämpäristä ja savukoneesta tehtyä savurengaskanuunan kuten YouTubessa. Useimmat hackerspacet pyrkivätkin laajentamaan toimintaansa esimerkiksi musiikin, kuvataiteen, biotekniikan ja perinteisen käsityön suuntaan. Sana tulee verbinä tai substantiivina käytettävästä englannin kielen sanasta ”hack”, joka tarkoittaa hyvin laajasti kaikenlaista rakentelua softan kirjoittamisesta niksipirkkavirityksiin. Koneet ja laitteet maksavat, ja harrastelija tarvitsee monia niistä vain satunnaisesti. Rakentelu ja kokeileminen on jo itsessään hauskaa, kunhan osia, työkaluja ja tekemistilaa on yllin kyllin. Se on synonyymi hackerspacelle, kuten myös makerspace ja fablab. Termi on syntynyt Massachusetts Institute of Technologyssa ja ollut käytössä jo 1960-luvulla. Hackerspace tarjoaa jäsenilleen tilat tehdä, mitä itse haluavat. Esimerkkeinä tästä Helsinki Hacklabin ommeltavan elektroniikan kurssit ja erilaiset elektronisiin soittimiin liittyvät työpajat
kavereita ja koulutusta Osalle hakkereita hackerspace on ennen kaikkea sosiaalinen tila, jossa tavataan kavereita ja tehdään yhdessä. Hakkeritoiminnassa kenenkään ei tarvitse esittää vähemmän nörttiä kuin on. Moni projekti saa alkunsa siitä, että osahyllystä löytyy jotain mielenkiintoista. Rajuimmillaan hackit sisältävät hitsausta, metallien valamista ja syövyttävien aineiden käsittelyä. Esimerkkejä tyypillisistä koulutusteemoista ovat elektroniikan ja ohjelmoinnin perusteet, Arduino-rakentelu, 3D-tulostus ja Blender 3D:n käyttö. Kynnys tekemisen aloittamiseen nousee, ja ensimmäinen askel jää usein ottamatta. € . Hackerspacen ominaispiirteitä • Avoimuus Hackerspacen jäseneksi voi liittyä kuka tahansa. Tällaiset toimet vaativat jo aivan omat tilansa ja välineensä. ** Tietoja ei saatu lehden painoon mennessä. Työttömille, opiskelijoille ja eläkeläisille tarjotaan usein alennetut ”starving hacker” -hinnat. . Koulutusten pitäminen vaatii jonkin verran vaivannäköä, mutta ne ovat hyvin suosittuja. Jopa harmittomalta vaikuttava 3D-tulostin pitää vanhaan matriisitulostimeen verrattavissa olevaa surinaa ja voi häiritä asuinkumppaneita. Hackerspacen perustamisella saavutetaan luonnollisesti myös rahallista hyötyä: tulee halvemmaksi ostaa työkalut ja koneet yhteiskäyttöön sen sijaan, että jokainen hankkisi ne itselleen. • Tasavertaisuus Hackerspaceissa vallitsee tyypillisesti melko matala hierarkia, ja jäsenet ovat keskenään yhdenvertaisia. Koulutusten pitäjän ei tarvitse aina olla alan asiantuntija, vaan riittää, että tietää aiheesta jotain ja on valmis jakamaan osaamistaan. Erilaisissa yleisötapahtumissa, kuten Wärk:Festeillä ja Model Expossa pidetään yhteistä hakkeriständiä. kaupunki Nimi UrL Tilaa m² Jäseniä Jäsenmaksut* Varustus Helsinki Hacklab Helsinki http://hacklab.fi/ 90 180 20€/vuosi, 40€/kk Laserkaiverrin, 3D-tulostin, metallijyrsimen CNC-konversio työn alla Tampere Hackerspace 5w http://5w.fi/ 50 70 20€/vuosi, 30€/kk 3D-tulostin, laserkaiverrin, CNC-jyrsin Turku Hacklab Turku http://hacklabturku.org/ 50 20 20€/vuosi, 30€/kk CNC-jyrsin, 3D-tulostin, pöytäsirkkeli Jyväskylä Hacklab Jyväskylä http://hacklabjkl.org/ 55 30 10€/kk/, 20€/kk 3D-tulostin (+ kaksi kesken) Oulu Tarlab http://www.tarlab.fi/ 30 15 20€/kk Jäsenistöllä laserleikkuri ja muutamia 3D-tulostimia Vaasa Vaasa Hacklab http://vaasa.hacklab.fi/ 35 6 20€/vuosi, 30€/kk 3D-tulostin, puutyöverstas Porvoo** Porvoo H4cklab http://hacklab.akan.fi/ . Esimerkiksi oppilaitoksissa ja yrityksissä on aina ollut labroja ja pajoja, mutta niiden käyttöoikeus on yleensä rajattu. Hackerspacet ehkäisevät näin myös syrjäytymistä ja ”kybererakoitumista”. Isommista päätöksistä ja hankinnoista äänestetään. * Vaihtoehdot ovat useimmiten vuosijäsenyys, jolla pääsee tiloihin silloin kun joku niissä on, ja kuukausimaksu, jolloin saa oman kulkuoikeuden. Suurinta osaa projekteista ei suunnitella etukäteen kovin tarkkaan, ja osahyllyn tarjonnasta löytyy uusia ideoita toteutukseen. Ahtaissa kaupunkiasunnoissa asuvilla ei yleensä ole mahdollisuutta perustaa kotiin säätönurkkausta, vaan projektit vaativat tavaroiden ja työkalujen esiin ottamista työn ajaksi ja varastointia sen jälkeen. Tyypillinen koulutusmuoto on omissa tiloissa pidettävä, tiettyyn aiheeseen liittyvä teemailta. Koulutus on tärkeä osa hackerspacetoimintaa. Hallitus vastaa vain tärkeistä päätöksistä ja yhdistyksen rahankäytöstä. • Autonomisuus Hackerspace päättää omasta toiminnastaan ja on riippumaton ulkopuolisista tahoista, kuten vuokranantajasta tai sponsorista. Jäsenet saavat omalla harkinnallaan ja vastuullaan esimerkiksi tehdä parannuksia tilaan keneltäkään kysymättä. Materiaalien sahaaminen, poraaminen ja laserointi aiheuttavat pölyä ja hajuja, mikä voi kiusata naapureita. Hackerspace Summit Finland-tapahtumassa tavataan muiden kaupunkien hakkereita viikonlopun ajan Tampereella.. Epämuodollisimmat koulutukset ovat ”workshoppeja”, joissa työskennellään ryhmissä ja opetellaan omatoimisesti aihetta workshopin pitäjän avustaessa ongelmatilanteissa. 5 kuvioon lisätään elektroniikkaa tai mekaanista työtä, eivät tarvittavat työkalut enää mahdukaan olohuoneen pöydälle. Hyvälaatuisesta bonkista saa irrotettua näyttöjä, kytkimiä, komponentteja, moottoreita ja muita käyttökelpoisia osia. Mekaaninen työ aiheuttaa lähes aina myös ääntä. Laaja komponenttija osavarasto on todettu käytännössä yllättävän hyödylliseksi. Kerrostalossa vannesahan käyttö tai rälläköinti eivät ainakaan paranna naapurisopua. Myös eri kaupunkien hakkereiden välillä on yhteistyötä, kuten Partyhat-projekti ja talvisin Tampereella järjestettävä Hackerspace Summit Finland -tapahtuma. Pajalla vietetyn ajan lisäksi samalla porukalla käydään syömässä, pidetään saunailtoja ja keksitään muuta ajanvietettä. Tekemisen meininkiä tulee häkkäykseen aivan eri lailla, kun tarvittavat osat löytyvät saman tien hyllystä, eikä niitä tarvitse etsiskellä kaupasta tai tilata netistä. Esimerkiksi Lontoon hackerspacessa on oma varasto romupolkupyörille ja pyörän osille sekä hitsausvehkeet, joilla osista voi kasata uusia polkupyöriä. Myös muille yhteisöille voidaan käydä pitämässä koulutuksia tai pyytää niistä joku kertomaan kiinnostavasta aiheesta. Hackerspaceissa on usein läjä ”bonkkia” eli käytöstä poistettuja laitteita, joita ei-hakkeri kutsuisi elektroniikkajätteeksi
6. Näin perustat hackerspacen kotimaisia, isompia hakkeriprojekteja • Partyhatwork — Yleisötapahtumissa pidettävä vapaamuotoinen hattu, joka viestii toisten hattujen kanssa XBeeverkon yli. • Chernobyl-simulaattori — Helsinki Hacklabin astetta hullumpi neuvostoretroilu-multimediataideteos johon kuuluu mm. Toiminta on mahdollista käynnistää ilman ulkopuolista tukea, mutta tukien avulla pääsee paljon nopeammin vauhtiin. • Imurirobotti-taideprojekti — Avustetaan Harri Larjostoa tilataideteoksessa, jossa modifioidut robottipölynimurit toimivat liikkuvana alustana. 3. Muistakaa sisällyttää budjettiin myös internet-yhteyden hankinta tilaan. • LazorTouch — Tampereen Vapriikkimuseolle tehty videoseinän ohjausohjelmisto, jonka avulla katsoja voi valita näytettävän videopätkän seisomalla vastaavan lattiaan maalatun lätkän päällä. fi -osoitteen. Muistakaa myös ei-teknisille ihmisille suunnatut tapahtumat. Tilan hankinta Kun kiinnostuneita on riittävästi, miettikää paljonko olette kuukausittain valmiita maksamaan jäsenyydestä. Ilmainen tai nimellisellä vuokralla tarjottava tila olisi tässä vaiheessa onnenpotku. Kyselkää kaupungilta, muilta harrastekerhoilta ja vastaavilta tahoilta vapaita tiloja. Tee yksinkertaiset kotisivut ja postituslista. Kerätkää yhteystiedot myös niiltä, jotka haluavat lähteä mukaan vasta sitten, kun tilat on hankittu. Muistakaa esitellä toimintaa vieraillenne ja ottakaa uudet jäsenet alusta pitäen mukaan toimintaan.. Kutsukaa paikallislehden toimittaja tekemään juttu toiminnastanne. Tässä vaiheessa jäsenet usein mielellään lahjoittavat tai pitkäaikaislainaavat omia työkalujaan ja materiaalejaan. • Elovalo-valoteos, joka koostuu kolmesta 8×8×8 kuvapisteen LEDkuutiosta. • Jääkelkka — Leijapurjeen vetämä lumilaudasta ja neljästä suksesta koostuva jääkulkuneuvo. 2. Oppilaitokset, harrastekerhot, työpaikat ja vaikka markettien ilmoitustaulut ovat hyviä paikkoja. Lisää kaupunkisi hackerspaces.org:n listaan. Pitäkää viikottaiset tutustumispäivät (useimmilla hackerspaceilla tiistai-iltaisin) jolloin kuka tahansa voi tulla tutustumaan toimintaan. Kopioikaa säännöt olemassa olevalta hackerspacelta, jotta ne hyväksytään kerralla. Perusta ydinryhmä Tarvitset 3–5 innostunutta ihmistä ja näkyvyyttä internetissä. Tästä saatte käsityksen vuokranmaksukyvystänne. Järjestäkää avointen ovien päiviä, koulutuksia ja teemailtoja. 5. Käytettyjä toimistokalusteita ja atk-laitteita löytyy ilmaiseksi, ja tila remontoidaan talkootyönä. Hacklab.fi -domainin alle saa oman kaupunki.hacklab. Verkostoitukaa muiden hakkerien kanssa esimerkiksi irc-kanavalla #hacklab.fi, muissa hackerspaceissa ja talvisin järjestettävässä Hackerspace Summit Finland-tapahtumassa. kerää kiinnostuneita Järjestäkää esimerkiksi kahvilatapaamisia, joissa tutustutte toisiinne. Tällä hetkellä ruudulle saadaan jo omia tekstejä ja tilanne kehittyy viikoittain. • R100 — Sähköpyörätuolin runkoon tehty etäohjattu robotti, joka osaa kartoittaa ympäristönsä ja liikkua siinä itsenäisesti laserskannerin avulla. • 24x16-ledimatriisi — 1,20 x 0,40 m. Tässä auttavat suhteet, sinnikkyys ja hyvä tuuri. Tilan varustelu Alussa yhdistyksellä ei todennäköisesti ole varallisuutta, joten tilan varustus on jäsenten lahjoitusten varassa. Kartoittakaa neliövuokrahintoja kohdealueella. Kuutiot toimivat itsenäisesti akuilla ja kaikesta laskennasta vastaa AVRmikrokontrolleri. 3D-tulostin) voidaan hankkia joko jäsenmaksuista saatavilla tuloilla tai hankinnasta kiinnostuneiden jäsenten kolehtina. Ottakaa huomioon, että tukihakemuksen jättämisestä saattaa kulua hyvinkin pitkä aika siihen että rahat ovat tilillä. Kaupungeissa tila kannattaa perustaa kävelymatkan päähän keskustasta, jotta kauempaa saapuvat pääsevät paikalle kohtuullisella vaivalla. 2 m x 2 m ”reaktorikansi”. 4. 16 kirkkautta/pikseli, 4 NES-ohjainta, i2c, käynyt Assemblyillä 2012 8x48muodossa. Toteutettu laserskannerilla.. Varatkaa ständi mahdollisimman moneen tapahtumaan, jossa voisi olla potentiaalisia jäseniä. Tilan tärkeimmät ominaisuudet ovat ympärivuorokautinen kulkumahdollisuus, lupa aiheuttaa melua ja wc. Kolehtiin osallistumattomilta voidaan pyytää tarvittaessa pieni käyttömaksu. Mainostakaa paikoissa, joista voisi löytyä aiheesta kiinnostuneita. Jäsenten hankinta Alussa jäsenmäärän kasvattaminen on tärkeää. Yhdistyksen perustaminen ja tukianomukset Rekisteröityä yhdistystä tarvitaan tilin avaamiseen ja vuokrasopimuksen tekemiseen. Viimeistään tässä vaiheessa on syytä aloittaa rahallisen tuen hankkiminen. Erityisesti paikalliset tapahtumat ovat tärkeitä. • Metronäyttö — Tavoitteena on vähintään Tetris käytöstä poistetulla metronäytöllä. Toteutetaan useamman hackerspacen yhteistyönä. Jäsenmäärän kasvaessa sähköinen kulunvalvonta voi tulla kyseeseen. 6 2013.2 1. Teos sijoitettiin Jyväskylän kirkkopuistoon osana Valon kaupunki -tapahtumaa syksyllä 2012. Kalliimmat hankinnat (esim. Varautukaa siihen, että juuri kukaan ei ole kuullutkaan hackerspaceilmiöstä, ja asia pitää kyetä selittämään lyhyesti ja helppotajuisesti. Hatuissa on moniväriset ledit, ja niillä voidaan toteuttaa verkon yli synkronoituja ”demoefektejä”
Parempi siis hypätä rattaille mahdollisimman alkuvaiheessa. Bitille lukijoiden osallistuminen ei ollut ainoastaan lehden sisällön määrittämistä vaan myös sisällön tuottamista. Ulkoisten kilpailijoiden lisäksi Bitti järjesteli kotoperäisesti markkinoille C=lehden Commodoren käyttäjille ja ilmeiselle kohderyhmälle Pelitlehden. Sähköisellä puolella MBnet oli arvostetuimpien nettisaittien top kympissä. Netti ja paperilehti pyrittiin nivomaan yhteen siten, että molemmat palvelisivat parhaalla tavalla lukijaa. Skrollin sisältö kattaa vasta murto-osan mahdollisuuksistaan, mutta meno on sen verran ammattimaista, että lehdelle voi povata pitkää ikää. 7 kolumnit S krollin lukijoista useimmilla lienee jonkinlaisia omakohtaisia kokemuksia MikroBITTI-lehdestä. Rakennettiin omin voimin MBnet — Bitin sähköinen ulottuvuus. Kun alkuvuosina vain Printti-lehti kalasteli menestyksekkäästi samoilla vesillä Bitin kanssa, niin nyt täytyi tilaajia jakaa niin Tiekkarille kuin mikroPC:llekin. Erikoista kuviossa oli se, että harrastuksesta tuli useille ammatti. Kaikki nämä tavoittelivat osittain samoja lukijoita ja rokottivat tilaustuloja, joilla Bitin kulut kuitattiin. Toimittajat ja lehden avustajat edustivat alan terävintä kärkeä niin ammattitaidoltaan kuin lehden sisällön kehittämiseen sitoutumisessaan. Suunta oli kuitenkin selvä — Netti tulee ja Netti tappaa. Lehdessä käsiteltävien aihealueiden lukumäärä ei netin myötä suinkaan vähentynyt vaan kasvoi rajusti. Ei ollut irc-galleriaa tahi Facebookia. Lehden kate nousi 40 prosentin tuntumaan, jolloin esimerkiksi 10 miljoonalla pyöritettävä bisnes antaa voittoa 4 miljoonaa vuodessa. Nettiajan voidaan syystä katsoa alkaneen Suomessa 1994 hetkellä, jolloin puhelinverkot kaatuivat MBnetiin pyrkivien painosta. Toimitus ja avustajat olivat ylpeitä aikaansaannoksistaan. Taistelu lukijasta Kova kilpailu lukijoista oli päivän sana tultaessa 1990-luvulle. MikroBITTI kehitti menestyksellisesti todella täysin uutta media-ajattelua. Vahva yhteisöllisyys piti samassa veneessä niin aloittelijat kuin edistyneemmät bitin nyplääjät. Tilanne oli se, että joko pillit pussiin tai levikki kasvuun. Kaikki lukijat kutsuttiin mukaan maailman suurimpaan purkkiin, eräänlaiseen paikalliseen esi-internetiin. Viimeisen vinkaisun MikroBITTI päästi, kun se salvettiin ja päivänvaloon autettiin mB. Nykyisin tälläistä kutsutaan joukkoistamiseksi. Web oli vasta tuloillaan ensimmäisen Mosaic-selaimen myötä. Tänään Skrollilehti jatkaa noita kunniakkaita perinteitä. MikroBiTTi in memoriam Markku Alanen, X-päätoimittaja. Villi ja vapaa MikroBITIN kustantajan ylivertainen tietotaito rajoittui lähinnä naisille tarkoitettujen lehtien julkaisuun. MikroBITTI oli yhteinen asia ja sen tekeminen oli hauskaa ja antoisaa. Bitti oli asemoitu harrastelehdeksi. Keep on Skrollin' 8-D. Vanhat konstit oli kaikki käytetty ja nyt oli keksittävä jotain tyystin uutta lukijoiden mielenkiinnon ylläpitämiseksi. Pienet verkkoyhteisöt roikkuivat vielä puhelinlangoilla BBS-palvelimissa. Bittiin mahtuivat niin kooderit, pelaajat kuin rakentelijatkin, vaikka välillä aiheuttivatkin ahdistusta toisilleen. Bitin asema oli tukala, ja lehden toiminnan lopettaminen oli hilkulla. Levikit kasvoivat hurjaa vauhtia ja kilpailijat karisivat kyydistä. Lukijat olivat tyytyväisiä ja saivat entistä helpommin äänensä kuuluviin netin välityksellä. Oli pakko lisätä sivumääriä ja suorittaa karsintaa vanhojen, vakiintuneidenkin sisältöjen suhteen. Lukijoiden hyväksyntä muutoksille ostettiin tarjoamalla heille riittävän paljon mielenkiintoista uutta sisältöä. Moni lukija sai lehdestä enemmän potkua it-saloihin syventymiseen kuin konsanaan muusta atk-opastuksesta. Perinteisen median päättäjille tämän uusmedian ymmärtäminen oli ylivoimaista. Jako tyhmiin lukijoihin ja teräviin toimittajiin kuopattiin kuuden jalan syvyyteen. Kasibittisiä ohjelmalistauksia kaseteilta purkaessaan toimitus ja avustajat olivat yötyöllistettyjä. Muistakaamme kunnioituksella sitä MikroBITTIÄ, joka yritti olla lukijalle kunnon kaveri. Pitkän väännön päätteeksi lehden journalistista linjaa alettiin harmonisoida niin sisällöltään kuin ulkoasultaankin kustantajan naistenlehtien kutyymiin. MBnet ja Bitti muodostivat yhdessä uudenlaisen hybridimedian. Lehden talous ei ollut pätkääkään kiinni mainosmyynnistä — tilanne, josta muut lehdet saattoivat vain unelmoida. Palkitsevaa se oli myös lehden omistajalle. Maailman suurin Uusi MikroBITTI osoittautui kaikilla mittareilla menestykseksi. Bitin mahtavan alkumenestyksen taustalla oli ensisijassa juuri uudenlainen lukijasuhde. Ammatillisten ambitioiden täyttyessä yhä useampi koki arvostuskysymyksenä "harrastelehden" nimeen vannomisen, kun tarjolla oli ammattilehtiäkin. Oltiin kaikki enempivähempi samaan hiileen puhaltavaa porukkaa. Nettipuoli ei ollut mikään pakollinen kasvannainen vaan tasavertainen paperilehden kanssa. Bitti joutui jatkuvasti kamppailemaan oikeudestaan olla oma itsensä: erilainen, itsenäisesti ja luovan anarkistisesti toimitettu lehti. Osa Bitin lukijoista alkoi livetä ruodusta ja käydä vieraissa. Verkkoa kohti Internet oli harvojen ja valittujen temmellyskenttä 90-luvun alussa. Aktiivisimmat olivat mukana Bitin tekemisessä jo vuoden 1984 ensimmäisestä numerosta alkaen — siis lukijat lehden teossa. Ajan mittaan yhä suurempi osa lukijoista oli joko valmiiksi tietotekniikkahommissa tai kovaa vauhtia matkalla moisiin. Uskon Skrollin lukijoiden omalla panoksellaan pitävän huolen vaivattoman vierinnän vakiintumisesta mikroharrastajien keskuudessa. Bitistä kasvoi väkilukuun suhteutettuna maailman laajalevikkisin alan lehti
On siis turhankin helppo olettaa, ettei tietokonetta pysty rakentamaan, ellei ensin ole kehitetty valtavaa määrää erilaisia välineitä ja tekniikoita eri elektroniikkakomponenttien valmistamiseen. Vaikuttaa siis selvältä, että kreikkalaiset olisivat pystyneet rakentamaan Z1:n, jos heille olisi annettu sen piirustukset. Saisiko sellaisen rakennettua. Teksti: Ville-Matias Heikkilä Kuvat: Ville-Matias Heikkilä, Oona Räisänen, Wikimedia Commons (Klaus Nahr, Bruno Barral) Saisinko rakennettua tietokoneen menneisyydessä. Se luki käskynsä reikänauhalta ja teki niitä noudattaen peruslaskutoimituksia 22-bittisille liukuluvuille. 8 2013.2 kulttuuri Kuvitellaan, että joudut yhtäkkiä satoja vuosia ajassa taaksepäin. Näin lohduttomasti asiat eivät sentään aikamatkaajalle ole. Koneen suunnittelu ei sen sijaan olisi onnistunut ilman symbolista algebraa ja binäärijärjestelmää, jotka saapuivat Eurooppaan vasta toisella vuosituhannella. Metalliliuskoilla toteutettu binäärilogiikka on vain yksi monista tekniikoista, joiden varaan aikamatkaaja voi rakentaa tietokoneensa. Saat jotenkin järjestettyä itsellesi suhteellisen mukavan elämän, mutta elämän tarkoitus puuttuu — nimittäin tietokone. Tähtitaivaan liikkeitä mallintanut Antikytheran kone perustui kolmeenkymmeneen pronssiseen rattaaseen, joista suurimmassa oli peräti 223 hammasta. Pikkutarkkaa mekaniikkaa osattiin rakentaa jo antiikin Kreikassa. Aikamatkaajan kannalta mielenkiintoinen piirre Z1:ssä on se, että se oli täysin mekaaninen: ainoa sähköinen osa oli sähkömoottori, joka piti koneistoa käynnissä. Saksalaisinsinööri Konrad Zuse rakensi 1930-luvulla vanhempiensa olohuoneeseen ohjelmoitavan laskukoneen, joka tunnetaan nykyisin nimellä Z1. Erimuotoisia liuskoja yhdistämällä hän pystyi rakentamaan loogisia portteja, joiden osat liikkuivat kahden mahdollisen asennon välillä muiden osien asennoista riippuen. Kreikkalaiset rakensivat myös automaattiteattereita, itseavautuvia ovia, kolikkoautomaatteja, höyrykoneita ja muita taianomaisia laitteita. Askelrummun (Staffelwalze) kehitti alkujaan Gottfried Leibniz 1600-luvulla omaa laskintaan varten. Etenkin ensimmäisellä vuosisadalla elänyt Heron Aleksandrialainen kunnostautui hyödyttömien mutta hyvin kekseliäiden vempaimien luomisessa. Zuse rakensi Z1:n koneiston 30 000 ohuesta metalliliuskasta, jotka hän leikkasi kuviosahalla. rattailla vai vivuilla. Rattaita olisi käyttänyt myös englantilaismatemaatikko Charles Babbagen 1830-luvulla suunnittelema Analyyttinen kone, joka olisi valmistuessaan ollut maailman ensimmäinen ohjelmoitava tietokone. Projekti kärsi nimittäin suuruuden. Ohjelmoitavan tietokoneen pystyy nimittäin aivan hyvin rakentamaan myös karkeammilla tekniikoilla, joita on ollut käytössä jopa vuosituhansien ajan. Se voisi periaatteessa toimia myös aikamatkaajan koneen mallina, kunhan sen rakennetta ei jäljittele turhan orjallisesti. Monimutkaisinkin binäärilogiikka perustuu pohjimmiltaan muutamaan erilaiseen loogiseen porttiin, joten liikkuvilla metallilevyillä pystyisi periaatteessa toteuttamaan mekaanisen vastineen mistä tahansa tietokoneesta. Esimerkiksi pyöriviä rattaita ja askelrumpuja kannattaa myös harkita alkeisosiksi, sillä useimmat mekaaniset laskimet perustuvat niihin. Lukuja pystyi tallentamaan työmuistiin, lukemaan käyttäjältä ja tulostamaan. Kaikki tietokoneen perusedellytykset siis löytyivät. N ykyaikaiset tietokoneet ovat mikropiireihin perustuvia sähkölaitteita
Differenssikoneet eivät kuitenkaan ole ohjelmoitavia tietokoneita, vaan ne sopivat vain funktiotaulukoiden tuottamiseen. 9 hulluudesta: esimerkiksi muistiin olisi pitänyt mahtua peräti tuhat 40-numeroista desimaalilukua, kun Zusellekin riitti vaivaiset 64 muistipaikkaa. Tietokoneen fyysisenä perustana voi käyttää myös esimerkiksi köysiä, vieriviä kuulia tai pneumatiikkaa. Pieni osa Analyyttisestä koneesta, Science Museum, Lontoo. Ruotsalainen Per Georg Scheutz rakensi differenssikoneestaan puisen prototyypin vuonna 1843 ja sai kaupaksi myöhemmin kaksi metallista versiota. Vaikka Analyyttinen kone ei valmistunutkaan, Babbagen vaatimattomampi idea eli differenssikone muotoutui toimiviksi laitteiksi jo 1800-luvulla. Jos aikamatkaaja päättää keksiä sähkön, hän voi rakentaa releitä, elektroniputkia ja ehkä jopa puolijohdediodeja ja -transistoreita. Optisen tietokoneen toteuttamiseen tarvitsee sen sijaan melko varmasti laseria, joten sen voinee suosiolla unohtaa. Deutsches Technikmuseum, Berliini. Edellä Uudelleenrakennettu Z1:n koneisto. Ne, jotka haluavat kuivaharjoitella mekaanisen tietokoneen rakentamista ennen varsinaista aikamatkaa, voivat käyttää vaikkapa Lego-palikoita. Toinen samalla vuosisadalla kehitetty tietokoneen esi-isä oli reikäkorttikone, jota käytettiin Yhdysvaltain vuoden 1890 väestönlaskennassa
Jos halutaan laskea yhteen kaksi mielivaltaista binäärilukua, tarvitaan summaimeksi kutsuttu elementti (kuva 3), joka ottaa kolme bittiä (A, B ja C) ja antaa niiden summan kaksibittisenä (D ja E). Binäärilogiikan toteuttamiseen riittää periaatteessa yksi ainoa porttityyppi (NAND tai NOR), mutta valikoiman kannattaa olla hieman laajempi, jotta koneen saa pienemmäksi. Liuskat oli asetettu ruudukoksi, jota ympäröi valitsinmekaniikka. Myös PDP-8 -minitietokoneen pienin ja hitain malli toimii näin. Z1:ssä oli tätä varten kaksi rekisteriä, R1 ja R2, ja 64 muistipaikan RAM-muisti. Ulos tulee nolla, jos molemmat sisään tulevat bitit ovat nollia, ja muussa tapauksessa ykkönen. Ongelmana oli kuitenkin hyppykäskyjen puute. Yleiskäyttöisen tietokoneen saa periaatteessa jopa häkellyttävän yksinkertaiseksi. Summan ylemmän bitin (D) voi ohjata toisen summaimen sisääntuloon, jolloin esimerkiksi kahdeksasta rinnakkaisesta summaimesta voidaan ketjuttaa kahden 8-bittisen luvun yhteenlaskupiiri (kuva 4). Näin luku ja kirjoitus saatiin kohdistettua yhteen tason liuskaan kerrallaan. käskykanta Z1:n käskykantaan kuuluivat aritmeettiset käskyt, muistinkäsittelykäskyt ja lukujen syöttöja tulostuskäskyt. Oman koneen käskykantaa ei siis kannata suunnitella Z1:n kaltaiseksi, sillä kehittyneempiäkin esikuvia on tarjolla. Posetiiveissa ja soittorasioissa on käytetty myös mekaanista rumpumuistia, jolle voisi tietokonekäytössä tallentaa esimerkiksi mikro-ohjelman, joka toteuttaa koneen varsinaisen käskykannan. Nykyaikaiset tietokoneet ajavat ohjelmansa RAM-muististaan, mutta Z1 luki käskynsä suoraan reikänauhalta, joka oli melko suosittu tallennusväline varhaisvuosikymmenten tietotekniikassa. 10 2013.2 mainitut Antikytheran kone ja Babbagen differenssikone on saatu toteutettua legoilla, ja brittiläinen legoharrastaja "Random Wraith" on rakentanut niistä myös loogisia portteja. Taso tasolta monimutkaisempiin yksiköihin edeten saadaan lopulta kokoon ohjelmaa suorittava kone, minkä jälkeen mahdolliset korkeammat abstraktiotasot voidaan toteuttaa ohjelmallisesti. Yksinkertaisin looginen portti on NOT-portti, joka ottaa sisään yhden bitin (0 tai 1) ja antaa ulos vastakkaisen bitin (1 tai 0). Porttiin sisään menevä bitti määräytyy sen mukaan, onko ylin levy ylävai alaasennossa. Näistä analogisista operaatioista voi rakentaa melko yksinkertaisesti digitaalisia piirejä — niin loogisia portteja kuin binäärisummaimiakin. Laskutoimitukset tehtiin aina kahden rekisterin välillä, ja tulos tallennettiin jompaankumpaan. Silmukat piti toteuttaa joko kirjoittamalla ne auki tai teippaamalla nauhan alkuja loppupää yhteen. Pyörimiseen perustuvassa logiikassa kannattaa Random Wraithin havaintojen mukaan käyttää alkeisoperaatioina pyörimismäärän summaa, erotusta, puolitusta ja itseisarvoa. Kolme valitsimelle annettua bittiä valitsi tasolta yhden kahdeksasta rivistä ja toiset kolme yhden kahdeksasta sarakkeesta. Kuva 2: Z1:n OR-portti Kuva 1: Z1:n NOT-portti. Zuse ei kuitenkaan lähtenyt edes Z1:ssä tällaiseen nuukailuun. Alkeet voi toteuttaa liikkuvien levyjen sijaan myös pyörivillä akseleilla ja rattailla, mikä saattaa olla jopa kannattavampi ratkaisu. Vasemmanpuoleisen levyn asento osoittaa ulostulevan bitin. Mekaaniset osat vaativat huolellista tahdistusta toimiakseen kunnolla yhdessä, joten tahtibittiä ei missään nimessä kannata optimoida pois. Toinen Zusen käyttämä portti oli OR (kuva 2), joka ottaa kaksi bittiä. Z1:n RAM-muistissa kutakin bittiä vastasi pieni metalliliuska, jonka asentoa muutettiin. Esimerkiksi monet soluKuva 3: Summain, joka laskee yhteen kaksi binäärilukua. Oikeanpuoleinen levy on tarkoitettu tahdistukseen, jota ilman portti ei anna tulosta. Pitkä summainketju ei kuitenkaan ole välttämätön. Kuva 4: Summainketju, joka laskee yhteen kaksi 8-bittistä lukua. Kokonaista ohjelmoitavaa tietokonetta ei sen sijaan kukaan liene vielä saanut aikaiseksi. Yksinkertaisesta monimutkaiseen Oli tietokoneen fyysinen ja teoreettinen perusta millainen hyvänsä, kannattaa se aina rakentaa abstraktiotaso kerrallaan. Sekä reikänauhaa että reikäkorttia on kuitenkin käytetty erilaisten mekaanisten laitteiden toiminnan ohjaamiseen jo 1700-luvulta alkaen. Muisti rakennettiin 22:sta tällaisesta bittitasosta, joita käytettiin samanaikaisesti. Esimerkiksi XOR-portti on hyvin käyttökelpoinen yhteenlaskupiireissä. Muistin käsittelyyn oli omat käskynsä, jotka kopioivat dataa rekistereistä muistiin ja takaisin. Esimerkiksi ensimmäinen suomalainen tietokone, ESKO (Elektroninen SarjaKOmputaattori), suoritti yhteenlaskut bitti kerrallaan yhtä summainta käyttäen. Toisessa vaiheessa näistä alkeiselementeistä rakennetaan hieman monimutkaisempia kokonaisuuksia, esimerkiksi muistija yhteenlaskuelementtejä. Kuvassa 1 on esitetty Zusen Z1:n käyttämän NOT-portin toiminta. Muistit ja puskurit Toimiva tietokone tarvitsee laskentaelementtien lisäksi tallennustilaa laskutuloksille. Ensimmäisessä vaiheessa kehitetään riittävä valikoima yksinkertaisia ja luotettavia alkeiselementtejä, esimerkiksi loogisia portteja
Vaikka sellaisen pystyisikin saamaan täysin luotettavaksi, on se moniin mielenkiintoisiin tehtäviin toivottoman hidas. Jo elektroniputkiin siirtymällä saadaan nopeus kuitenkin jopa monituhatkertaistettua. Generaattorien, muuntajien ja releiden rakentamiseen riittävät käsityötaidot ovat olleet olemassa jo satoja vuosia, mutta fysiikan ymmärrys ei riittänyt laitteiden keksimiseen ennen 1800-lukua. Ihmiskunnan on pitänyt käydä läpi monta ajattelun murrosta, ennen kuin tietokoneen idea pääsi edes muodostumaan. Oppirakennelmiin voi ujuttaa viittauksia "ajatteleviin koneisiin" ja tietojenkäsittelyn teoriaan. Edes 1970-luvulla tietokonefirmojen pomot eivät uskoneet, että kotitietokoneille olisi markkinoita. Hänellä saattaa nimittäin hyvinkin olla mukanaan esimerkiksi matkapuhelin, joka on jo taustavalonsa vuoksi muinaisihmisille aivan uskomaton taikaesine. Uuskivikauden heimosoturi saattaa siis hyvinkin olla vastaanottavaisempi tietokoneen idealle kuin antiikin filosofi. Ajatusleikin voi myös kääntää ympäri: jos keskuuteemme tulisi aikamatkaaja satojen vuosien päästä tulevaisuudesta, millaisina hän kokisi 2010-luvun tekniikan mahdollisuudet. Ensimmäinen sähkölaite, jonka aikamatkaaja ehkä haluaa tehdä, on paristo. 11 automaatit ovat Turing-täydellisiä. Babbagen ideaa aivotyön automatisoinnista ei tajuttu, vaikka ruumiillista työtä automatisoitiin jo kovaa vauhtia. Mikäli aikakauden ilmapiiri on turhan ahdasmielinen, ei radikaaleimpia ajatuksiaan kuitenkaan kannata kirjoittaa julki vaan tuoda ne esiin vain salaseurojen kokouksissa. Italialaistiedemies Giambattista della Porta taasen vakuutteli 1500-luvulla teoksessaan Magiae Naturalis, että oikea kunnon magia perustuu luonnontieteisiin eikä sisällä mitään henkiolentoihin liittyvää. Idean vaikeutta kuvaa sekin, että alan pioneerien on aina ollut vaikea saada ideoilleen hyväksyntää. Lisäksi tarvitaan kahta erilaista metallia anodiksi ja katodiksi. kuinka oikeutan luomukseni. Tietotekniikan historiaa kerrotaan usein insinöörinäkökulmasta: mekaanisista osista on siirrytty tyhjiöputkien kautta transistoreihin ja niistä aina vain tiheämpiin mikropiireihin. Sähkö mahdollistaa esimerkiksi lennättimen ja radion, jotka voivat antaa yhdelle jos toisellekin sotahullulle muinaishallitsijalle huomattavan etuaseman naapureihinsa nähden. Tietokoneeksi riittäisi siis teoriassa laite, joka kelaa muistinauhaa ympäri loputtomiin ja muuttaa kunkin muistipaikan tilaa edellisten solujen tilojen pohjalta. Kun aikamatkaaja on viestintätekniikkaa myymällä päässyt hallitsijoiden suosioon, on hänellä hyvät edellytykset myös tietokoneen rakentamiseen. Korkeamman tason eleganssia kaipaavat voivat kehittää vaikkapa Forth-tyylisen pinopohjaisen käskykannan. Tietokone olisi siis ollut keskiajalla täysin anakronistinen käsittämättömyys riippumatta siitä, olisiko se rakennettu puusta vai kaukaisen tulevaisuuden komponenteista. Elektroniputken valmistaminen taas onnistunee lasin, metallin ja eristyksen osalta perinteisillä käsityötaidoilla, mutta riittävän tyhjiön saaminen putken sisään voi koitua ongelmaksi. Mutta kuinka muu maailma suhtautuisi moiseen vekottimeen. keksisinkö sittenkin sähkön. Jonkinlaisia tyhjiöpumppuja tunnettiin jo antiikin aikaan, mutta putkitietokoneita havitteleva aikamatkaaja joutuu todennäköisesti kehittämään paremman tyhjiöntekotavan. Yksi ratkaisu voisi olla filosofiksi ryhtyminen. Jos ihmisiä nimittäin on vielä olemassa, heillä on nykytekniikasta jäljellä ainakin jonkinlaista perimätietoa ja sitä kautta edellytyksiä sen hahmottamiseen. Antiikin Kreikassa monimutkaisista koneista olivat kiinnostuneet lähinnä temppelit, jotka kilpailivat keskenään ja tarvitsivat siksi erilaisia "ihmeitä" vetonauloikseen. Aikamatkaaja tuskin siis tapaa elämänsä aikana kovinkaan monia, joille pystyisi suurella vaivallakaan selittämään tietokoneen ideaa. Aikamatkaajan on siis varauduttava siihen, että tiede, teknologia ja sarvipäisten pirujen kutsuminen ovat yhtä ja samaa noituutta valtaosalle ihmisistä. Puolijohdekomponenteista kiinnostunut saattaa puolestaan joutua käyttämään jopa vuosikymmeniä tarvittavien prosessien kehittämiseen ennen kuin pääsee rakentamaan tietokonetta. Käytännössä tällainen kone olisi etenkin mekaanisena äärimmäisen hidas ja vaivalloinen, eikä siitä olisi paatuneimmallekaan idealistille kuin teoreettista iloa. Jotta tietokone ei jäisi pelkäksi henkilökohtaiseksi salaprojektiksi, on aikamatkaajan yritettävä myös muokata kulttuuria vastaanottavaisemmaksi sille. Saisiko hän jo siitä aikaiseksi jotain meille täysin käsittämätöntä ja mullistavaa, vai katsoisiko hän viisaammaksi kehittää esimerkiksi nanoteknologiaa tai kvanttitietotekniikkaa eteenpäin ennen ihmekeksintönsä toteuttamista??. Muita mahdollisia esikuvia voisivat olla Data General Nova, TMS1000, RCA 1802 ja MOS 6502. Tietotekniikan tärkeyttä ei myöskään kannata yrittää perustella järkiperäisesti. Nopeimmat sähkömekaaniset tietokoneet ovat pystyneet noin kymmeneen yhteenlaskuun sekunnissa, joten tämän kummempaa suorituskykyä ei voi odottaa täysmekaanisiltakaan. Mikäli aikamatkaaja joutuu menneisyyden sijaan tulevaisuuteen, jossa ihmiskunta on ottanut huiman teknologisen takapakin, on hänellä yksi oleellinen etu. Mekaanisilla tietokoneilla on omat rajoitteensa. Sitä on siis hyvä päästä lataamaankin välillä, jotta taikavoiman eduista pääsee nauttimaan mahdollisimman pitkään. Riittävän kyvykäs ja onnekas aikamatkaaja pystyisi siis todennäköisesti rakentamaan tietokoneen keskiajalla tai aiemminkin. Ajatusleikkimme osoittaa kuitenkin, että kulttuurin kehitys on ollut vähintäänkin yhtä tärkeää. Monet alkeiskomponenteista asti tietokoneita rakentaneet harrastajat ovat päätyneet käyttämään PDP-8-minitietokoneen käskykantaa sen yksinkertaisuuden vuoksi, joten se voisi olla hyvä lähtökohta myös mekaaniselle tietokoneelle. Elektrolyyttinä voi käyttää esimerkiksi hapankaalia, pihlajanmarjoja, sitrushedelmiä tai etikkaa. Suurin osa nykyihmisistäkään ei tajua yleisen tietojenkäsittelyn ideaa, sillä tietokoneet ovat heille pelkkiä sovelluskokoelmia. Leibnizin rakennettua toimivan laskukoneen kukaan ei jatkanut hänen työtään sataan vuoteen. Tekniikan ja taikuuden rajat olivat melkoisen häilyvät ennen valistusaikaa. Sähkön keksiminen voi olla aikamatkaajalle muutenkin kannattavaa. Johdinten ja liittimen askarteluun kannattaa pyytää taitavan sepän apua
Bittiviivoittimella mitaten näyttäisi, että datanopeus on noin 870 bps. Lisäksi näppäimen pohjassa pitäminen tuottaa jatkuvan sarjan lyhyempiä ääniä. Mutta kuinka turvallista on vaikkapa langattoman näppäimistön käyttäminen ilkeän Even naapurina asuvalle Alicelle. Matkaradio on kuitenkin tehty AM-yleisradiolähetysten kuunteluun ja ääni on alipäästösuodatettua. Raa'an näytevirran analysointia. kvartsikiteitä eri ominaistaajuuksilla ja integroitu FM-vastaanotinpiiri. 12 2013.2 M oni tietokoneen oheislaite toimii nykyään langattomasti radioyhteydellä. Paremman kaistanleveyden saan halvalla USB-digi-TVsovittimella, jonka RTL2838vastaanotinpiirin voi virittää yllättävän mielivaltaiselle taajuudelle RTL-SDR-ohjelmistoradion avulla. Etsin kokeilumielessä käsiini vanhan Logitech iTouch -näppäimistön vuodelta 2000. Oskillaattorin nousevan nollakohdan hetkellä ohjelma tulostaa nollan tai ykkösen riippuen signaalin senhetkisestä taajuudesta, joka saadaan Fourier-muunnoksella. Näytevirta on radiosignaalin 8+8-bittinen vaihe-kvadratuuriesitys (I/Q), jonka reaaliosan voi tässä tapauksessa vähäisin vääristymin tulkita PCM:ksi ja tallentaa vaikkapa WAV-muotoon. Osa informaatiosta saattaa olla kadonnut suodatuksessa. 27 megahertsin taajuutta voi kuunnella millä tahansa matkaradiolla, jossa on 11 metrin lyhytaaltoalue. Näppäintä painaessa kuuluu yksi purske, ylös nostaessa toinen. Piirilevyllä on mm. Käsken laitteen myös ohittamaan omat TVpurkupiirinsä ja kaatamaan raa’an näytevirran reaaliajassa tietokoneelleni. Nykyaikaisiin USB-palikoihin verrattuna vastaanotin on suurikokoinen, ja sen toiminnasta ja taajuuksista voi päätellä jotakin jo piirilevyä tutkimalla. Se lähettää näppäinpainallukset 27 megahertsin taajuudella vastaanottimelle, joka liitetään PS/2-porttiin. FSK:ssa kantoaallon taajuus vaihtelee kahden arvon välillä, joista toinen vastaa ykköstä ja toinen nollaa. Näppäimistön sivussa on nappi, jossa lukee ”Connect”. Koska sivulliset voivat kuunnella kaikkea radioliikennettä varsin vaivatta ja huomaamattomasti, on liikenne yleensä tehty kuuntelukelvottomaksi salauksella. Kirjoitan siis C:llä ohjelman, jossa on 870 hertsin sinioskillaattori ja vaihelukittu silmukka (PLL) pitämässä siniaaltoa lukittuna dataan. Helpommin toiminta selviää kuuntelemalla radiota. Spektrogrammi näytevirrasta paljastaa, että signaali todella on FM-lähetteen erikoistapaus, binäärinen taajuudensiirtoavainnus (FSK) kahden kilohertsin siirtymällä. Oona Räisänen Haksorointi Ajossa valmis ohjelma, joka tulkitsee signaalin selväkieliseksi. Muutamien näppäinpainalluksien aikaansaamat bittijonot.. Yksi näppäimenpainallus tuottaa noin 85 bittiä dataa. Sen voisi kuvitella liittyvän salaus avainten uusimiseen. Näin voin tarkastella ja käsitellä signaalia niin kuin se olisi ääntä. Signaali kuuluukin samassa huoneessa olevasta radiostani purskeina taajuudella 27,140 MHz ja on hyvin voimakas. Sanoman pituus vaihtelee hieman, joten on mahdollista, että FSK:n päällä on vielä jokin koodaus. On siis aihetta olettaa, että tieto painetusta näppäimestä siirtyy radiokantoaallon taajuuden muutoksina. Alkuosat biteistä näyttävät pysyvän aina saSalattuja purskeita Kuinka turvallista on langattoman näppäimistön käyttäminen ilkeän Even naapurina asuvalle Alicelle
Pienimmän etäisyyden saanut näppäin tulostetaan näytölle keylogger-tyylisesti. Melko yksinkertainenkin salaus riittäisi piilottamaan korrelaation. Ilkeä Eve voi tilastoida vastaanottamiensa bittijonojen esiintymistiheydet ja verrata niitä vaikkapa suomen kielen tunnettuihin merkkitiheyksiin. Näin on mahdollista lopulta päätellä bittijonoja vastaavat näppäinpainallukset, vaikka protokollakin olisi tuntematon. On toki mahdollista, ettei salakuuntelija pääse etukäteen käsiksi näppäimistöön eikä voi kokeilla kaikkia näppäimiä yksitellen. Ne voidaan sivuuttaa, kun jokaisesta näppäimestä tallennetaan muutamia viestejä: viesteistä luodaan tyyppiesimerkki tai keskiarvo, ja nämä keskiarvot tallennetaan luetteloon yhdistettynä vastaavaan näppäimeen. Viestit nimittäin korreloivat voimakkaasti painetun näppäimen kanssa: tietyn näppäimen painamisen aiheuttaa aina suunnilleen samanlaisen bittijonon. Connect-nappi ei siis myöskään liity avainneuvotteluun. Se sisältää mahdollisesti PS/2-näppäinkoodin, mutta koodaus ei ole ilmiselvä. Jotkin oheislaitteet käyttävät salattua Bluetoothia tai muita yleisiä protokollia. Tuntemattomat muuttuvat kentät viesteissä ovat mahdollisesti laskureita ja tarkistussummia. Nykyisin langattomat oheislaitteet ovat siirtyneet 27 megahertsistä 2,4 gigahertsin alueelle ja liikenteen salauskin on todennäköisesti kehittynyt. Taajuus ei toki vaikeuta kuuntelua eikä ole tietoturvaa parantava tekijä, joskaan juuri käyttämäni TV-vastaanotin ei ilman muutoksia aivan sinne asti virity. 13 moina, joten ne lienevät tahdistus-, osoitetai tunnistekenttiä. Sen avainneuvottelussa on kuitenkin mielenkiintoisen epäilyttäviä vaiheita, jotka saattavat tuoda tälle jutulle jatkoa.?. Bittijonon loppuosa muuttuu näppäinpainallusten välillä, erityisesti jos painetaan eri näppäimiä. Logitech iTouch -näppäimistöllä kirjoittaminen on siis verrattavissa siihen, että huutaisi salasanansa ja sähköpostiviestinsä huoneen yli niin lujaa, että naapuritkin kuulevat. Tämä tunnetaan frekvenssianalyysinä. Oma sohvanäppäimistöni käyttää Logitechin Unifying-tekniikkaa, joka väittää salaavansa liikenteen 128-bittisellä AES:llä. Minkäänlaista salausta liikenteessä ei ole. Tämä on kuitenkin pelkkä hidaste. Tämän jälkeen salakuunteleva Eve voi verrata kuulemaansa dataa kaikkiin luettelon bittijonoihin ja pisteyttää kaikki vaihtoehdot esimerkiksi Levenshtein-etäisyyttä käyttäen
Yleisöön voi vedota monin tavoin, mutta teknisten rajojen rikkominen näyttävästi ja tyylillä toimii edelleen hyvin. Monet eivät kuitenkaan oikein tajua demojen olemusta. Demoskenen tekninen kekseliäisyys onkin vuosien mittaan siirtynyt megatavuluokan demoista tiukempiin kategorioihin, joissa on tyypillisesti rajoitettu ohjelman kokoa, laitealustaa tai molempia. Ville-Matias Heikkilä C-64-demo 2008: Sivureunat ylittävä plasmaefekti. Etenkin vanhemmissa demoissa suurimman osan elementeistä voi varsin turvallisesti lukea rehvasteluksi: "Katsokaa, osasin tehdä tämän!" Kovimmilla rajojenrikkojilla tämä voi myös kääntyä muotoon "Katsokaa, tämä on mahdollista!" Katsomiskokemukseen vaikuttaa paitsi käytettyjen teknisten puitteiden ymmärtäminen, myös tieto siitä, mitä kaikkea näiden puitteiden alaisuudessa on aiemmin tehty. Aluksi murtajat muokkailivat pelien teksteihin nimimerkkejään, mutta ennen pitkää myös signeerauksen näyttävyydestä tuli oma kilpailulajinsa. Harvempi kuitenkaan osaa arvostaa demoja taidemuotona. Muutaman kilotavun kokoiseen ohjelmaan ei voi tallentaa valtavaa 3Dmaailmaa tavanomaisin keiMiksi demot ovat niin tympeitä. Skrolli kertoo nyt, kuinka demoja kannattaa yrittää lähestyä, jotta niistä saisi jotain irti. Osaamiskilpailu Demot syntyivät nuorten tietokoneharrastajien halusta todistella osaamistaan toisilleen. En uskoisi, ellen itse näkisi! (1001 Crew: Border Letter I). Vaikka testosteroninkatkuisten jengisotien ajoista onkin jo aikuistuttu, valtaosa demoista julkaistaan edelleen demotapahtumien kilpailuissa eli kompoissa, joiden voittajat valitaan yleisöäänestyksellä. Omat saavutukset piti tietenkin merkitä. Onko niissä oikeastikin jotain näkemisen arvoista salaseuroihin vihkiytymättömälle. Nykykoneiden rajoja on kuitenkin vaikea saavuttaa, ja rimaa on lisäksi nostamassa peliteollisuus miljoonabudjetteineen. Eikö kukaan oikeasti kaipaa niihin mitään sanomaa tai juonta. Näin kehittyivät crack-introt ja itsenäiset taidonnäyteohjelmat, demot. Suomalaisessa tietokonekulttuurissa ei voi olla törmäämättä demoskeneen ja sen tuotoksiin. Suurella osalla Suomen kovimmista IT-osaajista on demotaustaa, Suomen peliala on suorastaan demontekijöiden hallussa, ja merkittävimmät tietokoneharrastajien tapahtumat ovat pohjimmiltaan demoskenetapahtumia. 14 2013.2 kulttuuri S uomessa on väkilukuun nähden vahvempi demoskene kuin missään muussa maassa. Maallikko saattaa helposti hämmästellä täysin keskinkertaistakin neljän kilotavun demoa, sillä hänellä ei ole tuntumaa siihen, mitä tähän kokoon on aiemmin saatu mahtumaan. Mitä kiinnostavaa on yksitoikkoisen musiikin tahtiin pyörivissä ja pomppivissa möhkäleissä. 1980-luvun alun peleissä oli jo kopiosuojauksia, joten suojausten murtamistaito oli harrastepiireissä kovaa valuuttaa. Osaamisella ja saavutuksilla kilpaileminen on edelleen tärkeä motivaattori demojen tekemiselle. Hohhoijaa, kyllä siinä on taas haaskattu aikaa rasteriajoitusten nysväykseen! (Booze Design: Edge of Disgrace) C-64-demo 1986: Sivureunat ylittävä skrolleri
(Trilobit: Doctor, Atari 2600, 2008). Vuodesta ja vuosikymmenestä toiseen katseltavat demot loistavatkin myös esteettisessä mielessä: hyvää musiikkia, nättiä grafiikkaa, hienosti musiikin mukana soljuvaa etenemistä. (RGBA: Elevated, PC-4K, 2009) PC-skenen saa naurunalaiseksi vaikkapa uudelleentoteuttamalla heidän yliarvostetuimman demonsa C-64:llä. Demoista voi siis aivan hyvin nauttia myös tajuamatta niiden tekniikasta mitään. Esteettinen ulottuvuus on ollut demoissa alusta asti. Useimmat nykydemot, varsinkin väljärajaiset PC-demot, eivät edes yritä päteä tekniikalla vaan lähtevät pelkästä estetiikasta. Muotokeskeisyyden yhtenä alkusyynä voisi pitää kilpailuja, joissa teokset asetetaan paremmuusjärjestykMinikokoisilla vuoristolentelyillä säväytetään vuosikymmenestä toiseen. Nykyään koko maisema pitää tuottaa shader-ohjelmointina. Joku vie tekniikkaa aina eteenpäin, eivätkä vanhat saavutukset enää nosta kylmiä väreitä pintaan. Tavanomainen demoestetiikka ei avaudu useimmille kovinkaan helposti. Monet pitkät skrollitekstit olisivat jääneet 80-luvulla lukematta, ellei taustalla olisi soinut hyvä musiikki eivätkä rasteripalkit olisi pomppineet kauniisti. Tavanomaisessa tietokonekulttuurissa laitteiston ominaisuudet pelkistyvät aina lopulta laskentakapasiteetiksi, ja vanhat laitteet syrjäytyvät uusien ja tehokkaampien tieltä. 90-luvun alkupuolella vallitsevaksi rakenteeksi vaihtui trackmo-tyyli, jossa musiikki, visuaalinen esitys ja uuden sisällön lataus levyltä tahdistettiin muutaman minuutin mittaiseksi musiikkivideomaiseksi kokonaisuudeksi. (Cyberpunks Unity: R, ZX Spectrum, 2004). Samaa osaa saattoi pitää pyörimässä vaikka tuntikausia, sillä katsoja siirtyi itse seuraavaan osaan esimerkiksi välilyöntiä painamalla. (Smash Designs: Second Reality 64, 1997) Monet ovat pitäneet tätä venäläisdemoa humoristisena, mutta tekijä on vakavissaan poliittisen sanomansa kanssa. Alustavalinta on myös pikemminkin makuasia kuin sukupolvikysymys: esimerkiksi 1990-luvulla syntynyt harrastaja saattaa hyvinkin käyttää demotaiteeseen mieluummin Commodore 64:ää kuin nyky-PC:tä, eikä siinä ole kenenkään mielestä mitään outoa. 15 noin, vaan sen luomiseen on kehitettävä ohjelmallisia tekniikoita. Monilla ryhmillä toki on pitkälle viety omintakeinen tyyli, mutta genrepiirteisiin ei siltikään voi olla törmäämättä. Demojen katsominen vaatii kuitenkin joka tapauksessa opettelua. Valtaosa nykydemoistakin noudattaa trackmo-rakennetta. kauneuskin on tärkeää Tekniset saavutukset ovat kuitenkin lyhytikäisiä. Kun haastavimmatkin vakioalustat on jo koluttu, on aika nostaa vaikeustasoa. Genrestä voidaan puhua myös siksi, että useimmat demot ovat hyvin muotokeskeisiä. Samat vakiintuneet elementit ja tyyliseikat toistuvat teoksesta toiseen: muille ryhmille lähetetään terveisiä, kuutioita pyöritellään kunnianosoituksena vanhoille perinteille, ja kaikkea mahdollista tahdistetaan bassorumpuun. Rajojen ja haasteiden tärkeys on luonut demoskenelle omanlaisen suhteen laitealustoihin. Monet maallikot esimerkiksi yrittävät suhtautua demoihin lyhytelokuvina, jolloin ne vaikuttavat hajanaisilta ja sisällöllisesti tyhjiltä. Kasibittisillä koneilla puolestaan ei voi tehdä kaikkea yleiskäyttöisellä 3D-moottorilla, vaan ennennäkemättömien asioiden tekeminen vaatii laitteiston ominaispiirteiden hyödyntämistä epätavallisin ja luovin tavoin. Demontekijöille sen sijaan kaikki alustat ovat olemassa tässä ja nyt, kukin omine erityispiirteineen, rajoituksineen ja niistä kumpuavine haasteineen ja estetiikkoineen. Ne, jotka vastaanottavat demot musiikkivideoiden tai VJ-settien tapaan, saavat estetiikasta hieman enemmän irti. Joku onkin joskus verrannut demoskeneä ninjoihin: pakko mennä ikkunasta, vaikka vieressä on ovi. Se on kuin totuttelua musiikkigenreen, jossa on kuuluvien soitinten lisäksi visuaalisia soittimia
Toisaalta etenkin monia vanhoja tekijöitä vaivaa myös kunnianhimon puute — heille on pääasia, että he ylipäätään saavat tehtyä jotain osoittaakseen olevansa edelleen hengissä. Demotekniikka tarjoaa periaatteessa erinomaiset edellytykset myös sisältölähtöisille teoksille. Usein tämä on kuitenkin pelkkää silmänlumetta. Siitä, ovatko demot taidetta, kiisteltiin jo 90-luvulla. Tyyliltään kokeellisempi demo ei välttämättä menesty, ja liiallista sisältökikkailua saatetaan pitää jopa halpana keinona voittaa teknisesti ansiokkaampi teos. 16 2013.2 seen. Tekniikkaa viedään aina uusiin äärimmäisyyksiin, saavutuksilla kilpaillaan ja uusien temppujen keksijät nostetaan kaikkia muita korkeammalle. Monet demontekijät julkaisevatkin kokeellisemmat teoksensa eri taiteilijanimellä kuin "vakavammat" demonsa, jottei heidän maineensa tahriintuisi. Jos yleisössä on paljon demoihin vihkiytymättömiä, kannattaa demoestetiikkaa viedä hieman elokuvamaisempaan suuntaan, jolloin teos näyttää kertovan jostain. Sisältö, muoto ja estetiikka tulevat ikään kuin sivutuotteina, eikä niiden rajoja rikota läheskään yhtä innokkaasti. En tajua, diskataan! (Halcyon: Chimera, PC, 2002) Kaunis ja teknisesti vaikuttava PC:n 64K-demo raytracereineen, mutta pitikö se mennä pilaamaan jollain runontyngillä. Pääsyy demojen itsepintaiselle staattisuudelle on varmastikin se, että ne tehdään kilpailujen kertaesityksiä varten. Etenkin teknisille äärirajoille menevä koodi saattaa olla hyvinkin virhealtista, joten ohjelman suoritus on hyvä lyödä lukkoon. Toisaalta jos idea on niin erikoinen, ettei mikään valmisohjelma taivu siihen kovin hyvin, voi demotekniikka olla hyvinkin varteenotettava vaihtoehto. Estetiikkakokeiluissa on vain mielikuvitus rajana. Monille demot ovat pikemminkin käsityötä, teknistä näpertelyä, jossa estetiikka syntyy tekniikan ehdoilla. (Exceed: Heaven Seven, 2000). Tyyliltään äärimmäisemmät demot ammentavat usein esimerkiksi noisetai glitch-estetiikasta tai käyttävät esimerkiksi ambient-taustaa tavanomaisempien musiikkityylien sijaan. On kuitenkin yksi normi, johon avantgarde-henkisimmätkään demotaiteilijat eivät yleensä vaivaudu kajoamaan — nimittäin se, että demot ovat joka katsomiskerralla samanlaisia. Mikään ei saa mennä esitystilanteessa vikaan, joten epävarmuustekijät on hyvä minimoida. Jos joku haluaa tehdä esimerkiksi tavallisia animaatioelokuvia, hänen kannattaa opetella mieluummin siihen tarkoitetun valmisohjelman käyttö kuin demokoodaus. Monissa demoissa näyttää olevan tekniikan ja estetiikan lisäksi myös sisältöä: teemoja, juonia ja jopa sanomaa. Koko nykyinen demoestetiikka olisi jäänyt syntymättä, elleivät 90-luvun Amiga-ryhmät olisi rikkoneet ennakkokäsityksiä siitä, millaisia demot voivat olla. Tarvitaanko sisältöä. Lisäksi useimmat demokoodaajat ohjelmoivat myös työkseen, joten on ymmärrettävää, etteivät he halua keskittyä vapaa-aikanaan bugien metsästykseen ja poikkeustilanteiden huomioimiseen. Valtaosa demoista sijoittuu jonnekin näiden ääripäiden väliin, joskin yleensä lähemmäksi käsityötä kuin taidetta. ilmaisun rajat Teknisten rajojen rikkominen on yleisen näkemyksen mukaan koko demotaiteen järkähtämätön perusta. Toisaalta on myös demoja, joissa taiteellinen ilmaisu on etusijalla ja tekniikkaa käytetään vain toteutusvälineenä. Tästä kerronnasta on kuitenkin yleensä suunnilleen yhtä turhaa etsiä merkityksiä kuin italodiskon sanoituksista. Sen sijaan jos demo poikkeaa hyvin voimakkaasti vakiintuneista normeista, voi vastaanotto olla hyvinkin nuiva. Onneksi ne saa pois päältä. Satunnaisuutta ja vuorovaikutteisuutta olisi demoissa varmasti huomattavasti enemmän, mikäli niiden päänäyttämönä olisivat edelleen yksittäisten harrastajien koAlkaako tämä edes koskaan. Idean toteuttaminen nimenomaan demona ei ole kuitenkaan yleensä kovin järkevää, ellei taiteilija erityisesti halua sanoa tekniikkavalinnallaan jotain. Ilmaisun rajojen hillitty puskeminen on kuitenkin aina kuulunut demotaiteeseen
Demontekijän voi olla yllättävän vaikea löytää yhteistä kieltä sellaisten ihmisten kanssa, jotka tekevät samantapaisia asioita muista lähtökohdista käsin. Digitaalisen median tutkijat Nick Montfort ja Ian Bogost ovat puolestaan perustaneet uuden tutkimusalan, alustatutkimuksen (platform studies), joka voi osoittautua hyvinkin hyödylliseksi myös demojen tutkimuksessa. Demot ovat omaleimainen ja rajattomat mahdollisuudet tarjoava ilmaisumuoto, jonka kantavana voimana on radikaali tekninen kokeellisuus. Demojen estetiikasta tohtoriksi väitellyt Daniel Botz on esimerkiksi havainnut, etteivät laitealustat ole demontekijöille niinkään työvälineitä vaan raaka-ainetta, josta teokset muotoillaan. Vähäisenkin dynaamisuuden kautta voisi myös hyvin tutkia niitä laajoja harmaita alueita, jotka jäävät demojen, pelien ja lelusovellusten väliin ja löytää niiden kautta aivan uudenlaisia rajoja rikottavaksi. (ASD: Lifeforce, PC, 2007). Mahdolliset tekniset saavutukset eivät avaudu tai vaikuttavat tyhjänpäiväiseltä näpertelyltä. (Spaceballs: State of the Art, Amiga, 1992) Terkut pitää toki lähettää perinteitä kunnioittaen, vaikka demo olisi rakennettu hc-punk-ääniraidan päälle. Pahimmillaan skenen sisäiset normit estävät demoja etsiytymästä uusille urille ja demontekijöitä näkemästä laatikkonsa ulkopuolelle. (ISO: Vati, PC, 1997) Tätäkin klassikkoa paheksuttiin aikanaan, koska se keskittyy meininkiin enemmän kuin tekniikkaan. Useimpien demontekijöiden päämotivaattorina ovat kuitenkin demotapahtumat vakiintuneine kilpailumuotoineen, eikä samantapaista intoa julkaista teoksia tapahtumien ulkopuolella ole. (Traktor: Jesus Christ Motocross, Amiga, 2009) Tämä näyttää ensikatsomalta sanovan jotain, mutta oikeasti se on vain melko epäyhtenäinen sarja sekalaisia hienoja juttuja. Estetiikasta ei saa otetta, kaavamaisuus puuduttaa, ulkokuoren takaa ei löydy sisältöä, ja sisäpiirivitsit menevät yli hilseen. Vuosituhannen vaihteessa, kun demoskenen kasvupiikki oli jo takana päin, alettiin demotaidetta tuoda ahkerammin julkisuuteen. Kuppikuntaisuuden ongelmat on tiedostettu jo pitkään. Ruvettiin muodostamaan yhteyksiä taideja tiedepiireihin, kirjoittamaan kirjoja, järjestämään demoesityksiä ja seminaareja. 17 tikoneet. Jotta demotaide siis saisi ansaitsemansa hyväksynnän ja arvostuksen, tarvitaan tutkimusta, joka määrittelee sen suhteen muuhun maailmaan. Demokulttuurin akateeminen tutkimus on alkanut toimia viime vuosina, kun tutkijat ovat löytäneet sen kuvaamiseen sopivia teoreettisia käsitteitä. Pelaajat eivät pääse pelaamaan niitä eivätkä hakkerit lukemaan niiden lähdekoodeja. Vaikka iso osa demoista onkin rehellisesti huonoja jopa tekijöidensä mielestä, maallikoiden on vaikea arvostaa hyvinäkään pidettyjä. Vuodesta 1998 järjestetty Alternative Party on alusta asti kyseenalaistanut demoskenen vallitsevia normeja ja yrittänyt löytää demotaiteeseen tuoreita näkökulmia. Alakulttuureille ominainen sisäänpäinlämpiävyys on ollut demoskenelle sekä siunaus että kirous. Vaikka ponnistelut ovatkin tuottaneet jonkin verran tulosta, perusongelma on pysynyt: demonteko on edelleen pitkälti sisäpiiritouhua, jota on vaikea sijoittaa toisten määrittelemiin lokeroihin. Tästä syystä myös Skrolli pyrkii pitämään demokulttuuria esillä.. Demot ovat liian tyhjiä taiteeksi, liian outoja viihteeksi ja liian teknisiä akateemisiksi kiinnostuksenkohteiksi. Toisaalta se on päästänyt demotaiteen kehittymään omilla ehdoillaan omaan suuntaansa, mutta toisaalta se on myös tehnyt siitä vaikeasti lähestyttävää ja muotoihinsa jämähtänyttä. Perinteet ja muotoseikat kuitenkin tukahduttavat demojen potentiaalia. Demojen tulevaisuuden kannalta olisi siis hienoa, jos niitä tehtäisiin, katsottaisiin ja ymmärrettäisiin enemmän myös perinteisen skenensä ulkopuolella. Teknisen osaamiskilpailun pyhää lehmää on myös välillä hyvä mäiskiä. kun ulkopuoliset eivät ymmärrä Demot voivat olla tympeitä monista syistä
Mutta miten onnistuu ohjelmien kehittäminen laitteille, joille ei ole saatavilla virallisia kehitystyökaluja. Kotitietokoneiden ohjelmointi on ollut huomattavasti helpompaa, mutta siihenkin on liittynyt paljon salaisuuksia. Entä jos laite yksinkertaisesti on jo sen verran vanha, ettei sille ole olemassa mitään alkuperäisen kehittäjän resursseja. Tämän artikkelin tarkoitus ei ole olla syväluotaava "tee perässä" -opas. Erityisesti konsoleiden valmistajat ovat perinteisesti kontrolloineet sitä, millaiset kehittäjät ovat saaneet mahdollisuuden käyttää sisäiseen käyttöön suunnattuja kehitystyökaluja ja tarpeellisia julkaisukoneistoja ohjelmien saattamiseksi markkinoille asti. Nykyaikainen ohjelmistokehitys on yhä enemmän kytköksissä vapaasti saataviin kehitystyökaluihin ja yleisiin standardeihin, jotka ovat kaikkien saatavilla ja hyödynnettävissä. 18 2013.2 rauta K odin tietokoneet ja pelikonsolit yleistyivät 1980-luvun alkupuolella. Teksti: Visa-Valtteri Pimiä Kuvat: Visa-Valtteri Pimiä, Marko Mäkelä, Wikimedia Commons (Hedning, Appaloosa) PowerPak, CompactFlash-moduulisovitin Nintendo Entertainment Systemille. IDE64, ATA-/ATAPI-sovitin Commodore 64:lle. homebrew-liikkeelle, jossa nimensä mukaisesti kotipolttoista ohjelmistoa luodaan omin ehdoin. Tämä nykypäivän itsestäänselvyys ei kuitenkaan päde suljettujen alustojen, kuten kotija käsikonsoleiden, tai muuten vain nykylaitteiden kanssa suoraan epäyhteensopivien, noin vuosikymmenen takaisten ja sitä vanhempien alustojen kohdalla. Homebrew — kotipolttoista kehitystä konsoleille ja kotitietokoneille Omien ohjelmien ja pelien luonti menneiden konsolija tietokonesukupolvien koneille on varmasti käynyt monen laitteita käyttäneen mielessä. Näistä ammennettiin pohja emulaattorien ja kääntäjien, manuaalien ja tutoriaalien, ohjelmaesimerkkien ja työkaluohjelmien kehitykselle. Pikemminkin se antaa tarvittavat ainekset lisätiedon hankintaan ja kattavan yleiskatsauksen homebrew-kehitykseen syventyen niihin osa-alueisiin, joissa vaaditaan erityisiä laitteistoja ohjelmistoratkaisuja. Etenkin konsoleille on ollut perinteisesti liki mahdoton kehittää omia ohjelmia, sillä alustat ovat olleet suljettuja muille kuin kaupallisille pelija ohjelmistoyrityksille. Nämä tarpeelliset osat loivat pohjan ns. Suljettujen laitteiden tapauksessa ihmisiä yhdistävä internet mahdollisti kuitenkin vapaammaan tiedonvaihdon. Julkaisuajankohtanaan suljetut tai muuten vain huonosti dokumentoidut koneet pysyivät saavuttamattomissa monelle innokkaalle ohjelmointiharrastajalle vuosia tai jopa vuosikymmeniä. Olisiko myös mahdollista käyttää myös korkeamman tason ohjelmointikieliä ohjelmistokehitykseen näille erittäin yleisille kotitietokoneille ja samantyyppisille pelikonsoleille. Yhteisöllisyyden lisääntyessä harrastelijaryhmien toiminnassa myös vanhat konsolit ja tietokoneet saivat ensimmäiset tietopankkinsa
Listaamalla molemmista alustoista ominaisuudet voidaan niistä rajata tarpeellisten työkalujen etsintä oleellisiin valintoihin. Tiedonsiirto ja syöttölaitteet Useita standardoituja tiedonsiirtoliitäntöjä, Atari-standardin peliohjainliitännät NES-peliohjainliitännät tai Famicomin konsolissa kiinni olevat ohjaimet. C64:lle erikoistunut Kick Assembler sisältää monimutkaiset makroohjelmointiominaisuudet ja kattavan apukirjaston funktioita datatiedostojen kuten äänen ja grafiikan käsittelyyn. Lisäpiireillä sekä Nintendo että kolmannen osapuolen kehittäjät laajensivat NESin ominaisuuksia sen menestyttyä markkinoilla. Tämä nopeuttaa kääntämistä ja helpottaa ohjelmakoodin testaamista ja virheiden etsintää, ja modernien käyttöjärjestelmien tarjoamat edut ovat käytettävissä. 6502-suoritinta ohjelmoidaan yleensä joko suoraan 6502-assemblyllä tai sopivalla C-kääntäjällä. Saatavilla lisäksi CopyNES-kehityslaite joka mahdollistaa nopean tiedonsiirron. NES-emulaattorit käyttävät usean eri standardin mukaisia ROM-moduulien kuvaustiedostoja, jotka sisältävät ohjelmakoodin ja -datan lisäksi tietoja moduulin lisäominaisuuksista kuten lisämuistin määrästä ja lisäpiireistä. Dasm on pitkän kehityksen tulos ja yhä varsin käyttökelpoinen assemblerohjelma. ROM-kasetit ja Famicom Disk Systemlevykeasema, lisäksi saatavilla massamuistilaitteilta ROM-tiedostoja lukevia FPGA-pohjaisia flashcartteja. Commodore 64 lataa ja suorittaa binääritiedostoja sellaisenaan alkaen osoitteesta, joka annetaan tiedoston kahdessa ensimmäisessä tavussa. kerta mainloopissa inc scrollcounter lda scrollcounter cmp #120 bne mainloop ldx #38 ldy #0 sty scrollcounter ; merkkien siirto ruudulla yksi ; merkki vasemmalle scroll: lda screen+$0208+1,y sta screen+$0208,y iny dex bpl scroll ; uuden merkin syöttö oikealta ldx scrollpos lda scrolltext,x ; loppumerkki tekstissä, alkuun cmp #255 beq init ; ASCII -> PETSCII sbc #63 sta screen+$0208+39 ; seuraava merkki inc scrollpos jmp mainloop scrollpos: DC scrollcounter: DC scrolltext: DC "HEIPPA'MAAILMA''''''''''''TERVEISET 'SKROLLIN'LUKIJOILLE'JA'TRILOBITILLE'JA'PWPLLE' ''PERINTEISEEN'TAPAAN'VOIT'VAIKKA'KERTOA'TERVEI SET'KAIKILLE'SUOSIKKIASIOILLESI'KUTEN'ESIMERKIK SI'KISSOILLE'JA'POLKUVENEILLE'''''''''''''''''' ''''''''''''''''''''''''''''''''''''''",255 ; kääntö DASMilla: ; dasm scroll.asm -o scroll.prg ; ohjelman suoritus Commodore 64 ; BASICkehotteesta: SYS 4096 C2N232, RS-232-liitäntäinen kasettiasemasimulaattori 1541 Ultimate Plus, FPGA-pohjainen levyasemaja moduulisimulaattori Commodore 64:lle. — pehmeä nelisuuntainen skrollaus riippuen asetuksista, rautaspritet, usean väripaletin tuki Äänentoisto SID — erittäin monipuolinen syntetisaattoripiiri joka mahdollistaa monimutkaisen ääniohjelmoinnin APU 2A03 — viisi kanavaa, 7-bittinen äänisampletoisto Tallennusmedia C-kasetti ja 5¼ tuuman levyke. Lisäksi yleisesti saatavilla olevia moduuleja, joissa tallennusominaisuudet. Commodorelle taas oli saatavilla hyvin paljon erilaisia laitteen toimintaa laajentavia moduuleja ja oheislaitteita, ja se oli avoimena julkaisualus/* ESIMERKKIKOODIA COMMODORE 64:LLE SKROLLIN TEKSTISKROLLERI KÄÄNTÄJÄ: DASM */ processor 6502 org $1000 ; näyttömuisti alkaa kohdasta $0400 ; (osoite heksadesimaaleina) screen: EQU $0400 init: ldy #0 sty scrollpos ; ruudun tyhjennys lda #$20 ldx #0 clearscreen: sta screen,x sta screen+$0100,x sta screen+$0200,x sta screen+$0300,x dex bne clearscreen mainloop: ; reunaefekti, $d020 on reunaväriosoite ldx #$4d effect: asl $d020 inc $d020 dex cpx #15 bne effect ; skrollataan vain joka 120. 19 Commodore 64 NES Suoritinarkkitehtuuri 6502-yhteensopiva 6502-yhteensopiva Muisti RAM: 64 kilotavua (+laajennuksia -BASICin syömä pieni osuus) RAM: 2 kilotavua (+kasettilaajennukset) Näytönohjain VIC-II — useita erilaisia näyttötiloja erilaisilla värimäärillä, 8 pikselin rautaskrollaus, rautaspritet RP2C0. ristiinkääntäjää, jota ajetaan suorituskykyisemmässä tietokoneessa. Muita suosittuja 6502-ristiinkääntäjiä ovat ACME, XA65 ja C-kääntäjä CC65:n mukana tuleva CA65. Commodore 64 ja NES Käsitellään ensimmäisinä esimerkkeinä kahta 8-bittiseen prosessoriarkkitehtuuriin perustuvaa suosittua kotikäyttöön tarkoitettua laitetta, Nintendo Entertainment Systemiä eli tutummin NESiä, ja Commodore 64 -kotitietokonetta. Siksipä sen sijaan, että ohjelmakoodi käännettäisiin kohdealustalla, se käännetäänkin toisella koneella ja käsitellään sitten kohdealustan ymmärtämään suoritettavaan tiedostomuotoon. kääntäjä Monesti koodin voi kääntää kohdelaitteessa, mutta yleensä kannattaa käyttää ns. Kun lähtee selvittämään kehitystä tuntemattomalle alustalle, kannattaa aloittaa tunnistamalla sen oleellisimmat komponentit ja niiden ominaisuudet: prosessori, muistin määrä ja tyyppi, näytönohjain ja äänentoisto-ominaisuudet, tallennusmedia ja tiedonsiirtoja syöttölaiteliitännät
NESkehitystä helpottaa huomattavasti neslibkirjasto, joka tarjoaa loogisesti nimetyn ja jäsennellyn rajapinnan NESin muistiin ja laitteistoon. Kummallakin laitteella voidaan toistaa moniväristä grafiikkaa ja monikanavaista ääntä. Molemmat laitteet tukevat myös spritejä, joilla voi rakentaa pelihahmoja ja muita liikkuvia kuvaelementtejä. Paketista löytyy myös monipuolisempia ohjelmaesimerkkejä. Grafiikan ja äänien ohjelmointi onnistuu parhaiten hyvän hakuteoksen kera. Tässä muutama, joka soveltuu myös useille erilaisille saman aikakauden kotitietokoneille: •?Ohjelmabinääritiedosto voidaan muuntaa ääneksi, joka tallennetaan kasetille ja ladataan siltä. •?Modeemitai nollamodeemikaapelisiirto. Täten emulaattoreihin ei voi luottaa ainoana testausympäristönä. C64 ei ole sidottu pelkästään yhteen kuvatarkkuuteen, ja NES voi skrollata pehmeästi neljän näytöllisen edestä grafiikkaa ruudulla. Varoituksen sanana tosin se, että emulaattoreiden toiminta ei aina vastaa alkuperäisen laitteen toimintaa ja voi johtaa loogisten virheiden ja bugien analysoinnissa valheellisiin tunnistuksiin. Suoritus Assemblerin tuottama prg-tiedosto voidaan suorittaa sellaisenaan Commodore 64:llä monella eri tapaa. Commodoren tapauksessa koneen oma manuaali sisältää kaiken tarpeellisen tiedon muistiosoitteista ja näytönohjaimen ja äänipiirin ominaisuuksista. Yleensä nykyiset emulaattorit ovat riittävän tarkkoja simuloimaan koko laitteen toiminnot ja oheislaitteet, joten niitä kannattaa käyttää myös helppona testausvälineenä ohjelmalleen. Molemmat laitteet ovat äärimmäisen hyviä kehitysalustoja sekä niiden verrannallisen yksinkertaisuuden että monipuolisuuden takia. NESillä ROM-kuvatiedoston suorittaminen vaatii ROM-moduulien toimintaa jäljittelevän kehityslaitteen, joka simuloi FPGA-piirillä moduulien erikoispiirejä. Tässä menetelmässä samantyyppisen laitteiston sisältävän pelimoduulin ROM-piirit vaihdetaan itse kirjoitettuihin piireihin, jotka sisältävät oman ohjelman grafiikat ja ohjelmakoodin omilla piireillään. Näitä käyttämällä grafiikkaja äänidatan käsittely ohjelmakoodissa jää vähäiseksi, jättäen monimutkaisten synteesija grafiikkaominaisuuksien toteuttamisen näiden ohjelmien varaan. Musiikin tekemiseen löytyy muun muassa NerdTracker II ja GoatTracker ja grafiikan käsittelyyn ja formaattimuunnoksiin YY-CHR ja ConGo. •?Ohjelma ladataan suoraan muistiin esimerkiksi C2N232:ta käyttäen. Laite lukee tiedostot esimerkiksi SDtai MMC-muistikortilta. // NES-koodiesimerkki: tekstiä ruutuun käyttäen taustagrafiikkamerkkejä. Grafiikkaja äänituotanto Commodore 64:n ja NESin valinta esimerkeiksi ei ole mikään sattuma. Kääntäjän toiminta on hyvä tarkistaa emulaattorilla, joka on kohdelaitteen toimintaa jäljittelevä ohjelma. NES PowerPak. Tämä vaatii kuitenkin jo sen verran elektroniikkaosaamista, että flashcartin hankinta hinnasta huolimatta tekee tästä vaiheesta NESin ohjelmistokehitystä huomattavasti helpompaa. Kaiken voi myös tietenkin halutessaan käsitellä itse omin työkaluin alusta lähtien! Kyseiset ohjelmat ovat nimenomaisesti ristiinkehitystyökaluja, joille vaihtoehtona toimivat myös kohdelaitteessa ajetut editorit. Äänen tuotanto on molemmilla enimmäkseen oskillaattoreihin perustuvaa analogista piirisynteesiä. Näin voi käydä, jos emulaattori on toteutettu naiivisti sivuuttaen tai oikoen alkuperäisen laitteiston toimintaprosessit, jotka monimutkaisuudessaan ovat haastavia jäljitellä virheettömästi. Erityisesti analogisten artifaktien ja muiden teknisen suunnittelun kautta arvaamattomien konfiguraatioiden jäljittely digitaalisin menetelmin on vaikeaa esimerkiksi äänen tai kuvan tuotannossa. Lisäksi joillekin grafiikkatiloille edelleen paras piirtomuoto on Commodorella ajettu ohjelma. Kattavan näkemyksen laitteiston ominaisuuksista ja niiden tehokkaimmaista hyödyntämisestä saa lukemalla manuaaleja, muita hakuteoksia ja oppaita sekä erityisesti muiden tuottamaa lähdekoodia ja laitteelle soveltuvan algoritmiikan tutkimusta. NESin tapauksessa sellaisia ei juuri ole, mutta Commodore 64:lle niitä löytyy enemmän kuin muille laitteille. // mukautettu shirun esimerkistä. Tälläinen flashcart on mm. // Tämä esimerkki olettaa, että fontin merkit ovat ASCII-järjestyksessä // taustagrafiikan tämänhetkisessä merkkisivussa (nametable) kohdissa $00-$3f #include "neslib.h" // NESLIB mukaan // makro nametable-osoitteen määrittämiseksi #define NTADR(x,y) ((0x2000|((y)<<5)|x)) // funktio: kirjoita merkkijono str näyttömuistiin kohtaan adr void put_str(unsigned int adr,const char *str) { vram_adr(adr); while(1) { if(!*str) break; vram_put(*str++)-0x20); // -0x20 = ASCII-koodista merkin numeroksi } } void main(void) { pal_col(1,0x30); // asetetaan tekstin väri put_str(NTADR(2,2),"HEI KAIKKI SKROLLIN LUKIJAT"); ppu_on_all(); // näytönpiirto päälle while(1); // ikiluuppi }. •?Ohjelma tallennetaan levykkeelle joko käyttäen PC-yhteensopivaa levykelukijaa tai -yhteyskaapelia (esimerkiksi Star Commander ja X1541-kaapeli). repropakin valmistaminen. 20 2013.2 tana ja sisäänrakennetulla BASIC-ohjelmointikielellä varustettuna erityisen suosittu valinta ensimmäiseksi kodin ohjelmointilaitteeksi. Esimerkkiohjelmamme NESille on tehty käyttäen suosittua 6502-prosessorille tarkoitettua C-kielen ristiinkääntäjää cc65, joka on saatavilla usealle eri modernille käyttöjärjestelmälle. Molemmille laitteille on olemassa useita erilaisia grafiikan ja äänen luomiseen ja muokkaamiseen erikoistuneita ohjelmia. Toinen suosittu tapa on ns
Ei juuri // eroa perinteisestä C-esimerkistä. Laitteen rautaominaisuuksien tehokas hyödyntäminen vaatii yrityksen ja erehdyksen mukanaan tuomaa kokemusta, tietolähteistä lisäsisältöä ammentaen. KallistiOS:llä voidaan kehittää ohjelmia myös Gameboy Advance ja PlayStation 2 -pelikonsoleille. 21 Dreamcast Samaa lähestymistapaa ohjelmien kehittämiseen voidaan käyttää myös uudemmalla kotikonsolilla, jolle pääsy on ollut suljettu kotikehittäjiltä suurimman osan konsolin elinajasta markkinoilla. Ristiinkehitys vaatii omanlaistaan tutkimusmatkailuhenkeä, sillä saatavilla ei yleensä ole nykylaitteiden laajamittaista tietoja tukiverkostoa. Yksi suosituimmista on Utopia bootdisk. Osittain tästä syystä monet vanhat laitteet synnyttävätkin ympärilleen omia harrastelijaryhmiään ja -yhteisöjään. Tutkimaton potentiaali piilee laitteissa, jotka vasta nyt ovat helposti avattavissa kehitysalustoiksi. Dreamcastin etuna on se, että jokainen konsoli on täysin identtinen, ja siten sama ohjelma toimii varmasti jokaisella konsolilla samalla tavalla, lukuunottamatta televisiojärjestelmien virkistystaajuuksien eroavaisuuksia. Grafiikan piirtämiseen voidaan käyttää OpenGL-grafiikkakirjastoa, joka on yhä nykyäänkin suosittu erityisesti siirrettävien eli helposti monelle alustalle käännettävien ohjelmien kehittämisessä. On kuitenkin syytä muistaa, että konsoleiden suunnitteluratkaisuista johtuen kaikki ohjelmat, jotka toimisivat moitteettomasti nykytietokoneilla, eivät kuitenkaan toimi Dreamcastillä laitteen huomattavasti pienemmän suoritustehon vuoksi. Dreamcastille kehittäminen ei ole merkittävästi erilaista kuin nykytietokoneille. #include <kos.h> // Oletusasetukset käynnistettäessä KOS_INIT_FLAGS(INIT_DEFAULT); int main(int argc, char **argv) { printf("\nTerkut konsolistasi!\n\n"); return 0; } Dreamcast-kehitysympäristö http://www.elliptique.net/wiki/doku.php?id=dreamcast. Suosittu kaupallisissakin julkaisuissa käytetty vaihtoehto on KallistiOS, joka tarjoaa käyttöjärjestelmäpalveluita ja muita multimediaominaisuuksien ja syötetiedon käsittelyyn soveltuvia kirjastokokonaisuuksia. Dreamcastin GD-ROM-standardi ei estä mitenkään tavanomaisten poltettujen CD-R-levyjen käyttöä omien ohjelmien säilyttämiseen, kunhan konsoli on vain joko ensin modifioitu lukemaan poltettuja levyjä tai käynnistetty käyttäen erityistä käynnistyslevyä, joka mahdollistaa poltettujen levyjen käytön ohjelmien lataukseen. Lopullinen käännetty ohjelma syötetiedostoineen tarvitsee vain kirjoittaa ISO-standardin mukaiseen CD-levykuvaan, polttaa fyysiselle levylle sopivin ohjein ja käynnistää modifioidulla tai käynnistyslevyllä varustetulla konsolilla. Tässä mielessä Dreamcast-ohjelmien kehittäminen ei merkittävästi eroa nykyisille laitteille kehittämisestä kuin suoritustehonsa ja joidenkin erityisominaisuuksiensa osalta. Jokainen uusi vuosi tuo tullessaan ennalta arvaamattomilla tavoilla rajoja rikkovia ohjelmia laitteisiin, jotka moni on jo jättänyt menneisyyteen.. Avoimien työkalujen hyödyntäminen Dreamcastille ohjelmien kehittäminen on helppoa, sillä sen SH4-prosessorille voi kääntää C-kielistä koodia suositulla GNU C-kääntäjällä, gcc:llä. Yleiskatsauksena siis kaikki tarvittavat ohjelmaja laitteisto-osat ovat ilmaisia, helposti saatavilla ja standardinmukaisia, vaikka laitteelle kehittäminen ei "laillisia" teitä käyttäen olekaan mahdollista. Juuri näistä paras tietämys koneiden syvälliseen sielunelämään usein löytyykin. // KallistiOS-esimerkkiohjelma. Toisaalta vanhoista läpikotaisin tongituista ohjelmoijien suosikkikoneista voi löytyä monia yllättäviä aarteita. Esimerkkimme on Segan Dreamcast-konsoli sen CD-formaatin hankintahelppouden ja laitteen grafiikkaominaisuuksien ja kehitystyökalujen nykyisen saatavuuden takia. Koska Dreamcastin grafiikkaja ääniominaisuudet ovat huomattavasti monimutkaisemmat kuin 8-bittisillä konsoleilla, on myös apukirjastojen käyttäminen nopean ohjelmistokehitysja testausprosessin helpottamiseksi korkean tason ohjelmointikielen kanssa mahdollinen valinta
Logotulkkia pyöritti Motorola 6811 -prosessori varustettuna 32 kilotavun keskusmuistilla. Siihen sai kytkettyä kolme moottoria ja kolme anturia. Ensimmäinen sarjatuotettu ohjelmoitava LEGO oli valtava menestys ja sille tehtiin paljon epävirallisia firmwareja. 22 2013.2 Softa E nsimmäinen ohjelmoitava LEGO oli vuonna julkaistu 1986 LEGO TC Logo™, joka käytti Seymour Papertin Massachusetts Institute of Technologyn Media Labissa lasten ja nuorten opetukseen kehittämää Logokieltä. Teksti: Tomi Pieviläinen Kuvat: Risto Mäki-Petäys. Lisäksi monet opettajat kokivat ohjelmointiympäristön liian vaikeaksi. Sen suosio kasvoi tasaisesti. Kontrolleina toimivat infrapunavastaanotin ja neljä nappulaa. Control Labin rajoitteena oli jatkuva langallinen yhteys tietokoneen sarjaporttiin. Liikkuvien legorobottien kehitys oli aloitettu MIT:ssä jo 1987, jolloin ohjelmoitava legopalikka, The 6502 Programmable Brick, näki päivänvalon. Sen ominaisuudet olivat samankaltaisia kuin nykyisissä LEGOn älypalikoissa. MIT:n prototyypit eivät kuitenkaan päässeet myyntiin asti. Tie kehittelystä tuotteeksi Model 120 oli epäkaupallinen prototyyppi, mutta näytti ulkoisesti varsin valmiilta tuotteelta. Lisäksi RCX:lle tehtiin ohjelmistoympäristöjä lukuisille kielille, esimerkiksi C:lle, Javalle ja Matlabille. Control Labeja tuli paikoitellen myös Suomen kouluihin, joissa ne tunnettiin myös ID:n uudella nimellä LEGO Dactana. Hänet palkattiin 2001 Ylivieskan Ohjelmoitavan Legon historiaa LEGO-palikoiden käyttö ohjelmoinnin opetusvälineenä yleistyy parhaillaan Suomen kouluissa. Vaikka yhteistyö MIT:n kanssa oli päättynyt, LEGO nimesi sarjan kunnianosoituksena Mindstormsiksi Seymour Papertin samannimisen kirjan mukaan. Punatiileen sai kiinni kuusi anturia ja neljä moottoria. Tuotteen toi markkinoille kouluille tarkoitettuja rakennussarjoja valmistava, kuusi vuotta aiemmin perustettu LEGOn Institutional Division. LEGO kehitti kotikäyttäjille Logon tilalle graafisen RCX Code -ohjelmistoympäristön, ja yhdessä Tufts Universityn kanssa National Instruments LabViewiin pohjautuvan, kouluille tarkoitetun RoboLabin. Niiden käyttöä opetuksessa tutkittiin Oulun yliopistossa 90-luvun loppupuolella. Logoa käytettiin myös vuonna 1993 julkaistussa Control Labissa. Kontrolleina toimivat infrapunavastaanotin, kaksi nappia ja nuppi, joita täydensi pieni lcd-näyttö ja kaiutin. Se pohjautui LCSI:n LogoWriteriin, joka oli jo aiemmin levinnyt koulumaailmaan myös Suomessa. Tekstipohjainen ympäristö oli herkkä kirjoitusvirheille, eikä ympäristö ollut tarpeeksi kehittynyt auttaakseen aloittelevia ohjelmoijia muistamaan oikeita käskyjä. Virran näille antoi sisäinen akku. Sillä ei voinut tehdä itsenäisesti liikkuvia mekanismeja vaan kiinteitä järjestelmiä, kuten hissejä tai liikennevaloja. Vuonna 1998 RCX ja RoboLab julkaistiin uuden robottialustan kanssa. Robottisarjojen käyttö opetustarkoituksiin ei ole uusi idea: ensimmäiset ohjelmoitavat LEGOt julkaistiin jo 1986. Jatkoprojektit huipentuivat, kun Model 120, The Red Brick, valmistui 1994. Se käytti kuutta AA-paristoa, joskin ensimmäisiin versioihin sai myös ulkoisen virtalähteen. RCX oli suunnittelultaan hyvin samankaltainen MIT:n mallin kanssa, joskin hieman rajoitetumpi. Suomen kouluihin LEGO-robotiikkaa RCX:n ensimmäisiä käyttäjiä Suomessa oli Oulun yliopistosta Exeterin yliopistoon siirtynyt Esa-Matti Järvinen. Sarja tunnetaan myös ikonisen keltaisen Robotic Command eXplorer -keskusyksikön, eli RCX:n nimellä. Skrolli tutustuu LEGO-ohjelmoinnin historiaan ja käytännön sovelluksiin. Yksikössä oli LCD-näyttö, mutta ei akkua. Kaupalliseksi nimeksi tuli Mindstorms: Robotics Invention System, kouluille tarkoitetusta puolestaan RoboLab: Mindstorms for Schools
. Hyvien kokemuksien jälkeen Turussa LEGOt on otettu käyttöön myös fukseille insinöörityöhön johdattavalla kurssilla. Tämä motivoiva vaikutus on myös keskeisimpiä syitä, miksi Opetushallitus on rahoittanut parina viime vuonna LEGOjen hankintaan kymmeniin eri peruskouluihin. LEGO Mindstorms NXT -sarjan moottori, valoja äänisensori, ultraäänietäisyysmittari, kosketusja kiihtyvyyssensori sekä ohjainyksikkö Mindsensors.com:in NXT-moduuleja: servo-ohjain, infrapunaetäisyysmittari, USB-HID-muunnin, porttijakaja ja koekytkentälevyn liitin 23 AMK:n perustamaan teknologiakeskus Teknokkaaseen. Uutta on yhä luvassa LEGOkaan ei lepää rattaillaan. Yksinkertaisimmat näyttävät ulkopuolisesti virallisilta osilta, mutta sisältävät kalliimpia sensoreita, kuten kompassin tai kiihtyvyyssensorin. Mutta tarjolla on myös osia LEGOn maailman ja yleisen elektroniikan rajapinnan hämärtämiseksi, kuten adaptereita LEGOn kaapeleille ja tavalliselle koekytkentälaudalle. Turun yliopistossa LEGOt oli otettu käyttöön yhteistyöprojektissa Uppsalan yliopiston kanssa. Niitä voi ostaa LEGOn lisäksi kolmelta muultakin yritykseltä. RCX uusittiin täysin vuonna 2006, kun Mindstorms NXT julkaistiin. Kurssilla loppuvaiheen opiskelijat suunnittelevat Internetin läpi käytettävän robotin, joka pystyy tutkimaan tuntematonta aluetta yhteistyössä toisen robotin kanssa. Myös kaikki sähköiset osat kiinnitettiin uudella liitännällä, joskin kouluversion mukana toimitettiin adaptereita vanhojen RCX-osien käyttämiseksi. NXT:n suosio näkyy sensoreiden tarjonnassa. Juttua varten haastateltiin Erkki Hautalaa Espoon Vanttilan koulusta, Petteri Kartimoa Rovaniemen Saaren koulusta, Arto Karsikasta Jokilaakson koulutuskuntayhtymästä, Tero Ahosta Lappeenrannan teknillisestä yliopistosta, Seppo Virtasta ja Ville Taajamaa Turun yliopistosta ja Simo Silanderia Metropoliasta. Sarja muuttui ulkoisesti suuresti, sillä uudessa sarjassa käytetään pääasiassa nappulattomia, moderneista tekniikkalegoista tuttuja palkkeja. Sekä kaupalliset että kouluversiot käyttivät uutta graafista NXT-Gympäristöä, joka pohjautui vieläkin LabViewiin, mutta ei ollut yhteensopiva RoboLabin kanssa. Esikuvana toimivat tälläkin hetkellä Marsin pintaa kartoittavat robotit. Myös kaikki vanhat sensorit toimivat myös uudessa keskusyksikössä. Robotiikan opetus on vaatinut aiemmin hyvin suurta kiinnostusta opettajilta, sekä onnea oikeiden kontaktien suhteen. Esimerkiksi Ruotsissa ja Virossa FLL on saanut suuren suosion. Ulkoisesti se muistuttaa NXT:tä hyvin pitkälti, mutta sisus on päivittynyt reippaasti. Koska NXT:n liittimien tiedot ovat julkisia, niiden avulla kuka tahansa voi liittää keskusyksikköön oman analogisen tai I2C:tä käyttävän sensorinsa. Uusia sensoreita ovat ennen vain ulkopuolisten valmistajien tekemät gyroskooppi ja IR-lähetinvastaanotin. Jo vuonna 2002 järjestettiin Oulussa Suomen Tekoälyseuran, VTT Elektroniikan ja Oulun yliopiston voimin ensimmäiset Robocup Junior -kisat, jossa lajeina olivat jalkapallo, pelastus ja tanssi. EV3:n kouluversio tulee myyntiin elokuussa ja kotiversio myöhemmin tänä syksynä. Ohjelmointiympäristöjen mahdollisuudet laajenevat valtavasti, kun vanhemman sulautetun kehitysympäristön sijaan mitä tahansa ARMille siirrettyä Linux-ohjelmaa voidaan käyttää suoraan. EV3:n ohjelmisto seuraa uusia trendejä, ja mukana tulee suoraan LEGOn viralliset Android ja iOSsovellukset. Tammikuussa CES-messuilla esiteltiin uusi versio Mindstormsista: EV3. Valkoisiin NXTrobotteihin voi törmätä myös Tampereen ja Lappeenrannan teknillisillä yliopistoilla, jossa sulautettujen järjestelmien kursseilla liikkuvat laitteet on huomattu motivoivemmiksi kuin perinteiset kehitysalustat. Nyt uutta teknologiaa tuodaan kuitenkin opetukseen mukaan määrätietoisesti. EV3 sisältää microSD-muistipaikan, yhden lisäpaikan moottoreille ja USB-portin, johon voi kytkeä vaikka wlan-mokkulan. Seuraavina vuosina kisat järjestettiin Heurekassa ja uudelleen Oulussa, ja ne vakiintuivat jokavuotisiksi. RCJ:n päätyminen yleisimmäksi kilpailutapahtumaksi oli PohjoisEuroopassa harvinaista, sillä LEGO järjestää myös omaa First LEGO League -tapahtumaansa. Myös Helsingin Yliopisto opettaa fukseille legoilla ohjelmoinnin perusteita, ja käytäntö on levinnyt sieltä myös Metropoliaan. LEGO Mindstorms RCX -sarjan DACTA-hallintapaneeli, ohjainyksikkö, moottori, kosketus-, lämpötila-, valoja kulmasensori sekä valo. RCX oli viimeisenä vuotenaan ehtinyt levitä myös korkeakouluopetuksen puolelle. Sekä muistia että prosessointitehoa on moninkertaisesti, joten EV3:n sisällä pyörii täysiverinen Linux-järjestelmä. Itse rakennusohjeetkin ovat jatkossa paperin lisäksi saatavana myös tabletilla pyöriteltävinä 3D-malleina
Erilaisia koriste-esineitä voi valmistaa näiden lisäksi myös eläinten luusta, savesta, hiekasta poltetusta lasista ja maan alta löydetyistä jalokivistä. Mikä ihmeen roguelike. Jättimäisen adamantiumpiikeillä koristellun teräskynnyksen yli yltävät jäävät usein täysin koukkuun. Pelimaailman kolmiulotteisuus ja kääpiöiden legendaariset rakennustaidot antavat pelaajan luovuudelle paljon tilaa linnoituksen suunnittelussa. NetHackia voi kokeilla verkossa esimerkiksi ottamalla telnet-yhteyden osoitteeseen nethack.alt.org. Tyypillisesti rogueliketermiin mielletään myös grafiikkatyyli, joka koostuu kuvien sijasta kirjaimista ja muista merkeistä. Lyhyet veijarit tulevat toimeen tarvittaessa vähällä. Pelimuotoja on kaksi: Fortress Mode ja Adventurer Mode. Dwarf Fortress alkaa maailman luomisella, joka voi kestää pitkän tovin. Jos haluat leikkikentäksesi fantasiamaailman linnoineen, sankareineen, villipetoineen ja mielikuvituksen rajoja koettelevine kummajaishirviöineen, Dwarf Fortress on peli juuri sinulle. Fortress Mode alkaa pelaajan valittua sopivan paikan uudelle kääpiölinnoitukselleen. 24 2013.2 Pelit B ay 12 Gamesin Dwarf Fortress -peli on hyvin erikoinen kokonaisuus. Huonekalut ja useimmat käyttöesineet syntyvät pääasiassa puusta, metallista tai kivestä. Adventurer Mode puolestaan muistuttaa enemmän perinteistä roguelikea, jossa pelaaja ohjaa yksittäistä hahmoa seikkailemassa ympäri pelimaailmaa. Varsinainen käskytys tapahtuu suunnittelemalla se, mitä pitäisi tehdä, minkä jälkeen sopiviin ammatteihin määrätyt hahmot alkavat toteuttamaan sitä mahdollisuuksien mukaan. Pelin alussa käskytettävillä Dwarf Fortress Linnoitusta perustamaan Jos tavallisten kuolevaisten pelit ovat sinulle liian yksinkertaisia, voit haluta tutustua Dwarf Fortressiin. Kun maasto on valmis, simuloidaan käyttäjän valintojen pituinen ajanjakso maailmaan luotujen kansojen ja julmien hirviöiden keskinäisiä kamppailuja. Oravannahat ja teräskirveet Kääpiöt ovat ahkeria veijareita. Tunnetuin roguelike kautta aikojen lienee itse Roguen lisäksi huippusuosittu NetHack, joka on yhä yksi maailman monimuotoisimmista ja hienoimmista peleistä. Pidä tosin varasi. Vaikka pelit ovat yksinpelejä, pääsee näin jakamaan pistesijalistan. runsaudensarvellinen sälää Tilojen rakentamisen ja louhimisen ohella peli tarjoaa kiitettävän monia erilaisia askareita kääpiöiden iloksi. Tämä ei kuitenkaan ole oleellinen osa termin merkitystä, ja monia roguelikejä voi pelata myös graafisissa moodeissa. Pelit tarjoavat ympäristöksi satunnaisgeneroituja maailmoja, jotka ovat joka pelikerralla erilaisia. Kilpailu siivittää myös roguelikeissä parempiin suorituksiin. Uusia vaatteita ja säkkejä kuluneiden tilalle voi valmistaa eläinten villasta, nahasta, luolassa elävien hämähäkkien seitistä valmistetusta silkistä tai kasvikuiduista. Termi roguelike viittaa 80-luvulla suositun merkkigraafisen Rogue-pelin henkisiin seuraajiin. Rogueliket ovat pitkälti ilmaisia, ja niitä voi yleensä pelata verkossa samalla palvelimella muiden kanssa. Sivilisaatiot nousevat, leviävät, sotivat, ja tuhoutuvat. Kääpiöille hyvin maistuva alkoholi syntyy kasveista tai hunajasta. Kääpiöille voi makunsa mukaan rakentaa saatavilla olevista materiaaleista asuintiloja, työpajoja ja varastoja maan päälle tai louhia tarvittavat tilat kallioon. Tämä on se pelimoodi, johon yleensä viitataan Dwarf Fortressina. Jäikö ymmärtämättä, mitä tarkoitetaan rosmonkaltaisella. Retkikunnan saapuessa uudelle valtaukselleen kääpiöt voi käskyttää oitis toimeen. Suositumpi on Fortress Mode, jossa pelaaja pääsee ohjaamaan pientä kääpiöretkikuntaa uuden linnoituksen rakentamisessa. Kun prosessi on valmis, pelaajalla on edessään kokonainen maailma täynnä tutkittavaa. Teksti: Kalle Viiri, Tapio Berschewsky Kuvat: Tapio Berschewsky. Kaupunkien alaisiin katakombeihin kätketyt aarteet odottavat ottajaansa ja aikojen alusta maan päällä vaeltaneet titaanit surmaajaansa! Muurinpala kerrallaan Kun pelimaailma on luotu, pelaaja päästetään osaksi sitä. Ennen pitkää pelaajan on kuitenkin huolehdittava linnoituksen asukkien perustarpeista, jotta projekti ei kariutuisi heti alkuunsa. Kääpiöt osaavat hankkia ravintoa linnoitukseen viljelemällä maata, metsästämällä, keräämällä luonnonvaraisia kasveja, kalastamalla ja hoitamalla karjaa tai mehiläisiä. Kääpiöt eivät tee mitään omin päin, eikä pelaaja ohjaa pienokaisia suoraan. Se on roguelike, jossa ylitetään valtameriä uimalla ja kuristetaan rosvoja elävältä. Retkikunnan seitsemän jäsenen kyvyt ja varusteet voi viilata viimeisen päälle itselleen sopiviksi tai käyttää välttävän hyviä oletusasetuksia. Peli pyrkii luomaan realistisen maailman simuloimalla erilaisia luonnonvoimia ja niiden vaikutusta maastoon. Se on sekä strategiaettä seikkailupeli laajassa satunnaisgeneroidussa maailmassa, jossa saattaa vaeltaa suolasta tehtyjä titaaneja ja luonnottomia yömörköjä. Muita merkittäviä ovat esimerkiksi klassinen Omega, laaja ja hieno ADOM, sekä nykyään yleisesti ykkössijalle nostettu Dungeon Crawl Stone Soup. Se on rakentelupeli, jossa veri roiskuu ja kissoista tehdään saippuaa
Neljänteen kerrokseen maan pinnalta nostettu porttirakennus. Linnoituksen alueella normaalisti hyörivien villieläinten ja mahdollisten epäkuolleiden lisäksi päänvaivaa aiheuttavat kääpiöiden omaisuutta kähveltävät kelmit ja lapsia kaappaavat ryövärit. Yksinkertaisinta on pystyttää muuri, mutta koska kauppa ja maahanmuuttajat vaativat reittiä linnakkeen sydämeen, se ei kelpaa ainonana ratkaisuna kuin ensimmäisiin linnoituksiin. He saattavat jopa julistaa sodan, jos heille tarjotaan vastineeksi esineitä, joiden valmistuksessa on käytetty puita. Mikäs sen mukavampi kuin oma lohikäärmelauma raatelemassa kutsumattomia vieraita hengiltä. Aateliset tekevät mielivaltaisia vaatimuksiaan esineiden valmistamisesta ja viennistä ja tuomitsevat alempiarvoisia ilomielin vankeuteen jos määräyksiä ei täytetä. Näitä on kiva väkertää ja sisustaa. Ahkerampi pelaaja voi jopa käskyttää kääpiönsä rakentamaan pumppujärjestelmän, joka tuo magmaa suoraan maan ytimestä vihollisarmeijan niskaan. Kovimman vastuksen antavat kuitenkin maan alla luolastoissa vaanivat muinaiset ja unohdetut satunnaisluodut megapedot, jotka vain odottavat tilaisuutta päästä mellastamaan varomattomasti kaivavien kääpiöiden linnoituksiin. Kauppakumppanien käyttäytyminen ja tarjottavat tuotteet riippuvat rodusta. Koko vasen kulkuväylä on täynnä vihollisten raatoja, ruumiin kappaleita, oksennusta ja siihen sekoittuvaa verta.. Kääpiöt ovat itsekin urheita sotureita niin lähitaistelussa kuin kauempaa varsijousella ampuen. Sisään tullaan lännestä keskeltä. He osaavat myös käyttää katapultteja ja ballistoja vihollisarmeijoiden rivien murtamiseen. Tällöin naapurikansojen liikemiesvaistot heräävät, ja pelaaja pääsee käymään kauppaa ihmisten, haltioiden sekä oman kääpiökansansa pääkaupungin kanssa. Kun vihollinen on ikiaikainen vesihöyrystä koostuva demoni, joka sylkee myrkyllistä laavaa kymmenien metrien päähän, ei teräksellä enää tee juuri mitään – väliin tarvitaan kiveä. Kun kymmenen vuotta treenannut huipputason kaivosmies ottaa iskun selkäruotoon ja halvaantuu, ei enää juuri huvita, vaikka Jokaiselle pienelle viinanhimoiselle penteleelle pitää olla oma tönö. Harvinaisempia hyökkääjiä ovat maan päällä kiertelevät titaanit ja muut jättihirviöt. Linnoituksen kasvaessa porteille voi marssia kokonainen armeija jättiläissammakoilla tai hirviölinnuilla ratsastavia häikäilemättömiä menninkäisiä. Nipukkakorvaiset ituhipit ovat tosin oikukkaita kauppakavereita. Kääpiöt ovat taitavia virittämään ansoja, kuten terässirkkeleitä, elävänä kiinni ottavia häkkejä, putoavia kattoja, murskaimia ja uskomattoman syviä teräspiikeillä koristeltuja kuoppia. Hiljalleen viennillä ja teollisuudella vaurastuva linnoitus houkuttelee siirtolaisia kääpiövaltion eri osista. Pohjoisessa ja etelässä sijaitsevat kauppapaikat, oikealla jousimiesten harjoitusalueet, sekä turkoosin laskusillan takana parveke, josta ikävät sisääntulijat voi teurastaa ilman lähikontaktia. Haltiat kauppaavat lähinnä puusta tehtyjä tuotteita, itse tekemiään ruokia ja juomia sekä harvinaisia eläimiä. Pelaajalle tarjotaan puolustusta varten laaja valikoima erilaisia tapoja selättää vihollisuhat. Ihmiset tarjoavat ja hyväksyvät monipuolisempaa kauppatavaraa, mutta kääpiöiden karavaani tuo yleensä rikkaimmat lastit ja harvinaisimmat metallit. Paitsi jos ei tykkää. Koko komeuden jokainen reitti voidaan sulkea ja avata yksitellen vivuista 20 kerrosta alempana. Tarpeeksi maallista mammonaa ja asukkaita keräämällä pelaajan linnoituksesta voi tulla paroni-, kreivitai herttuakunta sekä lopulta koko kääpiövaltion pääkaupunki. Ei pelkkää leikkiä Jännitystä vaurastuvan linnoituksen elämään tuovat kääpiömaailman vaarat. Useita villieläimiä voi pyydystää ja kouluttaa vartioimaan linnoitusta. Jehuille tulee isommat. 25 seitsemällä kääpiöllä on yllin kyllin energiaa tarvitsemiensa asumusten, viljelmien, huonekalujen ja työvälineiden tekoon, ja käsitöitä jää helposti ylikin. Samalla pelin vaikeustaso nousee. Taisteleminen itsessään on niin brutaalia, että valiojoukkoja kannattaa kuitenkin säästellä. Mikäli kääpiösivilisaation käytössä on sopivia resursseja, he tuovat myös korkealuokkaista ja kallista terästä, jota muut kansat eivät osaa valmistaa
Toisin kuin Fortress Modessa, pelaaja voi valita hahmokseen myös haltian tai ihmisen. Vaikka Dwarf Fortress on yksi parhaista peleistä ikinä ja varmasti monimutkaisimpia virityksiä, joita pelimaailma on nähnyt, se ei ole aivan helppo pelata. Siinä missä vaniljaterapia mahdollistaa vain ammattivalinnat, Splintermindin versiossa näkee todella paljon muutakin hyödyllistä tietoa kääpiöiden ominaisuuksista, ja esimerkiksi parhaiden kääpiöiden valinta armeijaan helpottuu selvästi. Vaikka alkupäässä peliä pärjää kohtuullisesti oletusliittymällä, varsinkaan linnoituksen kasvaessa ei sen kanssa tule kuin vihaiseksi. Pelimaailmasta löytyvät esineet saattavat paljastaa historiallisia tapahtumia. Siinä missä Therapist on hyödyllinen heti alkuun, dfhackista saa irti kaiken kunnolla vasta kun on jo tutustunut peliin ja sen konsepteihin. Ja nämähän muistetaan. Kun yön tumma lepakkokääpiö lopulta löytyy, voi oikeuslaitos tuomita tämän murhista kuolemanrangaistukseen. Päältä kaunis, sisältä mätä Linnoituksen puolustaminen ulkoisilta uhilta on kokemuksen myötä suhteellisen helppoa, mutta lisähaasteena kääpiöt ovat myös mestareita tekemään toistensa elämästä jatkuvaa piinaa. Varsinaista päämäärää Adventurer Modessa ei ole, mutta pelimaailman hahmojen kanssa juttelemalla voi saada vihiä rosvojoukoista, ilkeistä velhoista tai hirviöistä. Tähän on onneksi erinomainen työkalu: Dwarf Therapist. Mielenrauhaa voi edistää monin tavoin. Suurin ongelma on kääpiöiden ammattivalintojen määrittely yksi kerrallaan. Tarpeeksi ikäviä asioita sietämään joutunut kääpiö voi ryhtyä mellakoimaan ja rikkomaan paikkoja, mistä voi seurata lisää riehuvia kääpiöitä ja heiluvia nyrkkejä. Kirves alkaa viuhua ja pian koko linnoituksen väestö murhaa toisiaan punahehkuisen vihan vallassa. Lennän, polskin ja uin Adventurer Mode antaa pelaajalle mahdollisuuden tutustua pelimaailmaan koko komeudessaan. Toisin sanoen sen käyttöliittymä on silkkaa helvettiä, ja vaatiikin koko monimutkaisen komentovalikkorakenteen ulkoa opettelemista lihasmuistiin asti, ennenkuin peli alkaa sujua. Lisäksi pelaaja voi ryhtyä nekromantikoksi, lykantroopiksi tai vampyyriksi. Esimerkiksi legendaarisen laadukkaisiin sukkiin kudottu koristetaide voi kertoa vuosikymmeniä sitten tapahtuneesta historiallisesta taistelusta. Jokaisesta esineestä ja rakennuksesta voi nähdä, mistä materiaalista se on tehty. Vähemmän byrokraattinen kääpiö tosin muuraa vampyyrin suosiolla seinän sisään, eikä välitä hienouksista. Se pakottaa pelaajan pitämään erityisen tarkasti huolta siitä, että kääpiöiden mieliala pysyy aina tarpeeksi korkealla. Yksittäisen kestomittarin sijaan jokaisen eliön ruumiinosien kuntoa tarkkaillaan erikseen. Erittäin hyödyllinen lisätyökalu on myös dfhack, joka avaa erillisen komentorivi-ikkunan pelin käskyttämiseen. Tätä voi käyttää puhtaasti huijaamiseen, mutta sillä on myös rehellisiä käyttötarkoituksia, jotka helpottavat valikkosumassa turhautumista. Kuolevat usein ihan tyhmyyttään. Jonain päivänä Urist McRaivomieli muistaa masennuksen alhoissaan kuinka serkku veti vaimoa turpaan kymmenen vuoden takaisessa tappelussa viimeisistä viinatipoista. Vielä parempi on kuitenkin tästä edelleen kehitelty versio nimeltä Splintermind Attributes. Onnellinen työläinen on kuutiossa oleva työläinen. Myös elävien olentojen taistelussa tai onnettomuuksissa vammautuminen tapahtuu pitkälti reaalimaailman järjen mukaan. Kaikki pöydät samoin päin, ja ei hymyillä. Kun sieltä täältä alkaa löytyä tyhjiin imettyjä ruumiita, alkaa vaativa salapoliisityö. Ehkä viina oli loppu kun kääpiölle iski jano, tai kenties hampaankolossa kaihertaa naapurin hienompi asunto. Tämä fanien keskuudessa "raivarispiraalina" tunnettu ketjureaktio on yksi yleinen lupaavia linnoituksia tuhoava luonnonvoima. Jokaisen kääpiön mieliala voi laskea erikoisista syistä. 26 2013.2 pihalla olisikin kymmeniä kasoja vihollisruumiita sankaruuden todisteena. Erilaiset uroteot kasvattavat hahmon mainetta, ja tekevät hahmosta elävän osan pelimaailman historiaa. Myös vesiaiheet, eläintarhat, galleriat ja monet muut hienoudet helpottavat sisäistä poltetta pistää kaveria pataan. Kätevästä ohjelmasta hallitsee vaikka 200 kääpiön linnaketta helposti. Symmetrisen hautausmaan lisäksi kartalla näkyy paljastunutta luonnon muovaamaa luolastoa. Linnakkeen erinäiset pajat ja muut tuotantorakennukset varastoineen vievät paljon tilaa.. Seikkailumoodissa voi myös käydä tutustumassa Fortress Modessa rakentamiensa linnoituksien saloihin. Ota tämä, tarvitset sitä No hyvä on, myönnetään sitten. Sekä Adventurerettä Fortress Mode mallintavat pelimaailmaa silmiinpistävän tarkasti. Aivan täysin tyhjin käsin ei kuitenkaan kannata edes aloittaa. Suurin osa kaatuu matkalla eikä yritä ikinä uudelleen. Tärkeimpiä ilonlähteitä ovat kivat asunnot sekä jättimäinen koristeltu ruokasali. Salamyhkäisempiä uhkia linnoitukselle ovat siirtolaisten mukana mahdollisesti tulevat verenhimoiset vampyyrit. Therapist näyttää Excel-taulukkoa muistuttavan listan kääpiöistä sekä kunkin yksilön valituista ammateista. Taistelussa voi menettää esimerkiksi yksittäisiä sormia, Viimeisiä leposijoja tarvitaan paljon, sillä kääpiöt ovat helposti rusentuvaa sakkia
Sen vieressä muutamasta suositusta tiilisetistä henkilökohtaiseen käyttöön sekoitettu versio 16x16 pikselin tiilillä. Maailman raskain ruma peli Pelimaailman yksityiskohtaisuus aiheuttaa myös sen, että peli on ulkoasustaan huolimatta melko vaativa suoritustehon suhteen. Perehtyminen on kuitenkin joka kerta tyssännyt yhteen ja samaan ongelmaan, joka saattaa kuulostaa vähäpätöiseltä, mutta vie joka kerta maun koko pelistä: näytönpäivitys on toteutettu täysin aivokuolleesti. Adventurer Modessa tämä tekee taistelusta hauskaa, sillä iskujen tähtääminen eri ruumiinosiin mahdollistaa tyypillistä roguelikeä taktisemman taistelun ja vihollisten brutaalin murjomisen ennennäkemättömän yksityiskohtaisesti. Vaikka kuva pysyisi muuttumattomana tai koko pelin laittaisi paussille, näyttöä päivittävä silmukka pyörii silti hulluna tyhjää ja tuuletin huutaa. Opettakaa Tarn Adams koodaamaan Ville-Matias Heikkilä Dwarf Fortressin pitäisi periaatteessa olla unelmieni täyttymys. Vasemmalla alhaalla on käytössä Yayon tribuutti Commodore 64:n merkistölle. Dwarf Fortress on uniikki. Koska pelin lähdekoodit pimitetään roguelike-perinteiden vastaisesti loppukäyttäjiltä, on itse korjaaminenkin turhan työlästä. Siksi olenkin vuosien mittaan monesti yrittänyt perehtyä Dwarf Fortressiin. Oletusta pienemmän pelialueen valitsemalla ja suunnitelmiaan optimoimalla pelin saa pysymään sutjakkana pidempään. Toivottavasti jo parin vuoden sisällä saadaan pelistä versio, jota ei tarvitse enää myötähävetä heti alkumetreillä. Tai miksei parikin.. Vaikka se on periaatteessa samaa genreä kuin Sims, ja sille on lukuisia kevyitä ja graafisesti vetoavampia klooneja, ei mikään näistä raapaise edes pintaa siitä, mitä Dwarf Fortressilla on tarjota. Jos haluaa pelin, joka palkitsee vuosien ajan joka pelikerralla uusilla asioilla, tätä pidemmälle ei kannata katsoa. Oikeassa alanurkassa on käytössä vielä kesken oleva uusi 22x22 pikselin tiilisetti, joka julkaistaan joskus sen valmistuessa Skrolli.fi:ssä. Tällä setillä on otettu artikkelin muut kuvankaappaukset. Ennen sitä teen mieluummin itse omat maailmasimulaattorini. Jo aikoinaan Nethackia ja Omegaa kolutessani kaipasin niihin vieläkin enemmän syvyyttä: yksilöitä ja yhteisöjä, joita simuloitaisiin ruohonjuuritasolta alkaen. Peli reagoi näppäimistökomentoihin selvällä viiveellä, kun pelaajahahmo liikkuu satojen hahmojen asuttamassa kaupungissa allaan valtavia katakombeja ja ympärillään sotilaiden vartioimia torneja. Valitan, mutta en pääse tästä yli. Sälää kertyy, joten varaston pitää olla iso. Tämän vuoksi Dwarf Fortressia varten tarvitsee kohtuullisen tehokkaan tietokoneen. Jopa niin pitkälle, että kahden käden taistelukirveellä voi osua vaikkapa taaimmaiseen poskihampaaseen ja tehdä siihen pienen loven. 27 murtaa kylkiluunsa tai vuotaa kuiviin kaulavaltimon avanneen iskun seurauksena. Vuoropohjaisessa Adventurer Modessa tilanne on sama. Linnoituksen kasvaessa simulointiin kuluu jatkuvasti enemmän aikaa, ja pelaaminen hidastuu nopeammillakin koneilla. Joskus tekee mieli tyhjentää koko kerros, että saa lisää sälää. Ohjelmoijaa ei kiinnosta korjata ongelmaa, vaikka se saa hänet vaikuttamaan kädettömältä apinalta. Lisää löytyy esimerkiksi Dwarf Fortress -wikin avulla. Vasemmalla yläkulmassa pelin mukana tulevan curses-tiilisetin 16x16 pikselin versio. Peli tarjoaa kuitenkin asetustiedoston, jota muokkaamalla voi rajoittaa linnoituksensa väkiluvun kasvua suorituskyvyn parantamiseksi ja linnoituksen hallinnan helpottamiseksi. Keisari neljissä eri vaatteissa. Todella iso. Ja muista pelin motto: häviäminen on hauskaa.
28 2013.2 Softa I njektiohaavoittuvuudet ovat tavallisia dynaamisissa verkkopalveluissa, niiden löytäminen vaatii vähäistä teknistä vaivannäköä ja niitä on helppo käyttää hyväksi. Palveluiden suojauspuutteista seuraa päivittäin tietovuotoja ja rahallista vahinkoa. DVWA esittää tyypillistä PHP:n ja MySQL:n päälle rakennettua verkkosovellusta, ja siinä esiintyvät haavoittuvuudet on jaettu useisiin "vaikeustasoihin". Useimmissa verkkopalveluissa käytetään yleiseen SQL-kyselykieleen perustuvia relaatiotietokantoja, ja SQL:ään perustuvat injektiot ovatkin verkon yleisimpiä hyökkäystapoja. CD-ROM-levykuva on ladattavissa osoitteesta http://www.skrolli.fi/ dvwa/. RandomStormin Damn Vulnerable Web Application (DVWA) on helppo väline injektiohyökkäysten turvalliseen kokeiluun. Artikkelissa perehdymme pääasiallisesti muutamiin konkreettisiin injektioesimerkkeihin sekä DVWA:sta löytyviin suojauksiin ja niiden sudenkuoppiin. DVWA:n injektiohaavoittuvuuksien lähdekoodit on esimerkkijakelulta löydettävissä hakemistosta"/opt/lampp/htdocs/dvwa/ vulnerabilities/sqli/source/". DVWA:n asennus Skrolli on räätälöinyt Debian-pohjaisen käyttöjärjestelmän, jolle DVWA on asennettu valmiiksi. Skrolli avaa injektiohyökkäysten anatomiaa monia tietoturvaaukkoja havainnollistavan Damn Vulnerable Web Applicationin avulla. Tietoturvayhtiö Impervan tutkimusten mukaan tyypillinen verkkopalvelu joutuukin sietämään noin 70 injektioyritystä joka tunti. Kuvat: sxc.hu (Derrick Collins), Risto Mäki-Petäys. Tyypillisesti syötteenä annettavaan merkkijonoon lisätään SQL-kielen erotinmerkkejä, joiden perässä on paljasta SQL-koodia, ja haavoittuva sovellus liittää syötteen osaksi tietokantakyselyään. Kuva 2: Hyökkääjä käyttää hyväkseen huonoa syötteenkäsittelyä ajaakseen ylimääräisen komennon. Levykuvan voi polttaa tyhjälle aihiolle esimerkiksi CD Burner XP:n avulla tai vaihtoehtoisesti tiedoston voi suoraan käynnistää virtuaalikoneeksi vaikkapa VMWare Playerin tai VirtualBoxin sisälle. Kuvat 1 ja 2 esittävät injektioiden periaatteen kuvitteellisella kannankäsittelykielellä. Hyökkäysten teknisiä yksityiskohtia emme käsittele kuin pintapuolisesti. DVWA:n lukuisat muut mallihaavoittuvuudet tarjoavat pidempikestoista puuhaa edistyneemmillekin. Käytännön tietoturvaa: SQL-injektio — miten se tehdään ja miten siltä suojaudutaan SQL-injektiot ovat eräs vaarallisimmista ja yleisimmistä verkkopalveluita piinaavista tietoturvaongelmista. Tietokanta.app Send € to account 100,00 WEB-BANK OY AB 12345-67890 Tietokanta.app Send € to account 100,00 WEB-BANK OY AB ACCOUNT '09876-54321 Kuva 1: Käyttöliittymään syötetty arvo muunnetaan tietokantalauseeksi. Alkuun päästäkseen käyttäjän tulee ensin tuplaklikata työpöydältä löytyvää "start_dvwa.sh"-ikonia, minkä jälkeen Iceweaselin käynnistäminen näyttää lisäohjeita tarjoavan aloitussivu. Artikkelin ja DVWA:n avulla aloittelijankin on helppoa kokeilla yksinkertaisia hyökkäystekniikoita, vaikka ei tuntisikaan PHP:tä ja SQL:ää. Injektiohyökkäyksessä hyökkääjä pyrkii valitsemaan verkkopalvelulle lähetettävät syötteet siten, että vastaanottava palvelinsovellus tulkitsee niitä toisin kuin sovelluksen suunnittelija on tarkoittanut. Levy sisältää kevyen työpöytäympäristön lisäksi Iceweasel-selaimen, yksinkertaisen web-palvelinympäristön ja apuskriptit DVWA:n käynnistämiseen
Kuva 4: Syötteellä "1' UNION ALL SELECT user, password FROM users WHERE user_id = '1" voi tietokannasta kaapata pääkäyttäjän salasanatiivisteen.. Sovelluksen konepellin alla syöte liitetään sellaisenaan osaksi merkkijonoa, joka annetaan tietokannalle kyselynä. near '\' OR \'a\'=\'a\'' at line 1" Uudesta virheilmoituksesta näemme, että "mysql_real_escape_string()" on lisännyt jokaisen heittomerkin eteen kenoviivan. Erikoismerkkien poisto On ilmeistä, että äskeisen hyökkäyksen onnistuminen vaati, että syötteeseen saatiin heittomerkki, joka katkaisi SQLmerkkijonoliteraalin ennen injektioosuutta. 29 Yksinkertainen injektio Kun DVWA:n turva-asetukset on säädetty alimmalle tasolle, voimme kokeilla yksinkertaista injektiota. Käytännössä näin tarkka karsiminen on harvoin tarkoituksenmukaista, eivätkä kaikki tällaiset toimet tee DVWA:n suojauksesta turvallisempaa. Paranoia+1 Vaikeimmalla tasolla DVWA käy nirsoksi. DVWA:n keskimmäisellä vaikeustasolla SQL-kysely on kuitenkin virheellinen, sillä "$id"-muuttujan arvoa ei upotetakaan heittomerkkien ympäröimään SQL-merkkijonoliteraaliin, vaan se liitetään paljaaltaan kyselyyn: $getid = "SELECT first_name, last_name FROM users WHERE user_id = $id"; Tämän vuoksi DVWA antaa tunnustelusyötteellä virheilmoituksen eikä vain etsi käyttäjää, jolla olisi heittomerkkejä sisältävä tunnus. Jos ohjelmalle antaa nyt edellisen tunnustelusyötteen "' OR 'a'='a", DVWA esittää virheilmoituksen virheellisestä SQLsyntaksista: "You have an error in your SQL syntax ... Erikoismerkkien suojaaminen tekee kuitenkin monimutkaisisten injektioiden muotoilusta paljon vaikeampaa. Tätä voi testata antamalla User ID -kenttään tunnustelusyötteen: ' OR 'a'='a Tunnustelusyöte aloitetaan heittomerkillä, joka sulkee SQL-kyselyn merkkijonoliteraalin. DVWA:n lähdekoodista nähdään, kuinka käyttäjän antama merkkijono muuttujassa "$id" upotetaan heittomerkeillä ympäröidyn SQL-merkkijonoliteraalin sisään. `Se puolestaan on osa SQL-kyselyä, jota rakennetaan lainausmerkeillä ympäröidyssä PHP:n merkkijonoliteraalissa: $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"; Kyselyn on tarkoitus kertoa, kenellä on käyttäjätunnus "$id". Kuvassa 3 esitetään, mitä ohjelma palauttaa, kun sille annetaan mallisyöte. Koodista kuitenkin nähdään, että upotus on vaarallinen, jos "$id":n sisältämää merkkijonoa ei ole ennalta käsitelty turvalliseksi. Kyselyn hakuehdoksi muodostuu: user_id = '' OR 'a' = 'a' Tämä ehto pitää paikkansa tietokantataulun jokaisen alkion kohdalla. DVWA:n sivulta ”SQL-injection” löytyy esimerkkisovellus, joka palauttaa halutun käyttäjän etuja sukunimen tietokannasta löytyvää käyttäjä-id:tä vastaan. Koska syötettä ei ole eristetty literaalin sisään, sovellukseen voi nyt hyökätä yksinkertaisella "1 OR 1 = 1" -injektiolla. Näin ne eivät lopeta SQL:n merkkijonoliteraalia. Jos PHP:n tarkastusfunktiot toimivat, nämä keinot rajoittavat jo erittäin hyvin vahinkoa, jota epäilyttävät syötteiden aiheuttamaa vahinkoa. Tämä paljastaa, että kohdejärjestelmä on haavoittuva. Ennen erikoismerkkien suojaamista ohjelma karsii syötteen kenoviivat ja varmistaa, että annettu syöte on numeerinen. Kun Damn Vulnerable Web Applicationin suojaukset säätää keskitasolle, ohjelma käsittelee syötemerkkijonon PHP:n "mysql_real_escape_string()"-funktiolla. Mikäli käytetyt käsittelyfunktiot pystyvät luotettavasti karsimaan kaikki kyselyä mahdollisesti muokkaavat merkkijonot, siistimisfunktiot saattavat joissain tapauksissa olla riittävä tapa turvata syöte. Liian vainoharhainen suhtautuminen voi olla myös Kuva 3: Miten malliohjelman 'tulisi' toimia. Tällaisia hyökkäyksiä on yksinkertaista torjua muuntamalla vaaralliset merkit vaarattomiksi ennen syötteen käsittelyä. SQL-kyselykieltä tunteva voi käyttää näin löydettyä reikää tiedon keräämiseen kohdetietokannasta tai jopa ohjelmien ajamiseen heikosti suojatulla kohdekoneella. Jos injektio onnistuu, palauttaa kysely kaikkien käyttäjien nimet. Loppuosa syötteestä on itse injektio, joka muokkaa kyselyn rakennetta
Myös tietokanta-abstraktioita tarjoavat välikerrokset ja sovelluskehykset käyttävät esivalmisteltuja lauseita ja muita sisällön säilyttäviä suodatusmenetelmiä. DVWA:n eri suojaustasojen haavoittuvuudet voi yksinkertaisemmin paikata esivalmistellulla kyselyllä näin: # yhteys tulee ottaa laajennetun mysqli-rajapinnan kautta $connection = new mysqli("host", "user", "pass", "dbname"); # määrittelee kyselyn muodon $query = "SELECT first_name, last_name FROM users WHERE user_id = ?"; # luo esivalmistellun kyselyn $result = $connection->prepare($query); # sitoo $id-syötteen kyselyyn integertyyppisenä (i) $result->bind_param('i', $id); # suorittaa kyselyn ja tallentaa arvon $result-olioon $result->execute(); Tällöin tietokannalle annettu syöte "OR 'a' = 'a'" ei voi muuttaa itse kyselyn rakennetta. 30 2013.2 haitallista, sillä useimpiin verkkopalvelujen syötekenttiin pitää pystyä syöttämään muun muassa pitkiä blogitekstejä, kommentteja ja koodinpätkiä. Suvilahti Helsinki 18.–20.10.2013 www.altparty.org Lähteet XAMPP — Live-CD:llä käytetty web-palvelinohjelmisto http://www.apachefriends.org/en/xampp.html Damn Vulnerable Web Application http://www.dvwa.co.uk/ HackYeah DVWA SQL Injection Walkthrough — artikkeli pohjautuu osin tähän http://www.hackyeah.com/2010/05/hack-yeahsql-injection-walkthrough-dvwa/ Open Web Application Security Project https://www.owasp.org/ Bobby Tables — ohjeita SQL-injektioiden estämiseen eri ohjelmointikielillä ja sovelluskehyksillä http://www.bobby-tables.com/. Jos tällaiset tietokanta-abstraktiot ovat riittävän tehokkaita, tarjoavat ne yleensä koetellun suojan injektioita vastaan. Jos syötteet tarkastetaan pikkutarkasti aina ennen tietokantaoperaatioita, ohjelmoinnista tulee vaivalloista ja laskennasta raskasta. Muutoin on lähes aina syytä käyttää esivalmisteltuja lauseita.. kyselyiden suojaus oikein Oikea tapa estää injektiot on turvata suoritettava SQL-kyselyyn. MySQL, PostgreSQL ja muut käytetyimmät tietokantasovellukset tukevat esivalmisteltuja lauseita ( prepared statements ), joissa kyselyn muuttuvat osat pidetään erillään ympäröivästä kyselyrakenteesta. Kuva 5: Heikosti suojatun tietokannan kautta pääsee käsiksi jopa järjestelmätiedostoihin. Esimerkiksi Djangossa käytetään oletusarvoisesti oliomaista relaatiomallinnusta ( object-relational mapping, ORM) ja Ruby on Rails tarjoaa oman ActiveRecord-abstraktionsa. Esimerkiksi tämän artikkelitekstin tallentaminen tietokantaan verkkojulkaisua varten on mahdotonta, jos syötteestä hävitetään kirjaimet, lainausmerkit ja kenoviivat. Koska se ei ole kokonaislukutyyppinen, syötteen sitominen kyselyyn epäonnistuu
Muutaman päivän välein oli uusi peli, joka piti katsastaa lehteä varten. On suhteettoman epäreilua lisätä peliin jatkuvasti uusia tajunnanräjäyttävältä kuulostavia ominaisuuksia, blogata niistä yksityiskohtaisesti, ja olla julkaisematta. Olen sittemmin yrittänyt eheytyä muun muassa antamalla kaiken Döffiltä vapautuneen aikani Minecraftille, ja olemalla suunnittelematta enää parempia linnoitusmalleja pääni sisällä. Kunhan olisi aikaa. Kun oikein kunnolla pääsi makuuhuoneiden sisustamisen makuun, huomasi olevansa hereillä paitsi vielä aamulla kun vaimo lähti töihin, myös iltapäivästä vaimon tullessa kotiin. Sohva, projektori, Dwarf Fortress ja kaksi miestä. Kuivilla kääpistä, nyt Dwarf Fortress on minulle maailman paras ja raivostuttavin peli. Tyhjä tynnyri maksaa 10 pistettä, joten puolen tunnin vaivalla tuli varmistettua yhden illan linnakkeelle heti kättelyssä pitkiksi ajoiksi riittävä halpa tynnyrivarasto. Louhin ensimmäisen käytäväni, tein ensimmäisen farmini maan alle, ja aloitin makuuhuoneiden värkkäämisen. Saman version jatkuva pelaaminen alkoi tuntua tylsältä. Aloin voittamaan isoja sotia ja megapetoja koulutetulla armeijallani. Nyt ei enää tarvinnut pelata töikseen lähes ollenkaan, ja vapaa-aikaa oli enemmän kuin aiempina vuosina. Otin miniläppärille kääpiöt mukaan jopa häämatkalle Firenzeen, koska hei, lentokoneessa ehtisi ihan hyvin pelaamaan pientä yhden ruudun kokoista alle 20 kääpiön linnaketta. Vuoden vaihtuessa toista kertaa Toady ihan oikeasti alkoi kuulostaa siltä, että julkaisu tulee pian. Se olikin sitten menoa. Uusi versio oli luvassa joskus, kun hillitön kasa uusia ominaisuuksia olisi lisätty peliin. Opettaja ja oppilas tutustumassa ensiaskeliin. Ei nyt kovin usein, mutta silti. 31 kolumnit E räs entinen kollegani sanoi minulle joskus itseni kannalta myrskyisenä vuonna 2007, että saattaisin tykätä Dwarf Fortressista. Viikot vierivät parempia ja parempia kaivoksia, asuinalueita, portteja, parakkeja ja muita linnakkeen osia suunnitellessa. Kykypisteytys oli suhteellisen puuduttavaa, mutta ei vielä ahdistanut. Vuosi addiktiota En ole antanut millekään pelille niin paljon aikaa vuosiin kuin Dwarf Fortressille. Se oli kyllä ihan hauskaa, mutta minkään kanssa ei päässyt yleensä perspuriloimaan kunnolla. Niitä on monta ja valikko on hirveä. Ensimmäinen peli Maailma luotiin oletusasetuksilla, ja linnakkeen paikka valittiin lämpimältä alueelta joen viereltä. Jokainen uusi uljas linnake kuoli lopulta tarkoitukselliseen itsemurhaan, kätketyn kuoleman kammion avaamiseen. Oli mielenkiintoisempi tehdä Skrollia kuin pelata vanhaa Döffiä. 0.31 ei enää päivittynyt, Toady oli siirtynyt työskentelemään suljettujen ovien takana. Pian kaikki vastus katosi pelistä. Linnoituksista alkoi tulla kokoajan yksityiskohtaisempia, automatisoidumpia ja uskaliaampia. Rakkaussuhde syntyi välittömästi. Linnakkeisiin ilmestyi verta imeviä vampyyreja! Kaikenlaista muutakin, mutta varsinkin vampyyreja! Takaisin pohjalla Kun hurahdin 0.34.xx-versioihin, aiempi Döffi-koukkuni alkoi näyttämään naurettavalta pikku harrastelulta. Kaveri sanoi, että seuraavaksi valitaan yksi kappale jokaista tynnyrissä tulevaa ruokaa, joka maksaa kaksi pistettä. Aika harvassa oli viikko, jonka aikana ei syntynyt uutta linnaketta jolle antoi ainakin 10-15 tuntia aikaa. Hetkellinen eheytyminen Sitten hyytyi into. Ensimmäinen kääpiömäinen kokemus odotti heti nurkan takana. Tapio Berschewsky. Illan aikana kirosin käyttöliittymän alimpaan helvettiin moneen kertaan. Vaikka pelasinkin pääosin kaikenlaista muuta, oli kääpäkoukku niin syvällä, että luin parin päivän välein jokaisen päivityksen blogista. Seuraa rehellinen tilitys ongelmani syvyydestä. Kääpiöt kytivät alitajunnassa kiinnostavana vaihtoehtona. Pelasin ensin 0.31.xx-versioita, jatkuvasti enemmän. Jokainen niistä on merkki uusien asioiden oppimisesta ja vanhojen paremmasta toteutuksesta. Ystävä neuvoi säätämään itse seitsemän siirtolaisen kyvyt ja alkutavarat paikalleen. Olin kokemuksen jälkeen hieman nöyrempi ja tallensin joukkioni asetukset tulevia pelejä varten. Päivityksiä tuli tasaiseen tahtiin, ja uudet tasapainotukset olivat miellyttäviä. Kun 0.34.01 tuli ulos helmikuussa 2012, tiputin hanskat siihen paikkaan, ja pelasin pari vuorokautta putkeen. Syksyllä päivitykset ehtyivät. Nyt eri versioiden tallennuskansioissa on useita kymmeniä linnakkeita. Taisi olla joskus 2010 alkuvuodesta, kun toinen pitkäaikainen ystäväni sanoi, että ei ole varaa failata niin kuninkaallisesti, että jätän kääpiöt oikeasti katsomatta. Sitten vaihdettiin tavaroiden puolelle. Pelasin sitten parina aamuyönäkin, mutta selvisin nuhteluitta. Luen kyllä yhäkin blogia.. Seuraavana päivänä aloin uuden linnakkeen tyhjästä omin neuvoin. Mies tiesi, että olin uhrannut useita tuhansia tunteja elämästäni Nethackille melkein 20 vuoden saatossa. Jaksoin pari kuukautta, mutta sitten kääpiö ei enää innostanut. Katsotaan onnistuisiko seuraavan julkaisun kohdalla pitämään pään kylmänä. Sen sijaan en selvinnyt kovin pitkiä aikoja ilman Döffiä. Se on suurin aikarosvoni irkin lisäksi. Siirappia valuva ehdotus oli, että istuttaisiin yhdessä meillä iltaa. Irkkasin myös määrättömiä määriä kääpiöistä, auttaen aloittelijoita ja oppien guruilta. En tarttunut, oli liian kiire muiden töiden lomassa pelata arvostelupelejä Xbox 360:llä
Ei näin! Konix Multi-System, vallankumous on peruttu Jo 80-luvulla bittiä nyplänneet voivat muistaa peliohjainvalmistaja Konixin. kahdesta heikosta yksi Flare Technologylla ei käytännössä ollut resursseja tuoda Flare Onea tuotantoon, joten heille sopi varmasti hyvin, kun Konixin johto lähestyi suunnittelijoita yhteistyömielessä. Tarjolla oli jopa kuluttajatuotteissa ennennäkemätön force feedback. Konixilla oli kokemusta peliohjaimista, mutta pelikonsolin tuominen markkinoille on kertaluokkaa monimutkaisempi operaatio. Niinpä Multi-Systemin suunnitteluaikataulu alkoi lipsua. Konixin rahoitusongelmat etenivät nopeas. Viivästykset ovat normaaleita tuotekehityksessä, mutta yleensä sitä tehdäänkin vahvemmalla kassalla. Pelkkään pelaamiseen tarkoitettujen koneiden myynti oli lähtenyt Euroopassakin uudelleen nousuun lähinnä Nintendon vetämänä, ja osille halusi jokainen kynnelle kykenevä. Slipstreamin oli tarkoitus olla muunneltava ohjain, josta saisi vaikkapa auton ratin tai lentokoneen sauvaohjaimen tarpeen mukaan. Erityisesti Speed King -ohjain oli täkäläisittäinkin tunnettu. Konix kuitenkin tähtäsi myöhemmin tähtiin, epäonnistuen julmasti.. Vanhan sotaratsun Z80:n tilalle Konix tosin tahtoi modernimman 8086:n, jotta konsolista saatiin muodikkaasti 16-bittinen. Multi-Systemiksi nimetyn koneen kehitys alkoi toden teolla vuonna 1988, ja hyvin pian lehtiinkin alkoi tipahdella ennakkotietoja mullistavasta pelilaitteesta. Samaan aikaan Sinclair Researchin leivistä oli irtautunut Flare Technology -niminen porukka, joka jatkoi Sinclairin Loki-projektia. Nyttemmin Flare Oneksi ristityn koneen ytimessä sykki vanhahtava Z80, mutta räätälöidyn grafiikkaraudan ansiosta se pärjäsi vaikkapa 3D-laskennassa jopa ARM-pohjaiselle Acorn Archimedekselle. Eräänä kuumottavana yksityiskohtana laitteen yhteydessä oli tarkoitus esitellä myös siihen sopiva pelituoli, joka liikkuisi pelitapahtumien mukaan. Pelkkien tikkujen teon sijaan se halusi luoda aivan uudenlaisen, Slipstream-nimisen lisälaitteen. Tavoite joulusta 1989 muuttui pian kevääksi 1990, sitten saman vuoden syksyksi. Flare One oli juuri jotain sellaista, mitä Slipstreamin sisään oli kaavailtu. Teksti: Mikko Heinonen Kuvat: Paul Neal ja Steve Gallichan 32 2013.2 Pelit V uosikymmenen lähestyessä loppuaan Konixilla oli suuria suunnitelmia. Ajoitus olisi ollut kohtalaisen hyvä, sillä 8-bittiset konsolit olivat olleet markkinoilla jo useita vuosia. Kun Multi-Systemin ensimmäinen versio esiteltiin messuilla alkuvuodesta 1989, tarkoitus oli tuoda se markkinoille saman vuoden jouluksi. Tällaista oli nähty vain hulvattoman kalliissa peliautomaateissa, mutta Konixin vakaa aikomus oli tuoda tuolikin markkinoille kuluttajahintaluokassa. Melko pian heräsi ajatus siitä, että Slipstreamista saisi aikaan kokonaisen pelikonsolin. Myös hinnan piti jäädä 200 punnan tietämiin, mitä saattoi pitää hyvin kohtuullisena. Kahdesta pienestä ei kuitenkaan tullut yhtä suurta. Ensimmäiset 16-bittiset, kuten Sega Megadrive, tekivät vasta tuloaan. Lokista oli pitänyt tulla Amigan ja Atari ST:n kanssa tasaveroisesti kilpaillut supermikro, joka olisi Amigan tapaan perustunut varsinaista suoritinta tukeviin erikoispiireihin
Lopullisesti Multi-Systemin kuitenkin kaatoi Konixin rahoittajien huumorintajun loppuminen. Tämä oli julkaisijoille helpotus, koska pelin kopiointi levykkeelle maksoi murto-osan ROM-piirien hankinnasta ja moduulien prässäämisestä. Moottoroitu tuoli saatiin kyllä aikaan, mutta yleisölle esitelty prototyyppi oli tehty puusta, auton istuimesta ja porakoneista. Rahaa laitteen tuotantoversion tekemiseen ei kertakaikkiaan enää ollut, joten odotettua konetta ei koskaan nähty kauppojen hyllyillä. Flare Technology jatkoi toimintaansa Konixin kaatumisen jälkeenkin, ja seuraavaksi sen palveluksia kaivattiin Atlantin toisella puolen. Product Partnersin sivuilla on lisääkin konseptikuvia Konixista: www.productpartners.co.uk 33 ti siihen pisteeseen, että se joutui myymään tärkeimmän pääomansa, peliohjaintensa valmistusoikeudet, saadakseen rahaa Multi-Systemin tekemiseen. Samalla se kuitenkin aiheutti ongelman, sillä pelit piti ladata levykkeeltä koneessa olevaan muistiin. Moninkertaiset pulmat Pelikonsoliksi poikkeuksellista oli, että Multi-System suunniteltiin käyttämään levykkeitä ROM-moduulien sijaan. Kiinalaisten valmistaman ohjaimen helposti muistettava lopullinen nimi oli Multi-System Super MS-200E. Hätäkorjauksena Konix ilmoitti tuovansa markkinoille laajennuksen heti, kun muistipiirien hinta vain laskisi. Kehitystyötä vaikeutti entisestään se, etteivät Konix ja Flare saaneet aikaan lopullista tuotantomallia laitteesta. Yhtään lopullista laitetta ei ole tallessa, koska sellaista ei koskaan saatu kasaankaan. Pesänjakajat Multi-System olisi voinut olla aidosti eurooppalainen superkonsoli, mutta todellisuus juoksi sen kiinni ennen loppusuoraa. Entinen suuruus Atari nimittäin tarvitsi uuden kotikonsolin — jonka tarina kerrottiin tällä palstalla numerossa 2013.1.?. Videopalveluista löytyy demojen lisäksi pätkiä muun muassa moottorituolin rakentamisesta. Lähes kaikki laitteelle ilmoitetut pelit olivat käännöksiä Amigalta tai Atari ST:ltä ja vain harva niistä hyödynsi Multi-Systemin erikoisia ohjauslaitteita. Kehittäjät moittivat ratkaisua, koska se käytännössä edellytti, että kone lataa levykkeeltä jatkuvasti. Koska Konix Multi-System ei koskaan valmistunut, siitä on olemassa vain prototyypin kuvia. Todellisuus oli muutenkin haavekuvia karumpaa. Näihin ovat harrastajat törmänneet ainakin Tanskassa. Artikkelin kuvat antoivat ystävällisesti käyttöömme konsolin muotoilusta vastanneen Level Six Design Consultantsin Paul Neal ja Steve Gallichan, jotka toimivat nykyisin Product Partners -yrityksen johtajina. Koska muistipiirit olivat kalliita, prototyypissä oli RAMia vain 128 kilotavua — neljäsosa Amigan ja Atari ST:n perusversiosta. Emulaattori ja sekalainen kokoelma koneen demoamiseen käytettyjä ROM-tiedostoja verkosta kyllä löytyy, mikä sinällään on upeaa ja osoitus harrastajayhteisön voimasta. Paras pelattavaksi asti päässyt peli oli ilmeisesti Jeff Minterin Attack of the Mutant Camels. Huhutaan, että osansa asiaan oli myös laitteen suunnittelijoiden ylpeydellä, sillä Konix halusi loppuun asti tehdä laitteen yksin, eikä myydä sen oikeuksia kenellekään. Slipstream-ohjain, tosin selvästi yksinkertaistettuna, sen sijaan jopa oikeasti julkaistiin
Modernissa OpenGL-koodissa on ohjelmoijan tehtävä tarjota tulkinta attribuutille kullekin.. Nvidian OpenGL-tuki on perinteisesti ollut kattavin ja toimivin, mutta ajureissa on joitakin outouksia. Teksti ja kuvat: Mikko Rasa Ennen versiota 3.0 OpenGL tarjosi joitakin valmiiksi määriteltyjä attribuutteja. 3D-ohjelmointia aloittelevalle ensimmäinen valinta on käytettävä rajapinta. Tarvittavat muuttujat on asetettava ennen piirtokomennon suorittamista. Suorituskyvyn ja ominaisuuksien osalta rajapinnat ovat tasaväkiset. Windows Phonella ja Xboxilla Direct3D on ainoa tarjolla oleva 3D-grafiikkarajapinta. Nyt menemme itse asiaan ja tutustumme OpenGL:n käyttöön. Eri näytönohjainvalmistajien toteutusten välillä tosin on eroja. Pakettiin kuuluu 3D-grafiikan lisäksi myös muita erityisesti peliohjelmoinnissa tarvittavia rajapintoja. Mikäli alkeita ei haluta opetella aivan pikselitasolta alkaen, on vaihtoehtoja nykypäivänä käytännössä kaksi: OpenGL ja Direct3D. Pienellä etukäteissuunnittelulla on mahdollista kirjoittaa koodia, joka toimii lähes kaikilla alustoilla. Rasterointi on useimmiten hyvin taloudellinen renderöintitapa verrattuna ray tracing -tekniikkaan. Samoilla tiloilla ja samalla datalla suoritettava piirtokomento tuottaa aina saman lopputuloksen. Näistä kuitenkin luovuttiin rajapinnan yksinkertaistamiseksi. OpenGL on nimensä mukaisesti avoin standardi, jonka kehitystä ohjaa piirija ohjelmistovalmistajista muodostettu komitea, ARB — Architecture Review Board. 34 2013.2 Ohjelmointi Miksi OpenGL. Kunkin kulmapisteen attribuutit määrittelevät sen sijainnin, värin, tekstuurikoordinaatit ja muut ominaisuudet. Kolmiulotteisen kappaleen muodostamiseksi tarvitaan kahdentyyppistä dataa: kulmapisteet eli verteksit ja primitiivit eli alkeiskuviot. OpenGL on tilakone. Haittapuolena kuitenkin on, että aidosti pyöreitä kappaleita on mahdoton tehdä, ja monien valotehosteiden toteuttaminen on monimutkaista. Mobiililaitteilla käytetty OpenGL ES on oma standardinsa mutta läheistä sukua OpenGL:lle. Myös rautakiihdytykseen pääsee nykykoneilla käsiksi vain valmiiden rajapintojen kautta. Primitiivit OpenGL:n perusteet Viime numerossa luotiin lyhyt katsaus 3D-grafiikkarajapintojen historiaan. Direct3D puolestaan on Microsoftin kehittämä rajapinta. Eroja on lähinnä yksityiskohdissa ja tuetuissa ominaisuuksissa. Se lanseerattiin alun perin Windows 95:n mukana osana DirectX-rajapintaperhettä. ATI:n ostaneen AMD:n toteutuksissa puolestaan törmää silloin tällöin suoranaisiin bugeihin. Siinä on suuri määrä erilaisia tilamuuttujia, kuten käytettävät shader-ohjelmat, tekstuurit ja kappaleen datan sijainti muistissa. Tilat kuitenkin pysyvät muuttumattomina, kunnes ne asetetaan uudestaan, joten useita samanlaisia kappaleita voidaan helposti piirtää useita peräkkäin. Nvidian ohjaimet ovat näin ollen parempia kehitysvaiheessa, mutta tuotokset on parasta testata muillakin alustoilla ennen levitystä. Siitä on olemassa useita toteutuksia monille eri alustoille, mukaan lukien avoimen lähdekoodin Mesa. Primitiivit puolestaan kertovat, kuinka kulmapisteiden väliin muodostetaan renderöitäviä pintoja. Miten OpenGL toimii OpenGL:ssä kappaleet koostetaan tasokuvioista, jotka renderöidään pikseleiksi tekniikalla, jota kutsutaan rasteroinniksi
Tämä vaihe ei ole pakollinen, ja perehdymme siihen tarkemmin myöhemmässä artikkelissa. Monille muillekin ohjelmointikielille on tehty rajapintasidoksia, jotka yleensä muistuttavat enemmän tai vähemmän C-kielistä rajapintaa. Mikäli funktion nimen lopussa on v, se ottaa pointterin kyseisen tyyppisen dataan. Nämä primitiivit ovat harvinaisempia kuin kolmiot, mutta pisteitä käytetään usein ns. Se käsittelee kokonaisia primitiivejä, ja voi muuttaa niiden tyyppiä tai määrää. Ensimmäisenä suoritetaan kulmapisteshaderi (vertex shader), jonka tärkein tehtävä on muuntaa kulmapisteiden sijainnit ruudun koordinaatistoon. triangle strip) tai viuhkaa (engl. Myös likimain pyöreitä pintoja voidaan muodostaa monista pienistä kolmioista. OpenGL:n ohjelmointirajapinta OpenGL-standardi on suunniteltu C-kieltä silmälläpitäen. Se myös valmistelee verteksien muut ominaisuudet myöhempiä vaiheita varten. Viimeinen vaihe on pikselishaderi (fragment shader tai pixel shader), joka suoritetaan kerran jokaiselle rasteroitavan pinnan pikselille. Suurissa kappaleissa tämä voi vähentää merkittävästi indeksitaulukoiden kokoa ja siten parantaa suorituskykyä. Tämän artikkelin esimerkit on tehty C++:lla, mutta soveltaminen muihin ohjelmointikieliin ei ole vaikeaa. Oikein käytettynä geometriashaderilla voi vähentää pääsuorittimen ja väylän kuormitusta huomattavasti tietynlaisissa tehosteissa. Joissakin osissa toteutus voi olla hieman erilainen johtuen esimerkiksi osoittimien puutteesta. Seuraavana vuorossa on geometriashaderi (geometry shader). Monet OpenGL:n funktiot ottavat patyyppi pääte vakio char b GL_BYTE unsigned char ub GL_UNSIGNED_BYTE short s GL_SHORT unsigned short us GL_UNSIGNED_SHORT int i GL_INT unsigned int ui GL_UNSIGNED_INT float f GL_UNSIGNED_INT float f GL_FLOAT double d GL_DOUBLE Yleisimpiä tietotyyppejä. OpenGL:ssä kaikki pinnat määritellään kolmioina, koska se on matemaattisesti yksinkertaisin käyttökelpoinen muoto ja helpottaa siten algoritmien suunnittelua ja toteutusta. index), jotka toimivat kuten taulukon indeksit. Shaderit kirjoitetaan C:tä muistuttavalla GLSL-ohjelmointikielellä (GL Shading Language). Niissä olevat kolmiot jakavat kulmapisteitä keskenään, joten saman kolmiomäärän piirtämiseen tarvitaan pienempi määrä indeksejä. Monimutkaisemmat tasopinnat on pilkottava kolmioiksi renderöintiä varten. Omia ominaisuuksia ei primitiiveillä ole. Raskaat laskentaoperaatiot kannattaa sijoittaa kulmapisteshaderiin, koska se suoritetaan huomattavasti harvemmin kuin pikselishaderi. Pikselishadereista on enemmän tietoa toisaalla tässä numerossa. Kolmioiden lisäksi on mahdollista piirtää myös viivoja ja pisteitä. partikkeliefektien piirtämiseen. Pisteet ovat aina irrallisia. Tästä huolehtivat shaderit. Kappaleen data on vielä muutettava kuvaruudun koordinaateiksi ja väreiksi. Eri shader-malleja OpenGL-primitiivejä. Usean erillisen ketjun tai viuhkan piirtäminen yhdellä kutsulla vaatii kuitenkin pientä kikkailua. Kolmiot voivat olla irrallisia tai osana kolmioketjua (engl. Sen syötteitä interpoloidaan pinnan yli, mikä mahdollistaa pehmeät väriliu'ut, jatkuvan teksturoinnin ja monenlaiset pikselikohtaiset valotehosteet. Myös laskennallista grafiikkaa voidaan luoda pikselishadereilla. Shader-ohjelmien suorituksessa on muutamia eri vaiheita. triangle fan). 35 määritellään viittaamalla kulmapisteisiin indekseillä (engl. Oikein tehtynä eroa aidosti pyöreään pintaan ei juuri huomaa. Ne ovat lyhyitä ohjelmia, joita suoritetaan näytönohjainpiirillä. Viivat voivat kolmioiden tapaan olla irrallisia tai osana ketjua (line strip) tai silmukkaa (line loop)
Tällaisia ovat esimerkiksi tekstuurin väriformaatti tai shaderin tyyppi. Kolmiulotteinen kappale vaihe vaiheelta: kolmioverkko, väripinnat, tekstuurit, varjostus.. Niihin viitataan käyttäen kokonaislukutunnisteita. Mikäli OpenGL-funktiokutsussa tapahtuu virhe, ohjelman on erityisesti kehitysvaiheessa hyvä kyetä raportoimaan siitä. Sen palauttama lukuvakio ilmaisee, millainen virhe edellisen kutsukerran jälkeen on tapahtunut. Osa funktioista taas ottaa yhtenä parametrina tietotyyppiä kuvaavan lukuvakion. Se on superolio, joka pitää sisällään OpenGL:n koko tilan. Jotta voisimme piirtää ikkunaan jotain, tarvitsemme aluksi kulmapisteet ja primitiivit. struct Vertex { float x, y; }; Vertex vertices[] = { { -0.5, 0.5 }, { -0.5, -0.5 }, { 0.5, 0.5 }, { 0.5, -0.5 } }; OpenGL:n oletuskoordinaatistossa ruudun koordinaatit ovat välillä [-1, 1], missä X kasvaa oikealle ja Y ylöspäin. Oliot on erikseen luotava ennen niiden käyttöä, ja ne on myös muistettava tuhota käytön jälkeen. Tällä on merkitystä lähinnä suurissa renderöintifarmeissa, ja käytännössä siihen ei kuluttajatason raudalla törmää. OpenGL on monelta osin oliopohjainen rajapinta, mutta olioiden tietorakenteet on piilotettu ohjelmoijalta. Seuraavaksi luomme puskurin ja lataamme kulmapisteet siihen: unsigned vbuf_id; glGenBuffers(1, &vbuf_id); glBindBuffer(GL_ARRAY_BUFFER, vbuf_id); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); OpenGL-standardi sallii toteutuksen ylläpitää useita virhekoodeja vähentääkseen synkronoinnin tarvetta hajautetussa renderöinnissä. Myöskään virhekoodista ei selviä, mikä funktiokutsu sen aiheutti. Joillakin funktioilla on nimen perässä pääte, joka kertoo minkä tyyppisiä arvoja kyseinen funktio ottaa. Useimpia olioita ei myöskään voi käsitellä suoraan, vaan operaatiot kohdistuvat aktiiviseen olioon. Tähän on kaksi eri tapaa. Tätä varten on funktio glGetError. Tapa kontekstin ja ikkunan luomiseen riippuu järjestelmästä, ja sivuutamme yksityiskohdat tässä artikkelissa. Skrollin nettisivuilta löytyy esimerkkejä joillekin suosituimmille järjestelmille ja kirjastoille. Sama konteksti voi vastaavasti olla aktiivisena vain yhdessä säikeessä kerrallaan. Jos virheitä tapahtuu glGetError-kutsujen välissä useampia, ainoastaan ensimmäinen virhe säilytetään. C++:lla tämä onnistuu kätevimmin, kun jokaiselle oliotyypille tekee luokan, joka huolehtii alla olevan OpenGL-olion elinkaaresta. Näitä arvoja esitetään nimetyillä kokonaislukuvakioilla. 36 2013.2 rametreja, joilla on ei-numeerinen merkitys. Jotta oliota voisi käyttää piirtämiseen, se on sidottava (bind) aktiiviseksi. Indeksejä emme tässä esimerkissä tarvitse, koska OpenGL tarjoaa erillisen funktion peräkkäisten kulmapisteiden piirtämiseen. Näistä funktioista on yleensä useita eri muunnelmia eri tietotyypeille. Grafiikan saamiseksi ruudulle tarvitaan myös ikkuna. Monilla oliotyypeillä on useita sidontapisteitä (binding point), mahdollistaen esimerkiksi monen tekstuurin samanaikaisen käytön. Yllä olevat kulmapisteet määrittelevät näin ollen suorakulmion, joka on kummassakin suunnassa puolet ruudun koosta. Koska yhdellä kulmapisteellä ei tee mitään, määrittelemme niitä taulukollisen. Ohjelmalla voi olla samanaikaisesti useita konteksteja, mutta kullakin säikeellä voi olla vain yksi aktiivinen konteksti. Yksinkertaisen OpenGL-ohjelman anatomia Ennen kuin mitään muita OpenGL-kutsuja voi tehdä, ohjelman on luotava konteksti. Jotta ohjelman antama data tulkittaisiin oikein, on myös sen tietotyyppi kerrottava OpenGL:lle. Helpoin tapa kulmapisteiden määrittelyyn on luoda tietorakenne, joka pitää sisällään yhden kulmapisteen ominaisuudet
Kulmapisteja pikselishaderit on vielä liitettävä yhteen shaderohjelmaksi: enum { POSITION = }; unsigned prog_id = glCreateProgram(); glAttachShader(prog_id, vs_id); glAttachShader(prog_id, fs_id); glBindAttribLocation(prog_id, POSITION, "in_position"); glLinkProgram(prog_id); glBindAttribLocation-kutsu sitoo kulmapisteshaderille määrittelemämme syötteen paikkaan 0. Tarvittavat tilat on kuitenkin vielä asetettava: glVertexAttribPointer(POSITION, // Verteksissä on // kaksi komponenttia 2, GL_FLOAT, // Ei normalisointia false, // Siirtymä tavuina // verteksien välillä sizeof(Vertex), vertices); glEnableVertexAttribArray(POSITION); glUseProgram(prog_id); Ja lopulta varsinainen piirto: glClear(GL_COLOR_BUFFER_BIT); // Piirretään neljä verteksiä, alkaen // indeksistä 0, eli taulukon alusta glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); Piirtokoodi sijoitetaan yleensä silmukkaan, joka huolehtii myös syötteen ja muiden tapahtumien käsittelystä. OpenGL sisältää GLSL-kääntäjän, jota käytetään funktiokutsujen kautta. in vec4 in_position; void main() { gl_Position = in_position; } Vertex shader void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } Fragment shader vec4 on vektorityyppi, joka koostuu neljästä liukuluvusta. Tämä kutsu ei ole välttämätön, ja jos se puuttuu, OpenGL antaa automaattisesti jokaiselle syötteelle oman sijainnin. Shadereita ei voi suorittaa lähdekoodimuodossa, vaan ne on ensin käännettävä. Vihjeen perusteella ajurit voivat päättää, mille muistialueelle data sijoitetaan. Koska kulmapisteiden koordinaatit ovat jo valmiiksi oikeassa koordinaatistossa, tarvittavat shaderit ovat hyvin yksinkertaiset. Nyt olemme melkein valmiita suorittamaan piirto-operaation. 37 glBufferData-kutsun viimeinen parametri on vihje datan käyttötavasta. Verteksivarjostin kopioi sille annetun koordinaatin OpenGL:n tarjoamaan muuttujaan. Aiemmin määrittelemissämme kulmapisteissä on vain kaksi koordinaattia, mutta tämä ei haittaa, koska OpenGL täyttää loput koordinaatit oletusarvoilla (0, 0, 0, 1). Kuvakaappaus esimerkkiohjelmasta. Useimmista muista OpenGL:n olioista poiketen varjostimia voi käsitellä suoraan sitomatta niitä aktiiviseksi. Pikselishaderi asettaa jokaisen pikselin väriksi kirkkaan punaisen. Tässä tapauksessa aiomme määritellä datan kerran ja sen jälkeen käyttää sitä monta kertaa piirtämiseen. unsigned vs_id = glCreateShader(GL_VERTEX_ SHADER); glShaderSource(vs_id, // Lähdekoodi koostuu // yhdestä merkkijonosta 1, // Merkkijonojen osoitteet &vertex_shader_src, // Merkkijonojen pituudet; // ei tarvita, jos merkkijonot // ovat terminoituja NULL); glCompileShader(vs_id); Käännöksen onnistuminen on hyvä tarkistaa ja mahdolliset virheet tulostaa: int status; glGetShaderiv(vs_id, GL_COMPILE_STATUS, &status); if(!status) { char buf[1024]; glGetShaderInfoLog(vs_id, // Annetun puskurin koko sizeof(buf), // Palautusmuuttuja merkkijonon // pituudelle; palautettava // merkkijono on terminoitu, // joten tätä ei tarvita NULL, buf); printf( "Failed to compile shader:\n%s\n", buf); } Pikselishaderi käännetään vastaavasti, mutta glCreateShader-kutsulle annetaan parametrina vakio GL_FRAGMENT_SHADER. Väärän vihjeen antaminen ei tee ohjelmasta toimimatonta, mutta saattaa hidastaa toimintaa. Mikäli käytettävä ikkunointikirjasto tarjoaa oman pääsilmukkansa, voidaan piirtämiseen käyttää ajastinta. Nettisivultamme löydät esimerkkiohjelman täydellisenä.. Koska 3D-grafiikassa käytetään yleensä kaksoispuskurointia, voi myös olla tarpeen antaa käsky esittää puskurin sisältö ruudulla. Neljättä koordinaattia käytetään perspektiivin muodostamiseen; perehdymme taustalla olevaan matematiikkaan seuraavassa osassa. On kuitenkin helpompaa, jos tiedämme etukäteen, mille paikoille syötteet päätyvät
Niinpä shadereissa kaikki objektit perustuvat yleensä kolmioihin (triangle), vaikka muitakin primitiiveShader-ohjelmointi — outoa salatiedettä?. Toinen yllätys on shaderien virheenetsintämahdollisuudet, jotka ovat kuin jäänne 80-luvulta tai jostain vielä kauempaa. OpenGL ES OpenGL on ohjelmoijalle näkyvä rajapinta, jolla käytetään tietokoneen grafiikkaprosessoria. Jos haluat ottaa laitteesi grafiikkapiiristä lähes kaiken irti, niin paras vaihtoehto on tehdä ohjelmasi suoraan OpenGL:n päälle ja tehdä myös shader-ohjelmat itse. Kaikki on lopulta kiinni omasta kekseliäisyydestä eikä välttämättä korkean tason matemaattisista taidoista. Tässä artikkelissa keskitytään GLES:n shader-ohjelmointiin. Erityyppisiä shadereita kutsutaan liukuhihnan eri vaiheissa. GLES 2.0 tukee shader-ohjelmointia kulmapistetasolla (vertex shader) ja pikselitasolla (fragment shader). Minkäänlaisiä debug-tulostuksia ei ole käytössä, vaan tiedot on kirjoitettava pikseleiksi! Jos ohjelmoija siis haluaa tietää shader-ohjelman sisäisen muuttujan arvon, se pitää koodata väriarvoksi ja tulostaa pikselishaderin avulla ruudulle. Monesti ohjelmoijalle tulee yllätyksenä, että GLES 2.0:n mukana ei tavallisesti tule mitään valmista shaderkirjastoa, josta valita sopivia ohjelmia, vaan kaikki pitää, ja ennen kaikkea saa, tehdä itse. Todellisuudessa alkuun kuitenkin pääsee nopeasti, ja jo muutamalla koodirivillä voi saada upeita efektejä näytölle. Aloituskynnys on tämän vuoksi korkeammalla kuin GLES 1.1:ssä, jossa shadereita vastaava toiminnallisuus on toteutettu kiinteänä funktioputkena. Grafiikkasuoritin kutsuu shadereita grafiikkaliukuhihnan tietyssä vaiheessa, jolloin ohjelmoija voi vaikuttaa lopputulokseen erittäin monipuolisesti. erilaisille vektoreille ja matriiseille. GLES-shaderit Kolmio on yksinkertaisin geometrinen muoto, joka muodostaa tason. Shader on pieni ohjelma, joka suoritetaan näytönohjaimen grafiikkasuorittimessa (GPU) koneen pääsuorittimen (CPU) sijaan. Poikkeuksen tekee Windows Phone, jossa käytetään Direct3D-rajapintaa, ja sen myötä shadereissa HLSLkieltä, joka poikkeaa jonkin verran toiminnaltaan ja syntaksiltaan GLES:ssä käytettävästä GLSL-kielestä. Työpöytätietokoneissa käytettävä OpenGL sisältää myös geometriashaderin (geometry shader), mutta GLES 2.0:sta se puuttuu. Shaderien ohjelmointikieli, GLSL, on syntaksiltaan yksinkertaista. Erilaisia grafiikka-algoritmeja voi omien kykyjen ja mielikuvituksen puitteissa kehittää käytännössä rajattomasti. Poistuneet toiminnot toteutetaan shader-ohjelmilla, joiden kautta ohjelmoija määrittelee itse grafiikkasuorittimen toimintaa eri tilanteissa. Ei ole todellakaan pakko käyttää valmiita korkean tason grafiikkakirjastoja, jossa OpenGL ja shaderit on paketoitu jonkin "helppokäyttöisen" API:n taakse käytännössä se usein vain rajoittaa omaa innovointia. Ilman shader-ohjelmia näytölle ei renderöidä yhtään pikseliä (lukuunottamatta taustaväriä). 38 2013.2 Ohjelmointi Shader-ohjelmointi mielletään monesti jonkinlaiseksi mystiseksi taidoksi, jonka hallitsemiseksi tarvitsee olla sekä matemaatikko että graafikko. Se muistuttaa karsittua C-kieltä, johon on lisätty esimerkiksi valmiit tietotyypit mm. GLSL tarjoaa välineet todella monimutkaisten grafiikka-algoritmien toteutukseen, mutta myös yksinkertaisilla laskutoimituksilla, ja vaikkapa valmiiden trigonometristen funktioiden käytöllä, voi saada vaikuttavaa jälkeä aikaiseksi. OpenGL ES (GLES) on puolestaan sen supistettu versio, joka on tarkoitettu vähemmän tehokkaisiin laitteisiin, kuten matkapuhelimiin. Teksti: Hannu Viitala Kuvat: Hannu Viitala, Visa-Valtteri Pimiä S hader-ohjelmointi on parhaimmillaan hyvinkin helppoa ja palkitsevaa. GLES on käytössä lukuisilla eri alustoilla, kuten Symbian, Android, iOS, ja jopa Blackberry. Versiot eivät näin ollen ole keskenään yhteensopivia. Vanhemmassa GLES-rajapinnassa on sisäänrakennettuna kehittyneitä toimintoja, kuten valonlähteen ja varjostustyypin valinta, mutta ne on karsittu pois 2.0:sta
39 jä löytyy, kuten viiva (line) ja piste (point). Vielä yksi tapa välittää tietoa shadereille on tekstuuri. Kulmapisteohjelmalla grafiikkasuoritin laskee kulmapisteen lopulliset koordinaatit ruudulla. Kulmapisteohjelma sijoittaa kulmapisteen lopulliset koordinaatit gl_Position-muuttujaan. Samalla periaatteella voidaan tehdä mielivaltaisen muotoisia kappaleita. Seuraavaksi (listaus 3) kokeillaan jotain vähän mielenkiintoisempaa: muutellaan pikselin väriarvoa sen sijainattribute vec3 vertexPos; void main(void) { gl_Position = vec4(vertexPos, 1.0); } precision mediump float; void main(void) { gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); } precision mediump float; void main(void) { vec2 pos = ( gl_FragCoord.xy / vec2(320, 240)); gl_FragColor = vec4(pos.x, pos.y, 1.0, 1.0); } Listaus 1 Listaus 2 ja tuloksena syntyvä kuva Listaus 3 ja tuloksena syntyvä kuva GLSL Sandbox http://glsl.heroku.com/ Shader Toy http://www.iquilezles.org/apps/shadertoy/. Jos attribute-muuttujan arvoa tarvitaan myös pikseliohjelmassa, niin se pitää välittää kulmapisteohjelmalta pikseliohjelmalle varying-muuttujan avulla. Varying-muuttujan kautta annettu data interpoloidaan pikseliohjelmalle niin, että sen kulloinenkin arvo riippuu pikselin etäisyydestä jokaiseen kolmion kulmaan. Näin kulmapisteohjelmalle voidaan välittää vaikkapa koordinaatit, pinnan normaali, tekstuurikoordinaatit tai väriarvo jokaisessa kulmapisteessä. Tietoa voidaan välittää isäntäohjelman (esim. Usein käytettyjä uniform-muuttujia ovat animaatioissa tarvittava aikamuuttuja sekä kulmapistekoordinaattien muokkaamiseen käytettävät muunnosja projektiomatriisit. Jokaista kulmapistettä vastaa yksi taulukon alkio. Vastaavia shaderien kokeilutyökaluja löytyy sovelluskaupasta myös Androidja iOSlaitteille. Kulmapisteohjelmassa voidaan muuttaa kulmapisteen koordinaatteja, mutta niiden lukumäärään ei voi vaikuttaa. Joissakin OpenGLtoteutuksissa tekstuurin kautta voi välittää tietoa myös kulmapisteohjelmalle. C++-ohjelma) ja shader-ohjelman välillä, eri shaderien välillä tai GPU:n ja shaderien välillä. Väri muodostetaan neljästä liukuluvusta, joiden arvot ovat väliltä 0.0 ja 1.0: punainen, vihreä, sininen ja peittävyys. Shader-ohjelmien tiedonvälitykseen käytetään kolmen tyyppisiä muuttujia: attribute, uniform ja varying. Tämän takia pikseliohjelmaa kutsutaan yleensä paljon useammin kuin kulmapisteohjelmaa, joten pikseliohjelman suorituskyky on paljon kriittisempi lopputuloksen kannalta. Pikseliohjelmaa kutsutaan jokaiselle näytön pikselille, jossa saattaa olla jotain piirrettävää, eli silloin kun pikseli kuuluu johonkin rasteroitavaan primitiiviin. Oheinen pikseliohjelma tuottaa vihreitä pikseleitä sijoittamalla kyseisen väriin arvon gl_FragColor-muuttujaan. Attributemuuttuja on kulmapistekohtainen muuttuja, joka annetaan C++:sta taulukkona OpenGL API:lle. Kulmapisteohjelmassa (listaus 1) ei tarvita välttämättä kuin yksi attributemuuttuja, joka määrittää kulmapisteen koordinaatit (vertexPos). Grafiikkasuoritin ajaa renderöinnin yhteydessä kulmapisteohjelman jokaiselle kulmapisteelle. Uniformmuuttuja taas pysyy vakiona piirtokomennossa annetulle joukolle kulmapisteitä ja niihin liittyviä pikseleitä. Pikseliohjelmassa asetetaan väriarvo ja peittävyys yksittäiselle pikselille. Ensimmäiset omat shader-ohjelmat Alla esiteltäviä pikseliohjelmia voi kokeilla käytännössä kirjoittamalla ne netissä oleviin shader-työkaluihin (linkit ohessa). Näissä työkaluissa ei yleensä voi muuttaa suoraan kulmapisteohjelmaa. Työkaluissa on käytettävissä myös valmiita uniform-muuttujia, kuten "time" ja "mouse", joilla saa helposti tehtyä vuorovaikutteisia animaatioita. Yleensä se sisältää pikseliohjelmassa tarvittavaa väriinformaatiota, mutta se voi sisältää myös mitä tahansa numeerista tietoa, kuten pinnan normaaleja tai muunnosmatriiseja. Attributemuuttujia voi käyttää vain kulmapisteohjelmissa. Neliö saadaan aikaiseksi, kun laitetaan kaksi kolmiota vierekkäin. Isäntäohjelmassa (jota ei esitellä tässä) alustetaan kulmapisteet niin, että ne muodostavat neliön, eli kaksi kolmiota vierekkäin. Siihen tarvittaisiin geometriaohjelmaa, joita ei siis ole GLES 2.0:ssa. Primitiivit määritellään kulmapisteinä eli vertekseinä. GLSL:ssä on myös sisäisiä muuttujia, kuten gl_Position, joka välittää kulmapisteen lopulliset koordinaatit GPU:lle. Pikseliohjelma (listaus 2) on vieläkin yksinkertaisempi, sillä se ei välttämättä tarvitse mitään syötettä
40 2013.2 nin mukaan. Siinä käytetään gl_ FragCoord-muuttujan lisäksi sinija kosinifunktioita pikselien väriarvojen laskemiseen. Listauksessa 4 on pikseliohjelma, joka piirtää näytölle värikkään salmiakkikuvion. Sen jälkeen ei ollut enää paluuta Basiciin. Ajurien laatu ja toiminta saattaa vaihdella merkittävästi jopa saman valmistajan eri malleissa. Lisäharmia aiheuttaa esim. Shader-ohjelmointi on niin paljon helpompaa, tehokkaampaa ja ennen kaikkea hauskempaa.. Esimerkiksi jossain HTC:n laitteessa voi valita vapaasti tekstuurin korkeuden ja leveyden, kun taas tietyissä Samsungin laitteissa niiden on oltava kakkosen potensseja. Tällainen ohjelma on esitelty tässä lehdessä toisaalla. Puhelinvalmistajilla on erilaisia grafiikkasuorittimia ja ajuriohjelmia. Samoin, kun on päässyt sisälle shader-ohjelmointiin, pääsuorittimella toteutettu grafiikka tuntuu toivottoman hitaalta. Sijaintikoordinaatit skaalataan pienemmäksi, jotta ne soveltuvat rja g-väriarvoiksi. Yksittäisen värikomponentin maksimiarvo on 1.0, eikä sitä suuremmilla arvoilla ole enää vaikutusta lopputulokseen. Eroja on myös siinä, mitä OpenGL-laajennuksia laite tukee. Tässä artikkelissa on vain raapaistu pintaa siitä mitä shadereillä voi saada aikaiseksi. precision mediump float; void main( void ) { vec2 pos = ( gl_FragCoord.xy / vec2(320, 240)); float color_r = 1.0 + sin( pos.y * sin( 1.0 ) * 40.0 ) + cos( pos.x * sin( 0.4 ) * 40.0 ); gl_FragColor = vec4( color_r, color_r * 0.5, sin( color_r + 10.0 / 3.0 ) * 0.75 , 1.0 ); } precision mediump float; uniform float time; void main( void ) { vec2 pos = ( gl_FragCoord.xy / vec2(320, 240)); float color_r = sin(time) + sin( pos.y * sin( 1.0 ) * 40.0 ) + cos( pos.x * sin( 0.4 ) * 40.0 ); gl_FragColor = vec4( color_r, color_r * 0.5, sin( color_r + 10.0 / 3.0 ) * 0.75 , 1.0 ); } Listaus 4 ja tuloksena syntyvä kuva Listaus 5. Hyviä OpenGLesimerkkejä on myös sivulla http://nehe.gamedev.net/ Virallinen GLES 2.0:n määrittely löytyy Khronoksen sivulta: http://www.khronos.org/ Vaikka OpenGL-rajapinnan avulla on mahdollista tehdä alustariippumatonta koodia, joka kääntyy suoraan eri ympäristöihin, tarvitaan kuitenkin aina myös alustakohtaista koodia, kuten kuvatiedostojen lataaminen muistiin, OpenGL:n alustus, syöttöja tulostuslaitteiden käsittely jne. Miten tästä eteenpäin. PC:tä käytetään paljon ajamiseen ja testaamiseen kehitysvaiheessa, vaikka lopullinen ohjelma tulisikin matkapuhelimeen tai tablettiin. Android-ympäristössä se, että laitteet ovat toteutukseltaan ja ominaisuuksiltaan erilaisia. Tällaisia laajennuksia ovat muun muassa tekstuuriyksikön käyttö kulmapisteohjelmassa ja tekstuuripakkausalgoritmit. Kokonainen ajettava ohjelma sisältää shader-ohjelmien lisäksi tietenkin OpenGLrajapintaa käyttävän rungon, jonka voi tehdä esimerkiksi C++:lla, Pythonilla, Javalla tai Objective-C:llä. Kaiken kaikkiaan shaderohjelmoinnissa on kuitenkin samaa löytämisen riemua joka syntyi, kun aikoinaan siirtyi Basicista ohjelmoimaan 6502-konekieltä, ja huomasi millainen tehoreservi olikin yhtäkkiä käytössä. Seuraavaksi kannattaa tutustua vaikkapa muunnosmatriiseihin, tekstuureihin, pinnan normaaleihin, ja erilaisiin 3Dvarjostusalgoritmeihin. Pienellä muutoksella (listaus 5) voidaan shader-ohjelmassa ottaa käyttöön aikamuuttuja, jolla saadaan näytölle liikettä. GLSL antaa pikseliohjelmalle kulloisenkin pikselin sijainnin gl_FragCoord-muuttujan kautta. Tätä silmälläpitäen on tehty kirjastoja ja sovelluskehyksiä, joilla alustariippuvuudet saadaan minimoitua, kuten SDL, Qt ja Cocos2dx. (Muuttuja "time", kuten myös aiemmin esitelty "vertexPos", pitää erikseen välittää isäntäohjelmasta shaderille). PC:llä voi kuitenkin olla käytössä enemmän shader-muistia kuin mobiililaitteessa, mikä aiheuttaa yhteensopivuusongelmia
Erityisesti kulttuuri Perusviileä yhteisö CoolBasic on suomalainen, pelien tekemiseen suunnattu aloittelijaystävällinen ohjelmointikieli. Motivoivia haasteita CoolBasicin nopeus on nykymittapuulla toivoton, mutta se ei harrastajia haittaa. Aina voi kilpailla yhä paremmista suorituksista ja pyrkiä tekemään jotain sellaista, mitä CoolBasicilla ei ole vielä nähty. Vaikka suuri osa harrastajista lähtee ennen pitkää kehittämään osaamistaan uusiin suuntiin, CoolBasic säilyttää erityisen paikkansa monen sydämessä. Vaikuttavan lopputuloksen tavoittelu on mielenkiintoista, kun tehot eivät riitä mielivaltaiseen grafiikkaan tai monimutkaiseen prosessointiin. Aloittelija taas pääsee sen parissa helposti alkuun kattavan suomenkielisen manuaalin ja yhteisön avulla. Kieltä on helppo lähestyä, sillä näkyviä tuloksia saa aikaan verrattain nopeasti. Teksti: Olavi Lintumäki Kuvat: Olavi Lintumäki, Ville Lahdenvuo Mikä CoolBasic. CoolBasic sopii nopeaan testailuun ja prototyyppien kehittämiseen. Säännöllisesti toimintaan osallistuvaa väkeä on viitisenkymmentä, ja vähemmän aktiivisia osanottajia useampi sata. Sen ympärillä toimii aktiivinen yhteisö, jonka jäsenet järjestävät tapaamisia, kilpailuja ja muita yhteisiä projekteja. Suurin pullonkaula suorituksessa on virtuaalikoneen nopeus. Osoitinten puutetta paikkaavat itse määriteltävät tietuetyypit, joihin voi viitata, sekä muistipalat, jotka ovat lähimpänä C-tyylisiä taulukoita. Hitaus toimii pikemminkin haasteena, joka motivoi nopeampien algoritmien ja tekniikoiden löytämiseen. Vauhtia on haettu esimerkiksi kuvista, viivoista ja muista ruutua kerralla enemmän täyttävistä piirtokomennoista. Myös resoluutio on luonnollisesti pysynyt varsin alhaisena ja esilaskenta on ollut suosittua. 41 K oska CoolBasic on ominaisuuksiltaan rajoittunut, se harvemmin houkuttelee kokeneita ohjelmoijia. • Jukka Lavosen (zerppa) lukioikäisenä kehittämä, välikielestä tulkattu ohjelmointikieli • Esikuva ja syntaksin alkuperä on Blitz Basicissa • Ensimmäinen versio vuodelta 2001, viimeisin beta 10.43 vuodelta 2005 • Keskustelualueella yli tuhat rekisteröitynyttä käyttäjää • Eri vaiheisiin edenneitä pelejä on yli 400, introja ja demoja yli 40. Silloin tällöin löytyy uusia tapoja kiertää tai hyödyntää rajoituksia, mikä avaa mahdollisuuksien rajaseuduille uusia, tutkimattomia alueita. Monien algoritmien toteuttaminen on vaivatonta, vaikka kieli ei tarjoa valmiina taulukoita monimutkaisempia tietorakenteita, eikä kehittyneempien tietorakenteiden toteuttaminen sillä ole aina luontevaa
Sen testailu on toistaiseksi jäänyt melko vähäiselle tasolle, sillä se on osoittautunut joiltakin osin alkuperäistä heikommaksi ja on ollut käytettävässä kunnossa vasta vähän aikaa. CoolBasicilla tehtyjen pelien pelaaminen on yleistä, ja kilpailuihin osallistutaan yleensä sillä tehdyillä tuotoksilla, mikäli tämä sopii kilpailun laatuun. Tämä näkyykin lopputuloksissa positiivisella tavalla. Nostalgiasta on tässä tapauksessa liian varhaista puhua, sillä suurin osa tekijöistä on ollut menossa mukana alusta saakka, eikä CoolBasic ole kuin vasta reilut kymmenen vuotta vanha. Toistaiseksi molemmilla versioilla tehdyt tuotokset kilpailevat samassa sarjassa, mutta saattavat erottautua tulevaisuudessa selkeästi omiksi alustoikseen. Enchanted on joka tapauksessa jo nyt tuonut CoolBasic-skeneen uutta intoa pelien ja demojen tekemiseen. Vanhempi, pidempään mukana ollut porukka käy vuosittain mökillä nauttimassa kesästä rauhallisissa merkeissä. Sen tekemiseen ryhdyttiin, koska CoolBasicin uutta versiota ei ole kuulunut eikä nykyversio toimi Linuxilla. Tavallisista laneista CoolBasic-kokoontumiset eroavat siinä, että suuri osa ajasta kuluu pelaamisen lisäksi koodaamiseen joko keskinäisten kilpailujen tai yhteisten ja omien projektien muodossa. Turbo Jelly Tulipalo Compoentryjen läpikäymistä Scroller CBE. 42 2013.2 läpinäkyvyysmaskien avulla on mahdollista kehitellä uusia efektejä, joihin tehot eivät muuten mitenkään riittäisi. Jos kerran vähempikin teho riittää, miksei saman tien käytä vanhoja tietokoneita. Laneja on järjestetty viime vuosina säännöllisemmin, ja kompoja on ollut kerralla enimmillään yli viisi. Nopeutta kehiin Skeneä järisyttää parhaillaan vaihtoehtoinen yhteisölähtöinen virtuaalikone ja runtime, cbEnchanted. Enchantedin mahdollisuuksien rajat ovat luultavasti huikeat. Samalla kun Enchanted tarjoaa uusia ominaisuuksia ja mahdollisuuden luoda niitä hyödyntäviä efektejä, joutuu sen kanssa luopumaan joistain totutuista tempuista ja keksimään tilalle aivan uusia. Se valtaa mielellään tilavat käytäväpaikat itselleen mahtuakseen paremmin liikkumaan koneelta toiselle, tekemään yhteistyötä ja seuraamaan muiden tekemisiä. MessuhalY.. Miksi sitten käyttää nyky-PC:llä ohjelmointikieltä, joka paikoin häviää 80-luvun tietokoneillekin. Laneilla on vilkkaampaa, ja Assemblyillä vietetään partyja tiiviissä tunnelmissa omien kilpailujen ja tempausten säestämänä. Laadukasta lanitusta Yhteisön tapaamiset ovat jakaantuneet etäisyyksien ja mieltymysten perusteella muutamaan eri luokkaan. Vaikka pullonkaulat ja kyvyt ovat jakautuneet eri tavoin, on kokonaisvaikutelma silti jossain mielessä samantyyppinen kuin menneiden vuosikymmenten alustoilla. Assemblyilla CoolBasicryhmä on nähty säännöllisesti vuodesta 2007 lähtien. Jatkossa nähdään varmasti molemmilla versioilla tehtyjä tuotoksia, sillä myös alkuperäisen kielen potentiaalista on vielä paljon käyttämättä. Eräs harrastaja tiivistää asian seuraavasti: ”CoolBasic on minun Commodoreni.” Yksinkertaisesta ohjelmointikielestä on kehittynyt käyttäjilleen omalta tuntuva, erityinen alustansa. Se on alkuperäistä nopeampi ja laajentaa grafiikkaominaisuuksia merkittävästi
Ryhmittymät joutuvat muovautumaan sen mukaan, miten suurella panoksella kukin ehtii osallistua kilpailuihin. CoolBasicin kehitys on näennäisesti pysähtynyt vuoteen 2005, jolloin viimeisin virallinen versio julkaistiin. Sen jälkeen kehitystyö on aloitettu alusta uudella tiimillä useampaan otteeseen, mutta valmista ei ole tullut, sillä vapaa-ajalla on vaikea tehdä täydellistä tuotetta. 43 lin ulkopuolella järjestetään virallinen tapaaminen, johon osallistuu myös CoolBasicin kehittäjä Jukka Lavonen. Tulevaan versioon on suunniteltu ja suurelta osin jo toteutettu kehitysympäristö, moderni virtuaalikone ja pelien tekemiseen soveltuva nykyaikaisempi runtime. Tämän vuoksi on tapana julkaista aina myös koodi, vaikka muutamassa viimeaikaisessa kilpailussa rajoituksia ei ole enää ollut. Onko CoolBasicilla tulevaisuutta. Näyttää siltä, että aiemmasta oppineena kehitystiimi on nyt painunut maan alle, eikä lupaile julkaisua ennen kuin se on oikeasti käsillä. koodiesimerkki: Tähtitaivaanvieritin. Olisi kuitenkin mahtavaa, jos kotoisa ja kotimainen CoolBasic voisi vihdoin liittyä vakavasti otettavien ohjelmointikielten joukkoon.. Kenties jonkinlainen vuorottelu toimisi parhaiten. • Muutama kääntäjäja esikääntäjäprojekti on ollut aluillaan, mutta suuria tuloksia ei vielä ole. Rajoitteet liikkuivat aluksi muutamassa sadassa rivissä koodia, ja noin megatavussa muuta mediaa. Ensimmäisellä kerralla tapaamisessa pidettiin muutaman tunnin pelikilpailu, jota on seurannut liki sata viikkotai pikakisaa. introja ja demoja Ensimmäinen arkistoitu introkisa järjestettiin vuonna 2007. Linear Minds White Noyce. Voi olla, että jossain vaiheessa järjestetään taas rajoittuneempia kilpailuja, mutta tällä hetkellä yhteisö on kiinnostuneempi etsimään alustan todellisia rajoja. Rajoitusten löyhdyttyä on alettu puhua introkilpailun sijaan demokilpailusta. Samasta syytä ryhmäytyminen on ollut hidasta, vaikka sitä onkin ollut ilmassa vaivan määrän kasvettua rajoitusten vähentyessä. • cbEnchanted on vaihtoehtoinen, tehokkaampi ja kyvykkäämpi virtuaalikone ja runtime, jossa on myös järkevämpi kirjastotuki. Kilpailujen ideana on ohjelmoida peli rajatussa ajassa, ja niitä värittää aiheen tai sallittujen tekniikoiden rajaus. Näin yhteisö ehostaa CoolBasicia • Ominaisuuksien laajentaminen lisäkirjastoilla: muun muassa OpenGLja chipmunk-wrapperit ja muutama verkkokirjasto. Huhu kertoo, että kehitystä tapahtuu hiljakseen koko ajan, mutta siitä ei kerrota paljoa. Yhteisön pienen koon vuoksi segmentointia ei voi tehdä loputtomiin, vaan on keskityttävä siihen, mikä luo eniten kilpailua. CoolBasic-demojen julkaisu ei ole koskaan osunut Assemblyille, vaan fooru meilla järjestetyt kilpailut ovat päättyneet yleensä talvella tai alkukesästä. Tämä versio ei olisi rajoittunut yhteen runtimeen, vaan sitä voisi tarpeen mukaan vaihtaa. Voi olla, että Lavosen lukioajan projektista on kasvanut liian suuri urakka vapaa-ajallaan työskentelevälle kehitystiimille. Muuten Assemblyilla on keskitytty enemmän virallisiin kilpailuihin osallistumiseen. Ei ole mikään katastrofi, jos uutta versiota ei tulekaan, sillä nykyisen kielen piirteiden kanssa on opittu elämään. Voittaja on aina valittu äänestämällä. Myös yhteisöllisiä ja opetuskäytöllisiä ominaisuuksia on suunniteltu, sillä niille on selvää kysyntää. Ympäristö ei myöskään olisi myöhemmissä versioissa rajoittunut basiciin, vaan siinä olisi mahdollisuus kääntämiseen useammalta kieleltä. alku=timer() Repeat ’pääsilmukka, toistuu monta kertaa sekunnissa luoden animaation aikanyt=Timer()-alku // satunnaislukugeneraattori alustetaan jokaisella kierroksella, // jotta tähdelle arvotaan aina sama paikka Randomize 5680111 // käydään läpi tähdet For i=0 To 1024 d=(aikanyt*0.04+i) Mod 1024 ’lasketaan pisteelle etäisyys // mod saa aikaan sen, että liian kaukana olevat tähdet hyppäävät alkuun c= min(255,1024.0/d) ’siitä saadaan kirkkaus näin Color c,c,c ’asetetaan se väriksi //arvotaan sijainti ruudulla ja jaetaan se lasketulla etäisyydellä Box 200+Rnd(-5000,5000)/d,150+Rnd(-5000,5000)/d,c*0.1,c*0.1 // viimeiset parametrit edustavat tähden kokoa, // joka tulee sopivasti kirkkaudesta Next i DrawScreen ’asettaa äsken piirretyt tähdet näkyviin joka kierroksella Forever ’seuraava kierros Y.. Menee takaperin, mutta lukija saa korjata jos niin tykkää. Seuraavaa versiota odotellessa ei siis voi muuta kuin jatkaa vanhaan malliin demoja, pelejä ja omia täydennyksiä CoolBasiciin tehden. Ensimmäisessä kilpailussa piti tehdä 30x20 pikselin ruudulla pelattava peli
Eräs kiinnostava malline on ns. Feministisessä sukupuolentutkimuksessa on käytetty miesyhteisöistä ja miesten välisestä ystävyydestä termiä homososiaalisuus. Sillä tarkoitetaan (hetero)miehille ominaista tapaa olla yhdessä toisten miesten kanssa. Alan sukupuolijakauma on kuitenkin aiemmin ollut tasaisempi, ja muutosta on varmasti luvassa myös lähitulevaisuudessa. 44 2013.2 M ikrotietokoneiden ja videopelien ympärille alkoi kehittyä omaa alakulttuuria viimeistään 1980-luvulla. Tietysti intohimoisesti Zeldaa pelanneita tyttöjä ja silloin tällöin purkkeihin soitelleita naisia on ollut varmasti useitakin, mutta kirjahyllyittäin pelejä keränneet ja demokoodaamiseen hurahtaneet ovat lähes kaikki miehiä. Skrollin IRC-kanavalla tilanne ei mittaushetkellä huhtikuussa ollut aivan yhtä jäätävä: käyttäjistä noin 4 % oli naisia. Miehillä on kenties naisia useammin tapana kokoontua vapaa-ajallaan jonkin yhteisen touhun ympärille olemaan tosissaan. Tätä kirjoitettaessa Skrollin tilaajista etunimen perusteella arvaten vain noin 2,5 % on naisia. Erityisesti koneista kaiken riemun irti ottaminen ja niihin korvia myöten uppoutuminen vaikuttaa olleen poikien ja miesten ajanvietettä. Kyse voi olla tietokoneista, jalkapallosta tai vaikka mopojen virittelystä. kulttuuri Tietokonekulttuuri ja sukupuoli Tietokoneet ovat olleet miesten harrastus viimeiset parikymmentä vuotta. Vasemmalta oikealle: Patsy Simmers, Gail Taylor, Milly Beck ja Norma Stec. homososiaalinen objekti, jokin konkreettinen sosiaalisten suhteiden ulkoinen katalyytti, jonka Yhdysvaltain puolustusvoimien varhaisia tietokonetyöläisiä. Demoskenen äijät Tietokonekulttuuri on nykyään miehistä, ja demoskene on tästä ehkä raain esimerkki. Teksti: Ronja Koistinen Kuvat: Yhdysvaltain puolustusvoimat, Anita Sarkeesian. Näiden suurimmaksi käyttäjäryhmäksi muodostuivat syystä tai toisesta pojat. Niin, ja kun kerran luet tätä lehteä, olet hyvin todennäköisesti mies. Miesten keskinäisessä harrastelussa on tavallista, että joitain asioita vetäydytään tekemään syrjään äijäseurassa, ja naisten osallistumiseen suhtaudutaan parhaimmillaankin vaihtelevasti. Luku on tyrmäävä, muttei kovin yllättävä. Skenessä miehet kohtaavat yhteisen toiminnan merkeissä, arvostavat toisiaan meriittien mukaan ja mittelevät paremmuudesta ohjelmointikikkojen areenalla. Demopartyt ovat kuin jonkinlaiset turnajaiset, joihin naiset osallistuvat harvoin muuten kuin sivustakatsojina. Koteihin ostettiin televisioihin kytkettäviä viihdelaitteita ja tietokoneita
Miehet valtasivat ohjelmoinnin, kun kävi ilmi, että kyseessä Glen Beck (vas.) ja Betty Snyder (oik.) työskentelemässä ENIAC-tietokoneen kanssa 1940tai 1950-luvulla.. Tälle ei varmaankaan ole mitään yhtä tiettyä syytä, mutta muutos liittynee siihen, että Assemblyn kohderyhmä on pikkuhiljaa monipuolistunut pelkästä demoskeneyleisöstä laajempaan digitaalisen viihteen ja taiteen harrastajakuntaan. Homososiaalisen käyttäytymisen ydinmotivaatio on tutkijoiden mukaan nimenomaan paikan löytäminen miehenä miesten joukossa. Sittemmin tilanne on kuulemma muuttunut, ja Hartwall Areenan demotapahtuman kävijöistä tyttöjä ja naisia on ilmeisesti kymmeniä prosentteja joka vuosi. Suunnitelma luovutettiin sihteerin kaltaiselle ohjelmoijaolennolle, joka sitten muunsi saamansa matemaattisen ohjeistuksen tietokoneen ohjelmakoodiksi. Siis niin kauan kuin firmalla tai yliopistolla oli yksi tai kaksi tietokonetta, joita pääsi käyttämään vain pari ihmistä kerrallaan. Erikseen täytyy mainita yhdysvaltalainen amiraali Grace Hopper, joka kehitti muun muassa ensimmäisen kääntäjän digitaaliselle tietokoneelle, ”debugging”-termin sekä COBOL-ohjelmointikielen. 45 äärelle miehet tykkäävät kokoontua. [1] Myös demoskeneharrastusta on kiinnostavaa ajatella homososiaalisuuden kautta. Tympeää sihteerien työtä Monesti esitetään kyynisiä analyysejä siitä, että noin 1970-luvulle asti tietokoneohjelmointia pidettiin tylsänä sihteerintyönä. Vielä kymmenen vuotta sitten Assemblyilla ei naisten vessaan tarvinnut juuri jonotella. Työvaihetta ei pidetty tärkeänä tai erityisen arvostettavana, pikemminkin triviaalina ja mekaanisena. Kyynisen historiantulkinnan kautta voi arvella, että naiset on sysätty ohjelmointialalta syrjään siinä vaiheessa, kun koneet ja niiden mahdollisuudet ovat monipuolistuneet. Kilpaileminen, meritokraattiset hierarkiat ja kunnioitusjärjestelmät ovat vahvasti läsnä homososiaalisissa miesyhteisöissä. Tämä suunnitelma kirjoitettiin ruutupaperille jossakin ihan muualla kuin tutkimuslaitoksen tietokonekellarissa, jossa ohjelmoijat työskentelivät. Alkuaikojen vähän arvostetut ohjelmoijat olivat huomattavan usein naisia. Alkuun näin ehkä tavallaan olikin, sillä varhaiset tietokoneet olivat varsin yksinkertaisia ja rajoittuneita kapistuksia, jumppasalin kokoisia taskulaskimia. Tällainen voi olla vaikkapa jääkiekko, olut tai autot. Feimi ja greetzit ovat skenessä peruskauraa. Ohjelmointia verrattiin lähinnä konekirjoittamiseen. Matemaatikko, tilastotieteilijä, ballistikko tai muu arvostetussa asemassa oleva organisaation jäsen luonnosteli suunnitelman siitä, mitä tietokoneella piti laskea. Esimerkiksi lämmöllä ja kunnioituksella muistellun Yhdysvaltain puolustusvoimien ENIAC-tietokoneen ohjelmoijista suurin osa oli naisia. Tämä voi olla iso osatekijä siinä, miksi naisten on niin vaikea päästä sisään demoskenen kaltaisiin tietokonekulttuurin muotoihin
Ne ovat taidetta, ilmaisua ja kokemusta siinä missä kirjallisuus ja elokuvatkin. Vastareaktiona vihakampanjalle Sarkeesian sai kuitenkin tuntuvan suosionosoituksen samanmielisiltä tukijoilta: Kickstarter-kampanja sai nopeassa tahdissa rahoitusta yli 150 000 dollaria, monikymmenkertaisesti alkuperäisen tavoitesummansa verran. 46 2013.2 voikin olla sangen kannattava ja kunnianhimoinen, kasvava bisnes. Pelaan itse intohimoisesti Team Fortress 2:ta, Anita Sarkeesian julkaisee internetissä popkulttuurianalyysiä. Esimerkiksi Rock Paper Shotgun -verkkojulkaisu on kirjoittanut viime aikoina useita kertoja naisista sekä videopelien pelaajina että sisältönä, samoin The Escapist -sivuston vihaisen sarkastinen Jimquisition-videoblogi. Tietenkään samaistuminen ei ole videopeleissä kaikki kaikessa. Näivettävät itsestäänselvyydet Videopelit ovat yhä näkyvämpi ja suurempi osa elämää yhteiskunnassamme. Sarkeesian sai vihaista sähköpostia, törkeitä itseään esittäviä kuvamanipulaatioita sekä raiskausja tappouhkauksia. Naiset eivät lukumäärällisesti ole mikään vähemmistö pelaajien keskuudessa: vuonna 2012 videopelien kuluttajien kokonaismäärästä 47 % oli naisia tai tyttöjä. Keväällä 2012 Sarkeesian päätti ottaa tarkasteluun laajan otannan videopelien naiskuvastosta. Kohderyhmäajattelu ohjaa tuotekehittelyä millä tahansa alalla. Videopelit ovat älyttömän siisti juttu! On sääli, jos niissä ei ole mielekästä tarttumapintaa kokonaisille ihmisryhmille, kuten vaikka tytöille ja naisille. Naishahmot ovat seksifantasioita ja mieshahmot voimafantasioita miehille. Projektin julkistaminen sai yllättäen aikaan silmittömän viharyöpytyksen. The Simsissä tai World of Warcraftissa voi sen sijaan itse luoda omaehtoiset merkitykset ja samaistumisen lähtökohdat suhteessa peliin, ilman että tarvitsee luovia pelintekijän linjanvetojen läpi vastavirtaan. Hän on jo joitakin vuosia tehnyt Youtubessa varsin laadukasta feminististä analyysiä erilaisista median ilmiöistä Feminist Frequency -kanavallaan. [3] keskustelu yltyy Viimeisen vuoden aikana on puhuttu paljon naisista paitsi ATK-hommissa, myös videopelien pelaajina ja niiden kuvastoissa. Videopelien yksinomaiselle miespelaajien liehittelylle on tietysti syynsä. Sarjan ensimmäinen osa julkaistiin vasta 7.3.2013. Sarkeesian asetti Kickstarteriin projektinsa rahoituksen päämääräksi 6000 dollaria. Näitä pelatessa ei tarvitse yrittää sivuuttaa oletetulle miespelaajalle valmiiksi pureskeltua roolia. Kalleimpien ja korkeaprofiilisimpien valtavirtapelien pelaajat ovat enimmäkseen miehiä. Itse ainakin viihdytyn paljon välittömämmin pelistä, jossa voi valita naispuolisen pelihahmon. Riittää jo vaikka Nethacktasoinen täysin abstrakti mielikuvataso; pelkkä vaihtoehdon olemassaolo on kiva juttu. Duke Nukemiin tai Gordon Freemaniin saattaa naisena olla vähän vaikea päästä sisään. Women on viime kesästä muhinut pitkään ja hartaasti, koska valtavaksi yllätykseksi paisunut budjetti on pakottanut miettimään kaiken huolella uusiksi. Tarkkaa tietoa eri genrejen sukupuolittumisesta on vaikea löytää, mutta naiset pelaavat nykyään paljon ainakin MMORPGja muita roolipelejä, joissa voi mielensä mukaan tuunata omanlaisensa roolihahmon. Keskustelussa liikkuu paljon kuumia tunteita joka suuntaan, ja välillä sekä lukijoiden että kirjoittajien on vaikea pysyä asiassa. [4] Joukkorahoitusprojektin sivulla pyydettiin yleisöltä lahjoituksia videosarjan toteuttamiseen. Jotain keskeistä on jo selvästi saavutettu. Tropes vs. Women in Video Games (Kliseet vastaan naiset videopeleissä). Siksi horisonttien avartaminen on tärkeää. Miesten työt kun ovat aina tärkeitä, ja kaikesta tärkeästä tulee miesten työtä! [2] Ohjelmoiminen on tänä päivänä edelleen miesvaltainen ala. Naiset ja tytöt pelaavat myös The Simsin kaltaisia pelejä, joissa niin ikään on laajat mahdollisuudet luoda sellaisia hahmoja ja tarinoita, joiden kanssa itse viihtyy. Onhan toinen puoli roolipelien viehätystä sitä, että hahmosta voi tehdä myös aivan erilaisen kuin itse on. Tällä välin monet muut ovat ehtineet kommentoida naisten kuvauksia videopeleissä. Eivätkä toistuvasti miespuoliset hahmot aina edes häiritse. Kiihkoilun lomasta pitää kuitenkin löytää oikeita ilmiöitä, koska muuten asiat eivät etene, vaan jäädään jumiin näköalattomaan kinasteluun. Hänen viimeisin projektinsa käsittelee naiskuvia videopeleissä.. Olennaisinta ja juurevinta on ollut muun muassa karkeistettu huomio siitä, että yleensä valtavirtavideopeleissä kaikki hahmot ovat fantasioita heteromiespelaajille. Äänekkäimpänä on vellonut keskustelu kanadalais-amerikkalaisesta mediakriitikosta nimeltä Anita Sarkeesian. Hän perusti Kickstarterprojektin Tropes vs. Moni peli tarjoilee hahmot pelaajille sellaisista asetelmista, joissa toimintaelementit ja pelimekaniikka välittyvät miespuolisten hahmojen kautta (usein suorastaan silmien takaa kuvattuna), mutta naiset ovat pelissä paljon passiivisemmin läsnä, katseen kohteina. Vastaanotto on ollut vakuuttunutta: monet kommentoijat ovat jääneet odottamaan jatkoa innolla. Myös hänen yhteystieto'jaan yritettiin etsiä ja levittää. Nettikeskusteluissa julistettiin kovaan ääneen, että ”feministit vihaavat kaikkea hauskaa”. [5] Silti ei tunnu mahdottoman virheelliseltä sanoa, että naiset eivät ehkä pelaa niin laajaa kirjoa erilaisia pelejä. Ensimmäisen hahmon tunkkaista machoolemusta tuskin tarvitsee perustella, mutta jälkimmäinen Half-Lifen sankarikin pelastaa maailmaa vaivaannuttavan läheisissä tunnelmissa duunikaverinsa tyttären kanssa. Näiden äärimmäisten reaktioiden lisäksi myös projektin sanomaa vähäteltiin loputtomasti. Esimerkiksi Helsingin yliopiston tietojenkäsittelytieteen laitokselle vuoden 2012 päävalinnassa hyväksytyistä 26 % oli naisia
Kepler ehdotti, että samaa voitaisiin soveltaa myös taisteluihin, joita on perinteisesti pidetty tiiviimmin monenlaisten pelien pääasiallisena sisältönä. Entertainment Software Association. 455-483. Dialogikohtauksissa ja välivideoissahan on jo nyt mahdollisuus hypätä yli jorinoita ja tarinankerrontaa. Technology and Culture Volume 40, Number 3, July 1999 pp. http://www.feministfrequency.com [5] Essential Facts About the Computer and Video Game Industry. Silti on mielenkiintoista miettiä, miksi niin on, ja tarvitsisiko sille tehdä jotain. [6] Entäs jos kyllästyy taistelemiseen ja haluaisi vain päästä eteenpäin. Tietokoneet ovat valtavan hieno juttu, ja niiden arkisesta käyttäjäkunnasta naisia on nykyään varmasti ainakin puolet. Ajat muuttuvat Ei tietenkään ole kenenkään syytä, että tietokonekulttuuri on kauan ollut leimallisesti miesten kulttuuria. Hän esimerkiksi ehdotti peleihin laajempaa pikakelausominaisuutta. Helsingin yliopisto. The Mary Sue 20.2.2012. Tampereen yliopiston ylioppilaskunta. 1999: When Computers Were Women. On menetys sekä alakulttuurille itselleen, jos siitä puuttuvat naiset, ja myös naisille, jos niin monilta jää näin hieno alakulttuuri kokematta. Hepler oli 2006 antamassaan haastattelussa kertonut varsin vahvoja mielipiteitä siitä, mitä peleissä pitäisi olla, muttei nykyään ole. http://www.themarysue.com/inclusion-what-jenniferheplers-story-is-all-about/. Yhtäältä feministinen mediaja yhteiskuntakritiikki tukee videopelien kehittymistä tasapuolisemmaksi ja sielukkaammaksi taiteenlajiksi ja auttaa tasoittamaan sukupuolikuilua tietokonealan töissä. Tappionsa voisi rehdisti myöntää, mutta voisi silti sopia pelin kanssa ”leikitään, että tää kuitenki voitti ton”, ja pääsisi jatkamaan tarinassa eteenpäin. Kuitenkin on hyödyllistä pohtia asiaa, vaikkei yksittäisiä selkeästi osoitettavia syitä olisikaan mahdollista nimetä. Arvosteluissa ja kriittisessä keskustelussa valitellaan kaiken aikaa, kuinka pelit toistavat itseään, eikä tuoretta innovaatiota tapahdu. Keplerillä on ajattelemisen arvoisia pointteja. Miksei pelissä voisi olla tässä kohdassa skip-nappia. https://muse.jhu.edu/ login?auth=0&type=summary&url=/journals/ technology_and_culture/v040/40.3light.html [3] Tilasto matemaattis-luonnontieteellisen tiedekunnan päävalinnasta 2012. Hän kritisoi muun muassa pelien ainaista monotonista taistelemista, kökköä juonenkuljetusta ja huonoa markkinointia. Viisikymppisellä äidillänikin on nykyään kaksi tietokonetta, läppäri ja tabletti, vaikka takavuosina on käyty useammankin kerran sanaharkkaa siitä, tarvitaanko sinne omaan huoneeseen muka oikeasti oma tietokone, vaikka perheellä yksi beigenharmaa peltipönttö jo olohuoneessa olikin. Alkuvuodesta 2012, jo ennen Anita Sarkeesianin myllytystä, muutama internet-yhteisö keksi ottaa silmätikukseen Jennifer Heplerin, erään BioWaren pelisuunnittelijan. Valtavirtapelejä markkinoidaan jatkuvasti samoilla tutuilla ja turvallisilla elementeillä, joista peliarvostelijat purnaavat kyllästymiseen asti. Conversations with Pop Culture. http://www.aviisi.fi/artikkeli/?num=02/2006&id=173 3c10 [2] Light, Jennifer S. Muutosta on epäilemättä odotettavissa varsin pian, ja luultavasti sen tuulet puhaltavat kahdelta suunnalta. 47 jossa kaikki pelattavat hahmot ovat miehiä. Aviisi 02/2006. Videopeleissä on paljon sisältöjä, jotka toistuvat uudestaan ja uudestaan, eikä niitä kyseenalaisteta tarpeeksi. http://www.theesa.com/facts/pdfs/ESA_EF_2012.pdf [6] Polo, Susanna 2012: Inclusion: What Jennifer Hepler’s Story Is All About. Minullakin on jo yli puoli vuotta ollut kesken Deus Ex: Human Revolution, koska en vain pääse eteenpäin eräästä pomotaistelusta. 4chan etunenässä haukkui Kepleriä ”BioWaren syöväksi”. Toisaalta taas luova nuoriso tuottaa orgaanisesti ja jatkuvasti uutta kulttuuria uudessa maailmassamme, jossa aidosti henkilökohtaiset tietokoneet ja netti ovat koko ajan läsnä. Sales, Demographic and Usage Data 2012. Amiraali Grace Hopper (1906-1992) keksi "debuggaamisen" ja COBOL-ohjelmointikielen Lähteet [1] Tamminen, Tuomo 2006: Poikien välisestä ystävyydestä. The Johns Hopkins University Press. http://www.helsinki.fi/ml/valinnat/tilastot/ valintatilasto2012.pdf [4] Feminist Frequency. Maailma muuttuu.. On vaikea sanoa, miksi tietokoneet ovat viime vuosikymmenet olleet niin valtavalla marginaalilla miehinen harrastus
Lisäksi jotkut käyttävät kannettaviaan livenä, soittaen musiikkia emulaattoreista. New Yorkissa minulla oli midikoskettimisto, jolla ohjasin yhtä Game Boyta soittaakseni livenä. 48 2013.2 Chip-musiikilla on perinteisesti viitattu 1980-luvun tietokoneiden ja pelikonsoleiden äänipiireillä tehtyyn musiikkiin sekä demoskenen piirissä syntyneeseen tyyliin, joka jäljittelee sen soundia. U:?Riippuu artisteista ja käytetyistä ohjelmista. Game Boy näyttäisi olevan suosituin vehje. 8bit collectiven kautta päädyin lopulta chiptuneskeneen. Pian eksyin demoskenesivustoille, joiden myötä tartuin taas Fast Trackeriin, ja retropelihararstuksen myötä aloin musisoida myös vanhoilla laitteilla. Silloin tyylini etääntyisi siitä, mitä kutsutaan electroksi. Pidän tällaista lähestymistapaa hyvin rehellisenä! U:?Itse synkronoin laitteet käsin enkä enää yhdistä Game Boyta ja Atari ST:tä midin kautta. Siinä olevaa äänipiiriä käytettiin alkuperäisenä General Instrumentsin versiona ties kuinka monessa 80-luvun laitteessa. Chiptune-muusikko voi toimia kenen tahansa DJ:n lailla ja lisätä efektejä musiikin päälle Kaoss Padilla tai vastaavalla laitteella. S:?Chiptune-musiikkiin kuuluvat myös live-keikat. Tarkistan, että kaikki on synkassa, lisään efektejä ja säädän äänen taajuksia. 2000-luvulla latasin netistä piraattipelejä koulun atk-luokassa ja löysin cracktrot. Millainen on suhteesi Atariin. U:?Skenejen välillä on yhteyksiä sekä musiikin, koneiden että yleisemmin kulttuurin tasolla. Sitten on niitä, jotka vain antavat kappaleiden soida ja menevät yleisön eteen hyppimään ja tanssimaan. Haastattelussa modernin chiptune-musiikin kärkinimiin lukeutuva ranskalainen Ultrasyd. U:?Atari ST oli Amigan ja Amstradin taNeeds more ATARI!. Se on kaikkien tuntema kyvykäs laite, josta saa myös ilman samplejen käyttöä irti monenlaisia ääniä. Toki on myös paljon chiptune-artisteja, jotka eivät ole kiinnostuneita demoskenestä. Jotkut eivät miksaile kappaleiden soidessa vaan painavat vain starttia niiden välissä, mutta tuijottavat näyttöä koko setin ajan ikään kuin tekisivät jotain. S: Mistä laitteista nykyajan chiptunemuusikot repivät soundinsa. En ole ainoa lajissani, ja uskon, että yhteydet ovat lisääntymässä. Löysin itse ensin demoskenen ja vasta sitten uuden chipmusiikin. Mitä artisti tekee esiintyessään livenä. Itse käytän eniten Commodore 64:ää, Amstrad CPC:tä, Atari ST:tä ja Game Boyta, joista lavalla pitäydyn kahdessa jälkimmäisessä. S:?Olet osallistunut demoskenen musiikkikilpailuihin. U:?Lapsena minulla oli Amstrad CPC, Game Boy, Sega Game Gear ja Atari Lynx, joista mieltymykseni chip-äänimaailmaan on peräisin. Tietokoneet ovat vähemmän käytännöllisiä ja niitä hyödynnetään vähemmän. Nanoloop-ohjelmaa Game Boyssa käyttävät artistit tekevät enemmän, sillä he joutuvat valitsemaan kappaleidensa patternit reaaliajassa. Teksti: Jari Sihvola Kuvat: Chiptography S:?Mistä sait yllykkeen chiptune-musiikin tekoon. U:?Game Boy on tosiaan hyvin suosittu — jopa niin suosittu, että monille chiptune-musiikin historiaa ja demoskeneä tuntemattomille chiptune on yhtä kuin Game Boy. 90-luvulla minulla ei ollut edes nettiyhteyttä, mutta näpertelin Fast Tracker -musiikkiohjelman parissa. Onko tavallista, että chipmusic-skenen edustajilla on yhteyksiä demoskeneen. Voisin myös ohjata Commodore 64:ää tai Game Boyta syntikalla tai kitaralla. Chiptune-skenestä voisi saada uusia ja tuoreita vaikutteita demopuolellekin. Nykyään "chiptune" tarkoittaa myös 2000-luvun alussa ilmaantunutta suuntausta, joka yhdistelee vanhojen laitteiden ääniä moderniin konemusiikkiin. Luovuin tästä, koska pidän enemmän kevyestä kokoonpanosta enkä ole kovin hyvä soittaja. Game Boyn voi myös kantaa helposti mukanaan kaikkialle. S:?Atari ST:llä ja sen YM2149 -äänipiirillä on keskeinen rooli musiikissasi
Niissä on vähemmän bugeja ja työn säilyttäminen on kätevämpää. Termiä "fakebit" käytetään, kun tehdään chiptunesoundia muistuttavaa jälkeä modernein keinoin. Nykyään yritetään tehdä asioita yhä hienommin, mutta samalla niistä tulee mielestäni geneerisiä ja vähemmän omaperäisiä.. Sen sijaan jokaisen, joka haluaa olla hyvä musiikin tekijä PC:n nykyisillä ohjelmilla, pitää oppia miksaamaan ja jopa masteroimaan — ja siinä riittää pähkäiltävää. Käytännön syistä säveltäminen tapahtuu usein PC:llä ohjelmilla, jotka on tarkoitettu 80-luvun äänipiireille säveltämiseen. Chiptune-skenessä alkuperäiset musiikkitiedostot ja soitinäänet leviävät helposti, eikä tekijänoikeutta tunneta. Lopullinen tuotos äänitetään aidosta koneesta, eli ääni on autenttista. Perinteisten chiptunesoundien kohdalla homma alkaa aina samasta tutusta piipityksestä. U:?Heidän panoksensa on ollut suuri ja ilman heitä emme olisi päässeet nykytilanteeseen. Onko oma chiptune-musiikkisi emuloitua vai autenttista. YM2149-piirin puhtaaseen soundiin olen mieltynyt enemmän kuin Commodore 64:n kohisevampaan SIDiin. U:?Varsinaiset chiptunet pitäisi säveltää ja soittaa vanhoilla koneilla. Ohjelmat ovat yleisesti ottaen hyvin toimivia ja muistuttavat toisiaan: jos osaa käyttää Amigan perinteistä Protrackeria, osaa tehdä musiikkia kaikille koneille. Musiikin suhteen yleisöön uppoaa helpommin materiaali joka noudattelee nykytrendejä, mutta 80-luvun pioneerisäveltäjien työ on lyömätöntä. Ovatko uudet ominaisuudet mukava lisä vai välttämättömyys. S:?Osa kappaleistasi on tehty 80-luvun äänipiirejä käyttäen, toisissa taas käytät moderneja musiikkiohjelmia. Millaisia kokemuksia sinulla on harrastelijoiden tekemistä ohjelmista musiikin tekoon vanhoille äänipiireille. Perinteisille äänipiireille musiikkia tehdessä on helpompi jäädä "amatööriksi" ja keskittyä vain säveltämiseen. S:?Uudemmat harrastelijoiden suosimat musiikkiohjelmat, kuten Renoise ja Reason, ovat tuoneet tracker-musiikin tekoon lisää efektejä. Käytän jonkin verran sampleja, mutta Atari ST soittaa nekin. Kun teen musiikkia vanhoille äänipiireille, haluan soundin olevan aitoa. Ohjelmiin tulee jatkuvasti päivityksiä, ja jos haluaa niihin uusia ominaisuuksia, riittää että lähettää tekijöille sähköpostia. Joskus voi päästä ohjelmien beta-testaajaksi ja osallistua kehitykseen suoraan. 49 voin suosittu kotimaassani Ranskassa, mutta ennen vuotta 2009 en ollut koskenutkaan siihen. S:?Käytetäänkö chiptune-musiikin tekoon yleensä vanhoja koneita vai PC:n emulaattoreita. Jos ei pidä silmällä taajuuksia, jos soitinäänet eivät soi hyvin yhteen tai niihin tulee päällekkäisyyksiä, voi livetilanteessa seurauksena olla katastrofi. Henki on samantyyppinen kuin demoskenessä, missä koneet pyritään viemään äärirajoille grafiikan ja äänten suhteen, ja saadaan aikaan yhä kehittyneempiä tuotoksia. U:?Efektien käytöstä huolimatta chiptune on yksinkertaista ja kuulostaa aina hyvältä, koska sillä ei ole muutakaan mahdollisuutta — käytössä on vain pari aaltomuotoa! Moderneilla tracker-ohjelmilla soundin saa komeaksi ja moniulotteiseksi, mutta asioista tulee monimutkaisempia. Modernien keinojen käyttäjillä on myös virtual sound technology -ohjelmat ja yleisessä levityksessä olevat samplet, joten aina ei tiedä mistä musiikin teko pitäisi aloittaa. Ostin tuolloin yhden koneen kokoelmiini ja huomasin sen ääniominaisuuksien olevan samaa ääniipiiriä käyttävää Amstradia laajemmat. Amigaan verrattuna Atari ST:ssä taas on käytännön etuna tiedonsiirron kätevyys PC:n ja ST:n välillä. Skenepiireissä tracker-ohjelmia tekevät ihmiset vaikuttavat ammattilaisilta, vaikkei heille makseta työstään. S:?Vanhoja äänipiirejä osataan hyödyntää paljon monipuolisemmin kuin 80-luvulla. Teknisellä puolella on menty eteenpäin, mutta vanhojen sävellysten taika säilyy. Onko Koji Kondon ja Jochen Hippelin kaltaisten 80-luvun chiptune-sankareiden suoritukset jo ylitetty. U: Amatöörimuusikolle amatöörin tekemä ohjelma, näin sen pitääkin olla. Itse teen musiikkia myös PC:n nykyohjelmilla, koska sekin tuntuu kiinnostavalta. Omaan makuuni Atarissa on juuri sopivasti retrotyyliä ja modernimpia ominaisuuksia. Se on vähemmän suosittuna laitteena myös ehkä omaperäisempi valinta. Ultrasydin chiptune-artistivinkit: Je Deviens DJ en 3 Jours, Knife City, Bit Shifter, Sylcmyk, Xyce, Chibitech, NNNNNNNNNN, Trash80, Henry Homesweet, Men of Mega, Nullsleep, Bryface, Covox, Trey Frey, Jellica, STU, Radlib, Sulumi, Minusbaby, Deadbeatblast, Hally
Se ei ole kovin kaksinen, sillä sen tarkoitus on lähinnä osoittaa konsepti toimivaksi. Javascript-testidemo (Skrolli, 2013) — Yksinkertainen canvas-efekti, jonka jätämme lukijoiden jatkokehitettäväksi!. Aja tiedosto joko aidolla PC:llä tai emulaattorilla. Lue ohjelman QR-koodi ja tallenna sen suodattamaton raakateksti .COM-päätteiseen tiedostoon. Etsi uloskäynti ja varo pudottamasta kiviä päällesi! Searchlight (Wamma, 2007) — Raycast-katakombi varjostavine pylväineen. Vaikka yhteen kuvioon saakin mahtumaan parhaimmillaan liki kolme kilotavua, ovat tässä julkaistut ohjelmat enintään 256-tavuisia. Tube (3SC, 2001) — Vapaasti pyörivä kamera spiraalitunnelissa. Näyttävämmät ohjelmat vaativat enemmän tehoa kuin tyypillisestä DOSkoneesta löytyy, ja esimerkiksi DOSBoxemulaattorin turbomoodia (alt-f12) kannattaa tämän vuoksi käyttää. 256 tavun ohjelmia QR-viivakoodeja viljellään kyllästymiseen asti. Ohjaus shift-, ctrlja alt-näppäimillä. Pioneerihenkeä siis peliin! Kaikki ohjelmat yhtä lukuunottamatta ovat MS-DOSille. Bump is Possible (Downtown, 1999) — Pyörivä betonidonitsi. Yleensä niihin on tallennettu nettiosoitteita, mutta niihin saa yhtä hyvin mitä tahansa dataa — vaikkapa ajettavia ohjelmia Ville-Matias Heikkilä 4is256 (?r?ola, 2007) — Tetris-klooni. Dírojed (?r?ola, 2007) — Takaisinkytkentäpsykedeliaa 32 tavussa. Yksi demoista on Javascript-koodinpätkä, joka saattaa jopa toimia joissakin laitteissa ilman kummempia kikkailuja. Sqwerz3 (Trimaje, 1996) — Pyörimistä eriväristen neliöiden seassa. Koska QRkoodeja harvoin käytetään näin, saattaa ohjelmien toimimaan saattaminen olla yllättävän haastavaa. Puls (?r?ola, 2009) — Animoidut koneiston sisukset raymarchattuna. Javascript on myös tarvitsemansa kehyskoodin määrän vuoksi MS-DOSia vihamielisempi alusta äärimmäisen pienille ohjelmille.. 50 2013.2 S krolli-lehti ikuistaa nyt jälkipolville QR-koodeina yhdeksän hyvin pientä ohjelmaa — kaksi peliä ja seitsemän demoa. Boulder Dash in 256 bytes (James David Chapman, 1995) — Pelkistetty versio klassikkopelistä