11.07.2015 Views

2013.4.web

2013.4.web

2013.4.web

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2013.4SKROLLI.FITietokonekulttuurin erikoislehti3D-tulostin – uuden ajan jeesusteippiVerkkokulttuuriennen ja nyt((Näinkin voi (ohjelmoida)))Oma peli, paras peli?Avatar ydinaavikolla


PääkirjoitusVoitosta voittoonSkrollin ensimmäinen ilmestymisvuosionnistui erinomaisesti ja kaikentodennäköisyyden vastaisesti.Keksisimmekö ensi vuodelle jotainvielä mahdottomampaa?YhteydenototSkrolliTietokonekulttuurin erikoislehtitoimitus@skrolli.fiircnet — #skrolliVille-Matias HeikkiläpäätoimittajaKun Skrollia alettiin suunnitella syksyllä 2012, idea tuntuimonin tavoin kahjolta. Uusi paperinen tietotekniikkalehtiaikana, jolloin tavallisenkin kansan lukutottumuksetdigitalisoituvat vauhdilla? Ohjelmointijuttuja ja painettuakoodia, ollaanko siellä aivan sekaisin? Ketä tuollainenkiinnostaa? Mikä tahansa mediatalo olisi hylännyt ideansamalta istumalta.Mahdoton kuitenkin osoittautui mahdolliseksi,kun Skrollin ensimmäinen numero valmistui keväällä.Ykköstä seurasi kolme muuta numeroa, eikä talkoohenkinäyttänyt hiipumisen merkkejä missään vaiheessa.Nelosnumerosta tehtiin peräti 84-sivuinen, koska hyvääjulkaistavaa oli niin paljon, eikä kaikki edes mahtunutmukaan. Lisäksi useimmat tekijät kieltäytyivät heille tarjotustapalkkiosta, mikä oli jo aivan uskomatonta.Jotta Skrolli-projekti pysyisi tuoreena ja kiinnostavana,sen ei kannata tyytyä nykyisiin saavutuksiinsavaan tavoitella uusia haasteita. Lehti on nyt saavuttanutjonkinlaisen aseman pienen piirin harrastelehtenä, muttase voisi olla paljon enemmänkin. Tietokonekulttuurinlonkerot ulottuvat kaikkialle yhteiskuntaan, joten Skrollikinvoisi olla taho, jonka näkemystä ja asiantuntemustaarvostetaan myös lukijakuntansa ulkopuolella.Vuonna 2014 lähdemme siis kohti jälleen uutta tuntematonta.Jos haluat olla mukana, käy ihmeessä tilaamassalehti. Kaikki Skrollin tilaukset ovat määräaikaisia,joten myös vuosikertatilaajien on uusittava tilauksena.Kestotilauksiin ei meillä valitettavasti vielä ole varaa,mutta ehkä vuoden päästä jo on!Päätoimittaja Ville-Matias HeikkiläToimituspäällikkö Toni KuokkanenToimitussihteeri Ninnu KoskenalhoTaiteellinen johtaja Risto Mäki-PetäysMediamyynti Jari JaantoTalous Anssi KolehmainenMuu toimitusTämän numeronavustajatJulkaisijaPainopaikkaLauri Alanko, Mitol Berschewsky, TapioBerschewsky, Mikko Heinonen, Jukka O.Kauppinen, Ronja Koistinen, Sade Kondelin,Teemu Likonen, Kalle ViiriFilip De Haas (Otium), Ville-VeikkoHeinonen, Juha Impivaara, Panu Kalliokoski,Jari Komppa, Henrik Kärkkäinen, AnttiLaaksonen, Tapio Lehtimäki, PauliMarttinen, Jarto Nieminen, Jarkko Nääs,Annika Piiroinen, Visa-Valtteri Pimiä, ManuPärssinen, Ville Ranki, Mikko Rasa, HennaRuohonen, Teija TuhkioAlternative Party ryTammerprint, Tampere,ISSN 2323-8992 (painettu)ISSN 2323-900X (verkkojulkaisu)Kannen kuva:Filip De Haas (Otium)441 878Painotuote3


Kulttuurija Stanfordin yliopisto.Piilaaksossa tietotekniikka on työkaluja mahdollisuus. Sen käyttäminen tuntuuolevan jopa arkipäiväisempää kuin Suomessa.Twitteriä ja mobiilipalveluita käytetäänpaljon, ja lähes jokaiselle päivittäiselletoiminnolle näyttää olevan omamobiilisovelluksensa. Hashtagit näkyvätvoimakkaasti mainoksissa ja katukuvissa.Tietokoneista suosituin näytti olevanMacBook Pro ja puhelimista iPhone.Myös Android-puhelimia näkyi paljon.Parhaan kuvauksen Piilaaksosta heittiilmoille talollamme vieraillut MårtenMickos: ”Tämä Piilaakso on kuin aikuistenOtaniemi.”Skrolli JenkkilässäSkrolli pääsi elokuussa mukaan Aalto EntrepreneurshipSocietyn järjestämälle matkalle Piilaaksoon. Reissuntarkoitus oli tutustuttaa yrittäjähenkisiä opiskelijoitapaikalliseen yrityskulttuuriin.Teksti: Jari Jaanto Kuvat: Jari Jaanto, Tapio Lehtimäki, Jyri RasinmäkiYhteensä 20 opiskelijaa teekkareistakauppatieteilijöihin vieraili matkanaikana noin 20 yrityksessä,joista valtaosa oli teknologia- tai mobiilisovellusyrityksiä.Vierailukohteina olimyös pari yrityskiihdyttämöä, lakiyritysViis lomista, nyt koodataan!Piilaakson yrityskulttuuri hakee vertaistaan.Kahden viikon tutustumisen perusteellalähes jokaisen yrityksen perustajatja toimitusjohtaja ovat koodereita. EsimerkiksiKiva-järjestön perustaja MattFlannery työskenteli aiemmin TivollaJava-ohjelmoijana mutta lopetti työt,kun televisiolähetyksen tauottaminen eituntunut elämäntehtävältä. WhatsAppinperustajat koodasivat itse sovelluksensaensimmäiset versiot, ja nykyinen toimitusjohtajaja perustaja ohjelmoi yhdenmobiilisovelluksista. Evernoten perustajaaloitti ohjelmointiuransa Atari-tietokoneella1980-luvulla.Listaa voi jatkaa lukemattomien muidenyritysten johtajilla, kuten Foursquaren,Twitterin, Facebookin ja Googlen.Jopa eräs tapaamani sijoittaja hehkuttelitekevänsä nykyään kaiken Scala-kielellä,kehuen sen maasta taivaisiin. Tämä onmukavaa vaihtelua, sillä meillä sijoittajateivät ajanpuutteen takia yleensä koodaa.Piilaaksossa jokainen tuntui olevan kädetsyvällä tekemisessä kiinni.Kun perjantai-iltana kahdeksan aikaanolimme poistumassa eräästä lakitoimistosta,jatkoi moni vielä ahertamistatyöpisteillään. Ensisijainen syy ei olluttyömäärässä vaan siinä, että ihmiset ihanoikeasti rakastavat työtään. Sama näkyimonessa yrityksessä: ihmiset kertoivattekevänsä juuri sitä, mitä haluavat.Foursquarella tapaamamme ohjelmistoinsinöörikertoi, ettei ihmisiä niinkäänjohdeta vaan asiat keskustellaan aikuismaisestihalki. Hän kutsui Foursquareaaikuisimmaksi työpaikaksi, jossa oli työskennellyt.Facebookin ohjelmistokehittäjäpuolestaan kertoi, että kaikki tekevätkovaa työtä ja yrityksen hyväksi tehty työpalkitaan – esimerkiksi onnistunut koodinoptimointi, niin että se käyttää 2 %vähemmän prosessoritehoa. Piilaaksontyökulttuurissa ihmiset tuntuvat olevanerityisen sitoutuneita yrityksensä tavoitteisiinja haluavat tehdä parhaansa senpuolesta.Työkulttuurissa näkyi hyvin myöshenki ”hoidetaan hommat nyt saman4 2013.4


Piilaakson kulttuurin kiteyttävä NeXT Cube, jolla www kehitettiin.Interface Message Processor – pala alkuperäistäArpanetia.tien pois alta”. Kokouksia ei sovita myöhemmäksivaan asiat tehdään heti. Myöslomat tuntuivat olevan vieras käsite. Piilaaksonsuomalaiset kertoivat, että meikäläisiäpitkiä kesälomia ihmetellään rapakontakana. Monissa yrityksissä lomatsaattavat peruuntua viime hetkellä esimerkiksiison tilauksen myötä.Autoilua Amerikan malliinPiilaaksossa ollaan monessa asiassa Suomeaedellä. Hyvä esimerkki on paikallisentaksijärjestelmän kanssa kilpailevaUber. Uber yhdistää kuljettajat ja asiakkaatmobiilisovelluksen kautta. Kukatahansa voi rekisteröityä Uber-kuskiksi.Kuljettajat saavat iPhonen ja laturin Uberilta,mutta auton vakuutuksista, bensastaja muista kustannuksista he vastaavatitse. He voivat ajaa silloin, kun huvittaa.Kun kuljettajat lähtevät ajoon, hekäynnistävät matkapuhelinsovelluksen,joka välittää auton gps-koordinaatitUberille. Asiakkaat voivat tilata autonluokseen tai valita kartalta jonkin lähikohteen.Sovellus kertoo, kuinka kauanlähimmältä kuljettajalta kestää saapuapaikalle. Maksusta ei tarvitse huolehtiakyydistä noustessa, sillä matkan jälkeenUber laskuttaa asiakasta automaattisesti.Kuitin saa sähköpostiin, ja mukana tuleekartta tehdystä matkasta.Julkisessa terveydenhoidossa ja sosiaalipalveluissataas ollaan selvästi Suomeajäljessä. San Franciscon kaduillavaeltelee lukemattomia kodittomia, joillaei ole mitään paikkaa minne mennä.Myös lääkärin saaminen voi olla vaikeaa.Eräs Uber-kuski totesikin, että Yhdysvalloissaselvitäkseen on työskenneltävä ahkerasti,sillä pohjoismaista sosiaaliturvaaei ole. Suomalaiset ovat tällä alalla luomassauusia palveluita: Ari Tullan ja TapioTolvasen perustama yhdysvaltalainenyritys BetterDoctor auttaa löytämäänhyväksi todettuja lääkäreitä tiettyihinvaivoihin.San Franciscossa voi liikkua linjaautolla,ja Piilaaksoon pääsee junalla,mutta alueen sisällä on helpointa liikkuaUber-taksilla. Pidempiä matkoja vartenvoi vuokrata auton lentokentältä. SteveJobsin talolle ei kannata tehdä pyhiinvaellusta,sillä naapurit tulevat heti ajamaanpois.Alueella järjestetään päivittäin useitatapaamisia ja kaikkea on tarjolla tietokonegrafiikastapalvelinten säätämiseen.Suosittelen käymään niissä ja tutustumaanmahdollisimman moniin ihmisiin.Tapaamisista saa tietoa meetup.comsivulta.Hackathlonin tunnelmiaMatkamme aikana järjestettiin Tech-Crunch Disrupt -tapahtuma, jossa teknologia-startupitesittelivät tuotteitaan. Tapahtumaankuului 24 tunnin hackathlon,jossa eri ohjelmoijaryhmät kehittelivättuotteitaan.Päädyin tapahtumaan sattumustenkautta. Olimme viettämässä sunnuntaiiltaa,kun porukkaamme kuulunut Albertjuoksi paikalle ja kertoi mahdollisuudestalähteä TechCrunch Disrupt Hackathlon-tapahtumaan koodaamaan. Hetkenemmittyäni tartuin mahdollisuuteen, jalähdimme kohti tapahtumapaikkaa. Tietokonettaminulla ei ollut mukana, muttaAlbert tarjoutui hakemaan sen asunnol-Skrolli ja jutun kirjoittaja Golden Gatella.tamme.Kiertelin tapahtumasalissa ja keskustelinosallistujien kanssa ohjelmoinnista.Puhuimme hyvin samaa kieltä. Eräällehenkilölle piirsin pikaisesti arkkitehtuurinhänen ideoimaansa ”blogilinkkienPiilaakson trendejä• Autojen, tavaroiden ja palveluiden yhteisöllinenjakaminen• Fyysisten laitteiden, etenkin autojen, kytkeminennettiin• Hyvinvointiteknologia• Älykodit• Maaseudulle ja kehittymättömille alueilletuotava teknologia• Big Data• Maksujärjestelmät5


Eniac, ensimmäinen yleiskäyttöinen elektroninentietokone.3D-mallintamisesta tuttu Utah Teapot.klikkausprosenttimittariin”, minkä jälkeenjatkoin matkaa salissa. Osa porukastaoli enemmän, osa vähemmän kokenutta.Kaikkialla aherrettiin erilaistenohjelmien parissa, ja niitä riitti yksinkertaisistaweb-sovelluksista monimutkaisiingraafisiin sovelluksiin.Henkilökemioiden perusteella päädyinlopulta ryhmään, jossa oli alun perinkaksi henkilöä. Ryhmä teki startupbets.com-nimistä palvelua, jossa voi ostaavirtuaalirahalla startup-yritysten osakkeitaja siten veikata, mitkä niistä tulevatmenestymään ja mitkä eivät. Projektikuulosti olevan sopiva yhden yön aikanatoteutettavaksi.Minusta tuli ryhmän web-ohjelmoija.Piirsimme nopeasti käyttöliittymän, jotaryhdyin toteuttamaan, samalla kun toisetrakensivat Pythonilla taustajärjestelmääja parin palvelun rajapintakoodia. Illanaikana totesin, että tarvitsisimme myösgraafikon, koska lyhyessä ajassa emmeehtisi muuta kuin koodaamaan. HuutelinWhatsApp-kanavallamme, ja kutsuunvastannut graafikko saapui kolmessatunnissa paikalle lainakone kainalossaan.Yön aikana hän piirsi grafiikat ohjelmaammeja minä koodasin.Yöruokana oli tietenkin pizzaa, ja tarjoilupöytienympärille muodostui nopeastijonoja. Ryhmämme Amerikan-pojatkävivät nukkumassa pari tuntia, muttaminä ja graafikkomme Jyri jatkoimmesisulla läpi yön. Herättyään paikallisetihmettelivät yöllisiä aikaansaannoksiamme.Softa saatiin jotenkuten valmiiksimääräaikaan mennessä. Lopuksi jokainenryhmä esitteli ja mainosti omaatuotostaan minuutin ajan. Tuotoksia oliyhteensä lähes 800, ja niiden esittelyynkului aikaa noin kymmenen tuntia.Tapahtuma jatkui kaksipäiväisenästartup-esittelytilaisuutena. Monet yrityksetesittelivät myös rajapintojaan, joillepääsi ohjelmoimaan. Merkittävin näistäoli Chevroletin paikalle tuoma auto,jolle hackathlonissa sai koodata. Yksi Piilaaksontrendeistä olikin sovellusten kehittäminenautoille. Esimerkkiautossa olikaksi näyttöä, joista toinen sijaitsi keskikonsolissaja toinen mittareiden keskellä.Myös auton keräämää dataa oli paljon,ja sitä analysoimalla pystyi optimoimaanauton suorituskykyä.Apple IHistorian koneiden hurinaaVierailin Mountain View’ssä sijaitsevassatietokonehistorian museossa (ComputerHistory Museum). Käynti oli todella hienokokemus, sillä edustettuna oli kokotietotekniikan historia aina helmitauluistanykykoneisiin.Itselleni tärisyttävin kokemus olipäästä näkemään Eniacista jäljellä olevaosa. Siinä näkyi erinomaisesti, kuinka1940-luvulla ratkottiin tietoteknisiäongelmia. Putkia ja säätimiä oli reippainmitoin, mutta koneen arkkitehtuuri vaikuttimelko yksinkertaiselta. Osat olivattietysti suurikokoisia nykyisiin verrattuna.Yhden moduulin kyljessä oli valtavamäärä säätövipuja, joilla funktiotaulutsäädettiin kuntoon.Museosta löytyi myös Xerox Alto,Next Cube, Apple-1, Honeywell KitchenComputer, VAX 11/780, IBM 360, PDP-1ja monta muuta, joita on aiemmin tullutihasteltua vain kuvien kautta. Myös1980-luvun robotit olivat hyvin esillä.Internetin historiaa edusti paikalla ollutInterface Message Processor (IMP), jokaon osa alkuperäistä vuoden 1969 ARPA-NET-verkkoa.Museon lisäksi paikalta löytyi Nasantukikohta. Siellä oli näytillä Mercuryavaruussukkulasekä avaruusasema,jonka sisällä pääsi käymään. Osa avaruusasemanosista oli todella käynyt avaruudessa,tai niin ainakin kyltit väittivät.Vierailuun kannattaa varata vähintäänkolme tuntia aikaa. Tutustumisen arvoinenpaikka on myös Nasa Ames ResearchCenter, joka sijaitsee Mountain View’n jaSunnyvalen välissä.Piilaakso ja San Francisco ovat hienojapaikkoja, mutta jos on kiinnostunutstartup-yrityksen perustamisesta, ei oppejatarvitse lähteä sinne saakka hake-Alkuperäinen Pong-kolikkopeli.maan. Piilaaksossa kannattaa käydä tutustumassatietotekniikan kehitykseen jamahtavaan teknologiakulttuuriin.Kohteena olleet yritykset ja yhteisöt• 500 Startups• Amprius• Bootstrap Labs• DLA Piper• Detecon• Dropbox• Electronic Arts• Eucalyptus Systems• Facebook• Foursquare• Google• IDEO• Idean• Kiva• Navis• Nexit Ventures• Palantir• Sourcebits• Stanford University• Uber• WhatsApp• Yiftee6 2013.4


KolumnitRakenteluekstraHenrik KärkkäinenTekisinkö itse tietokonelehden?Puhukaamme tietotekniikkalehdentekemisestä, tuosta salatieteistävaarallisimmista, ja tiestä, jonkaharva on viime aikoina kulkenut joutumattanaurunalaiseksi. On aika paljastaatäydellisen tietokonelehden tekemisenresepti.Tietokonelehden tekeminen on nykyisinvähän vaikeaa. No joo, ei valehdellaheti alussa. Paljon vaikeaa. Kaksi asiaaon nimittäin vähän toisin kuin kolmekymmentätai kymmenenkin vuotta sitten. Taino, ei valehdella vieläkään. Paljon toisin.Ne asiat ovat tietokone ja lehti.Nykyisin kutsutaan tietokoneiksi hopeanvärisiäsuorakaiteita, joissa on hedelmänkuva. Harvalla on silti kykyä taihalua avata sen koteloa.Aiemmin lehti tarkoitti prosessoituakuollutta puuta. Nyt se tarkoittaa myösklikkaaseksihelle-nettisivuja sekä lukijoiltaanpiilotettuja tablettitiedostoja,joiden myyntivoitosta kolmannes meneeeräälle hedelmätukulle tai sen liikemalliapeesaileville firmoille.Maailma muuttui. Yhä useammallaon tietokone, mutta samallaniistä ymmärretään yhävähemmän. Tee siinä sittentietokonelehteä.Kaksi reittiäYritetään silti. Tietokonelehteävoi tehdä kahdellatavalla, joko vetoamallalaajaan ipadonparastaikinäja tekniikantarkoitusonhelpottaaelämää-ryhmään taimatriisitulostimella tehtyjäohjelmistolistauksia palvovaan,sisäänpäin lämpiäväänkansanosaan.Ensimmäisen reseption nopeasti käsitelty:Paljon hedelmäsisältöä,isoja kuvia, kallista paperiaja näyttävä esillepano.Sitten toivotaanparasta.Sitten on se kivisempitie. Esitellään sen tärkeinja salaisin ainesosaensimmäisenä. Se on kohderyhmäeli ne, jotka keitoksestamaksavat.Kohderyhmä löydetään sisällöllä. Siispätarvitaan lukujuttuja eli tarinoita bittimaailmanhämmästyttävistä syövereistä.Kuten tarina Ron Austinin ja Kevin Poulseninkiinni jäämisestä80-luvulla. Esimerkiksisellainen, jonka lukijattuomitsivat ei-toivotuksisisällöksi erään tieto-”konelehden alkutaipaleella vuonna 1984.Oikean maun perässäSeuraavaksi lehteen tulee rakentelua.Kannattaa olla varovainen, sillä sen voitoteuttaa väärin.Prosessori + tuulettimet + tahnat +emolevy + muistit + näytönohjain + massamuisti+ kotelo + erikoisuudentavoittelu-pci-e-kortit= pc. Tämä on väärin,sillä resepti on liian mainstream.Raspberry Pi + Pong-koodin asennus= hack. Oikein, sillä virittely. Näettehäneron?Tarvitaan myös huumoria, mielelläänsisäpiirisellaista. Huonolaatuiselle tuumorille(sic) voi vaikka perustaa omanpalstansa, ettei se saastuta koko julkaisua.Esimerkki: Tetris on klassinen retropeli.Eli retris.Nii. Ei tuollaisia kehtaa ympäri lehteäripotella.Myös koodaamista on syytä opettaa.Nykyisin se on hankalampaa kuin ennen,sillä juuri nyt ei ole tarjolla yhtä paljonilmaisia, tulevien it-pomojen tarjoamiaohjelmistolistauksia. Lisäksi ohjelmienkeskipituuden muutos johtaisi painoteknisiinongelmiin, kun fonttikoko lähenteleeprosessorien viivaleveyksiä.Sarjakuva on bonusta. Se saa ollamielellään yksiruutuinen, ja sen voi lehdensuosion kasvaessa venyttää kolmiruutuiseksi.Ja sitten kutistaa taas yhteenruutuun ja saada haukut juuriensa unohtamisesta.Puuta vai bittiäLukijoiden ohella tärkein osa on goodwill.Sitä vähentävät lehdentekijöidenoleminen ison korporaation palkkalistoilla,klikkausotsikot sekä aiemmin mainitturunsas omppusisältö. Goodwilliä taaslisäävät sisällön askartelu yöaikaan ja lomillavapaaehtoisvoimin.Viimeisenä sisältöosana tulee jakelukanava.Digitaalista asiaa käsittelevänpaketin voi tarjoilla mahdollisimmananalogisesti eli puita kaataen, tai vaihtoehtoisestiYhdysvaltain kansallisen turvallisuusvirastonlaajennetun intranetinvälityksellä.Näistä kumpikaan ei ole väärin, muttaensimmäinen on enemmän oikein, koskapaperi on tablettia kevyempi kannateltavapöntöllä istuttaessa.Jossain vaiheessatietotekniikkalehdenkehitystä on nimittäinsaavutettava vessapaperivirstanpylväs,tai sitten lehdentekijänon syytä alkaa katsella muita töitä.Täysin asiaan liittymättä: Missä sinämuuten luet tätä nyt?Lukijan tunneside viimeistellään antamallahänelle ulkoinen vihollinen. Sellaisenjärjestäminen on hankalaa, muttajoskus vihollinen järjestää itse itsensä.Esimerkiksi tekemällä lehtiuudistuksen.No, olisiko tällaisen lehden tekeminenmahdollista? Ei ja kyllä.Ei siksi, että retrolehdenkin on oltavamoderni. Uutta 20–30 vuoden takaisessamaailmassa olevaa lehteä kukaan ei halualukea. Ne tehtiin jo. Kyllä siksi, ettäjotkut pääsevät aika lähelle.Kirjoittaja on kirjoittanut useampiinSanoman lehtiin – mukaan luettuina monienmielestä kehnohkosti uudistunutsellainen ja klikkaaseksihelle-otsikoivasellainen.Lukijoiden ohellatärkein osa on goodwill.7


KulttuuriOhjelmistokäännöksen kivikotTietotekniikan käyttäjä huomaa yhäkin kielikukkasia suomenkielisissäohjelmissa. Selvitimme, mistä käännösongelmat saavat alkunsa jamiten ohjelmistoja ylipäänsä käännetään.Teksti: Mikko Heinonen Kuvat: Manu Pärssinen”Valitse Asetukset, napsauta sittenpainiketta Tiedot ja valitse Otakäyttöön”, toteaa ohjelmauutuudenkäyttöohjetiedosto. Käyttäjä sen sijaannäkee edessään ihan erilaisen ikkunan,jossa näkyy ”Valinnat”, ”Lisätiedot”ja ”Käytä”. Käyttöohjeesta apua etsiväkäyttäjä kiroaa mielessään, eikö se kääntäjäole edes nähnyt tätä ohjelmaa?Lyhyt vastaus on, että ei useinkaanole. Ja vaikka olisikin, hänellä ei ehkäole ollut lupaa muuttaa virheellistä käännöstä.Jotta voisimme ymmärtää, miksitällaista tapahtuu, pitää aloittaa varsinkaukaa.Kielenkääntäjästä tulee useille yhämieleen kammiossaan istuva ammattilainen,joka ansaitsee elantonsa kääntämälläkaunokirjallisia teoksia. Televisioohjelmiaja elokuvia taas suomentavatAV-kääntäjät, jotka nousivat julkisuuteensuurten mediatalojen ulkoistettua käännöstoimintansa.Kolmas ammattiryhmäkäännösalalla ovat tekniset kääntäjät,joiden vastuualueita ovat käyttöohjeet,viralliset asiakirjat ja ohjelmistojen lokalisoinnit.Jotkut moniottelijat tekevätkaikentyyppistä käännöstyötä, muttauseimmat kääntäjät keskittyvät vain yhteenlajityyppiin.Kone muistaa, ihmistä tarvitaanTekninen kääntäminen eroaa kirjallisuudenkääntämisestä ja AV-kääntämisestäsiinä, että se on hyötynyt eniten tekniikankehityksestä. Koska esimerkiksikäyttöohjeet ja ohjelmistot sisältävätrunsaasti samoja ilmauksia ja käytäntöjä,on niin sanottujen käännösmuistien käyttömuodostunut keskeiseksi työkaluksiteknisessä kääntämisessä. Käännösmuistitallentaa kaikki tiettyä projektia koskevatsemanttiset yksiköt – esimerkiksiyksittäiset sanat, lauseet tai virkkeet –suureen tietokantaan, josta niitä voidaanmyöhemmin hakea.Ihannetilanteessa käännösmuisti onerinomainen työkalu. Sen avulla samaaprojektia voi tehdä vaikka usea kääntäjäsamanaikaisesti ja tyyli pysyy yhtenäisenä,kunhan kaikki noudattavat vanhojenkäännösten sanastoa ja ilmaisutapaa.Myöhempien päivitysten teko helpottuuhuomattavasti, kun kaikki aiemmat käännöksetovat käytettävissä.Käännösmuistin käyttöä ei ole syytäsekoittaa konekääntämiseen, vaikka niilläsamoja piirteitä onkin. Käännösmuistiei osaa kääntää automaattisesti kuin täsmälleensamanlaisina toistuvat jaksot.Kaikkeen muuhun se osaa tehdä vainehdotuksia, joita ihmisen pitää muokata.Englanninkielinen termi Computer AssistedTranslation tarkoittaa juuri tätä. Suomenkaltaisen kielen tapauksessa erona onmyös se, että tietokoneavusteinen käännösnopeuttaa kääntäjän työtä, siinä missäkonekäännöksen sijamuotojen ja sanavalintojenkorjailu lähinnä hidastaa sitä.Rengistä isännäksiKääntäminen maksaa rahaa, joten yrityksentaskulaskinosasto haluaa säästöjennimissä käyttää samoja käännöksiä ainakun mahdollista. Tämä on myös järkevääkielen yhtenäisyyden kannalta ja helpottaauusien kääntäjien ottamista mukaantyöhön.Jossain vaiheessa käy kuitenkin niin,että käännösmuistista tulee lopputulostarasittava riippakivi. Osa suurten ohjelmistojenkäännöksistä saattaa olla yli 15vuotta vanhoja. Tietotekniikan sanastoon tällä välillä voinut muuttua moneenotteeseen, ja toisaalta ei ole lainkaan varmaa,että kaikki alkuperäistä ohjelmaakääntäneet ovat tienneet, mistä tarkalleenon kysymys.Vaikka nykyinen kääntäjä olisi perustellustieri mieltä käännösmuistin kanssa,vanhaa käännöstä on usein pakko käyttääyhteneväisyyden nimissä – tai ainakinsiksi, ettei sen muuttamisesta maksetakenellekään. Monet yritykset vain ajavatvanhat käännökset sisään automaattisestieivätkä tarkista, pitävätkö ne vieläpaikkansa. Niinpä vuoden 2013 ohjelmistokinvoi ihan sujuvasti jutella käyttäjällelevykkeistä tallennusvälineinä.8 2013.4


Tarpeeksi paisuttuaan käännösmuistialkaa sisältää samalle asialle erilaisiakäännöksiä. On jopa voitu toteuttaa projekti,jossa ikivanhoja käännöksiä on korjailtunykyaikaisemmiksi mutta vanhat onjätetty muistiin kummittelemaan. Aloittelevakääntäjä, joka ei tunne käännettävääohjelmistoa, ei luonnollisestikaan tiedä,mikä käännösmuistin tarjoamista vastineistapitäisi valita. Usein aloittelevankääntäjän on myös palkannut yritys, jokaon tarjonnut työstä halvimman hinnan.Lue se manuaali, jos pystytRiippuvuussuhteet tulevat vieläkin monimutkaisemmiksi,kun samaan projektiinkuuluvat sekä ohjelmisto että käyttöohje.Ohjelmisto luonnollisesti käännetäänensin, minkä jälkeen käyttöohje usein kilpailutetaanerikseen ja annetaan jollekintoiselle ryhmälle tehtäväksi.Käyttöohjeen kääntäjille annetaantavallisesti vain lista, jossa on lueteltuohjelman käyttöliittymän käännökset.Vain ani harvoin heille annetaan itse ohjelmaa.Tätä listaa on sitten noudatettavakuin pyhää kirjaa, ja myös sen virheet onjäljennettävä. Aina ei ole tietoa käyttöliittymästä,jolloin kääntäjä arvailee parhaansamukaan ja syntyy tämän artikkelinaloituskappaleen mukaisia tilanteita.Joskus kääntäjätkin ylisuorittavat jahuomauttavat ohjelmistossa olevista virheellisistäteksteistä. Yleensä se ei johdamihinkään, sillä käyttöohjetta käännettäessäohjelmisto on jo ”kiinni”, eikä siihenenää tehdä muutoksia. Parhaassa tapauksessamuutos saattaa tulla seuraavaanversioon, mutta kieliasiat ovat harvoinniin keskeisiä, että asiaan jaksettaisiinpanostaa.Seuraava mahdollisuus virheellisenkäännöksen korjaamisen tulee vastaansilloin, kun jokin tekninen seikka pakottaakirjoittamaan kyseisen kohdan uusiksi.Tällöin virheellinen käännös onkin jousein levinnyt niin moneen paikkaan, etteisen täydellinen poistaminen ole enäämahdollista.Termistöjen sekamelskaaYrityksen viestintä on tärkeä osa sen julkisuuskuvaa,ja moni on ottanut kielenmukaan imagonsa luomiseen. Joskus tuntuu,että markkinointipuolella laaditaankilpaa erilaisia tyylioppaita ja kehitetäänomaa sanastoa. Sen seurauksena samojaasioita käännetään monella eri tavalla.Esimerkiksi icon voi olla suomeksi kuvake,ikoni tai symboli. File on tiedosto taiarkisto, riippuen siitä, missä käyttöjärjestelmässäollaan. Sama koskee moniamuitakin keskeisiä termejä.Kääntäjän näkökulmasta tämä aiheuttaarunsaasti ongelmia, sillä usein esimerkiksiohjelmiston Windows- ja MacOS -versiot tulevat käännettäviksi samaanaikaan. Alkukielinen teksti ei erotteleeri käyttöjärjestelmiä, vaikka käännöksissäniin tehtäisiin. Tällöin kääntäjänon ratkaistava, mitä varianttia käytetään,ja usein markkinaosuudet ratkaisevat.Termistöjen suhteen parhaan arvosananansaitsee Microsoft. Ei siksi, ettäsen käännökset välttämättä olisivat mitenkäänylivertaisia. Syynä on se, ettäMicrosoft on asettanut lähes kaikki tekemänsäkäännökset vapaasti saataville.Microsoft Language Portal -sivustostalöytyvät kaikkien tärkeimpien ohjelmistojenkäännökset kaikille kielille. Sivustonhakutoiminnon tuloksista on mahdollistatutkia, missä tuotteessa kutakin käännöstäon viimeksi käytetty. Näin on helppoapoimia omaan käyttöön ajantasainen viittausesimerkiksi Windows 8:n käyttöliittymään.Rakas, rikas äidinkielemmeAivan oman mausteensa käännöskeitokseenantavat suomen kieli ja sen taivutusjärjestelmä.Jokainen suomenkielisiä ohjelmiakäyttänyt on varmasti törmännytsanoihin ”kohde” ja ”järjestelmä”, jotkaeivät yleensä tarkoita yhtään mitään tilanteissa,joissa niitä käytetään. Kyse onkintilkesanoista, joilla suomen taivutussaadaan sopimaan anglosaksiseen ympäristöön.9


Tilkesanoihin päädytään useimmiten silloin,kun tekstissä on tavaramerkkejä tai muuttujia,jotka estävät normaalin taivuttamisen.Monet suuryritykset valvovat tarkasti tavaramerkkejäänja kieltävät ehdottomasti niidentaivuttamisen, koska joku ilmeisesti saattaisitulkita, ettei taivutettu merkki enää olekaanrekisteröity.Toisilla yrityksillä taas on tapana tehdämonia versioita ohjelmistostaan, jolloin vaikkapa”SuperSystem 8000 Ultra-Professional”ja ”SuperSystem 7500 Piss-Poor” näkyvätkääntäjälle havainnollisena muuttujana ”%s”tai ”%ProdName”. Näin syntyy kukkasia kuten”SuperSystem-järjestelmään” eli ’superjärjestelmäjärjestelmään’.Voin vakuuttaa, että tämäsärähtää kääntäjänkin korvaan, mutta mitäänmuuta vain ei ole tehtävissä.Sana ”kohde” taas pitää tulkita niin, ettäkääntäjä on saanut eteensä pelkän luettelonviittauksia, joiden tilalle ohjelmistossa voidaanvaihtaa yksi tai useampia sanoja. Tyyppiesimerkkitällaisesta on vaikkapa ”copy %1 from%2 to %3”. Tässä %1 on ilmeisesti tiedostonimi,joka ei kaipaa taivutusta, mutta ”%2 to %3”vaatisi jo suomessa sijamuotoja. On vain mahdotontatietää, mihin kirjaimeen tai välimerkkiinne loppuvat, joten tyyppi %2sta %3een eionnistu. Puhumattakaan siitä, ettei muuttujannimien perään useinkaan voi kirjoittaa suoraanja että muuttujan kohdalle voi lauseessa tullayksi tai useampia sanoja, mikä sotkee suomenyhdysmerkkisäännöt. Näin siis %1 kopioidaankohteesta %2 kohteeseen %3 – taas kerran,varmuuden vuoksi.Hyvin, huonosti ja hyvin huonostiOhjelmistokääntämisen ala on siis haasteitapullollaan. Toimittuani kokopäivätoimisenakääntäjänä kymmenisen vuotta olen ehtinytistua vähän joka puolella pöytää: aloittelijanaihmettelemässä uutta outoa tuotetta, idealistisenamaailmanparantajana tekemässä kehitysehdotuksiaja kyynisenä palkkaorjana lätkimässäpieniä katkelmia jo menetettynä tapauksenapitämäni projektin sekaan. Välillä olen ihmetellyt,kuinka ylipäätään mitään saadaan käännettyätolkullisesti. Onneksi olen myös saanutilahtua siitä, miten toisissa yhtiöissä kieliasioihinsuhtaudutaan riittävällä vakavuudella.Kokemukseni pohjalta olen laatinut aloittelevilleohjelmistoyrityksille oheisen taulukon,jota noudattamalla on helppoa munata ensimmäinenohjelmistokäännösprojekti kokonaisvaltaisesti.Kaikki esimerkit ovat tosielämästä.1. Tarjouskilpailu Hyväksy halvin käännöstarjous. Älä suotta tarkista, onkotarjoajan suomenkielisten projektien hallinta esimerkiksiKiinassa tai puhuuko kukaan sen henkilöstöstä kohdekieltä.Näin varmistat niin pitkän alihankintaketjun, etteisen lopussa nälkäpalkalla nyhertävää kääntäjää kiinnostakurja softasi vähääkään.Älä missään nimessä palkkaa alan koulutuksen saanuttaihmistä vastaamaan kieliasioista tai osta sellaisenpalveluita. Ammattilainen saattaisi puuttua ohjelmistokehittäjiensynnynnäisesti nerokkaisiin ratkaisuihin, jotkaautomaattisesti toimivat joka kielellä.2. Käännettäväaineisto3. KääntäjienkysymyksetLähetä käännettäväksi mahdollisimman varhainen versioohjelmistosta ja muuta sitä useita kertoja matkan varrella.Toimita kaikki lisäykset eri tiedostomuodoissa javaihda esimerkiksi muuttujien merkintätapaa joka kerta.Älä toimita mitään viiteaineistoa, josta kääntäjät voisivattutustua aiempiin käännöksiin tai selvittää, mihinohjelmistosi liittyy. Koska maksat heille, on heidän tehtävänsäselvittää tällaiset asiat parhaaksi katsomallaantavalla eikä vain kopioida toisten jo tekemää työtä. Kieltähänkuitenkin käännetään kirjoittamalla samat sanatperäkkäin eri kielellä.Muista, että kääntäjät toimivat sitä paremmin, mitätiukempi aikataulu heille annetaan. Lähetä käännettäväämyös jouluaatoksi, jolloin itse vietät aikaa perheen parissa.Tämä korostaa juuri sinun hankkeesi tärkeyttä.Jos haluat todella varmistaa hyvän lopputuloksen, kehitäoma käännöstyökalu ja pyydä kääntäjiä syöttämäänkäännökset sinne. Tekniseen kääntämiseen tarkoitettujaohjelmistoja on kehitetty vasta muutama kymmenenvuotta, joten yrityksesi kesäharjoittelija tekee varmastiparemman ensimmäisenä PHP-harjoitustyönään.Ohjelmistokehitys on sen verran kiireistä puuhaa, ettähumanistit ovat siinä vain tiellä. Jos teknisillä kääntäjilläon jotain kysyttävää tuotteistasi, kannattaa laittaa taloonjuuri tullut markkinointisihteeri vastaamaan kysymyksiin.Missään nimessä ei kannata haaskata tuotteen tehneidenohjelmoijien aikaa tällaiseen joutavuuteen, ja parasonkin jättää vastaamatta kääntäjien kysymyksiin.4. Testaus Ohjelmiston testaus ja laadunvarmistus kannattaa myösantaa halvimman tarjouksen tehneelle, jos nyt laatuaedes halutaan varmistaa. Esimerkiksi Kaukoidässä toimivatestauskeskus pystyy tarjoamaan aivan ainutlaatuistaosaamista suomalais-ugrilaisissa kielissä.Käännöksen laatu on helposti määritettävissä seuraavallakaavalla: käännetyn tekstin pitää olla erilainenkuin alkuperäinen teksti mutta ei liian erilainen. Samoinkääntäjän työmotivaatiolle tekee hyvää, kun pääsee selittämääntestaajalle neljännen kerran saman projektinaikana, mitä se sijamuoto taas tarkoittikaan.On myös tärkeää, että kaikki ohjelmiston merkkijonojenpituudet pakotetaan englannin kielen mukaisiksi.Minkään kielen sanat eivät voi olla pidempiä. Merkkirajoistaei kannata kertoa kääntäjille etukäteen, sillä heehtivät kyllä lyhennellä käännöksensä myöhemmin, samaanhintaan tietysti. Tämä työllistää myös mukavastitestaajia, kun he saavat ottaa sadoittain ruutukuvianäyttöteksteistä, jotka ovat keskeltä katkenneita.10 2013.4


Merkistöt taiteen rakennuspalikoinaKun jossain liikkuu tekstiä sähköisesti, liikkuu sielläusein myös merkkigrafiikkaa. Seuraa pikakatsausmuutamiin merkkigrafiikan muotoihin.Teksti: Ville-Matias HeikkiläVarhainen tietoliikenne oli yleensätekstimuotoista, joten helpointapa esittää grafiikkaa oli muotoillase tekstiksi. Merkkipohjaisuus onmyös taloudellista, mistä syystä sitä suosittiinpitkään kaikenlaisissa tietokoneohjelmissa.Nykyään useimpiin paikkoihinvoi ympätä millaisia kuvia hyvänsä,Taidejoten merkkigrafiikka on entistä useammintaiteellinen valinta teknisen välttämättömyydensijaan.Kuvan tekijä tuntematon rtty.com Hiro Protagonistasciiarena.comBaudot (1870)Kaukokirjoitin keksittiin jo 1800-luvulla.Radioihin kytketyistä kaukokirjoittimistasyntyi radioamatöörien käyttämäRTTY-yhteyskäytäntö eli Radio Teletype.RTTY:llä siirreltiin myös grafiikkaa.Viisibittisiin baudot-koodistoihinkuuluvat vain isot kirjaimet ja numerotsekä joukko välimerkkejä. Merkkejä voikuitenkin lyödä päällekkäin, mikä mahdollistaatummemmat ja monipuolisemmatpalikat.ASCII (1967)128 merkkiä ja ohjauskoodia käsittäväASCII on miltei kaikkien myöhempienmerkistöjen perusta. Suurin osa tietoliikenteenmerkkigrafiikasta onkin ollutnimenomaan ASCII-grafiikkaa. Erilaisiatyylejä on lukemattomia.Amigalla syntyneessä ”oldskool-tyylissä”muodostetaan yhtenäisiä kuvioitakeno-, kautta- ja muista viivoista. Kaikkifontit eivät kuitenkaan yhdistä viivoja toisiinsaaukottomasti.Dan Farrimondteletextart.comTeksti-TV (1976)BBC:n kehittämä teksti-tv lähettää 40×25solun kokoisia sivuja tv-kuvan lomassa.Solu voi sisältää joko kirjoitusmerkin, näkymättömänohjauskoodin tai 2×3 pikselingrafiikkaelementin. Näin teksti-tv-sivuillavoi olla tekstin lisäksi myös karkeaapikseligrafiikkaa.Värejä on käytössä 8 sekä merkilleettä sen taustalle, mutta eriväriset alueeton erotettava toisistaan värinvaihtokoodeilla.Teksti-tv ei siis mahdollista ANSItyylistäväri-ilottelua.Mermaid / Genesis ProjectPETSCII (1977)PETissä ja myöhemmissä kasibittisissäCommodoreissa käytettyyn PETSCIIhinkuuluu muun muassa kymmeniä erilaisiaviiva- ja palkkielementtejä. Kaikki eivättosin ole käytettävissä samaan aikaanpienten kirjainten kanssa. Merkkivärejäon C-64:llä tarjolla 16, ja ruudulle mahtuu40 × 25 merkkiä.Ungenannt / Blocktronics sixteencolors.netIBM PC (1981)PC-merkkigrafiikkaa kutsutaan usein AN-SI-taiteeksi sen käyttämien päätteenohjauskoodienvuoksi: kullekin merkille voiniillä valita päävärin 16:sta ja taustavärin8:sta vaihtoehdosta. Tarjolla on vähemmänerilaisia palkkeja kuin PETSCIIssä,mutta sävytyselementeistä saa kauniitaväriliukuja. Grafiikka on yleensä tarkoitettu80 × 25 tai 80 × 50 merkin tekstitilalle,mutta teoksilla voi olla mittaa jopa kymmeniäruudullisia.Muutamat nykyiset ansieditorit jauseat pääte-emulaattorit tukevat laajempiaväripaletteja, joita käytetään ainakinjoidenkin MUDien grafiikoissa.tw1tt3rarttext-mode.tumblr.comUnicode (1991)Nykyisin kaikkialla käytettävä Unicodepyrkii yhdistämään kaikki merkistöt,mutta se ei vieläkään kata esimerkiksiPETSCIItä tai Videotexiä. Unicode tarjoaakuitenkin joitakin uusia mahdollisuuksia,kuten tarkemerkkien kasaamisen päällekkäin.Mahdollisuudet kuitenkin vesittyvätsiihen, että useimmat tasalevyisetkäännykyfontit eivät huomioi merkkigrafiikkayhteensopivuuttamitenkään. LähinnäPC:stä tuttujen palikoiden voi olettaatoimivan edes jotenkuten samoin eri fonteissa.Useimmat merkkigrafiikkataiteilijatpitäytyvätkin mieluummin klassisissamerkistöissä.11


KoodiOhjelmointiparadigmatOhjelmointiparadigmat tarjoavat erilaisia näkökulmia ohjelmointiin.Ne säätelevät ohjelmoijan ajattelua ja vaikuttavat ohjelman lopputulokseen.Uusi paradigma on myös uudenlainen älyllinen haaste.Teksti: Panu Kalliokoski Kuvat: Mitol Berschewsky, Panu Kalliokoski, HennaRuohonen, Teija Tuhkio, Risto Mäki-PetäysOhjelmoijan työssä luodaan asioitatyhjästä. Ohjelmoijan tuottamankoodin alkuperä on aina ohjelmoijanajatuksissa, vaikka ohjelmoitaessatoki myös muokataan vanhaa koodiatai kirjoitetaan uusi ohjelma esimerkkikoodinpohjalta. Ei ole harvinaista, ettäohjelmoija tuottaa sivukaupalla ohjelmakoodiaohjeenaan vain oma intuitio ja kokemussekä jonkinlainen määrittely siitä,miten ohjelman olisi tarkoitus toimia.Koska ohjelmat syntyvät puhtaastiajatuksista, ohjelmoijien ajattelutavoillaon valtava vaikutus siihen, millaisiksi ohjelmattulevat. Ulkoisesti samalla tavointoimivan ohjelman voi kirjoittaa äärettömänmonella eri tavalla. Erilaiset lähestymistavattuottavat eri pituisia ohjelmiaja ottavat huomioon erilaisia ohjelmanlaajennus- ja muutostapoja. Hyvinkinmonimutkaiselta vaikuttava ongelma taialgoritmi saattaa toisella tavoin hahmotettunaolla niin yksinkertainen, että sensaa ratkaistuksi muutaman rivin ohjelmalla.Ohjelmointiparadigma merkitsee yleistäajatusmallia, jota pystyy soveltamaanmihin hyvänsä ohjelmointitehtävään. 1Paradigmat on todistettu yhtäpitäviksi,niin että yhden paradigman ohjelmat onmuunnettavissa automaattisesti toisenparadigman ohjelmiksi. Eri paradigmattoki tuottavat erilaisia ja eri tavoin siistejäratkaisuja ongelmiin.Ohjelmointiparadigmat kytkeytyvätohjelmointikieliin siten, että kielensanotaan ”edustavan” jotakin paradigmaa.Useimmat nykyaikaiset kielet ovatkuitenkin moniparadigmaisia, eli niillä onmahdollista kirjoittaa kohtuullisella vaivallauseamman paradigman mukaisesti.Tyypillinen valtavirtakieli (esimerkiksi C,Java tai Python) tukee siedettävästi ainakinfunktionaalista, oliopohjaista ja proseduraalistalähestymistapaa. Paradigmateivät aina sulje toisiaan pois, vaanohjelman eri osat voivat olla eri tyyleilläkirjoitettuja.Erilaisten ohjelmointitapojen perusteellinenläpikäynti on valtava työ, minkävuoksi tutustumme tässä vain muutamiinkeskeisimpiin paradigmoihin. Tässä artikkelissakäsitellään seuraavia paradigmoja:12 2013.4• Imperatiivinen paradigma, jonka alalajejaovat strukturaalinen, proseduraalinenja oliopohjainen ohjelmointi.• Funktionaalinen paradigma, jonkaalalajeja ovat perinteinen funktionaalinen,korkeamman kertaluvun funktioitahyödyntävä ja tietovuopohjainenohjelmointi.• Logiikkaparadigma, johon kuuluvatpredikaattien monisuuntaisuus jaindeterminismi.Harmillista kyllä, useimmat näistä paradigmoistaeivät ole kovin hyvin määriteltyjä,eikä termien tarkoista merkityksistävallitse yksimielisyyttä. Tätä moninaisuuttaei kuitenkaan ole mahdollista esitellätässä jutussa, joten olen valinnutjokaiselle termille yhden melko laajastihyväksytyn merkityksen.Imperatiivinen paradigmaImperatiivisessaparadigmassaohjelmansuoritusetenee selkeästitietyssäjärjestyksessäja ohjelmalla onkullakin hetkellä tietty tila, jotaohjelman erilaiset komennotkäsittelevät. Tämä paradigmaon useille ohjelmoijille kaikkein tutuin,koska imperatiivista ohjelmointia tukevia(ja muut ohjelmointitavat hankalaksitekeviä) kieliä on ollut olemassa jo hyvinpitkään. Imperatiivinen ohjelmointi soveltuuerityisen hyvin sellaisiin tehtäviin,joissa ohjataan suoraan laitteistoa, esimerkiksiohjelmoidaan laiteajureita. Sesopii myös ohjelmiin, joiden täytyy tehdäasiat tietyssä järjestyksessä tai antaa takeitavasteajoista, muistinkulutuksestatai muusta vastaavasta.Imperatiivinen paradigma muistuttaahyvin paljon todellisten tietokoneidentoimintaa. Monet varhaiset ohjelmointikielettoivat esiin käytössä olevan laitteistonominaisuuksia. Ohjelmointikielenja laitteiston läheinen yhteys teki imperatiivisestaohjelmoinnista kaikkein luonnollisimmanlähestymistavan.Suuri osa moderneista ohjelmoin-Esistrukturaalinen (BASIC):10 INPUT a, b20 c = a30 IF a < b THEN 6040 c = a MOD b50 IF c = 0 THEN 9060 a = b70 b = c80 GOTO 4090 PRINT "syt: " bStrukturaalinen (FORTRAN):READ(*,*) a, bIF (a < b) THENc = aa = bb = cEND IFDOc = MOD(a, b)IF (c == 0) EXITa = bb = cEND DOWRITE(*,*) 'syt: ', bListaus 1. Suurimman yhteisen tekijän etsintä. Ohjelmantila on molemmissa muuttujien a, b ja c sisältö kunakinsuoritushetkenä sekä tieto siitä, millä rivillä ohjelmaaedetään. Toteutuskieli: BASIC, FORTRAN.tikäytännöistä on kehittynyt erilaisistaabstraktiokerroksista ja muista keinoista,joilla ohjelmoijat ovat pyrkineet järjestelemäänja selkeyttämään koodiaan sekähelpottamaan sen ylläpitoa. Ohjelmointikäytännötovat ohjeita, jotka rajoittavatsitä, millaisia ohjelmia saa kirjoittaa. Toisaaltane tekevät ohjelmista lyhyempiä,helpommin ymmärrettäviä ja helpommintoimivaksi todistettavia.Strukturaalinen ja proseduraalinenohjelmointiSekä strukturaalinen että proseduraalinenohjelmointi ovat rajoituksia sille,milloin ohjelman suoritus saa hypätäuuteen kohtaan ohjelmakoodissa. Nykyisilleohjelmoijille strukturaalinenja proseduraalinen lähestymistapaovat lähes itsestään selviä. Niiden vastakohtaa,perinteistä GOTO- tai jmp-ohjelmointia,puolestaan ei kannattanemainita muuten kuin historiallisenakuriositeettina.Strukturaalisessa ohjelmoinnissaedellytetään, että hyppyjä tehdään vainosana ehtorakenteita ja toistorakenteita,jotka eivät saa lomittua keskenään (listaus1).Proseduraalinen ohjelmointi puolestaantarkoittaa, että ohjelma jaotellaan useiksialiohjelmiksi. Jokainen näistä tekee yhdentarkkaan määritellyn tehtävän, jaaliohjelmat kutsuvat toisiaan tarvittaessa(listaus 2). Tällä tavoin koodia saadaanusein siistityksi, kun toistuva koodi saadaansiirretyksi omaan aliohjelmaansa.Mikä ehkä vieläkin tärkeämpää, ohjelmakoodiinsaatiin proseduraalisen ohjelmoinninmyötä yleensä nimi erilaisilletoiminnoille. Alkuaikoina harva kieli kuitenkintuki sitä, että aliohjelma saisi kutsuaitseään. Tämän vuoksi rekursio (tyypillinenfunktionaaliseen paradigmaankuuluva ohjelmointitekniikka) ei ollutmahdollinen.1Sen sijaan ajatusmalleja kutsutaan yleensä suunnittelumalleiksi(design patterns), jos ne soveltuvatvain tiettyyn tilanteeseen tai ongelmatyyppiin.


TOIMIIlman oliota:def summa(lista):i, tulos = 0, 0while i < len(lista):tulos = tulos + lista[i]i = i + 1return tulosTOIMITOIMITOIMIsumma([1, 2, 4, 9])TOIMIOlion kanssa:Olio-ohjelmointiStrukturaalisen ja proseduraalisen ohjelmointitavanavulla pärjättiin muutamiavuosikymmeniä. Niiden vahvuutena on,että ohjelman suoritusjärjestys on helppohahmottaa. Ajan mittaan kuitenkinhuomattiin, ettei ohjelman suoritukseneteneminen ollut ainoa vaikeaselkoinenosuus ohjelmoinnissa. Oli tiettyjä asioita,jotka aiheuttivat säännöllisesti ohjelmointivirheitäsuurissa ohjelmistoissa javaikeuttivat niiden ylläpitoa.Imperatiiviset ohjelmat laskevat asioitapäivittämällä ohjelman tilaa, käytännössämuuttujien arvoja ja tietorakenteidensisältöjä. Huomattiin, ettämonet ohjelmavirheet johtuivat siitä,että ohjelman eri osat muuttelivat samaaIlman aliohjelmia:int a[] = {1, 3, 2, -7, 9, 4, -1, 5};int length = sizeof a / sizeof a[0];int step, i, j, tmp;for (step = length; step /= 2;) {for (i = step; i < length; i++) {tmp = a[i];for (j = i;j >= step && tmp < a[j - step];j -= step)a[j] = a[j - step];a[j] = tmp;}}Aliohjelmien kanssa:TOIMIvoid shell_sort (int *a, int length){int step;for (step = length; step /= 2;)insertsort_by_step(step, a, length);}void insertsort_by_step(int step,int *a, int length){int i;for (i = step; i < length; i++)insert_element_at(i, a, step);}void insert_element_at(int i, int *a, int s){int j, tmp;tmp = a[i];for (j = i; j >= s && tmp < a[j-s]; j -= s)a[j] = a[j - step];a[j] = tmp;}Listaus 2. Shellsort-järjestelyalgoritmi. Toteutuskieli: C.TOIMITOIMITOIMImuuttujaa tai tietorakennetta toisistaantietämättä. Ajatellaan esimerkiksi aliohjelmaa,joka käy läpi lukulistaa (laskeakseensiitä jotain) ja tekee jonkin aliohjelmakutsunjokaisen listan elementinkohdalla: jos kyseinen aliohjelma sivuvaikutuksenaanmuokkaa läpi käytävää listaa,lopputulos saattaa olla aivan muutakuin ohjelmoija ajatteli.Olio-ohjelmoinnissa tietorakenteita käsittelevätaliohjelmat yhdistetään tietorakenteisiinsasiten, että vain tietytaliohjelmat, metodit, saavat muutella kutakintietorakennetta. Tietorakenteestatulee tällä tavoin itsenäinen yksikkö, olio.Kukin metodi pystyy osaltaan varmistamaan,että tietorakenne on eheässä jatoimivassa tilassa, kun ohjelman suoritusluovutetaan takaisin metodin ulkopuolelle.Samalla ohjelmien ylläpidettävyys paranee:tietorakenteen sisäistä toteutustamuutettaessa ei tarvitse korjata kokoohjelmaa käyttämään uusia rakenteita,vaan riittää, että päivittää rakenteenomat metodit.Proseduraalisen ohjelmoinnin avullatehtiin hyödyllisiä aliohjelmia, joita sittenkäytettiin uudestaan ja uudestaan osanasuurempia ohjelmointiprojekteja. Olioohjelmointipuolestaan avasi oven tietorakenteidenuudelleenkäytölle. Lisäksiolio-ohjelmoinnin myötä tuli huomattavastihelpommaksi kirjoittaa korkean tasonkoodia: oliota käsittelevä aliohjelmapystyy käyttämään sen metodeja sokeasti.Se toimii siten minkä tahansa olion kanssa,joka toteuttaa oikein samat metodit.Näin ohjelmien toiminnallisuutta saattoijälkikäteen laajentaa uusilla tietotyypeillä(listaus 3).Joskus luullaan, että oliopohjaista ohjelmointiavarten kielessä pitää olla erityinentuki erilaisille oliorakenteille. Todellisuudessaoliopohjaista koodia pystyykirjoittamaan lähes kaikilla yleisessä käytössäolevilla ohjelmointikielillä (listaus4) matalan tason konekielistä lähtien.Olio-ohjelmointi soveltuu erityisenhyvin tilanteisiin, joissa halutaan tuottaaTOIMIdef summa(kokoelma):tulos = 0while kokoelma.available():tulos = tulos + kokoelma.next()return tulosclass ListaIteraattori:def __init__(s, lista):s.index = 0s.lista = listadef available(s):return s.index < len(s.lista)def next(s):cur = s.lista[s.index]s.index = s.index + 1return cursumma(ListaIteraattori([1,2,4,9]))Listaus 3. Listan summa. Olioton versio käyttääindeksejä; oliollisessa on erillinen listan läpikäyjäolio.Jälkimmäinen summa tarvitsee toimiakseenListaIteraattori-olion mutta toisaalta pystyy käyttämäänmitä tahansa oliota, joka toteuttaa metoditavailable() ja next(). Toteutuskieli: Python.Python-toteutus:class Shape:def __init__(s): raise NotImplementeddef area(s): raise NotImplementeddef border(s): raise NotImplementedclass Circle(Shape):def __init__(s, radius):s.radius = radiusdef area(s):return math.pi * s.radius * s.radiusdef border(s):return 2 * math.pi * s.radiusmyshape = Circle(3)print "Border length is",print myshape.border()Scheme-toteutus:(define (make-shape area border)(vector area border))(define (shape-area shape)((vector-ref shape 0)))(define (shape-border shape)((vector-ref shape 1)))(define (make-circle radius)(define (circle-area) (* pi radius radius))(define (circle-border) (* 2 pi radius))(make-shape circle-area circle-border))(define myshape (make-circle 3))(display "Border length is ")(display (shape-border myshape))(newline)Listaus 4. Shape-rajapinta ja sen circle-toteutus. Toteutuskieli:Python, Scheme. Python-kielessä on valmistuki oliorakenteille, Schemessä ei.valmiskäyttöisiä tietorakenteita tai muitapalveluita tulevien ohjelmien käyttöön.Oliopohjaista ohjelmaa pystyy helpostilaajentamaan uusilla tietotyyppitoteutuksilla.Esimerkiksi peliin voi helposti lisätäuusia tekoälyjä tai esineitä.13


Iteratiivinen:def summa(lista):tulos = 0for e in lista:tulos += ereturn tulosRekursiivinen:def summa(lista):if len(lista) == 0:return 0return lista[0] + \summa(lista[1:])Listaus 5. Listan summa. Toteutuskieli: Python.Funktionaalinen paradigmaFunktionaalisessa paradigmassa käsitellääntoisistaan riippumattomia arvoja(esimerkiksi lukuja, merkkijonoja tai listoja)sen sijaan, että muuteltaisiin yhdensuuren koneen tilaa (todellisen tai virtuaalisen).Ohjelmat määritetään funktioina.Funktio on tarkka määritys siitä, kuinkalähtöarvoista lasketaan uusia arvoja.Funktion lopputulos riippuu ainoastaansen saamista lähtöarvoista. Monimutkaisetfunktiot määritellään yhdistelemälläyksinkertaisempia funktioita kompositionavulla, eli määrittämällä, minkä funktiontulos annetaan millekin syötteeksi.Intuitiivisesti voi ajatella, että funktiotovat kuin koneita, joihin menee sisääntiettyjä arvoja (syötteitä) ja jotka tuottavatniistä toisia arvoja (tuloksia). Allegoriatosin ontuu sikäli, että funktiot eivät”kuluta” syötettään vaan saman syötteenvoi rauhassa antaa vaikka kuinka monellefunktiolle. Juuri tämä ominaisuuserottaa funktionaalisen ohjelmoinninimperatiivisesta: imperatiivisessa ohjelmoinnissalaskennan osana usein muutellaanjo olemassa olevia muuttujia taitietorakenteita, mutta funktionaalisessaohjelmoinnissa vain tuotetaan uusia arvojaja tietorakenteita vanhojen perusteella.Vanhat heitetään automaattisestipois, kun niitä ei enää tarvita.Funktionaalinen ohjelmointi sopii erityisenhyvin tiedon muunnoksiin ja prosessointiin.Lisäksi funktionaalinen koodion paikallaan niissä tilanteissa, joissakoodin virheettömyys on tärkeää. Funktionaalisistaohjelmista on helpompi todistaaerilaisia ominaisuuksia, ja ne ovatyleensä jonkin verran lyhyempiä kuinvastaavat imperatiiviset ohjelmat.RekursioImperatiivisesta ohjelmoinnista tuttujatoistorakenteita ei funktionaalisessa ohjelmoinnissavoi sellaisenaan olla. Toistonpäättyminen nimittäin riippuu erimuuttujien tiloista, eikä funktionaalisessaohjelmassa muuttujan arvo enää perustamisenjälkeen muutu. Mielivaltaisenkokoisia tietorakenteita, kuten listoja, käsitelläänkinfunktionaalisissa ohjelmointikielissärekursion tai siihen perustuvienfunktioiden avulla. Rekursio tarkoittaa,että funktio käyttää määrittelyssäänavuksi itseään (listaus 5). Rekursio onhyvin yleispätevä ohjelmointitekniikka,joka käy erityisen hyvin rekursiivistentietorakenteiden (kuten puiden ja tiedostojärjestelmien)läpikäyntiin tai eri mahdollisuuksientutkimiseen esimerkiksitekoälyssä.Tietorakenteidenmuuttumattomuus ja jakaminenKoska funktiot eivät koskaan muokkaasyötteeksi saamiaan tietorakenteita,vaan luovat aina uusia, saattaa tuntua,että funktionaalinen ohjelmointitapa kuluttaahyvin paljon muistia. Tosiasiassakuitenkin yhtä tietorakennetta voi käyttäätoisen osana, ja monet niistä voivatjakaa keskenään osia, jos niiden muuttumattomuuteenvoi luottaa. Usein onmahdollista sekä säilyttää alkuperäinenettä muodostaa uusi tietorakenne hyvinpienellä muistinkulutuksella (listaus 6).Laiskat tietorakenteetFunktion tulos riippuu sen syötteistä eikätilanteesta, jossa se suoritetaan. Niinpäfunktionaalisessa ohjelmassa funktioidensuorittamista ja arvojen laskemista voiviivästää, kunnes tulosta todella tarvitaan.Tätä suoritusjärjestysten vapauttavoi hyödyntää laiskoissa tietorakenteissa.Tällöin tietorakenteen sisältöä ei lasketaetukäteen, vaan siihen upotetaan funkti-Destruktiivinen:def btree_insert(btree, value):if value < btree['val']:if btree['left'] is None:btree['left'] = dict(val=value,left = None, right=None)else:btree_insert(btree['left'],value)if value > btree['val']:if btree['right'] is None:btree['right'] = dict(val=value,left = None, right=None)else:btree_insert(btree['right'],value)Applikatiivinen:def btree_insert(btree, value):if btree is None:return (value, None, None)curvalue, left, right = btreeif value < curvalue:return (curvalue,btree_insert(left, value), right)if value > curvalue:return (curvalue,left, btree_insert(right, value))return btreeListaus 6. Uuden arvon sijoitus järjestettyyn binääripuuhun.Destruktiivinen versio muokkaa alkuperäistätietorakennetta, applikatiivinen säilyttää sen. Toteutuskieli:Python.Python:def delay(fn):return ['delay', fn]def force(thunk):if thunk[0] == 'delay':thunk[0] = 'val'thunk[1] = thunk[1]()return thunk[1]def numbers_from(n):return delay(lambda:(n, numbers_from(n+1)))naturals = numbers_from(0)def double(stream):n, rest = force(stream)return delay(lambda:(n*2, double(rest)))evens = double(naturals)Scheme:(define (numbers-from n)(delay (cons n (numbers-from (+ n 1)))))(define naturals (numbers-from 0))(define (double stream)(let ((val (force stream)))(delay (cons (* 2 (car val))(double (cdr val))))))(define evens (double naturals))Listaus 7. Luonnolliset luvut ja parilliset luvut laiskanalistana. Toteutuskieli: Python, Scheme. Scheme sisältäävalmiiksi laiskojen tietorakenteiden käsittelyä helpottaviapalveluita, Python ei.14 2013.4


oita, joilta voi tarvittaessa pyytää rakenteenvarsinaisen sisällön.Laiskat tietorakenteet voivat olla äärettömänsuuria, koska niitä lasketaanvain tarpeen mukaan. Esimerkkejä laiskoistatietorakenteista ovat muun muassalaiskat listat eli virrat tai vaikkapapuutietorakenne, josta löytyy jokainenmahdollinen shakkipelin kulku. Monetalgoritmit ovat esitettävissä elegantistimuunnoksina, joissa funktio lukee yhtälaiskaa tietorakennetta ja tuottaa sen perusteellatoista (listaus 7). 2 Laiskat tietorakenteetsopivat lukuisiin tarkoituksiinaina numeerisista menetelmistä optimointiinja jäsentämiseen. 3Korkeamman kertaluvun funktiotYleensä funktionaaliset ohjelmointikielettukevat myös korkeamman kertaluvunfunktioita eli funktionaaleja sekä niidenkäyttökelpoisuutta huimasti lisääviä sulkeumia(closure). Funktionaali tarkoittaafunktiota, joka ottaa syötteekseen taipalauttaa toisia funktioita. Rekursio onusein korvattavissa sopivan funktionaalinkäytöllä (listaus 8). Funktionaalit soveltuvaterittäin monenlaisten toimintatapojen,tietorakenteiden ja laskentaympäristöjenabstrahointiin. 4Monessa tilanteessa funktionaalienkäyttö toimii vaihtoehtona olio-ohjelmoinnille.Olio-ohjelmoinnissahan pystyykirjoittamaan tietorakenteesta riippumattomiaalgoritmeja käyttämällä tietorakenteidentarjoamia metodeja. Funktionaalittaas saavat argumentteina nefunktiot (aliohjelmat), joilla rakennettakäsitellään. Molemmilla tavoilla saadaanaikaiseksi tietotyyppien suhteen yleistettyäkoodia (listaus 9).2Tietyissä ohjelmointikielissä, kuten Haskellissa,kaikki tietorakenteet ovat laiskoja.3Niillä voi myös faktoroida lopetusehdot erilleeniteratiivisista algoritmeista siten, että iteratiivinenalgoritmi tuottaa äärettömästi tarkentuvan listantuloksia ja listaa lukeva funktio päättää, milloin onaika lopettaa.4Korkeamman kertaluvun funktioiden käyttöon hyödyllistä muutenkin kuin funktionaalisenohjelmoinnin kannalta. Imperatiivisessa ohjelmassakoodia syötteekseen ottavista aliohjelmista on lähesyhtä paljon hyötyä kuin funktionaalisessa ohjelmassa.Joidenkin tunnettujen imperatiivisten kielten(Tcl, Ruby ja Smalltalk) ehto- ja toistorakenteita ontoteutettu tällaisilla menetelmillä.5Muita tärkeitä funktionaaleja ovat monadisenohjelmoinnin bind-toteutukset sekä tietorakenteitaläpikäyvät katamorfismit, kuten listojen reduce().6Tunnetuin näistä kielistä on Factor. Monelletietovoita korostava point-free notation on tutumpiUnix-komentoriviympäristön putkirakenteista.Esimerkiksi seuraava komento laskee syötteensäsanojen frekvenssijakauman:tr ’ ’ \\012 | sort | uniq -c | sort -nrTietovuo-ohjelmointi90-luvulta lähtien funktionaalisessaohjelmoinnissaon yleistynyt tyyli,jossa funktiot määritelläänyhdistelemälläfunktionaaleilla muitafunktioita. Ero perinteisempäänfunktionaaliseenohjelmointiinon se, ettäarvojen kuljetusfunktiolta toiselleon annettu funktionaalientehtäväksieikä arvoihin viitataenää niin paljonerillisillä muuttujilla.Erityisen keskeinenfunktionaalitässä ohjelmointitavassaon kompositio-operaattori, joka antaayhden funktion tuloksen toiselle syötteeksi.5Monet funktiot voi kirjoittaa kokonaankompositio-operaattorin avulla.Tällaista ohjelmointityyliä kutsutaan nimelläpoint-free notation, ja se tuo useinselkeästi esiin tietovuot, joiden kauttaarvot kulkevat laskennassa (listaus 10).Koska kaikki funktiot voi määritellä yksinkertaisempienfunktioiden kompositioina,konkatenatiivisissa ohjelmointikielissäkompositiosta tehdään ohjelmoinninperusoperaatio. 6Tietovuo-ohjelmointi tuottaa kaunistaja selkeää koodia silloin, kun funktioidenkompositiorakenne ei ole tavattomanmonimutkainen. Kun funktioidenRekursiivinen:def summa(lista):if len(lista) == 0:return 0return lista[0] + \summa(lista[1:])def toistoton(lista):if len(lista)


LogiikkaparadigmaLogiikkaparadigmassa laskentaa tarkastellaanprosessina, jossa etsitään ehtoja,joilla annetut väitteet pitävät paikkansa.Esimerkiksi väite [1, X, 3] = [1, 2, Y] pitääpaikkansa silloin ja vain silloin, kun X = 2ja Y = 3. Ohjelmia muodostetaan määrittämälläpredikaatteja. Predikaatti on sääntö,joka määrittää, missä suhteessa senargumentit ovat toisiinsa.Monimutkaiset predikaatit määritelläänyleensä sen perusteella, miten neriippuvat yksinkertaisemmista (listaus11). Laskenta etenee siten, että logiikkalausekkeitaseuraamalla etsitään nemuuttujien arvot, joilla kaikki ohjelmanväitteet pitävät yhtä aikaa paikkansa. Logiikkaohjelmointisoveltuu erityisen hyvintilanteisiin, joissa etsitään ratkaisuamonimutkaiseen rajoiteongelmaan (esimerkiksiliikennevalojen ajastukseen),haetaan erilaisista vaihtoehdoista parasta(esimerkiksi shakkitekoäly) tai parseroidaaneli jäsennetään kieliä.Listauksen käyttöesimerkeistä näkyy,että määritelmien perusteella voi laskeapituuksia listoista, listoja pituuksista, yhdistettyjälistoja osalistoista tai osalistojayhdistettävistä listoista. Lisäksi ratkaisujaon joskus yksi, joskus monta ja joskusei yhtään.Sekä logiikka- että funktionaalinenparadigma ovat esimerkkejä deklaratiivisestaohjelmoinnista. Deklaratiiviset ohjelmateivät ole vain ohjeita siitä, mitenjotain lasketaan, vaan ne voi tulkita myösväitteiksi siitä, miten asiat ovat. Funktioidenmäärittelyt ovat käytännössä väitteitäsiitä, mikä on funktion syötteidenja tuloksen suhde. Esimerkiksi seuraavaHaskell-ohjelma kertoo, mikä on listan jasen pituuden suhde.length [] = 0length (x:xs) = 1 + length xsLogiikkaohjelmointi menee tässä pidemmälleja tekee ohjelman predikaateistasymmetrisiä siten, että niissä ei määritetä,mikä on syötettä ja mikä tulosta,vaan väitteen yhden argumentin voi laskeatoisen perusteella ja päinvastoin.IndeterminismiKuten todettu, logiikkaohjelmassa asetettuihinehtoihin voi olla yksi, monta tai eiyhtään ratkaisua. Joskus ohjelmaa suoritettaessatiettyyn osaongelmaan on montaratkaisua, mutta jokin niistä ei myöhempiensääntöjen vuoksi kelpaakaan.Tällöin joudutaan palaamaan takaisin(backtrack) muihin mahdollisiin ratkaisuihinja katsomaan, tyydyttäisikö seuraavaniistä loputkin rajoitteet. Tällaistasuoritustapaa, jossa mahdollisia tuloksiaon useita ja kaikki mahdollisuudet tutkitaanläpi, kutsutaan indeterministiseksi(listaus 12). Indeterminismi ei ole ainoastaanlogiikkaohjelmointiin rajoittuvatekniikka, vaan myös funktionaalisessaohjelmoinnissa voi toteuttaa funktioita,Listan pituus:length([], 0).length([F|Rest], X) :-length(Rest, Y),plus(Y, 1, X).Käyttöesimerkit:?- len([4,6,2], X).X = 3 .?- len([1,2|X], 4).X = [_G335, _G338] .?- length([1,X,3], 2).false.Listojen katenaatio:cat([], L2, L2).cat([E1|L1], L2, [E1|L3]):-cat(L1, L2, L3).Käyttöesimerkit:?- cat([1,2], [3,4], X).X = [1, 2, 3, 4].?- cat(X, Y, [a, b]).X = [],Y = [a, b] ;X = [a],Y = [b] ;X = [a, b],Y = [] .Listaus 11. Listan pituus ja kahden listan yhdistäminen.Toteutuskieli: Prolog.jotka palauttavat haluttaessa useampiaarvoja (tai ei yhtään). 7Oppia ikä kaikkiTässä jutussa on käsitelty vain pintapuolisestikaikkein yleisimpiä niistä paradigmoista,joiden avulla ohjelman toimintatavanvoi määritellä. Jokainen esitellyistäohjelmointiparadigmoista kantaa mukanaanvuosikymmenten perinnettä ja tutkimustasiitä, miten erilaiset ongelmatvoi ratkaista elegantisti. On kuitenkinolemassa myös uudempia paradigmoja,joiden tutkimus on vasta alullaan. Jo vähäinenkinohjelmointitapojen tuntemuskehittää ohjelmoijan taitoja, mutta lopultaerilaiset ohjelmointiparadigmat tarjoavatkiinnostuneille lähes ehtymättömänaarreaitan.Toivon, että tämä kirjoitus rohkaiseelukijoita tutustumaan uusiin ohjelmointitapoihin.Ohjelmointi on ajattelua, jotenuudet ohjelmointitavat ovat samalla uusiaajatustapoja ja auttavat parhaimmillaanymmärtämään myös maailmaa paremmin.7Puhtaissa funktionaalisissa kielissä indeterministinenfunktio yleensä palauttaalaiskan listan erilaisista tuloksistaan, muttajatkeita (continuations) tukevissa ohjelmointikielissäindeterminismin voi toteuttaa myöshyppimällä jatkeilla ohjelman suorituksessatakaisin aikaisempiin vaiheisiin.16 2013.4


KolumnitKehitys ei kehityMikko HeinonenOhjelmiston päivittämisestä saisi ollajotain hyötyäkin.Oletteko koskaan miettineet,mistä syntyy sevanhojen ohjelmistojenkiviriippa, joka vaikeuttaavaikkapa eri käyttöjärjestelmäänsiirtymistä yrityksessä?Miksi ihmeessä osa käyttäjistäei halua päivittää ohjelmiaanuuteen versioon?Minulle aihe on hyvin tuttu.Työssäni teknisenä kääntäjänäjoudun päivittäin käyttämäänohjelmia, joista monitietokoneen käyttäjä ei olekuullutkaan. Dokumentteja,sopimustekstejä ja ohjelmistojakäännetään lause tai sanakerrallaan käännösmuistiohjelmilla,jotka pyrkivät nopeuttamaankääntäjän työtätallentamalla vanhat käännöksettietokantaan ja ehdottamallakäännöksiä. Hyvintoimiessaan järjestelmä vauhdittaakintyötä reippaasti.Valitettavasti hyvin toimiminenon nykyisin lähinnäharvinainen poikkeus. Trados,ohjelmista tunnetuin, käyttääpäivityksensä vuonna 2007 jaomistajayhtiö on yrittänyt aktiivisestitappaa sitä myyntinsäedistämiseksi.Hymyä kyynelten läpiTuo vanha sotaratsu onkinedelleen kenties paras työkalu,kun on vain tarkoituskääntää pikaisesti tekstiä. Seon paras, vaikka se usein pilaaasiakirjan muotoiluja jasaattaa yhtäkkiä kieltäytyäsiirtymästä seuraavaan lauseeseen.Se on paras siitäkinhuolimatta, että ohjelman ikkunavoi useampaa näyttöäkäytettäessä siirtyä yhtäkkiäX-koordinaattiin 10 000.Varsinaisen työnkulun kannaltaTrados tuntuu nimittäinolevan niitä harvoja kääntäjännäkökulmasta kirjoitettujaohjelmia. Nykyisin myynnissäolevat työkalut ovat pääosininsinöörihirvityksiä, joissa onkymmenittäin valikoita ja asetuksia.Ne kyllä osaavat satojaeri tiedostomuotoja, muttakäyttäjäystävällisyys ei kuuluniiden sanavarastoon. Eikäole salaisuus, että kääntäjinäapunaan Microsoft Wordin lisäosaa,joka on ilmeisesti kirjoitettujossain vuoden 2000työskentelee paljon ihmisiä,joiden harrastuneisuus ei riitäsekavien valikoiden kaiveluun.tienoilla. Asennus nykyisiinWordin versioihin edellyttäätiedostojen manuaalista kopiointiaja uudelleen nimeämistä,eikä se välttämättä toimiTradosin sitkeyttä selittäneekinosaltaan se, että senkäyttöliittymä on käytännössäMicrosoft Word. Toimistosovellustensilloinkaan.”SamanOhjelmistoja kehitetään monopolistavoi tokiohjelman uudempiversio, niistä tehdään hitaampia. olla käär-epäolennaisiin suuntiin jaTrados Studio,meissään,poisti Word-symbioosin ja mutta Wordin käytettävyystoimii uudemmissakin käyttöjärjestelmissähyvin. Samallaon kyllä kohdallaan verrattunakeskimääräiseen, lähinnäse on kuitenkin kadottanut taulukkolaskennalta näyttäväänedeltäjänsä erinomaiset muistihakutoiminnotkäännösohjelmaan. Seja tehnyt käytöstäon tehty kirjoitetun kielenniin monimutkaista, ettälyhyenkin tiedoston kääntäminenvaatii useita projektinhallintaoperaatioita.Seurauksena on se, ettäkäsittelyyn, ei merkkijonojenkoodaukseen.Ehkä juuri tämän vuoksiyksikään uudemmista käännösohjelmistoistaei ole onnistunutuseat käännöstoimistot lähettävätnousemaan uudeksi detöitä vielä tänäkinpäivänä vanhalla Tradosillatehtäväksi. Tämä siitäkin huolimatta,että se sai viimeisenfacto -standardiksi, vaan alansuuret toimijat ovat hankkineetkuka minkäkin ohjelmistonkäyttöönsä. Ne eivät olejuurikaan yhteensopivia, jotenfreelance-kääntäjän tai suurtentoimistojen alihankkijayrityksenon ylläpidettävä useitaeri lisenssejä voidakseen ottaatöitä vastaan. Yksittäinenlisenssi voi maksaa tuhatkineuroa. Tonni on aika iso rahaohjelmasta, joka ei tee juurimitään sen paremmin kuinvanha Trados.Suunta on väärä, vauhtialiikaaMinun on mahdotonta uskoa,ettei kunnollista käännösohjelmaasaisi aikaan. Itse asiassaomaan käyttööni sellainenolisi jo olemassa, jos saisinyhdistellä nykyisten ominaisuuksiavapaasti. Kukaan eivain kysy asiaa kääntäjiltä,vaan ohjelmistot kirjoitetaanetupäässä projektinhallinnankäyttöön. On yhteistyötä, konekäännöstäja online-työnkulkua,mutta ei edelleenkäänhyvää muistihakua, vaikka seolisi itse työn kannalta huomattavastioleellisempaa.Kohtuullisen pieni käännösohjelma-alatuntuu vetävänpuoleensa pyöränuudelleen keksijöitä, jotkakieltäytyvät matkimasta ominaisuuksiatoisiltaan. Lähestymistavastaon tuloksenajoukko työkaluja, jotka toistavattoistensa virheitä ja hukkaavathyvät ominaisuutensahuonojen joukkoon.Minun on siis hyvin helppoymmärtää, miten syntyvät nehistorialliset ohjelmistokertymät,jotka aiheuttavat ongelmiapäivitysten yhteydessä.Pienille aloille ei tunnu riittävänohjelmistokehityksenosaamista, joka saisi pidettyäviisasten kiven hallussaan senkerran löydettyään. Ohjelmistojakehitetään epäolennaisiinsuuntiin ja niistä tehdäänyleensä entistä hitaampia.Tällöin käyttäjä, joka haluaavain tehdä työtään, kahlitseeitsensä vanhaan luottosoftaansakuin luontoaktivistipuunrunkoon: tätä ette minultavie.17


KoodiCommon Lisp– ohjelmoitava ohjelmointikieliCommon Lisp on samanaikaisesti tietojenkäsittelytieteen klassikko janykyaikainen ohjelmointikieli. Lisp-kielten evoluutio on rakentanut vanhojenperusideoiden varaan uuden kielen, joka vastaa nykyajan tarpeisiin jahaastaa ilmaisuvoimallaan kokeneenkin ohjelmoijan.Teksti: Teemu LikonenKuvat: Risto Mäki-Petäys, Marcin Wichary, Roland Dobbins, Teemu Likonen, Dave FischerSukujuuret syvälläTässä artikkelissa keskityn kieleen nimeltä CommonLisp, joka on vain yksi murre Lispin suuressa perheessä.Common Lisp on uudehko perheenjäsen, mutta kieliperheenjuuret ovat syvällä historiassa.Lisp-kielen perusteet loi John McCarthy vuonna1956. Tuolloin kehitystyö kytkeytyi keinoälytutkimukseenIBM:llä, Darmouthin yliopistolla sekä Massachusettsinteknillisessä korkeakoulussa. Uuden kielen varsinainentietokonetoteutus alkoi syksyllä 1958, ja sitäpidetäänkin kielen syntymävuotena. Kielen nimi oli LISP,joka on lyhenne sanoista ”list processing”.Useat toisistaan riippumattomat tahot innostuivatkielen kehittämisestä, ja pian se jakautui useiksi erimurteiksi. Uusia ominaisuuksia lisättiin, ja alkuperäinenlyhennenimi ”listojen käsittelijä” alkoi jäädä syrjään.Kieliperheen nimeksi vakiintui Lisp.1960-luvun lopussa oli jo olemassa tai kehitteilläMacLisp, ZetaLisp ja Interlisp. Kohta mukaan tulivatmyös Portable Standard Lisp, NIL, S-1 Lisp, Franz Lisp,Scheme ja SpiceLisp. Lisp-kielisten ohjelmien tehokastasuorittamista varten rakennettiin 1970- ja 1980-luvullaerityisiä tietokoneitakin, Lisp-koneita. Niiden käyttöjärjestelmätohjelmoitiin tietysti Lispillä.Melko nuori perheenjäsen on Common Lisp, jokasyntyi yhdistämään aiempia Lispin murteita ja hajanaistakehitystyötä. Haluttiin määritellä standardi Lisp, jossayhdistyvät monien aiempien murteiden ominaisuudet.Kieli sai virallisen aseman vuonna 1994, kun siitä tuliyhdysvaltalainen ANSI-järjestön standardi.LuonteenpiirteitäCommon Lisp on yleiskäyttöinen dynaaminen kieli, jokatukee useita ohjelmointityylejä. Se on tarkoitettu käytännöllistenohjelmien kirjoittamiseen ja todellisten ongelmienratkaisemiseen. Se ei ole akateeminen kielentutkimushankeeikä pedagoginen esimerkkikieli.Dynaamisen luonteensa vuoksi koko kieli on läsnäSymbolicsin Lisp-kone Googlen museossa.John McCarthy (1927–2011), Lispin keksijä.18 2013.4


Lisp-koodi koostuu sisäkkäisistä listarakenteista.ohjelmarakenteiden esittämiseen.Jos lista suoritetaan funktiokutsuna, sen ensimmäinenelementti on funktion nimi ja loput elementit argumentteja.Funktiokutsu näyttää esimerkiksi tältä: (+ 12 3). Nimi ”+” viittaa yhteenlaskufunktioon. Muutkinohjelman rakenteet ilmaistaan listojen avulla. Seuraavaesimerkki luo yksinkertaisen silmukan dotimes-makronavulla.(dotimes (i 10)(write-line "Tätä 10 kertaa!"))Lisp-ohjelma voi näyttää monimutkaiselta, jos kielion lukijalle outo. Loogisesti kielen syntaksi on kuitenkinerittäin yksinkertainen, koska ohjelmakoodin tulkitsemisensäännöt ovat yksinkertaiset ja koska ohjelmakoodimuodostuu kielen omista tietorakenteista. Yhdessänämä ominaisuudet tekevät metaohjelmoinnista helppoa.Lisp-ohjelman on hyvin helppoa lukea, muokata jatuottaa uutta Lisp-koodia, ja siksi Lisp-kieliä sanotaankinohjelmoitaviksi ohjelmointikieliksi.Tiedon tyypitCommon Lispissä on suunnilleen samat tietotyypit kuinmuissakin korkeatasoisissa kielissä. Niitä ovat esimerkiksikokonaisluku, liukuluku, merkkijono, lista, tauluk-ohjelman suorituksen aikana. Ohjelma voi esimerkiksiluoda suorituksen aikana uusia funktioita tai määritellävanhoja uudelleen. Funktioita voi myös kääntää ohjelmansuorituksen aikana, niin että niiden suoritus nopeutuu.Myös muuttujien tyypit ovat dynaamisesti muutettavissa,eikä niitä tarvitse julistaa tietyn tyyppiseksi. Standardisilti määrittelee declare-lausekkeen, jonka avullakääntäjälle voi kertoa, minkä tyyppisiä muuttujat ovat.Se auttaa optimoinnissa, ja tehokkaimmat Common Lisp-kääntäjät tuottavatkin suoritusteholtaan lähes C-kielenkääntäjien tasoista konekieltä.Useissa ohjelmointikielissä ovat erikseen lauseetja lausekkeet. Karkeasti ilmaistuna lauseet tekevät jotakinja lausekkeet palauttavat jonkin arvon. CommonLispissä on pelkästään lausekkeita eli kaikki ohjelmarakenteetko, hajautustaulu ja luokka. Tässä yhteydessä esittelenharvinaisempia ominaisuuksia.Luku-tietotyypeissä on eräitä erikoisuuksia moniinohjelmointikieliin verrattuna. Yksi hienous ovat rationaaliluvut.Niiden ansiosta lukuja voi käsitellä mielivaltaisentarkasti ilman pyöristysvirheitä. Esimerkiksijakolaskusta (/ 4 3) saadaan tulokseksi rationaaliluku4/3 eikä pyöristettyä liukulukua. Luvuista mainittakoonmyös, että ne voivat olla mielivaltaisen suuria. LisäksiCommon Lisp tukee kompleksilukuja.Perinteisesti ohjelmointikielissä merkkijono ei todellisuudessaole merkkien jono vaan lukujono. Luvutvain tulkitaan merkkien koodeiksi jonkin merkistökoodauksenavulla. Common Lispissä myös merkki on omatietotyyppinsä, jolla on oma syntaksinsa. Ohjelmoijankannalta merkki ei ole sidoksissa sen tekniseen toteu-palauttavat arvon. Tämätustapaan tietokoneella. Nykyaiko,ominaisuus kytkeytyy sujuvasti We were not out to win over the kana Common Lispin toteutuksetfunktionaaliseen ohjelmointiin, ” Lisp programmers; we were after noudattavat Unicode-merkistöä jakoska palautettuja arvoja voi hyödyntääthe C++ programmers. We managedsen koodaustapoja.tehokkaammin.Common Lispin merkkijono onto drag a lot of them about halfway toCommon Lisp on myös ohjelmoitavaohjelmointikieli, mikä tar-jonka kaikki elementit ovat merk-vektori eli yksiulotteinen taulukko,Lisp.” – Guy Steele, yksi Java-kielenkoittaa, että kieltä itseään voi muokata.Ohjelmoija voi lisätä kieleenuusia ominaisuuksia ja syntaktisiarakenteita.määritelmän kirjoittajistalähde: http://people.csail.mit.edu/gregs/ll1-discussarchive-html/msg04045.htmkejä.Tyyppijärjestelmässä merkkijonoon vain taulukon erikoistapaus,ja sitä voi käsitellä samoillafunktioilla kuin taulukoitakin.Nykyaikana on varsin tavallista, että funktiot ovatSulkeiden sekaanLeikillisesti on sanottu LISP-lyhenteen tarkoittavan ”lotsof irritating superfluous parentheses” tai muuta vastaavaa.Päällisin puolin Lisp-ohjelmassa näyttääkin olevanhyvin paljon sulkeita. Leikillisestä selityksestä huolimattasulkeet eivät ole liiallisia eivätkä tarpeettomia.Lispin merkittävin syntaktinen ominaisuus on se,että ohjelmakoodi muodostuu kielen omista tietorakenteista.Sulkeita on paljon, koska niiden avulla merkitääntietotyyppi nimeltä lista. Listoja käytetään paitsi tietorakenteenamutta myös funktioiden, makrojen ja muidenensiluokkaisia. Ominaisuus tarkoittaa esimerkiksi sitä,että funktioita voi luoda ohjelman suorituksen aikana,tallentaa muuttujiin tai muihin tietorakenteisiin ja antaaargumentiksi toisille funktioille. Tämä ominaisuustoteutettiin ensimmäisenä nimenomaan Lispissä, ja seon mukana myös Common Lispissä. Standardikirjastoonkuuluu useita niin sanottuja korkeamman kertaluvunfunktioita, jotka tarvitsevat argumentikseen toisen funktion.Kun funktio määritellään, se muodostaa sulkeuman(engl. closure), jossa voi viitata sen ulkopuolella määriteltyihinmuuttujiin.19


Symbolics 3600 -Lisp-koneen näppäimistö.Virta on tiedonsiirtoon tarkoitettu tietotyyppi. Virrastavoidaan lukea tietoa tai siihen voidaan kirjoittaatietoa. Virran elementit ovat merkkejä (merkkivirta) taitavuja (binaarivirta). Tiedostojen lukeminen ja kirjoittaminenon käytännössä virtojen käsittelyä. Tiedosto voidaanavata esimerkiksi merkkivirraksi ja syntyneestävirtaobjektista voidaan lukea merkkejä. Myös verkkoliikenneja tekstipohjainen viestintä ohjelman käyttäjänkanssa tapahtuvat virtojen avulla. Ohjelmoija voi luodavirtoja omiinkin tarkoituksiinsa, esimerkiksi ohjelmansisäiseen viestintään.Muita tietotyyppien erikoisuuksia ovat tiedostopolutja symbolit. Tiedostopolku sisältää tietoa, joka nimeäätiedoston tiedostojärjestelmässä. Symboleja puolestaankäytetään yksilöllisinä tunnisteina ja niminä. Ne nimeävätesimerkiksi muuttujia, funktioita, makroja, tiloja jaluokkia. Symboleja voi luoda omiin tarkoituksiinkin, yksilölliseksitunnisteeksi mille tahansa.Valikoituja ominaisuuksiaMonessa mielessä Common Lisp on hyvin samanlainenkuin nykyaikaiset korkeatasoiset dynaamiset kielet. Lisponkin ollut innoittajana monille kielille. Samankaltaisuudestahuolimatta erityispiirteitäkin on. Esittelen seuraavaksiominaisuuksia, jotka ovat joko itsessään harvinaisuuksiatai joiden toteutus on poikkeuksellinen.MakrotMakrot ovat niin sanottuja metaohjelmia, koska ne tuottavatohjelmakoodia ohjelmallisesti. Niiden avulla luodaansyntaktisia abstraktioita eli muokataan itse ohjelmointikieltä.Makrot ovat kiinteä osa Common Lispiä,ja monet kielen valmiista ominaisuuksista on toteutettumakrojen avulla. Ohjelmoija voi määritellä niitä myösitse. Jos metaohjelmointia ei ole ennen harrastanut, voiolla aluksi hankalaa ymmärtää makron ja funktion eroa.Lispissä molemmat nimittäin näyttävät samalta.Funktiot toimivat ohjelman suorituksen aikana. Neniputtavat ohjelmakoodia yhteen, suorittavat määrätyntehtävän ja palauttavat jonkin arvon. Makrot puolestaanmuokkaavat ohjelmakoodia toisenlaiseksi. Makro tuottaaohjelmakoodia ennen kuin ohjelmaa varsinaisestivielä suoritetaan. Ohjelman suorituksen aikana ei makrojaenää ole, vaan ainoastaan niiden tuottama koodi.Esimerkin vuoksi luodaan yksinkertainen makro. Ohjelmoijakirjoittaa makron usein siksi, että hän haluaavälttää samankaltaisten rakenteiden toistuvaa kirjoittamista.Oletetaan, että seuraavanlainen rakenne toistuukoodissa usein:;; Asetetaan muuttujalle funktiokutsun arvo:(let ((arvo (funktiokutsu)));; Testataan, onko arvo tosi:(if arvo;; On tosi. Käytetään muuttujaa:(tee-jotain arvo);; Epätosi. Tehdään jotain muuta:(tee-muuta)))Edellisessä esimerkissä luodaan väliaikainen muuttujaja asetetaan sille funktiokutsun arvo. Sen jälkeenkäytetään arvoa if-rakenteen ehtolausekkeessa ja vielätoisessa if-rakenteen haarassa. Kun tällaista täytyy kirjoittaausein, toivoisi ehkä kieleen seuraavanlaista rakennetta:(if-let (arvo (funktiokutsu))(tee-jotain arvo)(tee-muuta))Näin väliaikainen muuttuja määriteltäisiin osana ehtolausekettaja ohjelmoija säästyisi hieman vähemmälläkirjoittamisella. Onneksi on helppoa kirjoittaa makro,joka luo kyseisen if-let-rakenteen. Common Lispissämakrot määritellään defmacro-nimisellä makrolla ja nekirjoitetaan tavallisella Common Lispillä. Kieli on siis samallaitsensä metakieli.(defmacro if-let ((muuttuja ehto)tosi &optional epätosi)`(let ((,muuttuja ,ehto))(if ,muuttuja ,tosi ,epätosi)))Olemme luoneet yksinkertaisen makron eli syntaktisenabstraktion. Uusi if-let-rakenne helpottaa ohjelmoijantyötä, koska se tuottaa ohjelmallisesti koodia, jonka20 2013.4


toistuva kirjoittaminen on tylsää.Vaikka edellä esitelty makro onkin käyttökelpoinen,se ei anna kattavaa kuvaa makrojen todellisista kyvyistä.Makrojen avulla voi lopulta luoda ikään kuin pienoiskielen,jota ohjelmoija sitten käyttää oman ohjelmansakirjoittamiseen. Tällä tavoin abstrahoidaan ensin kielensyntaksia ja käytetään sitten tätä korkeammantasoistakieltä varsinaisen ohjelman kirjoittamiseen.Edellä oleva ohjelma määrittelee funktion anna-tieto,joka palauttaa muuttujan tieto arvon. let-rakenteenavulla muuttuja on suljettu funktion sisään (sulkeuma),joten muuttujaan ei pääse käsiksi mistään muualta. Lisäksiohjelma määrittelee samannimisen sijoitusfunktionsetf-makroa varten, joten sen avulla tieto-muuttujaanvoi vaikuttaa.Kokeillaan ohjelmaa. Kutsutaan ensin anna-tietofunktiota,käytetään sitten setf-makroa ja sijoitusfunktiotaja kutsutaan lopuksi funktiota uudelleen.(anna-tieto) ; => "alkuperäinen arvo"(setf (anna-tieto) "uusi arvo")(anna-tieto) ; => "uusi arvo"Silmukkatyökalu LOOPMakrot antavat ohjelmoijalle mahdollisuuden kehittääkielen syntaksia, mutta myös monet Common Lispin valmiitominaisuudet on toteutettu makrojen avulla. Yksitällainen on loop, joka sisältää silmukoihin erikoistuneenohjauskielen.loop-makro lienee syntynyt ajatuksesta, että monimutkaistenkinsilmukkarakenteiden kirjoittamisen pitäisiolla mahdollisimman helppoa ja että usein toistuvarutiinikoodi pitää abstrahoida pois näkyvistä. loop-rakenteessaolevilla avainsanoilla säädellään silmukan toimintaa.Avainsanojen lomassa on tavallista Lisp-koodia.Seuraava esimerkki lienee suunnilleen ymmärrettävissä,vaikkei makroa ennestään tuntisikaan:(loop with käsitellyt = (make-array 10)for numero from 0 upto 9for rivi = (read-line virta nil)for käsitelty = (käsittele rivi numero)while rivicollect rivi into rivitdo (setf (elt käsitellyt numero) käsitelty)finally (return (values rivit käsitellyt)))Yleiskäyttöinen SETFsetf on yleiskäyttöinen sijoitusmakro. Makrolla voi asettaapaitsi muuttujalle uuden arvon myös monien muidentietorakenteiden ja tallennuspaikkojen arvon. setf onmyös laajennettavissa rajattomasti.Seuraavat esimerkit valottavatasiaa. ”Perustilanne on lausekkeessa(setf tieto 3), jossa asetetaanmuuttujan tieto arvoksi 3. Samaajatus on yleistetty muihinkin tietorakenteisiin.Esimerkiksi funktiokutsu(elt lista 0) palauttaalistan ensimmäisen elementin.Kyseistä elementtiä voi muokata lausekkeella (setf (eltlista 0) "uusi arvo"). Vastaavalla tavalla muokataan myöstaulukon tai hajautustaulun elementtejä sekä olioidensisältämiä arvoja. Ohjelmoija voi laajentaa setf-makroaluomalla uusia sijoitusfunktioita, kuten on tehty seuraavassaesimerkissä:(let ((tieto "alkuperäinen arvo"))(defun anna-tieto ()tieto)(defun (setf anna-tieto) (arvo)(setf tieto arvo)))Greenspun’s Tenth Rule ofProgramming: any sufficientlycomplicated C or Fortran programcontains an ad hoc informally-specifiedbug-ridden slow implementation of halfof Common Lisp.” – Philip Greenspunlähde: http://philip.greenspun.com/research/Tilat ja uudelleenkäynnistysOhjelmointikielissä on tavallisesti ominaisuus ja syntaktinenrakenne, jolla käsitellään virhetilanteita. Virheentai muun poikkeustilanteen havainnut ohjelman osa lähettääasiasta tiedon (tilan), ja ohjelman suoritus siirtyypaikkaan, jossa poikkeustilanne käsitellään. Rakenne onkaksiosainen: tiedon lähettäjä ja poikkeustilanteen käsittelijä.Common Lispin tilajärjestelmä on kolmeosainen, sillämukana on myös uudelleenkäynnistys. Mihin tahansaohjelman kohtaan voidaan määrittää uudelleenkäynnistyspisteitä.Kun tapahtuu virhe tai muu poikkeustilanne,siirrytään käsittelyosaan, mutta sieltä on mahdollista palatavoimassa oleviin uudelleenkäynnistyspisteisiin.Kolmeosaisen tilajärjestelmän avulla matalan tasonfunktion havaitsema virhetila voidaan lähettää ylemmäntason ohjelmalle käsiteltäväksi ja korjata jossakin muualla.Lopulta palataan matalan tason funktioon jatkamaanalkuperäistä tehtävää.OliotMyös Common Lispin oliojärjestelmässä on omat erityispiirteensä.Ne voivat vaatia hieman toisenlaista ajattelutapaa,jos on tottunut muihin oliokieliin. Oliojärjestelmämuodostuu luokista, olioista, yleisfunktioista ja niidenmetodeista.Luokilla voi olla useita rinnakkaisiakantaluokkia, ja luokatperivät ominaisuutensa kaikiltakantaluokiltaan (moniperintä).Luokkia ja niiden välisiä suhteitavoi muuttaa dynaamisesti ohjelmansuorituksen aikana.Metodit eivät ole sidoksissaluokkiin, vaan ne ryhmitelläänyleisfunktioiden alaisuuteen.Yleisfunktio kuvaa jotakin yleistä toimintoa, ja metoditpuolestaan toteuttavat kyseisen toiminnon joidenkinluokkien näkökulmasta. Kieli tukee monimetodeja, elimetodit voidaan valita useamman argumentin perusteella.Monimetodien luonnollinen seuraus on, että metodejaei ole järkevää sitoa yksittäiseen luokkaan. Siksi onkehitetty yleisfunktion käsite.Rakennetaan oliomalli ”kivi, sakset ja paperi” -peliin.Määritellään ensin esine-luokka ja sille alaluokiksi tarvittavatkolme esinettä. Sen jälkeen määritellään yleisfunktioottelu, joka saa argumenteiksi kaksi esine-oliota.Yleisfunktion metodit (7 kpl) erikoistuvat erilaisiin esinevaihtoehtoihin.21


;;; Luokat(defclass esine () nil)(defclass kivi (esine) nil)(defclass sakset (esine) nil)(defclass paperi (esine) nil);;; Yleisfunktio(defgeneric ottelu (esine1 esine2));;; Metodit(defmethod ottelu ((eka kivi) (toka sakset))(write-line "Kivi voittaa sakset."))(defmethod ottelu ((eka kivi) (toka paperi))(write-line "Kivi häviää paperille."))(defmethod ottelu ((eka sakset) (toka kivi))(write-line "Sakset häviää kivelle."))(defmethod ottelu ((eka sakset) (toka paperi))(write-line "Sakset voittaa paperin."))(defmethod ottelu ((eka paperi) (toka kivi))(write-line "Paperi voittaa kiven."))(defmethod ottelu ((eka paperi) (toka sakset))(write-line "Paperi häviää saksille."))(defmethod ottelu ((eka esine) (toka esine))(write-line "Tasapeli."))Testataan ohjelmaa kolmella esinevaihtoehdolla:(ottelu (make-instance 'kivi)(make-instance 'sakset))Kivi voittaa sakset.(ottelu (make-instance 'paperi)(make-instance 'sakset))Paperi häviää saksille.(ottelu (make-instance 'kivi)(make-instance 'kivi))Tasapeli.Metodeja ja niiden palauttamia arvoja on mahdollistayhdistää monilla eri tavoilla. On olemassa esimerkiksibefore-, after- ja around-metodit, jotka suoritetaan ennenvarsinaisia metodeja, niiden jälkeen tai niiden ympärillä.Lisätään ”kivi, sakset ja paperi” -peliin yksi yhteinenaround-metodi, joka kertoo ottelun alkamisestaja päättymisestä.(defmethod ottelu :around ((eka esine)(toka esine))(write-line "Ottelu alkaa!");; Suoritetaan varsinaiset metodit:(call-next-method)(write-line "Ottelu päättyi!"))Nyt yleisfunktion kutsuminen tulostaa esimerkiksiseuraavan:Ottelu alkaa!Sakset voittaa paperin.Ottelu päättyi!Määritelmästä toteutuksiinCommon Lisp on kielen määritelmä eli vain tekstiä, jokakuvaa kielen ominaisuudet. Määritelmän perusteella onkuitenkin tehty useita tietokoneohjelmia, jotka toteuttavatkielen ja tarjoavat suoritusympäristön ohjelmille.Mikään toteutuksista ei ole virallinen, sillä virallista kehittäjätahoaei ole.Kielen toteutukset eroavat hieman toisistaan, koskamääritelmä antaa vapautta. Eroja on esimerkiksi siinä,mihin muotoon ohjelmat käännetään. Yksi toteutuskääntää ohjelmat konekielelle ja toinen puolestaan tavukoodiksi.Myös Unix-tyyppisten skriptiohjelmien kirjoittaminenvoi olla mahdollista. Seuraava skriptiesimerkkihyödyntää SBCL-nimistä toteutusta:#!/usr/bin/sbcl --script(write-line "Terveisiä Lisp-ympäristöstä!")Toteutukset tarjoavat myös toisistaan poikkeavia lisäominaisuuksia.Kielen määritelmä ei estä tarjoamastaenemmän kuin vaadittavat toiminnot, ja toisaalta määritelmästäpuuttuukin eräitä tärkeitä nykyaikana tarvittaviaominaisuuksia. Määritelmästä puuttuu esimerkiksiverkkoliikenne, prosessin sisäiset säikeet ja rajapintaC-kielisten ohjelmakirjastojen käyttöön. Nämä kaikki sisältyvätsuosituimpiin toteutuksiin.Toteutuskohtaisten lisäominaisuuksien hyödyntäminentarkoittaa samalla sitä, että ohjelma toimii vainkyseisessä toteutuksessa. On kuitenkin olemassa ohjelmakirjastoja,jotka piilottavat toteutuskohtaiset erotyleisen ohjelmointirajapinnan taakse. Niiden avulla voikirjoittaa ohjelmia, jotka ovat siirrettävissä toteutuksestatoiseen.Ohjelmointi Common Lisp -kielellä alkaa siitä, ettähankitaan jokin kielen toteutus ja asennetaan se tietokoneelle.On vaikeaa neuvoa, mikä toteutus kenenkin pitäisivalita, mutta aluksi lienee järkevintä turvautua suosituimpiin.Vapaista avoimen lähdekoodin periaatteellakehitettävistä toteutuksista selvästi suosituin on SteelBank Common Lisp (lyh. SBCL). Sen jälkeen tulevat ClozureCommon Lisp (CCL) ja GNU CLISP. Kaupallisia toteutuksiaovat puolestaan LispWorks ja Allegro CommonLisp (ACL).Ensimmäiset suljesulkeiset?Common Lispin opetteluun on olemassa hyviä oppaitamutta valitettavasti ei suomenkielisenä. Suositeltavaopas on Peter Seibelin ”Practical Common Lisp” (2005),joka esittelee kielen ominaisuuksia käytännönläheisesti.Kirja on saatavana painettuna, mutta se on myös vapaastiluettavissa internetistä. Paljon kehuja on saanut myösConrad Barskin ”Land of Lisp” (2010), joka opettaa kieltähauskalla tavalla peliohjelmoinnin kautta. Hakuteokseksiohjelmoija tarvitsee tietenkin myös itse kielenmääritelmän. Se on löydettävissä internetistä nimellä”Common Lisp HyperSpec”.Mielekäs Lisp-ohjelmien kirjoittaminen vaatii muokkausohjelmalta,tekstieditorilta, hieman enemmän kuinuseimmat muut ohjelmointikielet. Ohjelmat kyllä ovattavallisia tekstitiedostoja, mutta niiden kirjoittaminenon vaivalloista, jos editori ei lainkaan ymmärrä Lispkoodia.Oikeanlainen koodirivien sisentäminen on hyvinmonitasoista, eivätkä tavalliset sarkainkohdat riitä. Siksikäytännössä vähimmäisvaatimuksena on, että editoriosaa sisentää koodirivejä automaattisesti oikealla tavalla.Hyvät editorit myös tunnistavat Lispin lista- ja muutrakenteet ja sisältävät toimintoja niiden käsittelyyn.Vapaiden ohjelmistojen joukossa kehittynein ja suosituinLisp-kehitysympäristö on GNU Emacs -tekstieditori.Editori jo itsessäänkin on suurimmaksi osaksi toteutettuLispin murteella, Emacs Lispillä, mutta se sopii käytet-22 2013.4


GNU Emacs ja Slime – vapaa kehitysympäristö Common Lispille.täväksi muidenkin murteiden kanssa. Kun Emacsiinasentaa Slime-laajennoksen, muodostuusiitä lähes ihanteellinen Common Lispin kehitysympäristö.Koodia voi suorittaa ja testata joustavastisitä mukaa, kun sitä syntyy. KaupallistenCommon Lisp -toteutusten mukana saattaa tullaoma editorinsa ja kehitysympäristönsä.Lisp-yhteisö kokoontuu ircissä Freenodeverkonkanavalla #lisp ja Usenetin uutisryhmässäcomp.lang.lisp. Kummassakin on läsnälahjakkaita ohjelmoijia, jotka tuntevat CommonLispin läpikotaisin. Lisäksi on olemassa LispForum,nettiselaimella käytettävä keskustelualue,josta voi saada apua Lisp-taipaleella. Kaikkeintärkeintä on tietysti oma tutkimisen halu ja kokeileminen.Jos tämän artikkelin kirjoittajalta kysytään,Common Lispiä ei kannata jättää pelkäksi kokeiluksi,sillä se on paljon muutakin kuin eksoottinenkuriositeetti valtakielten joukossa. MielestäniCommon Lispissä ja sen toteutuksissayhdistyvät ihanteellisella tavalla matalatasoistenstaattisten kielten suoritusteho ja korkeatasoistendynaamisten kielten ilmaisuvoima. Voikoparempaa olla?Kirjallisuutta• ANSI Common Lisp -standardi eli kielen määritelmä:http://www.lispworks.com/documentation/HyperSpec/Front/index.htm• Barski, Conrad 2010: Land of Lisp.http://landoflisp.com/• Graham, Paul 1993: On Lisp.http://www.paulgraham.com/onlisp.html• McCarthy, John 1979: History of Lisp.http://www-formal.stanford.edu/jmc/history/lisp/lisp.html• Seibel, Peter 2005: Practical Common Lisp. Apress.http://www.gigamonkeys.com/book/Suosittuja toteutuksia• Allegro Common Lisp:http://www.franz.com/products/allegro-common-lisp/• Clozure Common Lisp:http://ccl.clozure.com/• GNU CLISP:http://www.clisp.org/• LispWorks:http://www.lispworks.com/• Steel Bank Common Lisp:http://www.sbcl.org/Muuta hyödyllistä• Common Lisp -projekteja:http://common-lisp.net/• Common Lisp -wiki:http://www.cliki.net/• Gnu Emacs -tekstieditori:http://www.gnu.org/software/emacs/• LispForum:http://www.lispforum.com/• Quicklisp, ohjelmakirjastojen hallintaan:http://www.quicklisp.org/23


KoodiOpenGL-ohjelmointi:teksturointi ja valaistus3D-ohjelmoinnissakin on välillä heittäydyttävä pinnalliseksija kiinnitettävä huomio pelkkään ulkokuoreen. Sarjan tässäosassa herätämme kappaleet uuteen loistoon.Teksti: Mikko Rasa Kuva: Mikko Rasa, Mitol BerschewskyTeksturointiTodellisessa maailmassa harva pinta ontäysin tasainen ja yksivärinen. Lähimmäksipääsevät ehkä laboratoriot ja sairaalat,joiden on tarkoituskin olla steriilejä. Koskakolmiulotteisella tietokonegrafiikallajäljitellään usein todellista maailmaa, onpintoihin saatava eloa jollain tavalla. Tapaakutsutaan teksturoinniksi.Yksinkertaisimmillaan tekstuuri onkolmiulotteisen kappaleen pinnalle liimattukuva. Sen sisältö voi olla mitä tahansa,esimerkiksi sanomalehden sivu,tiiliseinä tai puunrungon kaarna. Tekstuurinkuvapisteistä käytetään termiätekseli (engl. texel, TEXture ELement).Monissa ihmisen tekemissä pinnoissaesiintyy toistuvia kuvioita. Tällaisiaovat vaikkapa seinäpaperi tai katukiveys.Koko seinän tai kadun tekeminen yhtenätekstuurina vaatisi valtavan määrän tekseleitä,eikä tekstuureja mahtuisi muistiinkovin monta. Mieluummin kannattaaottaa halutusta pinnasta vain pieni osaja monistaa sitä. Osien täytyy kuitenkinsopia yhteen, jotta ne vierekkäin ja päällekkäinsijoitettuna muodostaisivat saumattomanpinnan.OpenGL tarjoaa kaksi eri algoritmiatoistuvien pintakuvioiden luomiseen.Oletusasetuksena on tekstuurin toistaminensellaisenaan peräkkäin. Vaihtoehtonaon peilata joka toinen toistokerta,jolloin symmetrisestä kuviosta tarvitseepitää muistissa vain puolet. Toiston voikytkeä myös kokonaan pois päältä. Tällävoi välttää reunoilla esiintyvät artifaktittekstuurissa, jota ei ole tarkoitettu toistuvaksi.Luonnossa ei esiinny täsmällistä toistuvuutta,joten tietokonegrafiikassa vaaranaon, että pinta näyttää keinotekoiselta.Tekstuuri on hyvä tehdä riittävänsuureksi, ja kovin voimakkaita yksityiskohtiaon syytä välttää. On myös mahdollistakäyttää moniteksturointia laajaalaisenvaihtelun lisäämiseksi.Tekstuurin tekselit harvemmin kohdistuvattäsmälleen näytön pikseleihin.Yleensä pinta on vinossa tai tekselit ovaterikokoisia kuin pikselit. Näytteistettäessävoidaan valita lähin tekseli ja käyttääsen väriarvoa sellaisenaan. Lopputuloksenaon laatikoitunut kuva tai mössöä,riippuen siitä, suurennetaanko vai pienennetäänkötekstuuria.Parempi lopputulos saadaan lineaarisellasuodatuksella (engl. linear filtering).Siinä valitaan tekstuurikoordinaattienilmaisemaa pistettä ympäröivättekselit ja interpoloidaan niiden välillä.Tässäkin tapauksessa voimakkaasti pienennettytekstuuri puuroutuu, koska joitakintekseleitä jätetään välistä.Laadukkain tapa tekstuurin pienentämiseenon mipmäppäys (engl. mipmapping).Tekstuurista lasketaan etukäteenpuolet pienempiä versioita aina yhdentekselin kokoon saakka. Näytteistettäessävalitaan lähimmäksi osuva suurempi japienempi taso, poimitaan niistä väriarvolineaarisella suodatuksella ja lopuksi interpoloidaanlineaarisesti näiden välillä.Teksturoitu pinta on paremman näköinenkuin tasavärinen, mutta sekin onEi toistoa: tekstuurin reunimmaiset tekselit venyvätloputtomiin.Normaali toisto: trolliarmeija hyökkää!Peilattu toisto: nyt niitä kasvaa jo katossakin.24 2013.4


Jos teksturoitua pintaa katsellaan lähes pinnansuuntaisesti, suodatuslogiikka valitseeliian pienen mipmap-tason ja seurauksena onsumentunut tekstuuri. Tähän auttaa anisotrooppinensuodatus. Se muistuttaa kaksoislineaaristasuodatusta, mutta neljän tekselinmuodostaman neliön sijaan käytetään jopa16×2 tekselin suorakaidetta. Anisotrooppinensuodatus ei ole mukana vielä OpenGL 3.3:nydinmäärittelyssä vaan löytyy laajennoksestaGL_EXT_texture_filter_anisotropic.muodoltaan tasainen. Tämän huomaaerityisen selvästi, jos mukana on pistemäisiävalonlähteitä tai heijastuksia. Viimeisenäsilauksena pinnasta pitäisi saadaepätasaisen näköinen, mutta pientenyksityiskohtien tekeminen kolmioverkollanostaisi kulmapisteiden määrää liikaa.Muhkuraisen pinnan illuusion voi luodamyös siihen tarkoitetulla tekstuurilla,niin sanotulla normaalikartalla (engl.normalmap). Sitä käytetään pinnan normaalinmuunteluun kulmapisteiden välillä,jolloin valo heijastuu eri kohdista eritavalla.Yleisesti käytetyt kuvaformaatit pystyvättallentamaan väriarvot ainoastaan8-bittisinä kokonaislukuina, ja normaalikarttaantarvitaan liukulukuja –1:n ja1:n väliltä. Ongelma ratkaistaan skaalaamallanormaalikartan arvot 0:n ja 255:nvälille tekstuuriin tallennusta vartenja muuntamalla ne shaderissa takaisinvektorimuotoon. Yleinen käytäntö on,että positiivinen Z-koordinaatti osoittaaulospäin pinnasta, jolloin neutraali vektorisaa väriarvon #8080FF. Koska normaalitusein poikkeavat neutraalista vainvähän, normaalikartoista tulee sinisävytteisiä.Tekstuurin ei välttämättä tarvitse ollakaksiulotteinen. Yksiulotteista tekstuuria(yksittäinen rivi tekseleitä) voi käyttääesimerkiksi väriliukujen tekemiseen.Kolmiulotteisia tekstuureja käytetääntilavuudellisiin (engl. volumetric) tehosteisiintai animoituihin pintoihin.Eksoottisempi tekstuurityyppi onkuutiotekstuuri. Se on ikään kuin kaksijakolmiulotteisen tekstuurin välimuoto.Kuutiotekstuuri koostuu kuudestakaksiulotteisesta tekstuurista, jotka onsijoitettu kuution sivuille. Tekstuurikoordinaatteinakäytetään kolmiulotteistavektoria, ja näytteistys tapahtuu kuutionpinnalta vektorin osoittamasta suunnasta.Kuutiotekstuureita käytetään yleisestiympäristökarttojen tai taivaan toteuttamiseen.OpenGL:n tekstuurirajapintaTekstuurit noudattavat OpenGL:n normaaliaoliorajapintaa (ks. edellinen numero).OpenGL tukee yksi-, kaksi- jakolmiulotteisia tekstuureita sekä kuutiotekstuureja.Ne kaikki käyttävät yhteistäoliotyyppiä Texture mutta eri sidontapisteitä.Ensimmäinen sidonta määritteleetekstuurin tyypin, eikä sitä voi muuttaamyöhemmin.Jotta tekstuurista olisi mitään iloa, onsiihen ladattava kuva. OpenGL ei tarjoarajapintaa kuvatiedostojen lataamiseen,vaan pikselidata on saatava tiedostostamuistiin muulla tavoin. Kuvanlatauskirjastojenkäyttö ei kuitenkaan kuulutämän artikkelin aihepiiriin. Toisaaltakuvatiedostojen sijaan voidaan laskeavaikkapa fraktaaleja suoraan muistissaoleviin puskureihin.Kun kuva on muistissa, se ladataantekstuuriin funktiolla glTexImageD,jossa on ulottuvuuksien määrä. Samallamääritellään tekstuurin koko ja väriformaatti.Tekstuurin sisäinen säilytysformaattija syötettävän datan formaattiannetaan erikseen. Tämä säästää vaivaaeksoottisempien formaattien kanssa,koska ohjelman ei tarvitse käsitellä esimerkiksi11-bittisiä liukulukuja.Level-parametria käytetään mipmaptasojenlataamiseen. Täysikokoinen kuvaon taso 0, ja jokainen sitä korkeampi tasoon puolet edellistä pienempi. Puolikkaattekselit pyöristetään alaspäin. Viimeisellätasolla tekstuurin koko kaikissa suunnissaon yksi tekseli. Jos jonkin tasonkoko on väärä, tekstuuria ei voi käyttää.Jos data-osoitin on null, tekstuurillevarataan tilaa, mutta sen sisältö on määrittelemätön.Näin voidaan luoda esimerkiksikuvapuskurina käytettävä tekstuurieikä tarvitse turhaan varata suurta muistialuetta,joka heti perään vapautettaisiin.Kuutiotekstuurille ei ole erillistä funktiota,vaan kukin sivu ladataan erikseenkaksiulotteisena tekstuurina. Sidontapisteenäkäytetään tällöin yhtä kuudesta vakiosta,jotka kuvaavat kuution sivuja.Tekstuurin suodatus-, toisto- jamuut asetukset asetetaan funktioillaglTexParameteri ja glTexParameterf.Erona näillä on asetettavan parametrintyyppi. Suodatusparametreihin onkiinnitettävä erityistä huomiota, koskaGL_MIN_FILTER-parametrin oletusarvoon GL_NEAREST_MIPMAP_LINEAR eikämipmapeja käyttävä tekstuuri näy, elleikaikkia mipmap-tasoja ole määritelty.Moniteksturointia varten on olemassafunktio glActiveTexture, joka asettaakäytettävän teksturointiyksikön. Parametrinaannetaan tekstuuriyksikköäkuvaava symbolinen vakio. On tärkeäähuomioida, että kaikki tekstuurioperaatiotkohdistuvat aktiiviseen tekstuuriyksikköön.Siinä piilee sudenkuoppa, sillä yksinkertaistateksturointia käyttävä koodisaattaa toimia väärin, jos moniteksturoivaosuus jättää aktiiviseksi muun kuinensimmäisen yksikön.Tekstuuriolion rakentaminen onvasta puoli voittoa. Jotta kuva näkyisikappaleen pinnalla, on shaderi saatavakäyttämään sitä. Koska tekstuureja voiolla käytössä useita samanaikaisesti, onKorkeuskartta, siitä tehty normaalikartta ja valaistu lopputulos.25


NEAREST-suodatuksella pikselit suurenevat terävärajaisiksi neliöiksi.Mipmapeilla voidaan hallita pienennetyn kuvanlaatua. Jokaisen tason voi halutessaan tehdäerikseen.LINEAR-suodatus toimii hyvin valokuvamaiselle materiaalille, mutta tässä tapauksessa siitä onenemmän haittaa kuin hyötyä.shaderille välitettävä tieto siitä, mitätekstuuria tai tekstuureja halutaan käyttää.Se onnistuu käyttämällä erityisiänäytteistäjätyyppejä, joita on kullekintekstuurityypille omansa. Esimerkiksikaksiulotteisen tekstuurin näytteistäjäon sampler2D. Näytteistäjien on oltavauniform-muuttujia. Isäntäohjelman puoleltaniihin asetetaan kokonaislukuarvo,joka kertoo käytettävän teksturointiyksikönjärjestysnumeron. Shaderin puolellanäytteistäjiä voi käyttää ainoastaan näytteistysfunktionparametrina.Tekstuuri on myös sijoitettava oikeinsuhteessa kappaleen muotoihin. Yleensäkappaleen kulmapisteille määritelläänetukäteen tekstuurikoordinaatit ja kulmapisteshaderivain välittää saamansasyötteen eteenpäin pikselishaderille. Onkuitenkin myös tilanteita, joissa kulmapisteshaderintäytyy muunnella tekstuurikoordinaattiatai jopa laskea se muidensyötteiden perusteella.Jokaiselle näytteistäjätyypille onvastaava näytteistysfunktio. Esimerkiksikaksiulotteiselle tekstuurille se ontexture2D. Näytteistysfunktion ensimmäinenparametri on näytteistettävätekstuuri ja toinen parametri tekstuurikoordinaattivektori.Kaikki näytteistysfunktiotpalauttavat nelikomponenttisenvektorin, joka sisältää RGBA-arvot. Komponentitovat normaalisti välillä nollastayhteen, mutta joillakin väriformaateillaon eri arvoalue. Mikäli tekstuurin määrittelyssäon puutteita, palautetaan vec4(0,0, 0, 1).ValaistusToinen realistisen grafiikan kulmakivi onvalaistus. Ilman sitä teksturoidutkin kappaleetnäyttävät latteilta ja muotoja onvaikeaa erottaa. Valaistuksen toteuttaminenon onneksi varsin yksinkertaista.Valonlähteitä on kahta eri päätyyppiä.Suunnattu valo (engl. directionallight) on niistä yksinkertaisempi. Se osuukaikkialle samassa suunnassa, joten laskutoimituksethelpottuvat huomattavasti.Yleisin esimerkki suunnatusta valostaon aurinko.Toinen päätyyppi on pistemäinen valo(engl. omnidirectional light, omni light),jolla on sijainti mutta ei suuntaa. Valaistuksenmuodostamiseksi on kullekinpisteelle laskettava erikseen valon tulosuunta.Esimerkiksi monet katulyhdytovat likimain pistemäisiä valonlähteitä.Jos pistemäinen ja suunnattu valo yhdistetään,saadaan spottivalo (engl. spotlight). Sillä on sekä sijainti että suunta jalisäksi myös valokeilan leveys. Hyvä esimerkkispottivalosta on taskulamppu.Valaistuslaskennan peruspalikka onvektorien pistetulo. Valaistuksen kirkkausriippuu valon tulosuunnan ja pinnannormaalin välisen kulman kosinista, jokaon yksikkövektoreilla sama kuin pistetulo.Yleensä käytetään pinnasta valonlähteeseenosoittavaa vektoria. Pistetulo onpositiivinen, kun pinta on valonlähdettäkohti. Negatiiviset tulokset muutetaannollaksi.Kuten monessa muussakin asiassa,myös valaistuksessa voidaan tehdä valintasuorituskyvyn ja ulkonäön välillä.Valaistuksen voimakkuuden laskeminenkulmapisteshaderissa ja interpolointipinnan yli tuottaa vain karkean likiarvonmutta on erittäin nopeaa. Tarkasti todellisuuttajäljittelevä valaistus vaatii paljonpikselikohtaista laskentaa. Sitä tarvitaansilloin, kun käytetään normaalikarttoja jaeräitä muita tehosteita.Vektorien interpolointi tapahtuukomponenteittain lineaarisesti. Mikäliinterpoloinnin päätepisteet poikkeavattoisistaan enemmän kuin aivan vähän,välivaiheet eivät pysy yksikköpituisina.Tämä aiheuttaa tummemman valaistuksenpintojen keskelle ja kirkkaammankulmapisteiden läheisyyteen. Vektorit onEnnen versiota 3.0 OpenGL:n kiinteässä toiminnallisuudessaoli tarjolla valaistusmalli. Seperustui verteksikohtaiseen valaistukseen jaoli siten varsin karkea, erityisesti valonlähteidenlähellä. Tämäkin ominaisuus jätettiin poismuun kiinteän laskennan mukana.siksi muistettava normalisoida ennen pistetulonottamista.Valaistusta laskettaessa on kiinnitettävähuomiota myös siihen, että laskutoimituksiinosallistuvat vektorit ovatsamassa koordinaatistossa. Tasaistenpintojen valaistukseen käytetään tavallisestikameran koordinaatistoa. Koskaesimerkiksi pelimaailman osien sijainniton käytännöllisintä ilmaista maailmankoordinaatistossa, on grafiikkamoottorinhuolehdittava koordinaatistomuunnoksesta,kun se syöttää valojen ominaisuuksiashadereille.Normaalikartat ovat hankalampi tapaus.Normaalit tallennetaan karttaansuhteessa kolmioverkon määräämiin pinnanmuotoihin,ja niiden muuntaminenkameran koordinaatistoon vaatisi paljonlaskentaa pikselishaderissa. Helpompaaonkin laskea valonlähteen suunta pinnankoordinaatistossa. Tämä voidaan tehdäjo kulmapisteshaderissa ja siten välttääkallista pikselikohtaista laskentaa. Kulmapisteilleon sitä varten lisättävä kaksitangenttia, jotka kertovat normaalikartanorientaation pinnalla.Yksittäisten valolähteiden lisäksi lähesjokaisessa ympäristössä on myös hajavaloa(engl. ambient light), jota tuleekaikista suunnista. Se esitetään kaikkienpisteiden valaistukseen lisättävänä vakioarvona.Ulkotiloissa voi parempaanlopputulokseen päästä käyttämällä puolipallovaloa(engl. hemispherical light,hemi light), joka on ikään kuin suunnatunvalon ja hajavalon välimuoto. Valonlähteenja normaalin välinen pistetulolasketaan kuten suunnatulle valolle, muttatulos skaalataan niin, että vasta täysinvalonlähteestä poispäin osoittava pintaon täysin pimennossa.26 2013.4


struct Vertex{float x, y, z;float nx, ny, nz;float u, v;float tx, ty, tz;float bx, by, bz;};Listaus 1: Kulmapistestruktuuri, jossa ovatteksturointiin tarvittavat muuttujat.EsimerkkiohjelmaEsimerkkiohjelmassa on tällä kertaa runsaastiuusia asioita, joten käymme tässäläpi vain pääkohdat.OpenGL:n olioiden hallinta käsipelilläkäy äkkiä työlääksi. Hätiin tulevat C++:nluokat ja RAII-periaate. Kun OpenGL-olioluodaan luokan konstruktorissa ja vapautetaandestruktorissa, voidaan niihinsoveltaa normaalia C++:n muistinhallintaa.Object-luokka kuvaa kolmiulotteistaesinettä ja pitää sisällään sen tarvitsematpuskurit. Rakentajalle annetaan parametrinataulukot vertekseistä ja indekseistä.Piirtokomentojen vähentämiseksi ja rajapintojenyksinkertaistamiseksi koko esinepiirretään yhtenä kolmioketjuna.Kulmapistestruktuuri on saanut uusiajäseniä teksturointia varten. U ja v ovattekstuurikoordinaatit, ja t-alkuisiin muuttujiintallennetaan pinnan tangentti jab-alkuisiin binormaali. Listauksessa 1 onint Shader::get_uniform_location(const string &name){map::iterator i = uniforms.find(name);if(i!=uniforms.end())return i->second;int loc = glGetUniformLocation(program_id, name.c_str());uniforms[name] = loc;return loc;}void Shader::set_uniform(const string &name, float x, float y, float z){int loc = get_uniform_location(name);if(loc>=0)glUniform3f(loc, x, y, z);}Listaus 2: Uniform-muuttujien käsittelyfunktiot.uusi struktuuri kokonaisuudessaan.Esineiden luominen on myös siirrettyomiin funktioihinsa, jotka ottavat parametreinaluotavan esineen mitat. Koskauseimpia esineitä ei ole mahdollistaesittää yhtenä kolmioketjuna, käytämmeprimitiivien uudelleenkäynnistystä (engl.primitive restart). Sen avulla tietty indeksivoidaan määritellä tarkoittamaanuuden samantyyppisen primitiivin aloittamista.Shader-luokka huolehtii shaderienkääntämisestä ja uniform-muuttujienasettamisesta. Rakentajalle annetaanverteksi- ja pikselishaderien lähdekooditmerkkijonoina. Jos käännöksessä tapahtuuvirhe, rakentaja heittää poikkeuksen.Listauksessa 2 on uniform-muuttujienkäsittelyyn käytettävät funktiot. Muuttujienarvoja joudutaan muuttamaan usein,joten GL-kutsujen vähentämiseksi säilytämmeniiden sijainnit paikallisesti.Jokaiselle eri uniform-tyypille tarvitaanoma asetusfunktionsa, joista on tilansäästämiseksi listattu tässä vain yksi.Ylikuormituksen ansiosta ne voivat ollasamannimisiä. Uniform-muuttujan asetuskohdistuu aina aktiiviseen shaderiin,joten shaderi on muistettava ottaa käyttöönensin.Texture-luokka on varsin yksinkertainen.Rakentajalle annetaan parametrinaLunttilappu OpenGL:n tekstuurirajapintaanFunktiotvoid glGenTextures(sizei n, uint *textures);void glBindTexture(enum target, uint texture);void glDeleteTextures(sizei n, const uint *textures);void glTexImage3D(enum target, int level, int internalformat, sizei width, sizei height, sizeidepth, int border, enum format, enum type, const void *data);void glTexImage2D(enum target, int level, int internalformat, sizei width, sizei height, int border,enum format, enum type, const void *data);void glTexImage1D(enum target, int level, int internalformat, sizei width, int border, enumformat, enum type, const void *data);void TexParameteri(enum target, enum pname, int param);void TexParameterf(enum target, enum pname, float param);void glActiveTexture(enum texture);Tärkeimmät parametritGL_MIN_FILTERsuodatus pienennettäessä (minification)GL_MAG_FILTERsuodatus suurennettaessa (magnification)GL_WRAP_Sensimmäisen ulottuvuuden toistoGL_WRAP_Ttoisen ulottuvuuden toistoGL_WRAP_Rkolmannen ulottuvuuden toistoSuodattimetGL_NEARESTei suodatustaGL_LINEARlineaarinen suodatusGL_LINEAR_MIPMAP_LINEARlineaarinen suodatus mipmapeillaToistotavatGL_CLAMP_TO_EDGEei toistoa, reunimmaiset tekselit jatkuvatäärettömyyteenGL_REPEATnormaali toistoGL_MIRRORED_REPEATpeilattu toistoSidontapisteetGL_TEXTURE_1Dyksiulotteinen tekstuuriGL_TEXTURE_2Dkaksiulotteinen tekstuuriGL_TEXTURE_3Dkolmiulotteinen tekstuuriGL_TEXTURE_CUBE_MAPkuutiotekstuuriVäriformaatitGL_REDyksi värikanava, ainoastaan R-komponenttikäytössäGL_RGkaksi värikanavaa, R- ja G-komponentitkäytössäGL_RGBkolme värikanavaaGL_RGBAneljä värikanavaaYllä olevat formaatit eivät määrittele bittisyvyyttä,vaan toteutus valitsee sopivan.Bittisyvyyden voi määritellä lisäämällä senvakion perään:GL_fmt88 bittiä per komponenttiGL_fmt1616 bittiä per komponenttiGL_fmt16F16 bittiä per komponentti, liukulukuGL_fmt32F32 bittiä per komponentti, liukuluku27


dereihin peiliheijastukset.• Esimerkkishaderin valonlähde onsuunnattu. Yritä tehdä siitä pistemäinentai kohdevalo.Teorialisä: tekstuurien näytteistysKuvakaappaus esimerkkiohjelmasta.void main(){gl_Position = projection*modelview*in_position;mat3 normal_matrix = mat3(modelview);mat3 tbn_matrix = normal_matrix*mat3(in_tangent, in_binormal, in_normal);texcoord = in_texcoord;tbn_light = light_direction*tbn_matrix;}Listaus 3: Normaalikarttaa käyttävä kulmapisteshaderi.void main(){vec4 color = texture2D(texture, texcoord);vec3 normal = texture2D(normalmap, texcoord).rgb*2.0-1.0;float intensity = max(dot(normalize(tbn_light), normal), 0.0);out_color = vec4(color.rgb*(0.4+intensity*0.6), color.a);}Listaus 4: Normaalikarttaa käyttävä pikselishaderi.ladattavan kuvatiedoston nimi. Sen lisäksiluokassa on ainoastaan sidontafunktio.Myös vektorit ja matriisit ansaitsevatomat apuluokkansa. Pärjäämmevarsin maltillisella määrällä operaatioita.Matriisiluokka sisältää myös joukonstaattisia funktioita perusmuunnostenluomiseen. Kertolaskuoperaattorilla ketjuttamallaniistä voi kasata monimutkaisempiamuunnoksia.Listauksissa 3 ja 4 on normaalikarttaakäyttävän kulmapiste- ja pikselishaderinlähdekoodi. Tilan säästämiseksimuuttujien esittelyt on jätetty pois. Valonsuunnan muunnoksessa TBN-avaruudenmatriisi on poikkeuksellisesti oikeallapuolella, koska kyseessä on kohdeavaruudenmatriisi lähdeavaruudessa esitettynä.Pinnan normaalia ei välitetä shaderienvälisessä rajapinnassa, koskaTBN-avaruudessa neutraali normaali onvakio. Sen sijaan pikselishaderi lukeepikselikohtaisen normaalin tekstuuristaja skaalaa rgb-arvot takaisin oikeallearvoalueelle. Max-funktio estää valaistusarvonmuuttumisen negatiiviseksi, jospinta osoittaa poispäin valonlähteestä.Voimakkuuteen lisätään vielä vakioarvo,jotteivät varjon puolella olevat pinnat olisitäysin mustia.Tehtäviä ja haasteita:• Koeta tehdä lisää erilaisia esineitä.• Ota valokuvia tapetistasi, talosi seinästätai pihatiestä ja tee niistä tekstuureja.• Muuntele kameran reittiä esineidenympärillä ja laita esineet liikkumaan.• Esineiden luominen ohjelmakoodillaon pidemmän päälle hankalaa. Etsi jonkin3D-tiedostomuodon kuvaus ja yritäkirjoittaa sille latausfunktio, tai keksioma.• Joitakin esimerkkiohjelman mukanatulevia tekstuureja ei voi toistaa saumattomasti.Osaatko tehdä niistä (taijostain muusta kuvasta) saumattomia?• Lue seuraavalla sivulla oleva osio valaistuksenteoriasta ja koeta lisätä sha-Tekstuuri koostuu suorakulmaisesta taulukostatekseleitä, joihin viitataan tekstuurikoordinaateilla.OpenGL käyttäänormalisoituja tekstuurikoordinaatteja,eli koordinaatit ovat aina nollan ja yhdenvälillä. Jos tekstuurin koko on N tekseliä,yhden tekselin koko tekstuurikoordinaateissailmaistuna on 1/N.Näytteistettävää tekseliä valittaessatekselin sijainti määräytyy sen keskipisteenmukaan. Ilman suodatusta valitaanyksinkertaisesti lähin tekseli. Lineaarisessasuodatuksessa käytetään kullakinakselilla sekä edellistä että seuraavaatekseliä ja lasketaan interpolaatioarvosen mukaan, missä kohtaa tekselien välilläollaan.Ennen näytteistystä tekstuurikoordinaatistavähennetään lähin pienempikokonaisluku. Sen seurauksena tekstuuritoistuu loputtomiin. Tämä vaikuttaamyös lähimpien tekselien valintaan li-40 % a60 %20 % 80 %c20 % 80 %40 % ab60 %cdbdtekselin keskipistetekselin näytteistyspiste keskipistex = (0.8·0.6)a + (0.2·0.6)bnäytteistyspiste+ (0.8·0.4)c + (0.2·0.4)cLineaarinen x = (0.8·0.6)a suodatus kaksiulotteisessa + (0.2·0.6)b tekstuurissa.+ (0.8·0.4)c + (0.2·0.4)c28 2013.4


neaarisessa interpolaatiossa, jos koordinaattion lähellä tekstuurin reunaa.Mikäli vastakkaisessa reunassa olevatekseli on erivärinen, syntyy reunaan näkyviäartifakteja.Toistoparametrilla voidaan vaikuttaatekstuurikoordinaattiin ennen näytteistystä.Normaali toisto päästää koordinaatinläpi sellaisenaan. Peilattu toistotoimii muuten samoin, mutta parittomillakokonaisluvuilla koordinaatti käännetäänympäri vähentämällä se yhdestä.Toistuminen voidaan estää rajoittamallakoordinaatin arvo välille 0.5/N – (N–0.5)/N. Oudolta vaikuttavat rajat estävätaiemmin mainittujen artifaktien syntymisen.Teorialisä: valaistusmallitTodellisessa maailmassa valo koostuu fotoneista,joita valonlähde tuottaa tietynmäärän aikayksikköä kohti. Ne heijastuvatpinnasta toiseen, kunnes lopulta päätyvätsilmään ja tuottavat valoaistimuksen.Suurempi määrä fotoneita aistitaankirkkaampana valona. Tummat pinnatimevät osan fotoneista.Heijastuneen fotonin suunta riippuupinnan mikroskooppisesta rakenteesta.Tasaiseltakin vaikuttava pinta voiatomien tasolla olla rosoinen, jolloin fotonitheijastuvat satunnaisiin suuntiin.Tätä kutsutaan diffuusiksi heijastukseksi(engl. diffuse reflection). Esimerkistä käykäsittelemätön puupinta tai puuvillakangas.Erittäin tasaisesta pinnasta, kutenvaikkapa kiillotetusta metallista tai peililasista,lähes kaikki fotonit heijastuvatsamaan suuntaan. Näin syntyy spekulaarinenheijastus (engl. specular reflection).Monissa materiaaleissa heijastuskuvioon jotain tältä väliltä. Himmeämetallipinta ja lakattu puu heijastavatvalonlähteet kirkkaina pisteinä tai läis-Hajaheijastus: valonsäteet heijastuvat satunnaisiinsuuntiin.Peiliheijastus: valonsäteet heijastuvat samaansuuntaan.kinä, mutta peilikuvaansa niistä ei näe.Joissakin tapauksissa heijastuskuvio riippuuvalon tulosuunnasta ja materiaalinsanotaan olevan anisotrooppinen. Harjattumetalli on tällainen materiaali. Onjopa mahdollista luoda aivan muunlaisiapintarakenteita, kuten valon takaisin tulosuuntaansaheijastava heijastin.Jos pinta on vinossa valonlähteensuuntaan nähden, sama valomäärä leviäälaajemmalle alueelle. Kääntäen pintaanosuva valomäärä pinta-alaa kohden ja sitenpinnan aistittu kirkkaus vähenee. Josfotonikimpun leveys on l ja valaistu aluea, valaistuksen suhteellinen voimakkuuson l/a. Täydentämällä kuvio kolmioksi jamerkkaamalla valon suunnan ja pinnannormaalin välistä kulmaa α:lla nähdään,että l/a = cosα, joka saadaan näppärästilaskettua vektorien pistetulona.Reaaliaikaisessa kolmiulotteisessagrafiikassa on viime kädessä kyse huijauksesta.Tehokkaimmankaan näytönohjaimenlaskentateho ei riitä sellaisiinmonimutkaisiin integraaleihin, joita todellisuudenpikkutarkka simulointi vaatii,ainakaan jos samalla halutaan myössulavaa liikettä. Vuosikymmenten varrellaon kehitetty useita valaistusmalleja,jotka tuottavat kelvollisen arvion valaistuksestaolematta liian vaativia.Valon suunta pintaan nähden on harvoinvakio. Pinta voi olla kaareva, valonlähdepistemäinen tai molempia. Ensimmäisetvalaistusmallit laskivat kappaleenjokaiselle tasopinnalle yhden valaistusarvon,jolloin lopputulos oli varsin kulmikkaannäköinen. Henri Gouraud keksilaskea valaistusarvot verteksikohtaisestija interpoloida niitä pintojen yli. Näinsaadaan piilotettua tasopintojen reunat,mutta näkyviä artifakteja esiintyy siltimonissa tilanteissa.Bui Tuong Phongin kehittämässä, hänenmukaansa nimetyssä Phong-mallissavalaistus jaetaan erilliseen diffuusiin jaspekulaariseen komponenttiin. Diffuusinvalaistuksen voimakkuus lasketaan pinnannormaalin ja valon suunnan pistetulona.Spekulaarista komponenttia vartenlasketaan ensin heijastuvan valon suuntaja muodostetaan pistetulo sen ja katselusuunnanvälillä. Saatu arvo korotetaanpotenssiin suuntautuneen heijastuskuvionsimuloimiseksi. Suurempi eksponenttisaa aikaan pienemmän heijastuksen javaikutelman kiiltävämmästä materiaalista.Phong-mallista käytetään usein JimBlinnin kehittämää muunnelmaa, jossaspekulaaristen heijastusten laskentaankäytetään valon heijastusvektorin sijastavalonlähteen ja katselupisteen puoliväliinosoittavaa vektoria. Blinn–Phong-mallion tehokkaampi suunnattuja valonlähteitäkäytettäessä, koska samaa puolivälivektoriavoidaan käyttää koko kuvalle.Niin ikään Phongin kehittämä onparempi interpolaatioalgoritmi, jossavalaistusarvojen sijaan interpoloidaanpinnan normaalia. Tämä vaatii enemmänlaskentatehoa, koska interpoloitaviamuuttujia on yhden sijaan kolme javektori pitää vielä normalisoida kunkinpikselin valaistusta laskettaessa. Algoritmikuitenkin pystyy laskemaan spekulaarisetheijastukset myös laajojen pintojenkeskellä ja mahdollistaa monia kehittyneempiävalaistustekniikoita.Kohtauskulman lisäksi valaistuksenvoimakkuuteen vaikuttaa etäisyys valonlähteestä.Suunnatut valonlähteet, kutenaurinko, ovat niin kaukana, että etäisyyson käytännössä vakio eikä havaittavaaheikkenemistä tyypillisen pelimaailmanalueella tapahdu. Pistemäiset valonlähteetkuitenkin sijaitsevat pelimaailmassamuiden esineiden keskellä, jolloin etäisyydenvaikutus täytyy ottaa huomioon.Tässäkin on kyse saman valomääränleviämisestä laajemmalle alueelle.Mekanismin hahmottamista helpottaa,jos tarkastellaan valonlähteestä tiettynähetkenä lähteneitä fotoneja yhtenäisenäpallon muotoisena rintamana. Säteen japinta-alan välillä on neliöllinen suhde,eli säteen kaksinkertaistuessa pinta-alanelinkertaistuu. Valomäärä pinta-alaakohden pienenee vastaavasti, ja sen sanotaanolevan kääntäen verrannollinenetäisyyden neliöön, kaavana ilmaistunaE v∝ 1/r².Jakolaskulla on ikävä taipumus tuottaahyvin suuria tuloksia, kun jakaja lähestyynollaa. Tietokonemonitorin dynamiikkaon huonompi kuin silmän, jalähellä valonlähdettä olevien kappaleidenkirkkaus saturoituu helposti, elleiasialle tehdä jotain. Helppo ratkaisu onpoiketa jälleen tosimaailman fysiikastaja lisätä jakoviivan alle vakiotermi, jokapitää jakajan positiivisena. Kaukana valonlähteestäeroa ei juuri huomaa.Valon voimakkuus heikkenee etäisyyden kasvaessa.29


KulttuuriUsenetVanhus yhä voimissaanOletko tuskastunut web-foorumeihin? Ärsyttävätkövälkkyvät mainokset, sivujen latausajat,mielivaltaiset moderaattorit tai pakollisetrekisteröinnit? Jos vastasit myöntävästi,Usenet voi sopia juuri sinulle!Teksti: Lauri Alanko Kuvat: Lauri Alanko, Mitol BerschewskyKun Linus Torvalds oli aloittanut uudenkäyttöjärjestelmänsä kehittämisen,hän kirjoitti asiasta lyhyenviestin, jonka lähetti Helsingin yliopistonpalvelimelle Minix-käyttöjärjestelmänkeskusteluryhmään. Jos innokkaimmatopiskelutoverit seurasivat samaa ryhmääjuuri tuolloin, he saattoivat nähdä viestinensimmäisinä maailmassa. Muutamanhetken päästä yliopiston palvelin lähettiviestin koneeseen Espoossa, josta se välitettiinAmsterdamiin ja sieltä yhä eteenpäin.Muutaman tunnin sisällä suomalaisenkäyttöjärjestelmän syntysanat olikopioitu ympäri maailmaa, tuhansille koneille,paikallisten lukijoiden nähtäville.Vuosi oli 1991, ja järjestelmä oliUsenet, tuolloin internetin suosituin tapakäydä julkista keskustelua. Nykyajan sosiaalistamediaa ei ollut, sillä koko WWWoli vasta lapsenkengissään. Vain pariaviikkoa aiemmin Tim Berners-Lee oli kertonutomasta projektistaan julkisesti ”alt.hypertext”-ryhmässä, Usenetissä sekin.Internetin alkuperäinen keskustelujärjestelmäporskuttaa yhä luotettavasti,vailla krumeluureja, kaukana julkisuudenvalokeiloista. Usenetillä on pitkä ja maineikashistoria. Se on yksi internetin vanhimmistaviestintäpalveluista, heti sähköpostinjälkeen. Nykyään sitä verhoaasalaperäisyys: keskusteluihin ei törmäätavallisilla www-hauilla kuin satunnaisesti.Paljon helpompaa on löytää sivustoja,jotka mainostavat Usenetiä eliittipiiriensalaisena piratismiverkkona. On siissyytä valottaa, mistä on kyse: avoimesta,hajautetusta viestintävälineestä, jolla onpaljon tarjottavaa.Vertaisverkkojen esi-isäUsenet syntyi 1970-luvun lopulla YhdysvaltainPohjois-Carolinassa. Kahdenyliopiston sisäiset tiedotusjärjestelmätalkoivat vaihtaa viestejä keskenään puhelinlinjojapitkin, ja käyttäjät pääsivätlukemaan toistensa kirjoituksia. Ideaosoittautui suosituksi, ja kun tekniikka olikerran kehitetty, monet muut korkeakoulutja muutamat teknologiafirmat osallistuivatviestien vaihtoon. Kun koneidenkäyttäjät pääsivät näin yhteyteen keskenään,syntyneen verkon nimeksi tuli”Usenet”, käyttäjien oma verkko.Alkuaikojen keskustelut Usenetissäkoskivat lähinnä ohjelmistoja ja tietoverkkoja.Pian aiheet levisivät harrastuksiin,tieteeseen ja politiikkaan. Koskajärjestelmää käytettiin alun perin tiedottamiseen,eri aiheiden keskusteluryhmiäkutsutaan yhä nimellä newsgroups, ”uutisryhmät”.Samasta syystä viestejä kutsutaanusein ”artikkeleiksi” ja palvelimia”uutispalvelimiksi”. Termit ovat hämääviä,ja suomeksi on selkeintä puhua tuttavallisesti”nyysseistä”.1980-luvulla nopeat tietoliikenneyhteydetyleistyivät. Usenetiä varten luotiinNNTP-protokolla, jonka avulla viestejävoitiin lukea ja lähettää internetin kautta.Pian nyysseistä tuli orastavan internetinvallitseva julkinen keskustelujärjestelmä.Palvelimia syntyi tuhansittain ympärimaailmaa, ja ne levittivät tuhansia keskusteluryhmiäkaikenlaisista aiheista.Kaikki palvelimet olivat tasa-arvoisia,eikä ollut mitään keskustahoa, joka olisivoinut hallita koko verkkoa. Usenetiävoikin pitää varhaisena vertaisverkkona,vaikka yksittäiset käyttäjät eivät yleensäpitäneet omaa palvelinta.Vaikka nyyssien suosio on vähentynyt,on järjestelmä yhä olemassa, ja se toimiipitkälti samalla tavalla kuin kymmeniävuosia sitten. Harva verkon teknologiaon kestänyt aikaa yhtä hyvin.Karua mutta toimivaaNyyssien seuraamiseen tarvitaan lukuohjelma,joka ottaa yhteyden NNTP-palvelimeen.Lukuohjelmia on niin tekstipohjaisia,graafisia kuin selainkäyttöisiä, janiitä löytyy kaikille alustoille. Myös monetsähköpostiohjelmat ja jotkin wwwselaimettukevat nyyssejä suoraan. Vaikkaerillisen ohjelman käyttöönotto vaatiihieman vaivaa, se maksaa itsensä piantakaisin.Nyyssien perustoiminnallisuus onvaatimatonta. Viestit ovat yleensä paljastatekstiä ilman korostuksia tai kuvia.Niitä ei voi muokata jälkikäteen eikä30 2013.4


ASCII-taide taipuu monimutkaisiinkin tarpeisiin. Ohjelma: Mozilla Thunderbird.siirtää toiseen ryhmään. Mitään erillisiäyhteisöllisiä toimintoja tai profiileja eiole, vaan järjestelmä keskittyy pelkkäänviestimiseen. Lähettäjillä on vain nimi jaosoite, ja joskus harvoin pikkuriikkinenkuvake.Usenet loistaa siinä, mihin se keskittyy.Monimutkaistenkin viestiketjujenläpi on helppoa suunnistaa hyvällä ohjelmalla.Viestit aukeavat silmänräpäyksessä,sillä pelkkä teksti ei vaadi kaistaaeikä konetehoa. Visuaalisen kikkailunpuute auttaa keskittymään itse asiaan,eikä mainoksia järjestelmän ympärilleole edes mahdollista ympätä. Kuvia voiaina linkata webin kautta, ja kaavioidenesittäminen onnistuu monesti perinteiselläASCII-taiteella.Nyyssien keskustelujärjestelmä onlähtökohtaisesti avoin. Vaikka palvelimetusein rajoittavat käyttäjäkuntaansa, keskusteluryhmäteivät vaadi erillistä rekisteröitymistä.Kaikki Usenetin käyttäjätvoivat lukea ja kirjoittaa kaikissa palvelimentarjoamissa ryhmissä. Uusiin ryhmiintutustumiseen on siis erittäin matalakynnys.Minkä nyyssit menettävät näyttävyydessä,ne voittavat tehokkuudessa jakäytettävyydessä. Kymmenien ryhmienseuraaminen yhden ohjelman sisältä onverrattomasti vaivattomampaa kuin kymmeneenweb-foorumiin osallistuminen. Jakun verkkokatkon aikaan web on täysinkäyttökelvoton, nyyssilukijalla voi selaillaesiladattuja viestejä paikallisesti ja jopavastailla niihin.Keskustelua maailmalla...Nyyssiryhmillä on pisteillä jaotelluthierarkiset nimet. Esimerkiksi ”comp.lang.c” on C-ohjelmointikieleen keskittyväryhmä. Jaottelu auttaa luokittelemaanryhmät aiheittain ja estämään nimitörmäyksiä.Säännöllinen nimeämiskäytäntöauttaa myös palvelinten ylläpitäjiä määrittämään,kuinka eri ryhmiä kohdellaanpalvelimella. Erityisesti nimen alkuosaeli ryhmän ylähierarkia määrää, mitkäpalvelimet sitä jakavat. Näin Usenetissävoi olla myös paikallisia ryhmiä, joita eitarvitse levittää ympäri maailmaa.Usenetin ydin koostuu kahdeksastaylähierarkiasta, joiden ryhmiä kaikkiennyyssipalvelinten odotetaan levittävän.Näitä niin kutsuttuja ”Big-8-hierarkioita”ovat muun muassa ”comp.*” tietotekniikalle,”rec.*” harrastuksille ja ”sci.*” tieteelle.Vaikka näihin ryhmiin kirjoittaminenon vapaata, Big-8-hierarkioiden ryhmärakenneon hallinnoitua. Melkein mille tahansaaiheelle voidaan luoda oma ryhmä,mutta sellainen luodaan vain, kun aiheelleon laajaa kiinnostusta. Koska yhdelleaiheelle on aina korkeintaan yksi ryhmä,on Big-8-ryhmien jaottelu varsin siisti.Nämä ryhmät ovat lähtökohtaisesti vilkkaita,vaikka jotkin niistä hiipuvat ajanmyötä.Kaikkia eivät ryhmien hallinnointisäännötmiellytä, ja siksi on olemassa”alt”-hierarkia, johon kuka hyvänsä voiperustaa uusia ryhmiä ilman byrokratiaa.Koska ryhmien luomiskynnys on niin matala,ne jäävät usein autioiksi tai niidensisältö ei ole maailmanlaajuisen levityksenarvoista. Tämän vuoksi kaikki palvelimeteivät levitä kaikkia ”alt”-ryhmiä taisäilytä niiden viestejä kovin pitkään.On myös muunkielisiä keskusteluryhmiä.Monilla kielillä on oma ryhmähierarkiansa,jota jaetaan ainakin kielenlevinneisyysalueen palvelimilla, useinmuuallakin. Suomenkielisille ryhmille onkaksi hierarkiaa, hallinnoitu ”sfnet” javapaampi mutta heikommin levitetty ”finet”.Valitettavasti suomenkielisten ryhmiensuosio on vähentynyt roimasti, javain muutamassa ryhmässä on enää aktiivistakeskustelua, sekin varsin pienenpiirin kesken.Edellisten lisäksi on olemassa moniaElizabeth Rather, maailman toinen Forth-ohjelmoija, jakaa yhä neuvoja ”comp.lang.forth”-ryhmässä.Ohjelma: trn.31


Hyvällä lukuohjelmalla voi seurata niin paikallisia kuin kaukaisiakin keskusteluja. Ohjelma: Pan.muitakin hierarkioita. Kaikki palvelimeteivät levitä niitä, joten niiden ei katsotakuuluvan varsinaiseen Usenetiin, eikäniillä välttämättä tavoita ihmisiä yhtä laajaltikuin Big-8- ja alt-ryhmillä....ja omissa piireissä?Varsinaisen Usenet-palvelimen perustaminenvaatii sopimusta viestien vaihdostajonkun toisen palvelimen ylläpitäjänkanssa. Kuka tahansa voi kuitenkin pystyttääoman eristetyn NNTP-palvelimenja luoda sinne yksityisiä keskusteluryhmiä.Monet korkeakoulut ja yrityksetovat tehneet näin. Tämä on hyvä ratkaisusisäiseen viestintään pienillekin piireille,sillä monet nyyssiohjelmat pystyvät vaivattaseuraamaan ryhmiä useammastapalvelimesta yhtä aikaa. On siis helpompaalisätä uusia yksityisiä ryhmiä lukuohjelmaankuin alkaa seurata uutta webfoorumiasäännöllisesti.Web-foorumit ja nyyssiryhmät eivätole toisiaan poissulkevia ratkaisuja. Koskanyyssipalvelimen protokolla on avoin,keskusteluille voi tarjota web-käyttöliittymänniille, jotka eivät nyyssejä muutenharrasta. Tällaisia sovelluksia on tarjollamonia, ja onpa tämän jutun kirjoittajakinaikoinaan tehnyt suurehkolle firmalleweb-foorumin, jonka alla pyöri nyyssipalvelin.Ylläpito onnistui vakiintuneillatyökaluilla, ja käyttäjät kirjoittivat satojatuhansia viestejä vuodessa autuaan tietämättöminäalla pyörivästä ikiaikaisestateknologiasta. Raskaassa käytössä nyyssipalvelimetmyös skaalautuvat mainiosti,sillä järjestelmä tukee luonnostaansynkronointia useamman palvelimen kesken.Nyyssit kuolemaisillaan— jo toistakymmentä vuottaUsenetin tuhoa on povattu jo parinkymmenenvuoden ajan. Joskus syyksi on esitettykeskusteluiden taantumista käyttäjämääriennoustessa, joskus taas pelätty,että viranomaiset ja ylläpitäjät sulkevatkoko järjestelmän laittomuuksien estämiseksi.Nykyään pelätään nyyssienmuuttumista tiedostonjakovälineeksi javarsinaisen keskustelun tyrehtymistä.Usenet on silti tähän asti selvinnyt kaikistauhista.Käyttäjämäärät ovat kuitenkin selvästilaskeneet, ja valtaosa internetinjulkisesta keskustelusta on siirtynyt lukemattomiinerilaisiin web-foorumeihin.Yhtenäinen, helppopääsyinen, sulava jaskaalautuva järjestelmä on vaihtunutmoninaisten käyttöliittymien, rekisteröintien,selausviiveiden ja ylläpitäjienmielivallan vitsauksiin. Syitä tähän voivain arvailla.Yksi syy on eittämättä webin etulyöntiasema.Tavalliset web-haut löytävätkyllä www-sivustojen keskustelut, muttaeivät Usenet-viestejä, ellei joku ole peilannutniitä webiin. Näin ihmiset ohjautuvatweb-foorumeille, ennen kuin edesoppivat vaihtoehdon olemassaolosta. Javaikka siitä oppisi, erillisen ohjelmanasentaminen voi tuntua kohtuuttomaltavaivalta selainkäyttöisten palveluidenrinnalla. Kierre vahvistaa itseään, kunihmiset hakeutuvat sinne, missä muutkinovat.Usenetin ongelma on myös se, ettäkukaan ei sitä omista. Tämän vuoksi kenelläkäänei ole erityistä intressiä edistääsen käyttöä. Nyyssiryhmän perustamallaei saa mainetta, mainostuloja kuin sananvaltaakaan,vaan ainoastaan paikan, jossakeskustella. Kaikille tämä ei riitä.Kaikesta huolimatta nyysseillä onyhä käyttäjänsä. Monissa ryhmissä onvilkasta keskustelua, ja uusia ryhmiäperustetaan yhä. Ehkäpä muutkin vieläsaavat jonain päivänä tarpeekseen webfoorumienkömpelyydestä ja rajoitteista,ja löytävät tiensä Usenetiin. Se ei ole lähdössämihinkään.Hiljattain perustetussa ”comp.sys.raspberry-pi”-ryhmässä saa vastauksia teknisiinkin kysymyksiinRaspberry Pista. Ohjelma: slrn.32 2013.4


Kuinka sinne pääseeNyyssien lukemiseen tarvitsee lukuohjelmanja pääsyn nyyssipalvelimelle. Ilmaisia lukuohjelmialöytyy kaikille alustoille,ja nyyssipalvelin on perinteisesti ollutsähköpostiin ja kotisivutilaan verrattavaperuspalvelu, joka on tullut internet-yhteydenmukana. Nykyään yhteydentarjoajatovat kuitenkin pitkälti luopuneet nyyssientarjoamisesta, joten Usenetiin pääsy onhieman hankalampaa. Ilmaisia palvelimia onkuitenkin yhä olemassa.Lue lisää käytännön ohjeita Usenetiinpääsemiseen jutun verkkoliitteestä Skrollinsivuilla!http://skrolli.fi/2013.4/usenetBinääriryhmät: nyyssien turmio?Usenetin alkuaikoina verkkoyhteydet olivat ja vertaisverkkopalvelujen kehittyessävaatimattomia ja tiedostojen saatavuus binääriryhmien olisi pitänyt vaipua unholaanverkon kautta oli heikkoa. Tavallisilla käyttäjilläei ollut tiedostonjakopalvelimia. KoskaToisin kuitenkin kävi. Monet tiedostojavanhanaikaisina.Usenet kuitenkin tavoitti ihmisiä laajalti, laittomasti jakavat alkoivat pelätä viranomaistenjäljitystä, joten nyyssien binääriryh-ryhdyttiin sitä käyttämään tiedostojenkinlevitykseen. Se oli monille ainoa tapa tarjota mien epäsuoruus vaikutti houkuttelevalta:omia tiedostoja yleiseen käyttöön. Tiedostojenlevitykseen luotiin erilliset ”binääriryh-kautta, toimii luotettu palvelin anonymisoi-koska kaikki liikenne kulkee nyyssipalvelimenmät”, joita monet palvelimet kohtelivat eri jana, joka piilottaa, kuka on tiedoston lähettänyt,ja ketkä sen ovat ladanneet. Onkintavalla kuin tavallisia keskusteluryhmiä.Käyttäjäkunnan kasvaessa myössyntynyt monia NNTP-pohjaisia tiedostonjakopalvelimia,jotka tarjoavat maksullistabinääriryhmien suosio kasvoi, ja ne alkoivatmuodostaa valtaosan nyyssipalvelimien palvelua innokkaimmille lataajille ja jakajille.kuormituksesta. Usenet ei ollut erityisen tehokastapa levittää tiedostoja, joten www:n set, keskustelupohjaiset palvelimetMassiivisen tiedostonjaon vuoksi ilmai-eivätenää tue binäärejä ollenkaan, vaikka joskussellaisille olisi keskustelujen lomassa perusteltuatarvetta. Nyyssien maine laittomuuksienvälineenä on myös saanut jotkut tahotsulkemaan palvelimensa kokonaan. Ja koskatiedostonjakajat mainostavat välinettäännimellä ”Usenet”, on sana saanut verkossauuden merkityksen, jonka alta ei alkuperäistäkeskustelujärjestelmää enää helpostilöydä.Vaikka binääriryhmien suosio onkinosoitus nyyssiteknologian monikäyttöisyydestä,on se tehnyt vain hallaa todelliselleUsenetille.Gmane ja Gwene – maili ja web nyysseihinSähköpostilistat ovat nyyssien ohella toinen telu vaatii oman vaivansa. Webissä on kylläperinteinen verkon massaviestintäväline. monien listojen arkistoja, mutta keskustelujenseuraaminen niiden kautta on hankalaa.Postituslistoja on kuitenkin vaivalloista tilataja lopettaa, ja saapuvien listaviestien lajit-Gmane on palvelu, joka ratkaisee nämäongelmat tarjoamalla monia julkisia postituslistojanyyssiryhmien kautta. GmanenNNTP-palvelimen kautta pääsee lukemaan”gmane”-hierarkian ryhmiä, jotka peilaavateri postituslistoja. Näin nyyssien käyttäjänei tarvitse kuin lisätä Gmanen palvelin ohjelmaansa,jotta saa pääsyn tuhansiin uusiinkeskustelualueisiin varsinaisen Usenetinlisäksi.Gmanella on myös sisarpalvelu Gwene,joka ohjaa webin RSS-syötteitä nyyssiryhmiin.Sen avulla monia blogeja ja foorumeitakinvoi lukea nyyssiohjelman kautta, jotensäännöllinen verkkopäivitysten seuraaminennopeutuu.• http://gmane.org/• http://gwene.org/Skrolli.fi nyysseissä! Ohjelma: Claws Mail.33


KulttuuriInternetit ennen Internetiä– modeemipurkkien nousu ja tuhoSuomi on ollut nyt 25 vuotta kiinni Internetissä. Tietokoneet ovat kuitenkinviestineet toisilleen jo paljon tätä ennen, ja Internetilläkin meni vuosikausia,ennen kuin se syrjäytti muut verkot.Teksti: Ville-Matias Heikkilä Kuvat: Manu Pärssinen, Ville-Matias Heikkilä, Wikimedia CommonsKoneetkin puhuivat puhelimessaSähköisiä tietoverkkoja ruvettiin rakentamaanjo 1800-luvulla, ja eräs niistälevittäytyi myöhemmin lähes joka kotiin.Kyseessä oli tietenkin puhelinverkko.Suomalaiset olivat alusta asti innostuneetverkon rakentamisesta: 1890-luvullaHelsingissä oli jo useita puhelimia sataaasukasta kohden, mikä oli kärkilukujakoko maailmassa.Puhelinverkko oli houkutteleva ratkaisumyös muun kuin puheen välittämiseen.Uutistoimistojen piti lähettää paljontekstiä toisilleen nopeasti, ja siihenkäytettiin kaukokirjoittimia, eräänlaisiaetäohjattavia sähkökirjoituskoneita.Kaukokirjoittimilla oli oma Telex-verkko,mutta puhelinverkko ulottui laajemmalleja oli usein edullisempi. Kirjoittimen japuhelinlangan väliin tarvittiin vain modeemieli modulaattori-demodulaattori,joka muuntaa merkkidataa äänitaajuuksiksija takaisin. Ensimmäiset puhelinmodeemitotettiin käyttöön 1940-luvulla,joten alusta asti oli valmiina tekniikkatietokoneiden kytkemiseksi puhelinverkkoon.Ensimmäinen laaja tietokoneverkkooli vuonna 1958 jenkkiarmeijan käyttöönottama SAGE (Semi-Automatic GroundEnvironment). Se käytti yhteydenpitoonenimmäkseen tavallisia puhelinyhteyksiäja modeemeja. Siviilipuolella varhaisiaomaksujia olivat pankit, joiden keskustietokoneetsoittelivat toisilleen vaihtaakseenrahaliikennetietoja.Hyvästit reikäkorttipinoilleTietokoneet olivat alkuvuosikymmeninäänisoja ja kalliita, ja harva pääsi käyttämäänniitä henkilökohtaisesti. Käyttäjätsuunnittelivat ohjelmat paperilla,lävistivät ne reikäkorteille, toimittivatkorttipinot konesaliin eräajettavaksi jasaivat ohjelman tulosteet aikanaan itselleen.Myöhemmin käyttötavat muuttuivatdramaattisesti, kun koneisiin alettiinkytkeä päätteitä. Ositusajossa useammatkäyttäjät komensivat samaa keskustietokonettasamanaikaisesti eri päätteiltä jasaivat vasteet liki välittömästi. Päätteetliitettiin usein modeemeilla, joten käyttäjäsaattoi olla eri kaupungissa kuin tietokone.Tietokoneet, päätteet ja modeemitkiinnostivat myös tekniikkaharrastajia, jamonet rakensivat niitä jopa itse. Tekniikkaanpaneutunut opiskelija saattoi näinkäyttää koulunsa keskuskonetta kotoakäsin. Ennen pitkää sikisi myös ajatustehdä omasta kotitietokoneesta ”keskuskone”,johon toiset voisivat ottaa yhteyksiä.Maailman ensimmäisen julkisen harrastaja-BBS:npystyttivät chicagolaisetWard Christensen ja Randy Suess helmi-34 2013.4


kuussa 1978. Järjestelmä oli nimeltäänyksinkertaisesti CBBS (ComputerizedBulletin Board System) ja se toimi Altairyhteensopivallakoneella. Suomen ensimmäisenvastaavan järjestelmän perustikesäkuussa 1982 Seppo Uusitupa, ja seoli nimeltään CBBS Helsinki.BBBS-ohjelmistoa käyttävän purkin valikkoja.Freenet Finland oli monille purkkikäyttäjille ensikosketus Internetiin.Purkkien toimintaBBS-järjestelmiä kutsuttiin Suomessa1980-luvulla sähköisiksi postilaatikoiksitai bokseiksi mutta myöhemmin myöskannuiksi ja purkeiksi. Purkkien toimintaaja viehätystä oli niiden kulta-aikanavaikeaa selostaa maallikoille, muttanykyisin se onnistuu vertaamalla niitäWWW-sivustoihin.Kuvittele sivusto, jolla on keskustelufoorumi.Foorumilla kirjoittelee useitakymmeniä ihmisiä kaikesta mahdollisesta.Foorumin lisäksi sivustolla on alue,josta saa ladattua ohjelmia ja muita tiedostojaja jonne voi lähettää omia tiedostojaan.Lisäksi omassa osiossaan voiesimerkiksi pelata pelejä muita käyttäjiävastaan. Sivustolle kirjaudutaan käyttäjätunnuksellaja salasanalla, joidensaamiseksi on vastailtava muutamiin kysymyksiin,lähinnä annettava henkilötietoja.Tällainen sivusto on helppo käsittääuseimmille Internetin käyttäjille. Kuvitteleseuraavaksi, että sivustoa pystyykäyttämään vain yksi käyttäjä kerrallaan.Kun sivustolle yrittää päästä, seon todennäköisesti varattu. Se vapautuuehkä vartin tai tunnin kuluttua. Odotellessavoi yrittää päästä jollekin toisellesivustolle. Kun jonnekin vihdoin pääseesisään, on yhteysaikaa käytettävissä rajoitetusti,esimerkiksi puoli tuntia. Lisäksiyhteys maksaa vähintään paikallispuhelumaksun.Yhteysaika kannattaa käyttää tehokkaasti.Foorumiviestejä tai tiedostolistojaei kannata jäädä selailemaan, vaan ne onKaukokirjoitin.hyvä ladata omalle koneelle tutkittavaksi.Viestien vastaukset kannattaa kirjoittaaomalla koneella erityisellä offline-lukuohjelmallaja lähettää ne pakettina takaisinsivustolle vaikka seuraavana iltana.Tietenkään BBS-purkit eivät olleetmitään sivustoja, vaan yhteystapana olisuora, merkkipohjainen pääteyhteys.Mustalle pohjalle ilmestyi verkkaisestilistoja komennoista, joita kirjoittamallapääsi liikkumaan järjestelmässä alueeltatoiselle ja tekemään eri asioita.Purkin palvelinkone sijaitsi useimmitenylläpitäjänsä, systeemioperaattorin eliSysOpin kotona. Ylläpitäjä seuraili useinkäyttäjiensä touhuja ja saattoi tulla välillächattailemaan kahden kesken. Purkitoli usein sisustettu persoonallisiksi värikkäänmerkkigrafiikan avulla, ja niihinsoittaminen tuntui parhaimmillaan vierailultaomistajansa kotiin.Isompiakin purkkeja toki oli. Monetolivat aivan oikeissa laitetiloissa, monilinjaisiaja joskus jopa maksullisia. Suomensuurin purkki oli vuosina 1994–2002toiminut MBnet, jossa oli tilaa yli 500yhtäaikaiselle käyttäjälle. Tyypillinenpurkki toimi kuitenkin harrastajan kotikoneessa.Osa oli auki ympäri vuorokauden,osa vain öisin.Purkkeihin soittelu ei vielä 1980-luvullaollut kovin yleistä suomalaisten tietokoneharrastajienkeskuudessa. Jopa piraatitvaihtelivat ohjelmakopioitaan ainavuosikymmenen lopulle asti etupäässäpostitse, levykkeillä. Osasyynä oli varmastise, että modeemin käyttöönotto olitsaarinaikaisen lennätinlain vuoksi pitkäänharrastajille melko kallista.BBS-tyylistä viestintää haluttiinmarkkinoida myös massoille: teksti-tv:nserkkuna 1970-luvun lopulla syntyneenvideotexin piti mahdollistaa joka kodintietoverkkoyhteydet helppokäyttöistenpäätelaitteiden avulla. Suomalaisiavideotex-palveluja olivat Telesampo jaInfotel, joita käytettiin etenkin pankkiyhteyksiin.Järjestelmä löi kuitenkin kunnollaläpi vain Ranskassa, jonka Minitel-35


Haciend el Bananasin ansi-grafiikkaa.Eräs suosituimpia purkkipelejä, Legend of the Red Dragon eli LORD.palvelulla oli parhaimmillaan miljooniakäyttäjiä.Isot koneet ja yliopistotSamaan aikaan, kun harrastajat rakensivatensimmäisiä modeemiboksejaan,keskuskoneiden maailmassa rakennettiinjo pakettiverkkoja kiinteiden yhteyksienvaraan. Yhdysvaltalaiset olivatvuodesta 1969 lähtien rakentaneet Arpanetiä,johon kuului puolustushallinnonja yliopistojen koneita. Euroopassa vastaavaverkko oli ranskalaisten Cyclades,ja hahmoteltiinpa Suomeenkin samantapaistayliopistoverkkoa jo vuonna 1974.Kiinteät linjat olivat fyysisesti samanlaisiakuparijohtoja kuin puhelinlangatkin,mutta ne oli kokonaisuudessaanvarattu kahden pisteen yhdistämiseen.Asiakas maksoi linjasta kiinteää vuokraaja sai sen koko kapasiteetin omaan käyttöönsä.Arpanetin linjoilla siirrettiin dataaaluksi 50 kilobitin sekuntinopeudella– parikymmentä kertaa nopeammin, kuinmihin tavallisella puhelinmodeemillapääsi.Pakettiverkon ideana on, että verkkoonkytketyt koneet lähettävät linjalledatapaketteja, joihin kuuluu vastaanottavankoneen osoite. Koneet myös kuuntelevatlinjaa jatkuvasti ja ottavat talteenitselleen osoitetut paketit. Linjojen risteyksissäon reitittimiä, jotka ohjaavatpaketteja osoitteen mukaan eteenpäin.Arpanet käytti aluksi NCP-nimistä paketointikäytäntöämutta vaihtoi vuonna1983 Internet-protokollaan eli IP:hen.Samalla armeijan koneet erkanivatomaksi verkokseen, ja jäljelle jäänyttäosaa alettiin kutsua nimellä Internet.Suomessa Internet-tyyppinen viestintäalkoi kuitenkin täysin modeemivetoisillaverkoilla. Yliopistoilla oli 1980-luvunalussa Unix-koneita, jotka tukivat käyttäjienvälistä sähköpostia (mail) ja julkisiakeskustelualueita (news). Unixissa oli ohjelmanimeltä Unix to Unix Copy (UUCP),jonka avulla Unix-koneet pystyivät siirtämäänkeskusteluja toisilleen modeemiyhteyksienyli. Postisäkkejä vaihdettiinyleensä vain kerran pari päivässä, jotenlaajemmissa UUCP-verkoissa viestitmatkasivat päivätolkulla. Suomen verkkoyhdistettiin kansainväliseen UUCPverkkoonvuonna 1983. BBS-maailmassamyöhemmin yleistynyt Fidonet perustuimyös viestipakettien vaihtamiseen.Pakettiverkot tulivat Suomeen vuonna1983, kun Posti- ja telelaitos alkoi tarjotaDatapak-nimistä X.25-verkkoa. Laskutusperustui siirretyn datan määrään.Verkkoa käyttivät aluksi etenkin pankit,mutta myös samana vuonna alulle pantuSuomen yliopistojen Funet-verkkopäätti ottaa sen käyttöönsä. Funet siirtyikuitenkin joidenkin vuosien päästä kiinteisiin64 kilobitin vuokralinjoihin, kunrunsas sähköpostiliikenne aiheutti sillesatojentuhansien markkojen laskuja.Yliopistoissa oli monien eri valmistajienkoneita, joilla oli kaikilla eri verkkotekniikat,ja Funetissa liikkui kaikkienpaketteja sekaisin. Decnetissä olivain VAXeja ja muita Digitalin koneita.EARN oli IBM:n perustama ja sponsoroimaeurooppalaisten yliopistojen verkko,jonka hienouksia olivat postituslistat jaRELAY-pikaviestit. Unix-koneet puhuivatvain IP:tä, mutta VMS-koneet puhuivatkaikkia protokollia. Ainoa kiinteä ulkomaanyhteysoli EARNin kautta, jotenkansainväliset Unix-sähköpostit ja -nyyssitjouduttiin vielä vuonna 1987 siirtämäänmodeemeilla. Tästä päästiin eroonseuraavana vuonna, kun Pohjoismaidenyliopistoverkot yhdistettiin 64 kilobitinlinjoilla Nordunet-verkoksi.Nordunet yhdistyi Internetiin marraskuussa1988, kun Tukholman jaPrincetonin välille avattiin 56 kilobitinsatelliittiyhteys. Yhdysvallat oli kuitenkinvaruillaan Suomen suhteen, olihanse aivan Neuvostoliiton kupeessa. Vieläsaman vuoden puolella PohjoismaidenInternet-yhteys pistettiin poikki viikoksi,kun joku innokas suomalaisopiskelija olikolkutellut jenkkiarmeijan koneita.Internet syrjäytti vähitellen muutprotokollat yliopistoverkossa. Nykyäänharva tunnistaa esimerkiksi EARNia nimeltä,vaikka se oli monen vuoden ajansuosituin tietoverkko Euroopan yliopistoissa.Maailmojen kilpajuoksuPurkit olivat vielä 1990-luvun alussa selvästieri maailmassa kuin pakettiverkot.Useimpien BBS-käyttäjien käsitys Internetistäolikin melko epämääräinen. Joillakinpurkeilla oli jonkinlainen yhteysInternetin puolelle esimerkiksi UUCP-36 2013.4


PTT BBS, jättimäinen taiwanilaispurkki.verkon kautta, ja olipa Suomessa jo parikiinteästi nettiin kytkettyä BBS:ää yliopistojentiloissa.Monet harrastajat ottivat ensimmäisetInternet-yhteytensä noin vuonna1993. Tällöin Suomeen ilmestyi lukuisianuorison saavutettavissa olevia palveluntarjoajia.Useat näistä olivat itsekin purkkeja,joiden kiinteä Internet-linja kustannettiinkäyttäjien maksamilla muutamankymmenen markan kuukausimaksuilla.Käyttöliittymät olivat edelleen merkkipohjaisia,käyttöajat rajoitettuja ja linjattuuttasivat usein varattua.Useimmille Internetin palveluille olituttu vastine BBS-maailmassa. Sähköpostivastasi yksityisviestejä, nyyssit julkisiaviestejä ja IRC monilinjaisten purkkienchatteja. Mittakaava oli kuitenkinaivan toinen. Vilkkaita keskustelualueitaoli tuhansia, ja niitä saattoi löytää hyvinkapeille ja erikoisille aihepiireille. Chateissaja MUD-peleissä oli käsittämätönmäärä samanaikaisia käyttäjiä kymmenistäeri maista, eivätkä valtioiden rajattuntuneet missään. Olo oli kuin maalaiskylänkasvatilla suurkaupungin keskellä.Modeemit yleistyivät 1990-luvulla,mikä näkyi sekä BBS- että Internet-käytönkasvuna. Monet käyttivät ahkerastimolempia, mutta eri tarkoituksiin. Purkitkoettiin selkeinä ja tiiviinä pienyhteisöinä,joissa samanhenkiset ihmiset jutustelivatkaikesta mahdollisesta keskenään.Paikallispuhelualueiden rajat synnyttivätkuhunkin maakuntaan oman purkkiskenen,jonka jäsenet tapasivat tosiaan myöselävässä elämässä. Internet oli kasvottomampi,kaoottisempi ja joka suuntaanrajaton ”tiedon valtameri”, josta haettiinerityisaiheisiin liittyviä tiedostoja, keskustelujaja asiantuntemusta.Vuosikymmenen jälkipuoliskolla nettialkoi syödä BBS-maailmaa. Alkuvuodesta1996 oli Suomessa julkisia 24H-purkkejavielä yli 500, mutta vuonna 2000 enääjoitakin kymmeniä. Kiinteät laajakaistayhteydetsaivat monet ahkerat käyttäjätluopumaan lankapuhelinliittymistäänja siten myös purkeista. UskollisimmatBBS-intoilijat lähtivät vasta pakon edessä,eikä siirtymä ollut helppo.Monet purkkiyhteisöt hajosivat kokonaan,koska netin puolelta ei löytynyt sopivaakokoontumispaikkaa. Sitkeimmätsysteemioperaattorit siirsivät purkkinsaInternetin puolelle joko sellaisinaantai nettifoorumeiksi muutettuina, muttaharva menestyi enää tämän jälkeen. Parhaitenkoossa pysyivät ne yhteisöt, jotkavaihtoivat purkit IRC-kanaviin. IRC olitoki olemukseltaan hyvin erilainen, muttase onnistui vangitsemaan purkeilleominaisen tiiviin yhteisöllisyyden paremminkuin esimerkiksi foorumit tai nyyssiryhmät.Ikuisen syyskuun loppuaodotellessaInternet on Suomessa olonsa aikanakasvanut osaajaeliitin salaseurasta kokokansan perusoikeudeksi. Tutkijoiden,opiskelijoiden ja tietokoneihmisten perässäseurasivat vähitellen kaikki väestökerrokset.Koukuttava nettiyhteisöllisyystuli Pihtiputaan mummollekin tutuksi viimeistäänFacebookin myötä.Internet on muuttunut vuosien mittaan,välillä jopa parempaan suuntaan.Äänensä kuuluviin saaminen on nykyisinhelppoa myös teknisesti tumpelommille,ja kiinnostavan sisällön löytäminen kohinankeskeltä on vaivattomampaa. Muutospakottaa kuitenkin myös luopumaan: kunsuositun nettipalvelun kukoistus loppuuja käyttäjät siirtyvät toisaalle, ei samanlainenyhteisöllisyys enää toistu. Uudestapalvelusta puuttuu aina jokin ratkaisevaPurkkitilanne 2013Sivusto telnetbbsguide.com listaa tätäkirjoitettaessa 350 toiminnassa olevaaBBS:ää. Valtaosaan saa yhteyden vaintelnetillä, mutta muutamalla amerikkalaisboksillaon myös puhelinlinja. Listalla onmyös kolme suomalaista purkkia: BBBSohjelmistontukipurkki BCG-Box (bbbs.net), Rampton Bird’s Box (rbb.bbs.fi:32) jatietokonetaiteeseen erikoistunut HaciendEl Bananas (haciend.bbs.fi).Monet nykyboksit ovat varsin autioita– kuin museoesineitä, jotka on jätettyesille, vaikka käyttäjät ovat kadonneet. Onkuitenkin edelleen myös aktiivisia ja hyvinsuuria järjestelmiä. Taiwanilaisessa PTT:ssäon parhaimmillaan yli 150 000 yhtäaikaistakäyttäjää.Länsimainen BBS-skene on läheisessäsuhteessa MUD-peleihin, eikä purkin jamudin raja ole aina edes kovin selvä. Muditvoivat kuitenkin edelleen hyvin wowien jalolien noususta huolimatta: suurimmissamudissa on mudstats.comin mukaan parhaimmillaanyli 800 yhtäaikaista pelaajaa.Suomalaista Batmudia pelaa enimmilläännoin 200.Lähteitä ja muuta mediaa:• Funet – Suomen tie Internetiin (CSC:njulkaisu, 2008)• BBS-harrastajat 1990-luvun tietoverkkokulttuurinmurrosvaiheessa (MikkoHirvonen 2010, pro gradu, Digitaalisenkulttuurin laitos, Turun yliopisto)• Funetista Facebookiin: Internetin kulttuurihistoriaa(Helsingin yliopisto, 2009)• BBS: The Documentary, amerikkalaisenJason Scottin dokumenttisarjaominaispiirre, eivätkä monet sopeuduuuteen. Yhteisöt hajoavat, ja monet jäävätkaipaamaan entistä.Ensi vuosikymmenellä Facebook onjo vaihtunut johonkin aivan muuhun.Viimeistään siinä vaiheessa suuretkinkansanjoukot ovat alkaneet ymmärtääInternetin historiallisuutta – sitä, kuinkatietoverkkokulttuurissakin on murroksiaja uusi rakentuu aina vanhan päälle. Ehkäpäsilloin myös BBS-historia voidaannostaa ansaitsemaansa arvoon, kukapatietää?37


KulttuuriKartan lähde: International Telegraph Bureau, Bern, Sveitsi, 1901. Jäljennöksen luovuttanut käyttöönBostonin yleisen kirjaston Norman B. Leventhal Map Center.Lennätin – 1800-luvun nettiSana lennätin tuo useimmille mieleen lähinnä morseaakkoset ja sähköisenpiipityksen. Kulttuurisessa mielessä varhainen viestijärjestelmä sisälsi kuitenkintuttuja nykyajan ilmiöitä. Silloinkin läheteltiin statuspäivityksiä ja tuskailtiinsalakuuntelun vuoksi.Teksti: Ronja Koistinen Kuvat: Ignacio Cobos Rey, Wikimedia Commons, Flickr-käyttäjä GroumeTeliaSonera ja Itella lukeutuvatSuomen viestinnän infrastruktuurilletärkeimpien yritysten joukkoon.Välillä on hyvä palauttaa mieleen,että vaikka yhtiöiden toimialat eivät paljoakohtaa, niillä on yhteinen menneisyys.Sonera oli ennen Tele ja Itella oliPosti, mutta sitä ennen ne olivat valtionliikelaitos nimeltä Posti- ja telelaitos. Vieläaiemmin, vuoteen 1981 asti, laitoksennimi oli Posti- ja lennätinlaitos.Tämä artikkeli ei ole historiikki valtionomistusten yksityistämiskehityksestä,mutta organisaatioiden kautta kehityksenkäänteisiin on helppo sukeltaanykyisyydestä käsin. Aikaamme leimaainternet ja sen syövereissä vellova kulttuurinja viestinnän meri. Meemit ja omaleimaisetsukupolvikokemukset puhuttavat.Sähköisten viestien välittämistä globaalinmittakaavan verkossa ei kuitenkaankeksitty 1980-luvulla. Jo edellisellävuosisadalla kukoisti maapallon jokakolkkaan levittäytynyt, yötä päivää piipittäväja nakuttava sähköinen viestijärjestelmä,lennätinverkko.Mikä lennätin?1860-luvulle tultaessa oli olemassa maailmanlaajuinenlennätinjärjestelmä, verkostopiuhoja ja viestikeskuksia, joita pitkinoperaattorit lähettivät sähkösanomiapaikasta toiseen. Viestin lähettääkseenasiakas käveli konttoriin ja kirjoitti paperikaavakkeellehaluamansa viestin javastaanottajan katuosoitteen. Sähkeenhinta määräytyi viestin kulkeman matkanperusteella.Sähköttäjä lähetti viestin eteenpäinlennätinlaitteella muuntamalla sen morseaakkostenmukaiseksi ”pisteiden” ja”viivojen” muodostamaksi koodiksi. Sähkeetreititettiin käsin karttojen ja taulukoidenavulla keskustoimistojen kautta,ja käytyään läpi tarvittavat hypyt viestipääsi lopulta perille vastaanottajalle.Sähköistä lennätintä edelsi NapoleoninRanskassa 1700-luvulla keksittyoptinen lennätin. Ranskalainen ClaudeChappe kehitti järjestelmän, joka koostuikorkeille mäille rakennetuista torneista.Niissä oli jatkuva miehitys. Tornit muistuttivatvähän tuulimyllyjä, sillä niilläviestittiin liikuttamalla merkinantovipujapitkien sauvojen päässä. Merkit luettiinseuraavalta tornilta kaukoputken avullaja viesti välitettiin eteenpäin seuraavalletornille.Optisia lennätinketjuja oli pian Keski-ja Etelä-Euroopassa useissa maissa. Joissakinketjuissa lähetettiin viestit suoraanaakkosia merkitsemällä, kun toisissa taasviestittiin numeroita, joiden merkitys luettiinerityisistä koodikirjoista. Kirjojenjulkaiseminen olikin pitkään isoa liiketoimintaa.Myös Suomen ensimmäinen kosketuslennättimiin tapahtui jo 1700-luvulla.Suomi kuului tuolloin Ruotsiin, jossa hääritoimelias vapaaherra Abraham NiclasEdelcrantz. Hän toi lennätinteknologianRanskasta Ruotsiin. 1790-luvulla Ruotsinitärannikolle ja Länsi-Suomeen rakennettiinoptisia lennätintorneja, joista oliRuotsille suuri hyöty Suomen sodassa1808–1809 Venäjää vastaan. Ruotsalaistenrakentamia torneja oli ainakin Ahvenanmaalla,mutta venäläiset tuhosivat nesodan jälkeen. Myös Venäjän ensimmäinenoptinen lennätinlinja rakennettiinPietarin ja Laatokan välille 1824.Alkuperäisistä optisista lennätintorneistaon säilynyt varsin vähän arkeologisiajäänteitä. Ruotsista ja Suomestaei tiettävästi tunneta raunioita. Sen sijaanmonien maiden paikannimistössäon jäänteitä näiden tornien sijainneista.Isossa-Britanniassa on paljon TelegraphHill -nimisiä, Ruotsissa ja Suomen ete-38 2013.4


Espanjassa säilynyt optisen lennätintorninraunio.Morsen lyhyisiin ja pitkiin signaaleihin perustuva järjestelmä mullisti sähkötysnopeuden. Yksinkertaisellasähkötysavaimella saattoi taitava sähköttäjä viestiä hyvinkin nopeasti.lärannikolla taas Telegrafberget-nimisiäkukkuloita. Muutamia suomenkielisiäkinTelegrafivuoria ja -kallioita on siellä täällä.Operaattori kuulee kaikenLennättimessä ja nykyajan internetissäolennainen ero on reitityksessä. Internetreitittyy automaattisesti koneiden avulla,mutta sähkeitä reitittivät ihmissähköttäjätkäsityönä. Viestit eivät voineet koskaanolla täysin luottamuksellisia, silläjokaisessa linkkitoimistossa oli vastassaihminen. Sähköttäjä kuunteli viestin linjalta,kirjoitti sen paperille ja sähköttieteenpäin seuraavaan toimistoon kohtiviestin määränpäätä.Myös sotilastiedustelu kiinnostui lennätinliikenteestämelko pian. Ensimmäinensotilaallinen koodinmurtamiseen erikoistunutorganisaatio oli ranskalainenBureau du Chiffre. Brittiläinen imperiumiolikin huolissaan vieraiden valtojenkuuntelusta ja rakensi oman verkkonsa.Brittien verkosta oli yhteydet muuhunkansainväliseen verkkoon vain tietyistäkohdista, joiden viestiliikennettä valvottiintarkasti.Sähköttäjien, kilpailijoiden ja vieraidenvaltojen silmien välttämiseksi alettiinkäyttää salakirjoitusta. Koodikirjattulivat uudelleen muotiin, ja kirjapainotalkoivat suoltaa kaupallisia salauskirjoja.Jotkin kirjat olivat koko painokseltaan samanlaisia,mutta monissa oli myös mahdollisuusomiin merkintöihin. Kirjoistasaattoi esimerkiksi ennalta sovitustivaihtaa sivuja keskenään tekemällä sivunumerointiinuudelleenohjauksia. Näinviestin matkalla napannut taho ei voinutpurkaa ainakaan koko sisältöä, vaikkaolisikin tiennyt, minkä merkkiseen koodikirjaansalakirjoitus perustui.Valtiot valvoivat ennen pitkää myöskotimaanliikennettä. Syntyi erilaisia yhteistyösopimuksia,ja 1865 perustettiinInternational Telegraph Union eli ITU.(ITU on olemassa edelleen, joskin sennimi on vaihtunut muotoon InternationalTelecommunication Union.)ITU närkästyi salauskoodeista ja siansaksanlähettämisestä. Sähkeet laskutettiinsanamäärän perusteella, jatoiminnan kannattavuus kärsi, koska salauskooditlyhensivät viestejä huomattavasti.Selkokielisen tekstin lukeminen jalähettäminen oli myös paljon nopeampaakuin pikkutarkan merkkisotkun. Asiastakiisteltiin pitkään palveluntuottajienja asiakkaiden välillä. Lopulta ITU antoiukaasin, että salausta sai käyttää muttakoodin tuli koostua luonnollisista sanoistakahdeksalla sallitulla kielellä: englanti,espanja, hollanti, italia, latina, portugali,ranska ja saksa. Kaikilla muilla kielillälähetettyjä viestejä kohdeltiin koodina janiistä perittiin korkeampi taksa.Duunikavereita ja romanssiaVaikka sähkösanomat sinänsä ovatkinenimmäkseen verrattavissa nykyajansähköpostiin, kulki linjoilla paljon muutakinliikennettä. Sähköttäjät kommunikoivattoisilleen reaaliaikaisesti vaihtamallaerilaisia statusviestejä ja arkisia kuulumisiaan.Tämä viestikieli muuttui puolivirallisiksilyhenteiksi ja jargoniksi hyvinvarhain. Päivittäiseen linjan hoitamiseenkuului sellaisia luonnollisia lyhenneilmaisujakuin ”hyvää huomenta”, ”olen valmisvastaanottamaan” ja ”toista edellinen”.Lennätinkeskukset oli usein miehitettyvarautuen ruuhkahuippuihin, joidenulkopuolella saattoi olla luppoaikaa. Tällöinsähköttäjät tapasivat viettää aikaajutellen naapurikeskusten kanssa. Viestintäoli täysin reaaliaikaista vuorottelualinjalla, toisin kuin viralliset asiakkaidentilaamat sähkeet, jotka kirjattiin paperillesisään tullessa ja vastaanottajalle toimitettaessa.Sähköttäjillä oli pelkästään lennättimenvälityksellä hoidettuja ystävyyssuhteitanaapurikaupungeissa tai pidemmälläkintyöskenteleviin sähköttäjiin.Järjestelmät toimivat monissa paikoissapitkään niin, että esimerkiksi New Yorkinja Bostonin välistä liikennettä hoitivatjoka päivä kummassakin päässä samatsähköttäjät. Näiden välille saattoi syntyävuosikausien työparisuhde, johon mahtuiruuhkahuippujen välillä epävirallista rupatteluaja kuulumisten vaihtoa. Nämäihmiset eivät välttämättä koskaan tavanneettoisiaan, mutta vuosikausien pituisetihmissuhteet hoituivat linjoja pitkinaivan samoin kuin nykyäänkin.Suomessa käytettävät morseaakkosetA ·-B -···C -·-·D -··E ·F ··-·G --·H ····I ··J ·---K -·-L ·-··M --N -·O ---P ·--·Q --·-R ·-·S ···T -U ··-V ···-W ·--X -··-Y -·--Z --··Å ·--·-Ä ·-·-Ö ---·39


TiedeBittibiologian alkeetElämä ja evoluutio ovat monimutkaisia prosesseja jaoivallisia kohteita simuloinnille. Elollisten olentojensimulaatiot vaihtelevat matemaattisista abstraktioistadigitaalisiin geeneihin, aina robotteihin saakka.Teksti: Kalle ViiriKuvat: Teija Tuhkio, Kalle Viiri, Bigben Interactive / Fishing CactusSoluautomaatioMatemaatikko John Conwayn kehittämäGame of Life on tunnettu soluautomaatti,matemaattinen ”peli”, jossa solut vaikuttavattoisiinsa ennalta määrättyjensääntöjen mukaisesti. Solut elävät ruudukossa,ja ne selviävät vain, jos niillä onsopiva määrä eläviä soluja naapureinaan.Alle kaksi naapuria johtaa kuolemaan yksinäisyydenvuoksi ja yli kolme naapuriakuolemaan tungoksen takia. Jos tyhjälläruudulla on kolme naapuria, siihen syntyyuusi solu.Yksinkertaisesta säännöstöstä huolimattaGame of Life on täynnä mielenkiintoisiailmiöitä. Useista lähtötilanteistakehittyy villisti ja pitkään laajenevia kaoottisiasolurykelmiä, mutta myös vakaitakuvioita. Vakaita kuvioita kutsutaanoskillaattoreiksi, jos ne liikkuvat, ja stilllifeiksi, jos ne ovat täysin paikallaan.Muita mielenkiintoisia kuvioita ovat ruudukollavaeltavat liitimet (glider) ja avaruusalukset(spaceship).Game of Lifea pidetään usein keinoelämänalkeellisena muotona, sillä monetsolurykelmät käyttäytyvät orgaanisenoloisesti. Pelin mielenkiinto liittyy kuitenkinelämän simuloimisen sijasta pitkältipelin matemaattisiin ominaisuuksiin.Ohjelmoijat ja matemaatikot ovat haastaneetitseään siten, että etsivät esimerkiksiitseään kopioivia koneita ja tietoko-Evolve muistuttaa ohjelmointiympäristöä. Tarkasteltavana solun ominaisuudet40 2013.4


neita, jotka voi toteuttaa pelin säännöillä.Suurimmissa tällaisissa rakennelmissaon miljoonittain soluja, ja niiden toiminnastaon erittäin vaikeaa ottaa selvää ihmissilmällä.Game of Lifen ja muiden soluautomaattienkokeiluun on saatavilla kymmenittäinohjelmia. Yksi tunnetuimmistalienee GoLLy, josta tämän artikkelin kuvankaappaukseton otettu.Ohjelmoitavia solurobottejaEvolve 4.0 muistuttaa ensi vilkaisullasoluautomaattia. Game of Lifen lailla pelikeskittyy yksittäisten solujen elämään javuorovaikutukseen ruudukkomaailmassa.Ulkonäkö kuitenkin pettää. Evolvensolut muistuttavat Conwayn matemaattisenmallin sijasta yllättävän paljon reaalimaailmanorganismeja.Jokainen Evolven solu on ohjelmoitukForthilla, Forth-ohjelmointikielen kaltaisellakielellä, joka määrittää solun toiminnan.Solu seuraa koko elämänsä ajanohjelmakoodia suorittaen käskyn kerrallaan.Käskyt tekevät kaiken, mikä liittyysolun toimintaan. Ne liikuttavat solua,saavat sen syömään, kasvattamaan uusiasoluja osaksi itseään tai tuottamaanitiöitä lisääntyäkseen. Soluilla on myösalkeellisia järjestelmiä toistensa kanssaviestimiseen.Solut lisääntyvät jättämällä ympäristöönsäitiöitä. Kun kaksi itiötä jätetäänsamaan ruutuun, niistä syntyy elävä solu.Jos itiöt ovat peräisin samasta eliöstä, kyseessäon suvuton lisääntyminen, muussatapauksessa suvullinen lisääntyminen.Uusi eliö perii vanhempiensa piirteet ohjelmakoodinmuodossa mutta satunnaismutaatioillahöystettynä. Periytyminentoimii melko sujuvasti, koska kForthissaon helposti käsiteltävä rakenne.Solujen määrää ja niiden käyttämäämuistia rajoittaa simulaatiouniversuminenergiamäärä, joka pysyy jatkuvasti vakiona.Solu tarvitsee energiaa itiöidentuottamiseen ja sisäisen muistipinonsakasvattamiseen. Muut toiminnot ovatsolulle ilmaisia, mutta kun sen energialoppuu, se kuolee. Solut palauttavatenergiaansa syömällä itiöitä, toisia solujatai kuolleita soluja, pitäen näin energiankierrossa.Yksinkertaisuudestaan huolimattaEvolven simulaatiomalli mahdollistaa yllättävänmonimutkaisten otusten kehittymisen.Pelin kehittäjä Ken Stauffer ontehnyt useita kokeita, joissa simulaatioidenannetaan toimia todella pitkiä aikoja.Kokeiden tuloksena on syntynyt useastaerikoistuneesta solusta koostuvia organismeja,jotka selviävät merkille panta-Norn-lapsi Bob valittelee väsymystäänNornit osaavat kommunikoida keskenään ja pelaajan kanssa yhdistelemällä verbejä ja objekteja.van hyvin jopa silloin, kun ne kilpailevatravinnosta ihmisen ohjelmoimien organismienkanssa.Kauniit mutta syvällisetVuonna 1996 julkaistun Creaturesin ulkokuorion hämäävän suloinen. Pääroolissaolevat norn-hahmot ovat suurisilmäisiäpörröpäitä, jotka kätkevät sisäänsä kiehtovanmonimutkaisen simuloidun elimistön,käytösmallin ja perimän.Nornin elinkaari on hyvin samankaltainenkuin ihmisen. Vastasyntyneet nornittarvitsevat paljon ravintoa, liikkuvathitaasti kontaten ja sairastelevat helposti.Ne käyttäytyvät kuten lapset: leikkivätmielellään, kiinnostuvat asioista helpostija oppivat asioita yrityksen ja erehdyksenkautta. Esimerkiksi liedellä kätensäpolttanut norn oppii välttämään kuumiaasioita. Pelaaja vaikuttaa nornien maailmaankädellä, joka toimii kursorina. Kädellävoi siirtää esineitä, käskeä nornejasekä lyödä tai silittää niitä rangaistukseksitai palkinnoksi.Kasvaessaan norn alkaa liikkua nopeamminja kiinnostuu toisista norneistaenemmän. Olennot osoittavat toisilleenhellyyttä pusuilla ja toisinaan purkavatvihaansa lyömällä toisiaan. Sukupuolihormonientoiminta alkaa aikuisuudenkynnyksellä ja saa nornin kiinnostumaan41


Yleisesti nähtyjä hahmoja Game of Lifessa: vasemmalla”palikka”, ”mehiläispesä” ja ”vilkkuja”,oikealla liidin ja avaruusalus.Acorn 512 sukupolven jälkeen.Acorn eli ”käpy”, pieni kuvio, joka laajenee pitkäänpelin käynnistymisen jälkeenkin.Kvastakkaisesta sukupuolesta. Sukukypsiennornien välinen suukottelu voi johtaaraskauteen ja jälkikasvun syntymiseen.Lapsinornit perivät vanhempiensa piirteitäpelin perimämallin mukaisesti.Kun nornit ikääntyvät, niiden hedelmällisyysheikkenee. Niistä tulee hitaampia,ja ne sairastuvat helpommin.Terveyttä voi ylläpitää lääkitsemällä vanhuudenvaivoja erilaisilla kemikaaliruiskeilla,mutta ennemmin tai myöhemminnorn kuolee. Nornin luonnollinen elämäkestää yleensä 5–10 tuntia. Rotu- ja ympäristötekijätvaikuttavat elinikään, muttanorn voi kuolla myös ennen vanhuusikääerilaisiin sairauksiin, myrkkyihin,nälkiintymiseen tai vammoihin.Pinnan alleNornin käyttäytymistä säätelevät kemikaalit,joita on jokaisessa eliössä yli sataerilaista. Suuri osa kemikaaleista kuuluunormaaliin aineenvaihduntaan, esimerkiksiglukoosi, rasva, happi, hiilidioksidija C-vitamiini. Kemikaaleja ovat myösmyrkyt ja taudinaiheuttajat sekä niidenvasta-aineet. Lisäksi niihin kuuluvat eliöntarpeita kuvaavat vietit kuten sukupuolivietti,kipu ja nälkä. Kemikaalien vaikutukseteivät ole kiinteitä, vaan ne riippuvatpaljolti eliön perintötekijöistä.Kemikaalien eritystä säätelevä geenijärjestelmäon monimutkainen. Se onsuunniteltu muistuttamaan todellistaDNA:ta rakenteeltaan ja toiminnaltaan.Perintötekijöiden vaihtelu aiheuttaa todellapaljon vaihtelua saman lajin yksilöidenvälillä. Norneilla voi esiintyäperinnöllisiä ongelmia kuten ruokahaluttomuuttatai heikkoa vastustuskykyä.Niillä voi olla myös toivottavampia piirteitäkuten poikkeuksellisen tehokastaaineenvaihduntaa, harvinaisia värikuvioita,myrkkyimmuniteettia tai jopa kuolemattomuutta.Risteyttämällä norneja sopivasti pelaajavoi jalostaa haluamiaan piirteitäesiin, mutta se on melko hidasta. Joissakinsarjan peleissä toimintaa voi no-Open WormKeinoelämän luominen voi olla tieteen työkalusiinä missä muutkin simulaatiot. Yksikiehtova esimerkki simuloitujen organismienmahdollisuuksista on OpenWorm -projekti.Avointa lähdekoodia ja dokumentaatiotakorostava OpenWorm pyrkii simuloimaanC. elegans -sukkulamatoa yksittäisten solujentarkkuudella. Sukkulamato valittiin simuloinninkohteeksi yksinkertaisen hermostonsavuoksi, ja se niitti tiedeyhteisössä mainettajo 1998 olemalla ensimmäinen monisoluineneliö, jonka perimä sekvensoitiin kokonaan.OpenWorm on vielä keskeneräinen, muttaosittain toimivia solu- ja hermostomallejapääsee lataamaan ja tutkimaan osoitteessahttp://www.openworm.org/.peuttaa käyttämällä ”geeniyhdistäjää”,joka surmaa kaksi olentoa ja muodostaaniiden geeneistä uuden yksilön. Toisenavaihtoehtona on käyttää pelin lisäosanasaatavaa geenieditoria ja muokata geenikoodiasuoraan.Norneilla on vähemmän tunnettumutta merkittävä rooli digitaalisten eliöidenoikeuksiin liittyvässä keskustelussa.1990-luvun lopulla Creatures-sarjan fanienjoukkoon syntyi alakulttuuri, jossakehiteltiin kekseliäitä tapoja kiduttaa taisurmata norneja. Ilmiön huippuvuosinajaettiin internetissä muun muassa pelokkaaksimutta itsetuhoiseksi koulutettuanornia, jonka perimään oli peukaloitukroonisen humalatilan aiheuttava geeni.Monet nornien ystävät suivaantuivat, jakeskustelualueilla otettiin vilkkaasti kantaasiihen, onko digitaalisten eläinten kiduttaminenoikein. Keskustelu käytiin jomuutamaa vuotta ennen kuin perheidenpolttaminen elävältä The Simsissä muodostuikansanhuviksi!Sarjan päävisionääri, englantilainentietojenkäsittelytieteilijä Steve Grand ontehnyt Creaturesin jälkeen monia mielenkiintoisiakeinoelämäkokeita. Yksikunnianhimoisimmista hankkeista onnytkähdellen liikkuva suurisilmäinenrobottioranki Lucy, joka tunnustelee jakatselee sille annettuja esineitä kuin pienilapsi. Sen toimintaa ohjailee keinotekoinenneuroverkko, jonka avulla Grandtoivoo Lucyn oppivan maailmasta omatoimisesti.Lucy toimii osoituksena siitä,että keinoelämää voi esiintyä myös virtuaalimaailmanulkopuolella.42 2013.4


PelitFreeciv LongturnPitkää vuoroa pukkaaKiinnostaako kuukausien pituinen Civ-matsi? Meitä kiinnosti. Tuloksena syntyi yksitarina, yksi kokemuskertomus ja lyhyt oppimäärä perustietoa kätevässä paketissa.Teksti: Jaakko Heusala, Ville-Matias Heikkilä, Jarto Nieminen, Tapio BerschewskyKuvat: Ricardo Liberato, Ville-Matias Heikkilä, Jaakko HeusalaFreeciv on Civilization-pelisarjanensimmäisten osien tyylinen vuoropohjainenstrategiapeli, joka perustuukokonaan vapaaseen lähdekoodiinja on kehittynyt alkuperäisistä Civilization-peleistäeteenpäin.Freecivin merkittävimpiä eroja Civilization-pelisarjaanon sen lähes loputonmuokattavuus. Jos haluaa tehdä pelistämielenkiintoisemman tai korjata epämiellyttäviäominaisuuksia, voi muutoksetyleensä tehdä helposti palvelimenasetuksia muuttamalla. Vielä enemmänsaa aikaan, jos osaa C- tai LUA-ohjelmointikieliä.Freeciv on viimeisten vuosien aikanakulkenut ripeää vauhtia eteenpäin. Kehitystäon tapahtunut niin yksinpelissäkuin moninpelissäkin. Monipuoliset diplomaattisetsopimukset onnistuvat sekätekoälyn että toisten pelaajien kanssa.Jättimäisiä pelejäFreeciv tukee nykyään jopa 126 pelaajanpelejä ja kahden miljoonan ruudunkokoisia karttoja. Suurten pelien kanssaon tosin suurempi riski törmätä uusiinbugeihin. Harvempi tarttuukin tällaiseenjärkälepeliin, joka myös vaatii enemmäntehoja palvelimelta. Merkittävimpiä jättipelejäovat Longturnit.Longturnissa Freeciviä tai Civilizationiapelataan yksi vuoro tietyn pitkänajanjakson kuluessa, kuten kerran päivässä.Kansainvälisessä Longturn.orgissavuoron pituus on yleensä 23 tuntia,ettei kukaan pelaajista saa etua aikavyöhykkeenansiosta.Pelaamiseen riittää periaatteessavarttitunti päivässä. Loppuvaiheessapeliä siihen voi kulua tuntejakin. Erityisestialussa aikaa menee pelipalvelimenerityispiirteiden opiskeluun. Erot voivatolla hyvinkin suuria riippumatta siitä,onko pelannut aikaisemmin, sillä asetuksetvaihtelevat paljon palvelinten välillä.Pelaajat pääsevät yleensä itse vaikuttamaannäihin ennen pelin alkamista äänestyksilläja esittämällä omia ideoitaan.Kotimaassa ja muuallaSuomessa longturn-pelejä on järjestettyjo yli kymmenen vuotta. Aluksi pelejä pelattiinmuutamassa eri porukassa, jotkaovat sittemmin yhdistyneet Freeciv.finalle. Verkkosivujen lisäksi yhteisön löytääIrcnetistä kanavalta #freeciv.fi.Freeciv.fi aloitti maailman ensimmäisen126 ihmispelaajan longturn-pelinsyyskuussa 2011, noin kuukausi ensimmäisentähän kykenevän Freecivin version2.3.0 julkaisun jälkeen.Maailmalla on nykyään myös kaksikansainvälistä peliyhteisöä, Longturnja Greatturn. Näihin peleihin osallistuuyleensä noin 40-60 pelaajaa per peli.Pelaaminen näissä yhteisöissä vaihteleepaljon ja säännöt vaihtelevat, muttayhteistä kaikille on, että pelaajat päättävätasioista yhdessä. Peliä myös kehitetäänporukalla paremmaksi: tuodaanomia ideoita esiin, keskustellaan niistä jatehdään niistä yhdessä todellisuutta.Jaakko HeusalaJumalaisen komea Wenden, vain hieman alun jälkeen. Teutonisen ritarikunnan maailmanvalloitussuunnitelmatnäyttivät tässä vaiheessa vielä hyviltä. Miten pian ne murskaantuisivatkaan.44 2013.4


Miksteekkien alkukoti loistaa varhaisessa kukoistuksessaan niin puhtaana,kauniina ja yksimielisenä. Vuorolla 14 uskottiin vielä, ettei mertentakana olisi mitään tai ketään.Ensi kertaa pitkässäpelissäLoppuvuonna 2012 alkanut Longturnpelinumero 31 oli ensimmäinen Freecivmoninpeli,johon osallistuin yli kymmeneenvuoteen. Olin havainnut aikoinaanmoninpelit liian hankaliksi ajankäytönkannalta, mutta Longturnista kuuleminenpalautti kiinnostukseni. Peli kestääkuukausitolkulla, mutta koska sitä pelataanvain vuoro päivässä, pitäisi sen ainakinperiaatteessa sopia paremmin kalenteriin.Peli 31 käytiin saarikartalla, jolta kukinpelaaja sai alussa täysin oman mantereen.Alkupeli olisi tästä syystä varsinyksinäistä puurtamista. Suunnittelin kehityslinjanhyvin tarkkaan ajatuksenanikeskittyä etenkin rauhanomaiseen tieteeseen.Tein saaresta itselleni kopion,jolla simuloin läpi mahdolliset kehityskulutkymmeniä vuoroja eteenpäin: Milläratkaisuilla saisin kirjastot kaupunkeihinmahdollisimman nopeasti? Pitäisikö tähdätäensin monarkiaan vai yliopistoon?Vaikka periaatteessa vuorot saattoi hoitaamuutamassa minuutissa, käytin välilläsimulointiin ja taustatarinointiin jopatuntikausia.Yksinäisyyden aikaa kesti lopultayli kaksi kuukautta. Kaikki pikkuveneinsaavutetut saaret olivat asumattomia,ja vasta syvän meren laivat alkoivat löytäänaapureita. Ensimmäinen naapurini,Sveitsi, oli vajonnut koomaan juuri pariapäivää ennen ensiyhteyttä, kun pelaajaoli kyllästynyt yksinäisyyteensä. Oikeakontakti saatiin vihdoin vuorolla 73 itävaltalaisiinja heidän Raar-liittoumaansa,ja liityin melko pian Raarin kolmanneksijäseneksi.Rajat murtuvatEnsikontakti muutti pelin luonteen täysin.Miksteekkien alue oli vain pieni saarirykelmävaltameressä, jota kansoitti yli70 sivilisaatiota. Kansat muodostivat liittoumia,joiden kesken vaihdeltiin karttojaja haalittiin uusia jäseniä. Yhteyttä pidettiinircissä, jabberissa ja keskustelufoorumeilla.Pian ei enää riittänyt, että tekisiirtonsa jossain vaiheessa vuorokautta,sillä etenkin sotaoperaatioissa myös vuorokaudenaikaoli tärkeässä osassa.Itselleni dramaattisin käänne tapahtuivuorolla 148, kun itänaapurin pääsaarivallattiin kokonaan yhden ainoan vuoronaikana. Tällöin rauhanomaisenkinsivilisaation piti ruveta varustautumaankunnolla. Maailma polarisoitui: sotahullujenekspansionistien yhdistäessä voimiaanRaar, Kirkko ja muutamat muutrauhanomaiset liittoumat muodostivatoman yhteenliittymänsä. Voimatasapainomuuttui etenkin Kirkon jäsenten hyvänkoordinointityön ansiosta, ja rauhanviholliset kukistettiin lähes täysin ennenvuoroa 180.Koska Longturn-otteluita on pelattujo kymmenen vuotta, ajattelin pelitapojenhioutuneen sen verran, että tulokkaansaattaisi olla vaikea pärjätä. Kävikuitenkin ilmi, etteivät monet kokeneetkaanpelaajat olleet jaksaneet paneutuasääntöihin ja asetuksiin kunnolla, vaansortuivat perustavanlaatuisiin virheisiin.Odotin joutuvani imperialistien jyräämäksimelko varhaisessa vaiheessa, muttaselvisinkin kunnialla loppuun asti.Osa luhistuu tielleAiemmissa otteluissa ongelmallisiksiolivat kuulemma muodostuneet teknologianvaihtoringit,joita rakentamalla etenkinisot liittoumat pystyivät kehittymäänjärkyttävän nopeasti. Teknologian siirtämistäoli tästä syystä vaikeutettu, ja mukanaoli jopa riski, että vaihdon molemmatosapuolet unohtavat tietämyksensä.Diplomaattilaiva on juuri saapunut Sveitsin pääsaaren rantaan. Sveitsinvaltionjohto oli kuitenkin vetäytynyt jo ennen kontaktia.Vaihtoja ei siis pahemmin edes yritetty,vaan hitaammin kehittyneille liittolaisillepyrittiin järjestämään tilaisuuksia käydäteknologiavarkaissa isojen vihollistenmailla.Sääntöihin liittyvät erimielisyydet aiheuttivatmyös skismaa. Erään pitemmänpalvelinongelman aikana nettiin ilmestyikinkilpaileva Greatturn, jossa pelaajatäänestivät käyttöön otettavista säännöistäenemmistödiktatuurin keinoin.Osallistuin myös hyvin ahtaalla yhtenäismantereellakäytyyn Greatturniin, enkäpärjännyt siinä läheskään yhtä hyvin kuinLongturnissa.Pelin kesto johti myös siihen, että monetpelaajat rupesivat ennen pitkää idlaamaan,eli kyllästyivät peliin antamattasitä kaverinsa jatkettavaksi. Idlaajasaartenvaltaaminen katsotaan Longturnkulttuurissatäysin hyväksytyksi toimenpiteeksimyös rauhanomaisen linjanvetäjille.Kokeilun arvoinenVaikka Longturn saattaakin ajankäytöllisestimuistuttaa kasuaalipelejä, ei semissään nimessä ole sellainen. Kuukausienpäivittäinen sitoutuminen on tärkeää,kuten myös hyvä yleinen ote Civilizationiin.Päätin itse olla osallistumatta peliin32, sillä se ajoittui kesälle, jolloin päivärutiinistakiinni pitäminen on muutenkinhankalampaa.Muutamista ongelmista huolimattasuosittelen Longturnin tai Greatturninkokeilemista kaikille Civilizationeistapitäville – etenkin niille, joilla on pitkäjänteisyyttämutta ei aikaa tuntikausienpelisessioille.Ville-Matias Heikkilä45


180 vuoroalongturn-freeciviäTämä historiallinen kertomus perustuuTeutoniritarikunnan Suurmestari Metoninsaneltuihin muistiinpanoihin. Osatarinasta on kirjuri Thihin tulkintaa, osasuoria otteita Suurmestarilta ja osa ehkäpelkkää legendaa...Kaikki alkaa vuonna 4000 eaa. Teutoniritarikuntaon juuri perustanut ensimmäisenasuinpaikkansa, pääkaupunkiWenden. Hyvin nopeasti siirtokuntakasvaa kahdella lisäkylällä. Königsbergja Marienburg ovat vaatimattomia valtakunnanylpeyden rinnalla, mutta siltimerkittäviä agraarisia keskuksia.Suurmestari päättää viisaudessaan,että kolmesta uudisraivaajaryhmästäyksi lisättäisiin pääkaupungin asukkaisiin.Jotain kuitenkin menee vikaan viestiketjussa,ja paikallinen vasallihallitsijapäättää käyttää uudisraivaajia orjatyövoimanapääkaupungin tuotannon lisäämiseksi.Kymmenen tuhatta kansalaistakuolee Wendenin kaduille loppuun piiskattuina.Tämä on vasta alkusoittoa Suurmestarinvihan liekeille. Hänen uransa tuleeolemaan täynnä tuskaa, vääriä päätöksiä,selkään puukottavia liittolaisia ja senmyötä suoranaista pelkuruutta.Aikansa saartaan tutkittuaan, Suurmestarihuomaa harmikseen, ettei hänhallinnoi kovinkaan suurta mannerta.Tiedustelijat näkevät kuitenkin läheisenmatalikon yli toiselle maalle. Tämä saaSuurmestarin määräämään valtakunnanviisaat kehittämään entistäkin tehokkaampiaaseita ja varustautumaan mahdolliseenmiehitykseen.Suhteet ympäröiviin valtoihin eivätkuitenkaan ole välittömästi yhtä kylmättai jyrkät kuin Suurmestari alun perinoletti.Ensimmäinen kosketusHyvin nopeasti muut valtiot alkavatliittoutua isommiksi kokonaisuuksiksi.Luonnollisesti kristillisenä valtionaSveitsin tyhjiksi jääneet temppelit ja autioituneet kadut oli helppo vallata. Miksteekit eivät kohdanneetvastustusta siirtäessään omat nukkehallitsijansa paikalle. Kukaan ei edes älähtänyt, kunsalkoon vedettiinkin valkoristin sijaan kaunis maanläheinen miksteekkilippu.Kun miksteekit liittyivät raramurien ja itävaltalaisten perustamaan Raar-liittoon, alkoivat kartanmustat alueet täyttyä vauhdilla. Maailman loputtomat rikkaudet odottavat ottamistaan yhdistyneenmahdin edessä.Teutoniritarikunnan Suurmestaria kiinnostaajäsenyys rauhan filosofiaa edustavassaKirkon liitossa. Siihen liittyminentuntuu hieman paradoksaaliseltasotilaalliseen varusteluun panostaneelleSuurmestarille. Kirkko on toisaalta suurinliitto, ja sen jäseniin on valmiiksi diplomaattisetsuhteet.Suhteellisen läheltä löytyy myösRaar-liitto (Ramaruni-Austria), johonkuuluu muutama lähemmin historiastatunnettu kansa. Liittoneuvottelut käyväthetken aikaa kuumina, ja Suurmestarionnistuu saavuttamaan alustavan paikanliiton jäsenehdokkaana. Raar-liittoumankartta jaetaan Suurmestarille.Suurmestari olettaa tilanteestaan liikojaja luulee tulleensa osaksi Raar-liittoa.Valtakunnan tuotanto suunnitellaanuudelleen. Veneiden rakentaminen jääkymmeneksi vuoroksi sivuun Suurmestarinpyrkiessä tyydyttämään Raar-liitonmaanviljelytarpeita.Kymmenen vuoron päästä Suurmestarisaa tietää, että Raar-liitto on päättänythylätä Teutoniritarikunnan. Kymmenentuhannen kansalaisen menetysjo ensimmäisellä vuorolla on hidastanutritarikunnan kehittymistä. Raar-liitto ontämän vuoksi päättänyt, etteivät Teutonitole tarpeeksi merkittävä ja suuri valtioliittolaisekseen.Suurmestari vannoo kostoa Viznutille,Bamskampille ja kaikille muille tyhjiälupauksia tehneille Raarin johtajille.Kirotut petturit saisivat vielä maistaaoikeuden kylmää terää. Veneiden kehityspalautetaan kansakunnan ykkösprioriteetiksivälittömästi. Veneillä sanan-46 2013.4


saattajat raivaavat ensitöikseen tiensäKirkon liiton jäsenten pakeille. Liittosopimussyntyykin nopeasti. NeuvotteluissaRaar-liitolta saadut kartat ja tiedustelutiedotovat kelpoa kauppatavaraa.Asiat kehittyvät kuitenkin nopeastija odottamattomin tavoin. Pian sekäRaar että pari muuta ympäröivää liittoakuuluvat Kirkkoon. Kostosuunnitelmat javanhat kalavelat unohtuvat suuremmankuvan avautuessa Suurmestarille.Uskonsodan alkumetritYhteistyö kirkon kanssa asettuu kymmeniksivuoroiksi tasaiseksi ja jopa tylsäksimaanviljelyksi. Ensimmäisten vuorojenvirheiden päälle kerääntyy nippu uusiatakaiskuja. Malttamaton Suurmestari eiole tyytyväinen peltojen raivaamiseen,vaan kaipaa voitokkaaseen sotaan.Vihdoin loppupeli koittaa, ja Suurmestarinensimmäinen sotaretki alkaa.Kirkon liiton sotilasmestari Xercise lähettääTeutoniritarikunnan varustamolletilauksen. Suureen sotaan kaivataanjoka mies, vaikka Suurmestarin epäonnija taidottomuus tieteen ja talouden hoidossatarkoittaakin sitä, että hänen joukkonsaovat teknologisesti alivarusteltujaviholliseen verrattuna.Tilaukseen kuuluu 3 kaljuunalastillistaparhaita musketöörejä ja tykkejä. Yhteenkaljuunaan mahtuu 4 komppaniaamiehiä. Yhteensä tilauslistalla on siis 12komppanian armeija Teutoniritareidentykistöä ja musketöörejä. Teutoniarmeijanupseerit ja kouluttajat ryhtyvät välittömästitoimiin vätysten piiskaamiseksiruotuun.Hyökkäysjoukot valmistuvat teutonisellatehokkuudella etuajassa ja lähtevätpitkälle purjehdukselle kohti liittolaisvaltioItä-Saksan rannikkoa. Armeijanon tarkoitus nousta maihin poukamassa,joka on sodan etulinjassa. Täällä joukkojenon määrä odottaa Kirkon yhteistämaihinnousuhyökkäystä pahuuden voimiavastaan.Viimeisellä vuorolla liittoumat tekevät kaikkensa, jotta saisivat vallattua vielä muutaman takapajuisenkaupungin. Tankit vyöryvät eteenpäin viimeiseen saakka, ja ydinpommit paukkuvat.Turkkilaiset ja englantilaiset ovat juuri tunkeutuneet Ruotsin pääsaarelle. Saari vallattiin kokonaansamalla vuorolla, mikä jätti ruotsalaisille vain muutaman syrjäisen pikkusaaren.Kunniaton tappioJoukot saapuvat perille turvallisesti jaajoissa. Suurmestarin päiväkäsky joukkojenrantauttamisesta ei kuitenkaanlöydä tietään Amiraalin toimistoon. Teutonieneliitit jäävät siis odottamaan laivoihinrannikon tuntumaan – valmiinahyökkäykseen. Kaljuuna-armadaa suojeleevastarannalta lähestyviltä vihollisiltaHakkereiden, Itä-Saksan ja Ranskan hävittäjälaivastot.Salakavala vihollinen on kuitenkinkaikkia ovelampi ja hiipii laivaston selustaansukellusveneillään. Syvyyksistäilmaantuvat tuholaiset upottavat vaivattakoko Teutoniritarikunnan vanhentuneenkaluston. Myös iso osa liittolaisten moderneistahävittäjistä uppoaa samassarytäkässä.Murskaava tappio käy raskaaksiSuurmestarin moraalille. Syvä masennusajaa hänet etsimään neuvoa pullon pohjalta.Loput hallintokaudestaan Metonviettää enemmän tai vähemmän päihtyneenäkiroten kurjaa kohtaloaan.Kaikki yritykset auttaa tai tukea Kirkoneteneviä joukkoja valuvat hiekkaan.Laivaston antiikkinen purjekalusto ei yksinkertaisestiole tarpeeksi nopea pysyäkseenmodernimpien laivojen perässä.Aivan viimeisillä vuoroilla saavutetaanpieniä, mutta kokonaiskuvassa merkityksettömiävoittoja Palatinaattiritarikuntaavastaan Syyrialaisten armollisella avustuksella.Planetfall jää Teutonien ainoaksi sotasaaliiksi,ja Suurmestari vaipuu lopulliseenepätoivoon. Rauhanliiton maanviljelijöidenmarssiessa valtaamaan maailmaahän vaipuu hiljaa pois yksinäiseen tuntemattomuuteen.Teutoniritarikunnan taivalpäättyy hiljaiseen ja hampaattomaanraivoon.Jarto Nieminen,Tapio Berschewsky47


PelitLegendojenPaluu:Ultiman jaWastelandinPerillisetJoukkorahoituspalvelu Kickstarterinmenestystarinat ovat innoittaneethaudanryöstäjiä etsimäänmuinaisia peliaarteita. Kaksijoukkorahoituksen avulla uuttatulemistaan tekevää peliä on ylimuiden.Teksti: Jukka O. KauppinenKuvat: Jukka O. Kauppinen,Risto Mäki-Petäys, MobygamesRoolipelaajille on luvassa hieno pelivuosi,joka lupaa palauttaa veteraanikörmytaikaan, jolloin kaikkioli paremmin. Genren oikeutettu jumalhahmoRichard ”Lord British” Garriottpalaa pelikentälle fantasiaroolipelilläShroud of the Avatar: Forsaken Virtues.Shroud ei ole Ultima, mutta se on temaattisestiselvä paluu Ultima-saaganvarhaisempiin vuosiin.Roolipelilegenda Brian Fargon unelmaprojektiei sekään vaikuta hassummalta.Wasteland 2 on toistakymmentävuotta suunniteltu jatko-osa kaikkienpost-apokalyptisten seikkailujen isälle.Kummastakaan pelistä ei voi kiittääperinteisiä julkaisijoita. Ennen niin kunniakasUltima-sarja on denegeroitunutmikromaksuseikkailuiksi, ja Wastelandinjatko-osan suunnitelmat kustantajat hylkäsivätkerta toisensa jälkeen.Laaja ja uskollinen faniyhteisö intoutuikantamaan klassikoiden jatko-osillemuhkeat rahoituspotit Kickstarterinkautta. Shroud of the Avatar haki miljoonandollarin rahoitusta, mutta kassaanon kirjoitushetkellä kertynyt jo 2,7 miljoonaa,josta 1,9 Kickstarterista. Wasteland2 haki 900 000 dollaria ja sai 2,9miljoonaa.Keräysten suosio osoittaa, että pelaajakansaon enemmän kuin halukasta näkemäänvanhoille klassikoille perinteitäkunnioittavia jatko-osia, joita tehdessä eitarvitse nöyristellä kaupallisuuden paineidenalla.Miksi muinaisten pelisarjojen joukkorahoitukseenosallistutaan näin innolla?Asiaa täytyy tutkia aikakoneen kautta.Onneksi Skrollilla on sellainen!Reikänauhaseikkailuja 70-luvullaEletään vuotta 1977. Richard Garriotton 15-vuotias lukiolainen, joka tutustuukoulussa uuteen ilmiöön: tietokoneisiin.Niille ei ole vielä edes kunnon opetusohjelmaa,joten Garriott ylipuhuu rehtorinsaantamaan luvan itse suunnitellun jaitseohjatun tietokoneohjelmointikurssinsuorittamiseen.Seuraavan kahden vuoden aikanapoika kirjoittaa koulussa kaukokirjoitinpohjaiselletietokonejärjestelmälle hurjat28 tekstipohjaista fantasiaseikkailupeliä,läpäisten tietokonekurssin haasteet täysinpistein. Tietokonepohjaisen seikkailemisenlumosta voi saada etäisen mielikuvankun muistaa, että kaukokirjoitinoli kuin kirjoituskone, johon kuului reikänauhalukija.Koneessa ei ollut lainkaanmagneettista tallennusmediaa.Kesällä 1977 Richard vietti seitsemänviikkoa Oklahoman yliopiston tietokoneleirillä,jossa hän sai lempinimen. Tuostakesästä lähtien Richard oli Lord British.Vuonna 1979 nuorukainen oli töissäUltimoiden historiaAkalabeth: World of Doom (1980)Ultima I: The First Age of Darkness (1981)Ultima II: The Revenge of the Enchantress (1982)Ultima III: Exodus (1983)Ultima: Escape from Mt. Drash (1983)Ultima IV: Quest of the Avatar (1985)Ultima V: Warriors of Destiny (1988)Ultima VI: The False Prophet (1990)Worlds of Ultima: The Savage Empire (1990)Ultima: Worlds of Adventure 2: Martian Dreams (1991)Ultima Underworld: The Stygian Abyss (1992)Ultima VII: The Black Gate (1992)Ultima Underworld II: Labyrinth of Worlds (1993)Ultima VII Part Two: Serpent Isle (1993)Ultima VIII: Pagan (1994)Ultima Online (1997Ultima IX: Ascension (1999)Lord of Ultima (2010)Ultima Forever (2013)48 2013.4


teksasilaisessa tietokonekaupassa, jossahän näki ensimmäisen kerran Apple II-tietokoneen. Siinä oli oikeaa grafiikkaa,värejä ja jopa äänet! Richard intoutuitekemään Applelleen ensimmäisen kunnollisenroolipelinsä, Akalabethin. Seteki kaupan omistajaan niin suuren vaikutuksen,että tämä ylipuhui Richardintekemään siitä myös kaupassa myytävänversion.Akalabethia myytiin tusinan verran,ja yksi kappale päätyi kalifornialaisellepelijulkaisijalle. Tämä teki pikavauhtiajulkaisusopimuksen, jota seurasi yllätysmenestys:Akalabeth myi nopeassatahdissa 30 000 kappaletta. 17-vuotiasRichard tienasi huvikseen tekemälläänpelillä ja 200 dollarin panostuksella 150000 dollaria (nykyrahassa 555 000 dollaria),ja yliopisto-opintojen rahoitus ratkesikerralla.Ultima VII oli isometrisen perspektiivinsä kera jo varsin näyttävä.Pimeyden ensimmäinen aika1981 oli merkittävä vuosi. Silloin ilmestyivätIndiana Jones ja kadonneen aarteenmetsästäjät, Das Boot ja Mad Max2. Niin myös Frogger, Haunted House,Jupiter Lander, Pac-Man ja Softporn Adventure.Ja Ultima I.Garriottin ensimmäinen kaupalliseksisuunnittelema seikkailu viitoitti hänennäkemyksiään siitä, millaisia tietokonepelitvoisivat olla. Ultima I olikin todellinenmestarinäyte. Vaikka se on nykysilminkatsottuna kömpelö ja vaivalloinen,oli pelissä selvästi tunnistettavia teemoja.Graafinen tiilityyli pysyi lähes samanaaina Ultima V:een saakka. Keskustelujärjestelmäoli alkeellinen, mutta esimerkiksihahmonluonti onnistui jo neljän erirodun ja ammatin paletilla.Lisäksi pelaaja oli osa suurta maailmaa,jonka dramaattisessa tarinassaSosarian maailmaa uhkaa velho Mondain.Sosarian rauhaa rakastava hallitsijaLord British kutsuu avukseen sankarin,joka voi nujertaa Mondainin ja tehdämaailmasta taas hyvän paikan elää. LordBritishin lisäksi pelissä oli toinenkin persoonallinenhenkilö, Iolo the Bard, jokaon nähty sittemmin yhtä vaille jokaisessapääsarjan Ultimassa.Ultima poiki jatko-osia nopeaantahtiin. Ultima II: The Revenge of Enchantress(1982) ja Ultima III: Exodus(1983) rakensivat esikoisteoksen hyvisvs. pahikset -teeman päälle, laajentaenSosarian tarinaa ja vieden sitä kohtiuutta, ensimmäisen trilogian katastrofienjälkeistä maailmaa, jonka opimmetuntemaan Britanniana. Sarja lanseerasinopeaan tahtiin monia nykypelien standardeja.Ultima III esitteli esimerkiksiuseasta hahmosta koostuvat seikkailijaryhmät,rajoitetut näkökentät, värikkäätluolastot ja erillisillä kartoilla käytävättaistelut.Ultima IV vasta olikin kova juttu, ai-Ultima IV muistetaan erityisesti alun hahmonluonnistaan,joka tapahtui ennustajaeukon kysymyksiinvastaamalla.Ultima I oli mullistava sukellus tietokoneroolipelaamisenmaailmaan.49


nakin meille suomalaisille. Siitä suuri kiitosNiko Nirvin MikroBitissä julkaistullearvostelulle, jonka ansiosta peli breikkasikovaa. Sosarian raunioille perustettuaBritanniaa hallitsi viisaasti ja jalosti oikeamielinenLord British. Rauha vallitsi,mutta kaivattiin viisautta, esikuvaa –ehkä jopa täydellistä ihmistä.Ultima IV oli Garriottin omien sanojenmukaan peli, jossa hän opetteli tarinankertojaksi.Se oli myös yksi ensimmäisistätietokonepeleistä, jossa eettisyydelläja pelaajan moraalisilla arvoilla oli merkitystä.Hahmo luotiin nopanheiton sijaanennustajaeukon kysymyksiin vastaamalla,ja pelaajan käytös vaikutti tarinaanhämmästyttävillä tavoilla. Tämän täytyiolla valaistumista ja viisautta etsiessäänhyveellinen ja esimerkillinen sankari. Näkökulmaoli poikkeuksellinen silloin ja onsitä yhä tänäänkin, kun vastassa ei olekaansuurta myyttistä pahuutta. Pelilläoli myös muita mullistavia ansioita, kutenavainsanoihin perustuva ainutlaatuinenkeskustelujärjestelmä, vuorokaudenajatja maaston vaikutus liikkumiseen. Syystäkinlegenda.Monille sarja huipentui seuraavassaosassa, 1988 ilmestyneessä Ultima V:ssä.Lord British oli kadonnut vasta löydetynalamaailman uumeniin, ja valtaistuimellenousi sijaishallitsija, vihattu Blackthorne.”Mitä Ultima Viidessä ei ole, sitä eitarvita”, sanottiin. Ehkä näin. Viitosessapeli oli kehitetty täydellisimmilleen, japuritaanien mukaan sen jälkeen on mentyvain alamäkeä.Uusi aikakausi ja tarinanpäätösUltima VI: The False Prophetinmyötä Ultima-saagan maineoli korkeimmillaan. Pääpelienrinnalle synnytettiin rinnakkaisetpelisarjat Worlds of Ultimaja Ultima Underworld.Samalla Origin Systemssuuntasi rohkeasti kohti kuuttatoistabittiä ja keskittyi tekemäänpelejä PC:lle. VGA-värimaailmaanja isometriseenkuvakulmaan siirtyminen olijoillekin liikaa, mutta Ultimoidensuosio ja mittakaava vainkasvoivat. Nyt koko pelimaailmakuvattiin samassa mittasuhteessaniin maan päällä,kaupungeissa kuin luolastoissakin.Seikkailtavaa riitti.Kun ensimmäiset kolmeUltimaa kuvasivat Sosarianmaailman pimeää aikakautta,osat IV–VI kuvasivat valaistumisenaikaa, jolloin etsittiinpuhdasta sielua ja keskityttiin ihmisen sisimmäntutkimiseen. Seuraava neliosainentrilogia syöksyi jälleen synkkyyteen.Etenkin Ultima VIII: Pagan (1994) ja IX:Ascension (1994) kertoivat synkempiä japelottavampia tarinoita.Ultima IX päätyi myös kirjaimelliseenkehityshelvettiin. Viiden vuoden aikanapeli tehtiin uusiksi neljä kertaa ja tekijätvaihtuivat tiuhaan tahtiin. Ultima-kaanoniarikkonut seikkailu ei vastannut fanienodotuksia. Kun sekä Ultima VIII että IXmyivät odottamattoman kehnosti, pistiOrigin Systemsin omistava EA jäihinsekä jatko-osien, lisälevyjen että UltimaOnline 2:n kehityksen. The End. Fin.Joukkorahoitettu lupaushuomisestaRichard Garriott kätyneineen seurasiTim Schaferin Double Fine -studionhäikäisevää joukkorahoitusmenestystäkiinnostuksella ja totesi, että aika onkypsä selvittää ovatko pelaajat yhä kiinnostuneitaUltima-henkisistä roolipeleistä.Olivat he. Maaliskuussa 2013 avattuKickstarter-keräys haali puolessa vuorokaudessa500 000 dollaria.Tuleva roolipeli ei ole Ultima, vaikkase kovin siltä kuulostaa. Jo nimi – Avatarinkääreliinat: hylätyt hyveet – antaaymmärtää, että Avatar on pistetty hautaanja aloitettu kaikki alusta. Sattumastatuskin on kyse, sillä juuri tätä teemaaUltima-sarjan hengellinen jatko-osa tavoittelee.Shroud lupaa paluuta vanhan ajan tarinavetoiseen,interaktiiviseen ja moraaliseenroolipelaamiseen. Nykyseikkailut,morpeista puhumattakaan, keskittyvätroolipelaamisen sijaan grindaamiseen.Garriottin tiimin näkemys palaa tarinankerronnanytimeen: siihen, että roolipelissäollaan joku muu. Hahmon roolissaeletään virtuaalisessa maailmassa. Koetaanihmeitä ja tehdään mitä huvittaa.Leikitään kotia tai seikkaillaan, tutkitaanLord British, avaruuden lapsiEnsimmäinen Ultima vei pelaajansa avaruusmatkalle.Myöhemmin Garriottin perustamaOrigin Systems teki monia avaruusseikkailujaja NCSoftin leivissä mies loi scifimorppiTabula Rasan. Vuonna 2008 Garriott suorittiavaruuslennon kansainväliselle avaruusasemalleollen maailman kuudes avaruusturisti.Garriottin elämää on fantasian ohellavärittänyt rakkaus avaruuteen ja tieteeseen.Hänen isänsä, Owen K. Garriott, oli NASAnastronautti, joka työskenteli kahdella NASAnavaruusasemalla. Garriott onkin maailmantoinen toisen sukupolven avaruuslentäjä.Garriottin avaruuslennosta tehtiinmyös dokumenttielokuva, jota on kutsuttumaailman kalleimmaksi kotivideoksi.83-minuuttinen elokuva kuvaa niin avaruuslennontaustoja, koulutusvaiheen kuinavaruuslennon tapahtumiakin. Dokumenttikuvaa poikkeuksellisella avoimella tavallavenäläistä avaruusturistin koulutusvaihettaja avaruuslennon arkipäivää. Erittäin suositeltavaakatsottavaa sekä Garriottin ettäyleensä avaruuslentojen faneille!Elokuvan voi tilata muun muassa Amazonista.Lisätietoja:http://www.imdb.com/title/tt1611990/50 2013.4


ja etsitään aarteita. Kohdataan lohikäärmeitäkin.Seikkailussa ei ole lainkaan nykypelientehtävärakenteita. Selkeiden tehtävienja tavoitteiden sijaan pelaajia kannustetaanseuraamaan tarinan kaaria jakeskustelemaan maailmaa kansoittavienhenkilöiden kanssa. Moni uusi tehtävätai tarina voi löytyä niistä, liki huomaamatta.Shroud of the Avatar on peli, jossaei ole kompasseja kohteisiin, ei kiinteitähahmoluokkia, ei grindausta, ei rautalankaa.Ei siis ihme, että Garriott lupaa pelimaailmanolevan mahdollisuuksia täynnä.Samalla hän varoittaa, että pelaajienon kannettava vastuu teoistaan ja elettäväniiden seuraamusten kanssa. Peli,maailma ja sen asukkaat muistavat.Shroud on vasta alkua. 30 vuotta sittenGarriott loi Ultimoiden maailman yksin.Nyt urakka alkaa alusta. Mikäli pelilöytää pelaajansa, tulee Garriott tiimei-Viimeiseksi todelliseksi Ultima-seikkailuksijäänyt Ultima IX sisälsi muodikasta pelinsisäistämainontaa.neen työstämään uutta fantasiamaailmaavielä pitkään,monen uuden pelin ja laajennuksenmerkeissä. Ehkä Shroudistatulee uusi Ultima.Peli sisältää yksinpelin,yhteistyö-henkisen moninpelinystävien kanssa ja verkkomoninpelin.Early access-versio joukkorahoittajille julkaistaanvuodenvaihteessa,ja virallinen julkaisu ajoittuuvuoden 2014 loppuun.Ho eyoh he humMikä Ultimoissa viehättää?Yksi vastaus on pelisarjanmerkitys koko tietokoneroolipeliengenren synnylle. Aikana,jolloin seikkailupelitolivat lähes pelkästään tekstiseikkailuja,Akalabeth ja ensimmäinenUltima tähtäsivätkorkeammalle. Ne olivat aitojaroolipelejä.Osa Ultimoiden lumostatulee pelien maailmasta. Britannia kasvoipelaajiensa kanssa peli peliltä, tasaisestilaajentuen. Se oli ensimmäinentodellinen virtuaalinen pelimaailma, rakkaudellarakennettu jatkumo, jossa lähesmikä tahansa tuntui olevan mahdollista.Ultimat olivat yhtä aikaa hiekkalaatikkomaisiaavoimia seikkailuja ja vaihtoehtomaailmojafantasian mahdollistamassaäärettömyydessä. Niiden käsikirjoittamattomanyllätyksellisyyden ja avoimuudenansiosta jokainen koki tarinan eritavoin.Kuvailin kerran Ultimoita nykyaikaisiksisaduiksi. Tarinoiksi, joissa Hyvä jaPaha kamppailevat – ja Hyvä voittaa aina.Vaikka seikkailut suunnattiin varttuneillepelaajille, perusidea oli sama: oikeudenvoitto ja heikkojen puolustaminen. Garriottkoki velvollisuudekseen luoda peleihinsyvempiä teemoja, joissa korostettiinsuurempia hyveitä – kuten sitä, että vahvoillaon myös velvollisuuksia, ei ainoastaanoman käden oikeuksia. Ehkä siksipelisarja on tuntunut aina niin oikealta,niin rehelliseltä.Sekään ei haitannut, että Ultimat olivatpitkään todellisia tienraivaajia niintarinankerronnaltaan kuin teknisesti.Todellisuuden rajoja työnnettiin luovalla2D:n ja 3D:n yhdistelmällä, hiekkalaatikolla,pelaamisen vapaudella ja verkkomoninpelaamisensaralla. Siinä, missäUltima Underworld (1992) loi ensimmäisenkolmiulotteisen roolipelikokemuksen,oli Ultima Online (1997) yksi ensimmäisistätodellisista verkkoroolipeleistä,Kohokohtia ja kompastelujaUltima Onlinen alfa- ja beetatestivaihekesti liki puolitoista vuotta. Pitkän viimeistelyvaiheenjälkeen pelaajat kerääntyivätjuhlistamaan betan loppua pelimaailmaan.Originilla oli yllätys hihassaan: beta päättyiyllättäen maailmanloppuun. Ultimoiden arkkivihollinen,ulottuvuuksien välinen kauhistus,pahuuden perikuva ja maailmojen tuhoajaGuardian laskeutui Britanniaan. Maailmapeittyi demoneihin ja kuolemaan, eikä edesLord British säästynyt. Uskomaton tapapäättää beta ja avata maailma yleisölle!Ultima Underworld: The Stygian Abyss(1992) oli yksi ensimmäisistä todellisista3D-peleistä, ja äimistytti pelaajia jo ennenid Softwaren Doomia (1993) tai Quakea(1996). Samat tekijät loivat myöhemminSystem Shockin (1994) ja Thiefin (1998) kaltaisetmestariteokset.Ultima VIII Part Two: Serpent Islen(1993) ei alkujaan edes pitänyt olla Ultima.Sen kehitys kuitenkin junnasi ja pelimoottoriapäätettiin käyttää Ultima-seikkailuun.Aikataulut pettivät pahemman kerran ja rahoittajathermostuivat, minkä johdosta pelituupattiin kauppoihin hätäisesti kokoonkursittuna,sisällötään riisuttuna versiona.Kiireen takia teokseen jäi runsaasti bugeja jatarinallisia aukkoja, eikä kaikkia sivutehtäviävoinut edes ratkaista.Ultima Onlineen (1997–) tehtiin interaktiivinenmaailmasimulaatio, jossa kaikellaoli tarkoituksensa ja kaikki vaikutti kaikkeen,aina luonnon kiertokulusta lähtien. Työläsvirtuaalimaailman mallinnus ei kuitenkaanehtinyt edes käynnistyä, kun pelaajat säntäsivätmetsiin ja tappoivat kaiken. Aivan kaiken.Eräänkin kerran näin yhden ainokaisenpupun perässä puoli tusinaa pelaajaa. Lopultamaailmasimulaatio poistettiin, koskapelimaailmaan levittäytyneet ihmiset tuhosivatekosimulaation lähtökuoppiinsa. Kukaanei edes huomannut sen olemassaoloa.Mitä tapahtuikaan, kun Avatar nauttitaikasieniä Ultima IX:ssä?Faneille Ultima-sarja on kuollut, muttalegendan nimi elää kahdessa uudessamikromaksupelissä. Lords of Ultima (2010)on käpyinen ilmaispelattava MMO-strategia,ja iOS-alustalle saapunut Ultima Forever-mobiilimorppi (2013) on eräiden pelaajienmukaan sarjan historian masentavin, idiooteilletehty rimanalitus.jonka perintöä seuraavat tänään niinWorld of Warcraft kuin muutkin genrenedustajat.51


Säteilyaavikoiden kutsuWasteland 2 nousi radioaktiivisesta haudastaan.Menestynyt joukkorahoituskampanjaherätti henkiin myös toisenklassikon. Science fiction-roolipeli Wasteland (1988) oli aikanaansuuri menestys, joka vaikutti merkittävästiroolipelien kehittymiseen ja tarinankerrontaan.Se antoi nostetta kovanluokan science fictionin suosiolle tietokoneroolipelienpiirissä, mutta ansioistaanhuolimatta pelin jatko-osan syntyä onodoteltu epäonnisten tähtien alla.Wasteland oli amerikkalaisen pitkänlinjan pelisuunnittelija Brian Fargon(1962) käsialaa. Fargo teki ensimmäisenkaupallisen seikkailupelinsä, Demon’sForgen, jo 1981 ja perusti Interplay-pelitalon1983. Moni Fargon teoksista muistetaanseikkailu- ja roolipeliklassikkoina,joista mainittakoon Bard’s Tale -sarja(1985), Borrowed Time (1986), DragonWars (1989), Neuromancer (1989) jaStar Trek: 25th Anniversary (1992).Fargon peleistä legendaarisin onsilti Wasteland. Ydintuhon jälkeiseenmaailmaan sijoittuva roolipeli rakensiainutlaatuisen hienosti käsikirjoitetun jakyseenalaistavan tarinan romahduksenjälkeisestä maailmasta asukkaineen. Seoli kuin sarkastinen, älykäs videopeliversioMad Max -elokuvista, jonka taitavaatarinankerrontaa ja maailmankuvaa onVeteraanikehittäjä Brian Fargo teki ensimmäisenkaupallisen pelinsä vuonna 1981.sittemmin lainattu liki kaikissa ydintuhokuvauksissa,ei vähiten Fallout-sarjassa.Jos Wastelandin oikeaa jatko-osaa saatiinkinodottaa 25 vuotta, Falloutit ainakintekivät parhaansa muiston ylläpitämisessä.Paluu ydinaavikoilleWastelandin ansioita olivat muun muassaydinaavikon outoja tapahtumia tutkivienpelihahmojen kuvaaminen inhimillisinähahmoina, jotka eivät aina käsittäneetpelaajan kotkotuksia tai suostuneet noudattamaankummallisia käskyjä. Pelimaailmaoli dynaaminen ja muuttui jokaisellapelikerralla.Wasteland 2 noudattaa esikuvansamallia tyylikkäästi, nykypäivän vaatimuksianoudattaen. Se sijoittuu aikaan15 vuotta ensimmäisen pelin ja noin satavuotta maailman raunioittaneen atomisodanjälkeen.Pelillisesti Wasteland 2 tuntuu veteraaneilletutulta, mutta nykypelaajatkinhuomioidaan. Hahmojärjestelmä on pohjaltaansama kuin 25 vuotta sitten. Sentaustalla on tieteiskirjailijanakin tunnetunMichael A. Stackpolen Mercenaries,Spies and Private Eyes -lautapelin hahmojärjestelmä.Systeemi on erittäin toimivanoloinen ja mahdollisesti yksi hardcore-tasoisimmista,mitä uusista peleistälöytyy. Syystäkin, sillä pelaajien rahoittamaapeliä ei tarvitse siloitella julkaisijoidenpelkojen mukaan.Teoksen suurimmat avut löytyvät tarinankirjoituksestaja kauaskantoisuudesta.Se on kirjoitettu esikuvansa tapaantäyteen moraalisia valintoja ja päätöksiä,joilla on sekä välittömiä että kauaskantoisiaseuraamuksia. Nämä vaikuttavat sekäseikkailuun että maailman ja asukkaidensuhtautumiseen pelaajan ryhmään – jatietenkin pelaajaan itseensä. Mihin henkinenkanttisi venyy? Kestätkö päätöstesiaiheuttamat, kenties yllättävät ja kauhistuttavatseuraukset? Kääntyivätkö hyvättarkoitusperät nurinniskoin?Wasteland 2 vaikuttaa peliltä, jokaon vahvasti vanhan koulun edustajienmieleen. Sen kompromissittomuus näkyymuun muassa tekstin paljoudessa. Kunrahoja ei törsätä dialogin puhumiseen,voidaan tekstiä kirjoittaa arastelematta.Ongelmiin löytyy paljon erilaisia ratkaisuja,ja pelijärjestelmän avoimuuden ansiostapelaajat keksivät varmasti odottamattomiatemppuja.Seikkailun koosta puhumattakaan!”Tämä on ISO peli”, Fargo rykäisee allekirjoittaneelleja jatkaa, että se on ”paljonisompi kuin Fallout 1 tai 2”.”Useimmat pelaajat eivät koskaanehdi nähdä kaikkea”, Fargo lupaa ja kehuu,että eriävien tarinapolkujen ja vaihtelevienvalintojen ansiosta tekemistäriittää varmasti useaksi läpipeluukerraksi.Wasteland 2 ilmestyy vuoden 2014aikana.Wastelandin kirousVaikka Wasteland oli rakastettu hitti, eipeliala hellinyt sen jatko-osia. Ensin se jäiElectronic Artsin politiikan jalkoihin. Yhtiöntapasi teettää pelit ulkopuolisella studiollaja jos se menestyi, jatko-osa tehtiin EA:n sisällä.Niin nytkin. 1990 ilmestyi Fountain ofDreams, mutta sitä ei lopulta markkinoituWastelandin jatko-osana. Osasyynä tähänoli se, ettei Fountainin tekijöissä ollut ketäänWastelandin tiimistä, eikä peli yltänytFargon luomuksen tasolle.Lisenssin menetettyään Fargo ja Interplaytekivät Fountainin rinnalla omaa jatkoosaansanimeltä Meantime. Se jäi kesken,kun kotimikromarkkinat siirtyivät ryminällä16-bittiseen aikakauteen, eikä peliä kannattanutsiirtää uudelle alustalle.Fargo palasi ydinaavikoille vuonna 1997toisen klassisen roolipelin, Falloutin, parissa.Sarja ei kuitenkaan lainauksistaan huolimattaole jatkoa Wastelandille.Fargo on kertonut kuvitelleensa 20vuoden ajan jokaisen pelinsä jälkeen, ettänyt on oikea hetki tehdä Wasteland 2. Ainaturhaan. Paluu ydinaavikoille ei löytänyt rahoittajaaedes Fallout 3:n tai New Vegasinmenestyksen jälkeen, vaan vasta suoraanfaneihin vetoaminen mahdollisti pelinteon.52 2013.4


KolumnitEi pelattavissaTapio BerschewskyKulttuuria pitää säilöä, mutta kenelle sitäsäilötään? Uusi pelaajasukupolvi on lukutaidotonsille, mikä ennen oli selvää.Kymmenen vuotta takaperinSchipholin lentokentällätörmäsinaarteeseen. Pienestä putiikistairtosi halvalla Game BoyAdvancen versio Manic Minerista.Matthew Smithin tasohyppelyoli ennestään tuttuCommodore 64 -julkaisusta.Manic Miner oli niin vaikea,etten 80-luvulla päässytikinä edes kuudenteen kenttään.Jo ensimmäinen ruutuvaati useamman yrityksen,jotta kömpelösti liikkuvanhahmon sai ohjattua loppuunasti.Pääsin Game Boylla pidemmälle,mutta en kovinmontaa kenttää. Tämä saiajattelemaan, kuinka helpoiltanykypelit jo silloin tuntuivat.Manic Minerin design onarmoton. Genren nykypelienkanssa aloittaneelle se olisisuorastaan mahdoton.Kasarilla suunniteltiinmyös tasohyppelyjä, joidenkolikoita ja koettivat välttääniitä.Ihmiskunnan ylpeysTässä lehdessä muistelemmeUltima-roolipelisarjaa. Itsellenisen ikimuistoisin osa onneljäs. Se oli monipuolisempikuin mikään näkemäni peli.Pelaaminen vaati manuaalienlukemista. Kymmenvuotiaallepelin englanti oli vaikeaa, jotensanakirja pysyi mukana.Alkuun pääsi heti, muttaläpäisy odotutti hetken itseään.Tarkoitus ei ollut voittaapahaa pääörkkiä vaan kilvoitellatäydelliseksi ihmiseksi,Avatariksi. Peli mittasi pelaajantoimien hyvyyttä, ja vainkirkasotsainen näki lopputekstit.Muistan, kun ensimmäistäkertaa sain haltuuni piraattilaivanja matkustin sillä toisellesaarelle, jonka kauppamyi maagisia välineitä. Koulukaveritväittivät minun valehtelevan.haaste ei perustunut yliampuvanvihamieliseen ympäristöönja kiikkerään hahmoon.Heistä oli käsittämä-töntä, että peli voisi olla niinlaaja ja hieno.Aikanaan Super Mario Bros 1 Englannintaitoiselle nykyteinilleei tuntunut vaikealta. EnsimmäinenUltima IV:ssä ei kaikenttäpitäisi ollameni läpi hetimitään mahdotonta.IsoOppilaat eivät selviäja itse pelikin” Ultima IV:stä.muutamassa illassailmaavoin maa-aartei-Helposti ohjattavan hahmonja mainion kenttäsuunnittelunta pursuavine luolastoineen,loitsuineen, pulloineen ja tais-olettaisi toimivan teluineen on tuttua kamaa.aivan yhtä hyvin nyt. Näin ei Näinhän se Skyrimkin toimii.kuitenkaan ole.Wabashin korkeakoulunKesäkuussa 2013 Nintendonprofessori ja Brainy Gamertoimitusjohtaja Satoru -blogin perustaja MichaelIwata kertoi osakkeenomistajilletyrmistyttävän tarinan.Nintendon pelit ovat nykyäänAbbott kirjoitti vuonna 2010,että hänen oppilaansa eivätselviä Ultima IV:stä.helpompia kuin 80-luvulla, Abbott tiputtaa kurssilaisensakoska uudet pelaajat eivät selviäviikoksi BritanniaanSMB 1:stä.Nintendon testissä vain 10% uusista yrittäjistä pääsi ensimmäisenkentän läpi. Noin70 % kuoli ensimmäiseen viholliseen.Monet pelkäsivätpdf-manuaalien kanssa, vaillamuuta opastusta. Kolme vuottasitten uudet oppilaat eivätenää ymmärtäneet peliä. Heeivät tienneet, miten edetä taimikä on tavoite.Manuaaleista kysyttäessäluokka ihmetteli, eivätköne olleetkaan vain pakollistalaatikon täytettä. Kun Abbottoli ilmaissut, että pelaajienoletettiin lukevan ne ennenpelaamista, olivat oppilaattyrmistyneitä.Klassinen rope oli muuttunutpelikelvottomaksi. Siinäei ollut oppaita, ei tutkaaeikä tehtävälistaa. Edistymisentunne, joka syntyy ominpäin maailmaa tutkimalla, jäisaavuttamatta, koska oppilaatolivat tottuneet kädestä pitelyyn.Onko tämä paha?Mainitut pelit eivät olleet pienenhardcore-yleisön indiepelejävaan isoja julkaisuja.Niitä pelasivat kaikki, jotkagenreistä pitivät. Nyt ne ovatpelikelvottomia valtaosalleuusista yrittäjistä.Pelien kieli on muuttunutkuluneen 30 vuoden aikanamelkoista vauhtia. Näistä esimerkeistäpäättelemällä voisisanoa, että se muuttui tunnistamattomaksivain yhden sukupolvenaikuistumisen aikana.Ainakin uusille pelaajille,taaksepäin katsoen.Kohtaamme siis ehkä ensivuosikymmeneen mennessäpelaajasukupolven, jolle MonkeyIsland, Wing Commanderja Civilization ovat epäintuitiivisiaja mystisiä kokemuksia,joista he eivät saa selvää.Kunhan siskoni lapset alkavatolla peli-iässä, taidan suorittaamuutaman ihmiskokeen.Seuraavassa Skrollissa alkaajuttusarja modernin pelisuunnittelunkeinoista. Ovatkokeinot universaaleja vaiaikaan sidottuja? Tottumustensumma määrittää, mikä on yksinkertaistaja mikä ei. Onkotulevaisuus Cookie Clickerin?53


PelitFanikäännösprojektitKun vain itse tehty on kyllin hyvää.Pelifanit ovat aina löytäneet keinoja pelaamiseen ja pelikokemusten jakamiseen. Joskustiellä on kielellisiä ja kulttuurisia muureja, mutta tosifaneille ne ovat vain mukava haaste!Teksti: Visa-Valtteri Pimiä Kuva: Tuukka Virtaperko54 2013.4


Kulttuuriset erot länsimaiden ja Aasianmaiden pelihistoriassa ovataiheuttaneet sen, että monia aasialaisiapelejä ei ole lainkaan julkaistulänsimaissa, lähinnä kaupallisista syistä.Käännösten tekeminen kun on kallista,etenkin jos pelin myynti jää vähäiseksi.Niinpä fanit ovat toimineet oma-aloitteisesti.Jo 90-luvulta saakka he ovat hakkeroineetalkuperäisiä pelejä ja kääntäneetniitä toiselle kielelle. Heidän tavoitteenaanon käännöspelien saatavuuden parantaminenja pelikokemusten jakaminenmuillekin.Fanikäännösprojektien historia jaryhmien organisointiTietokone- ja konsolipelien laajamittaisetfanikäännökset ovat ainutlaatuisestiinternetin synnyttämä ilmiö. Pelejäkäännettiin pienissä piireissä jo 80-luvunlopussa ja 90-luvun alkupuolella,mutta siitä ei jäänyt juurikaan todisteita.Parhaiten tunnetut esimerkit olivatpiraattijulkaisuja ja syntyivät NintendonFamicom/NESin ja muiden pelilaitteidenharrastus- ja piraattipiireissä. Julkaisutsisälsivät vain vähän tekstiä.Vasta internetin ja emulaattoreidenyleistymisen myötä tulivat pinnalle julkisestidokumentoidut ja maailmanlaajuisetkäännösprojektit, joissa huomiokeskittyi erityisesti tarinasisältöön jakäännöksen laatuun. Toiminta käynnistyi,kun laiteharrastajat löysivät ensimmäisistäsuurista ROM-tiedostokokoelmistapelihelmiä, joita ei ennestään länsimaissatunnettu. Teknisesti kyvykkäät ja japaninkieltä osaavat harrastajat synnyttivätlukuisia projekteja pelien kääntämiseksienglannin kielelle. Tässä artikkelissa keskitytäännäihin myöhempiin, kunnianhimoisempiinja teknisesti haastavampiinprojekteihin.Jo alkuvaiheessa käännösryhmätkoostuivat useista erilaisista jäsenistä.Ohjelmoijien vastuulla on pelin ohjelmakoodinmuuttaminen ja alkuperäisten,vierasta kieltä sisältävien grafiikoidenOnnistuu se muillakin kielilläPelejä ei käännetä aina pelkästään englanniksi,vaan niitä on tehty jopa arabiaksi.Joel ”Bisqwit” Yliluoma on kääntänyt muunmuassa Tales of Phantasian, Chrono Triggerinja Castlevania II – Simon’s Questin suomeksi.Näitä teoksia voi tarkastella ja ladataYliluoman sivuilta.ja tekstien korvaaminen käännetyillä.Usein ohjelmoijat kehittävät myös työkalujaniille, joilla on vähemmän teknistäosaamista tai joilla on asiantuntemustamuilla aloilla.Kääntäjien työhön kuuluu alkuperäisenpelin teksti- ja grafiikkasisällönkääntäminen. Tämä vaatii yleensä kattavaaymmärrystä lähdeteoksen kulttuurikontekstista.Kulttuurinen tietous on tärkeää,jotta länsimaiselle kohdeyleisöllevaikeasti avautuvat viittaukset voidaankorvata tutummilla vastineilla.Graafikoiden tehtävään kuuluu alkuperäisteoksenvieraskielisten kuvaelementtienmuokkaaminen ja uusienkirjaintyyppien luominen. Grafiikassaerityinen haaste on alkuperäisen pelinvisuaalisen kielen ja tyylin säilyttäminen.Käännettyihin kuviin täytyy sisällyttääpelin ja tarinan ymmärtämisen kannaltaoleellinen tieto.Lisäksi projekteissa voi olla mukanatekstikäsikirjoitusta parantelevia jamuokkaavia editoijia sekä testaajia, joidentehtävänä on testata käännöspelientoimivuus ja ymmärrettävyys.Fanikääntämisen taide ja tiedeMuutamia poikkeuksia lukuun ottamattafanikäännöksiä tehdään japanilaisistapeleistä, joista julkaisija ei ole tehnyt virallistakäännöstä. Japanissa julkaistaanpelejä paljon, mutta länsimaiset maahantuojatvain valitsevat niistä omille asiakkailleensopivia ja entuudestaan tuttujenpelien jatko-osia. Kulttuurierot toki vaikeuttavatkääntämistä ja saattavat tehdäsen taloudellisesti kannattamattomaksi.Faneja tällaiset esteet eivät kuitenkaanhaittaa. Koska pelien lähdekoodejaja -tiedostoja ei yleensä ole saatavilla,tarjoaa pelien kääntäminen myös ainutlaatuisiateknisiä ja tarinankerronnallisiahaasteita. Niitä kääntäjäryhmä ratkooyhteisvoimin.Moonspeak – monien merkistöjenmagiaaJapanilaiset pelit käyttävät sekä äänneettäideogrammimerkistöjä. Jälkimmäisenetuna on se, että peliruudussa pienelläkuvapistemäärällä voi ilmaista suurenmäärän informaatiota. Kahdeksanbittisilläalustoilla ideogrammimerkistön käyttäminenei yleensä ole mahdollista, koskamuistia on vähän. Siksi pelien käyttöliittymässäja dialogissa suosittiin yleensääännemerkistöjä, ja sellaisen korvaaminenlänsimaisilla kirjaimilla onkin yleensähuomattavasti pienempi työ kuin vastaavienideogrammien.Pelkän valikkotekstin ja dialoginkääntäminen ei kuitenkaan aina riitä. Peleissäsaattaa esiintyä japanilaista tekstiämyös grafiikoissa, kuten pelin nimiruudussa,taustagrafiikassa ja onomatopoeettisissaäänitehosteissa, joiden idea onlainattu mangasta. Tämän takia kääntäminenvaatii usein myös taitavaa graafikkoa,joka osaa jäljitellä alkuperäistentaiteilijoiden tyyliä. Monille käännösprojekteillesaumaton graafinen kokemus onkunnia-asia ja merkittävä tekijä käännöksenlaadussa.Taistelu muistin vähyyttä vastaanEnglanninkieliset ilmaukset ovat useinmonisanaisempia kuin alkuperäiset japaninkieliset,mistä seuraa suurempi muistinkulutus.Varsinkin konsolipeleissä rajoitteenaon pelimoduulin ROM-muistinmäärä ja pelin muistinkäyttöä voi joutuamiettimään uudelleen. Joskus se vaatiipelikoodin kekseliästä muokkaamista taipelin alkuperäisen fyysisen muistikonfiguraationkorvaamista suuremmallavaihtoehdolla.Onpa tehty sellaisiakin käännöksiä,jotka eivät edes toimi alkuperäisellä konsolillavaan pelkästään emulaattorin sallimissa”valheellisissa” rajoissa. Näissäei huomioida laitteiston ominaisuuksiajoko tarkoituksella tai naiivin toteutuksenvuoksi.Monet varhaiset pelikäännökset olivatlaadultaan heikkoja, koska käännösprojektejaaloittelevat amatööriohjelmoijateivät useinkaan osanneet lisätä peliinlänsimaisten kielten vaatimaa tilaa. Niinpähe usein typistivät käännöksestä tekstiä.Joskus pelistä jätettiin pois tarinalletärkeitä osia.Moni alkujaan heikkolaatuinen käännösjulkaistiin myöhemmin uudelleen,kun toiset ryhmät olivat parannelleetaiempia käännöksiä. Kun yhteisöjen tekninenosaaminen, työkalujen laatu ja ryhmienkeskinäinen tiedonvaihto paranivatvuosien saatossa, parani myös käännöstenlaatu huomattavasti. Näin kompromissienmäärä väheni merkittävästi. Nykyisinfanikäännökset ovat yhtä hyviä taijopa parempia kuin isolla rahalla tuotetutkaupalliset käännökset.55


KulttuurisidonnaisuusKuten käännöstyössä yleensäkin, on japanilaisellekulttuurille ominaisten käsitteidenkääntäminen omanlaisensa haaste.Internet on kuitenkin mahdollistanutmannertenväliset yhteistyöprojektit,joissa japanilaiset jäsenet auttavat muitaymmärtämään japanilaisia käsitteitä.Toisaalta animen ja japanilaisen elokuvanmaailmanlaajuinen suosio on tehnytmonista aiemmin vieraista käsitteistä arkipäiväisiämyös länsimaiselle yleisölle.Käännökset toiseen suuntaan eli englannistajapaniksi ovat äärimmäisen harvinaisia.Yhtenä syynä saattaa olla se,että japaninkielisiä pelejä julkaistaan virallisestikinsuuret määrät ja ne kattavatmerkittävän osan runsastekstisistä länsimaisistapeleistä. Japanilaisilla on myöspitkä suhde videopeleissä käytettyynenglantiin, minkä ansiosta pelisanasto onmonille tuttu, vaikka englantia ei muutoinhyvin osaisikaan.Linkkejä:• Joel Yliluoman suomenkielisiä fanikäännöksiä http://bisqwit.iki.fi/gametrans.html• Phantasian Productions: http://www.tales-cless.org/• Policenauts Translation Project: http://policenauts.net/english/• Touhou Patch Center: http://thpatch.net/wiki/Touhou_Patch_Center• ROMHacking.net (käännöstietokanta): http://romhacking.netTunnettuja käännösprojektejaPolicenauts Translation Project (1996)Monien fanikääntäjien unelmaprojektina olipitkään CD-helmi Policenauts. Pelin on luonutHideo Kojima, joka tunnetaan Metal Gear-sarjastaan. Peli jäi melko tuntemattomaksiJapanin ulkopuolella. Se oli scifiseikkailu,joka sisälsi valtavasti tekstiä sekä puhuttuadialogia alusta loppuun saakka. Se kuvitettiinanimetyylisesti videoilla. Kojiman peleistä seoli ainoa, jota ei koskaan lokalisoitu länsimaihin.Sega Saturn -version virallinen englanninkielinenversio luvattiin kauppoihin jo 1996,mutta sitä ei kuitenkaan julkaistu koskaan.Niinpä fanit aloittivat oman käännösprojektinsa,jota tehtiin yli vuosikymmen. Varsinainenkäännös valmistui vasta vuonna 2007,mutta käsikirjoitus ja käännetyt grafiikat pitivielä upottaa pelimoottoriin. Tähän tarvittiintaitavaa ohjelmoijaa, joka tekisi pelin tiedostoihinja ohjelmakoodiin tarvittavat muutokset.Niinpä projekti pysähtyi noin vuodeksi.Something Awful -sivuston käyttäjäMichael ”slowbeef” Sawyer aloitti kuitenkinPlayStation-version kokeilun syksyllä 2008.Slowbeef onnistui purkamaan pelikoodin, japelin fanikäännöksen ensimmäinen versiojulkaistiin sopivasti Kojiman syntymäpäivänävuonna 2009. 13 vuoden ajan viilattu Policenautsinkäännös onkin yksi korkealaatuisimmistafanikäännöksistä, jolle monet virallisetkinkäännökset kalpenevat.Touhou Project (1996)Varmaankin kaikkien aikojen suosituin Doujinsoft-sarja,länsimaalaisittain karkeastitulkittuna indiepelisarja Touhou Project, sisältääpääkaanonissaan jo kymmeniä pelejä.Niihin lasketaan kaikki alkuperäisen kehittäjän,Zunin Shanghai Alice -studion teokset.Lisäksi fanit ovat tehneet pelejä, joissa käytetäänsamoja hahmoja ja joskus myös samojapeliominaisuuksia.Touhou-sarjan ensimmäinen peli olieräänlainen Breakout-klooni, mutta myöhemmissäluomuksissa on keskitytty danmaku-pelityyliin,joka käännetään englanniksibullet helliksi eli luotihelvetiksi. Luotihelvettitermionkin äärimmäisen osuva nimitys ammunta-ja väistelypelille, jossa monimutkaisetammuskuviot tavoittavat omanlaisensaesteettisen kauneuden. Peleissä selviämisenelinehtoja ovat sekä ulkoa opettelu että toistuvienkuvioiden tarkka ennalta lukeminen.Kaikille sarjan peleille on yhteistä taikamaassaseikkailevat taikatytöt, keijut, noidatja ties mitkä muut yliluonnolliset olennot,joiden tärkein hyökkäysmetodi on epileptistenkuviomerten taikominen pelaajahahmoavastaan. Kääntäjille Touhou-peleissä on olluttyötä lähinnä tarinaosuuksissa ja käyttöliittymäteksteissä.Niinpä Touhou-pelejä on pelattujo ennen fanikääntäjien julkaisuja, silläkielimuuri ei juuri pelaamista hidasta.Tales of Phantasia (1995)Tales of Phantasia on Wolf Team -ryhmänkehittämä japanilaistyylinen, fantasiamaailmaansijoittuva JRPG-roolipeli NintendonSNES-konsolille. Emulaattoreiden yleistyessätämä teknisesti ja sisällöllisesti näyttäväteos sai paljon huomiota, mutta sen kääntäminenoli erityinen haaste, koska peli olimassiivinen ja sisälsi japaninkielistä puhetta.Lopullinen käännös ei koskenut puheeseenmutta käänsi kaiken tekstin ja grafiikan.Pelistä julkaistiin myös dubattu versio, jonkaääninäyttelijöiden taidot ovat jokseenkin kyseenalaiset.Vuosia myöhemmin SNES-käännöksestäjulkaistiin paranneltu PlayStation 1-versio, jota tehtiin useita vuosia. Tämä versioon vieläkin kunnianhimoisempi, sillä sesisältää puheiden tekstityksen ja PS-versionlisäsisällön käännökset. Ensimmäinen virallinenkäännös pelistä julkaistiin vasta vuonna2006 Gameboy Advancelle.56 2013.4


Juha ja Tommi etsivät työkaveriatositarkoituksellaTulin Vincitille 2009, jolloin meitä oli noin 20.Siitä yritys on mennyt huimasti eteenpäinja nyt meitä on jo 80! Nykyisin vedänVincitin mobiilitiimiä. Ollaan toteutettuesimerkiksi metsästystutka, lyhytelokuvapalveluja muumipeli. Meinataan hukkuamielenkiintoisiin projekteihin joten apuvoimiakaivataan kuumeisesti.– Juha R.Olen ollut puolisen vuotta Vincitillä kehittämässäweb-palveluita. Projektit ja niissäkäytetyt teknologiat ovat olleet tosi monipuolisia.Työn ja opiskelun yhteensovittaminenonnistuu helposti, sillä TTY on kävelymatkanpäässä ja Vincitillä ollaan joustaviatyöaikojen suhteen.– Tommi L.careers@vincit.fiwww.vincit.fiVuoden yritys 2013– OP-Pohjola & Kauppalehti57


PelitTekstipelien lumo– Pulmapeleistä interaktiiviseen fiktioonFotorealismiin yltävän grafiikan aikakaudella ajatus pelkkäätekstiä sisältävästä pelistä voi tuntua oudolta kunnes muistaa, ettämaailman tehokkain näytönohjain löytyy korvien välistä.Teksti: Janos Honkonen Kuvat: Mikko Rasa, Jukka O. Kauppinen, Janos Honkonentietokonegrafiikkaoli vielä varsin alkeellista,80-luvullaeikä kotimikroilla pystynytluomaan kovin näyttäviä kohtauksia tukeutumattapelaajan mielikuvitukseen.Ei ihme, että kyseinen vuosikymmen olitekstipelien kulta-aikaa. Muutamallalauseella pystyi luomaan mielikuvia massiivisistaavaruustaisteluista, joiden toteuttaminentietokonegrafiikalla oli vainmuutaman kyberpunkkarin haaveunta.Tekstipelejä ei nykyisin pelikauppojenhyllyiltä löydy, mutta lajityyppi on kaikkeamuuta kuin kuollut, kiitos innokkaanja aktiivisen harrastajakunnan.Tekstipeli, anteeksi mikä?Tekstipeleissä pelaaja saa tekstimuotoisenkuvauksen pelihahmon ympäristöstä,tilanteesta ja maailmassa tapahtuvistaasioista, ja pelaaja ohjaa hahmoaan tekstikomennoin.Legendaarinen Zork, yksigenren varhaisimmista edustajista, alkaatilanteesta, jossa peli kertoo hahmonolevan avoimella niityllä valkoisen talonlänsipuolella. Talon ikkuna on suljettulaudoilla ja sen edessä on pieni postilaatikko.Pelaaja voi reagoida tilanteeseenkirjoittamalla yksinkertaisen komennon,vaikkapa ”avaa postilaatikko” tai ”katsotaloa”, minkä jälkeen peli kertoo, mitätoiminnasta seuraa.Yksinkertaisimmillaan pelimaailmankuvaukset saattavat olla parin lauseenmittaisia. Mutta vaikka kuvaukset saattoivatkinolla pitkiä, oli parseri varsinalkeellinen. Parseri on ohjelmakomponentti,joka kääntää pelaajan luonnollisellakielellä kirjoittamat komennot tietokoneenymmärtämään muotoon. Etenkinkotimikroaikaan parserit ymmärsivätusein vain kahden sanan komentoja, kuten”open door” tai ”kill spider”. Kehit-Nykypeleihin tottuneille tekstipelit näyttävät karuilta.58 2013.4


Tekstipelit eivät olleet alkumetreilläkään pelkkää kevyttä viihdettä, vaan niissä käsiteltiin ydintuhoa,politiikkaa ja muita raskaampia teemoja.tyneemmät parserit selvisivät jo varhainvaikeammista komennoista, kuten ”plantthe pot plant into the plant pot and dropit”.Pelimaailma on jaettu ”huoneisiin”,jotka eivät ole varsinaisia huoneita maailmansisällä vaan ne voivat olla yhtä hyvinavaruusaluksen komentosilta, vuorenhuippu kuin ruohotasanko. Liikkuminentapahtuu perinteisesti ilmansuuntien mukaansekä ylös ja alas. Vaikka tämä ei olisitarinan tasolla luontevin mahdollinentapa, sitä käytetään usein edelleen siksi,että käytäntö on pelityypin harrastajilletuttu.Tekstipelien monet nimetSuomalaisittain tekstipeliksi kutsutaanpeliä, jossa pääpaino on tekstimuotoisillakuvailuilla ja komennoilla, mutta mukana voiolla myös animoituja still-kuvia. Kyseessä onseikkailupeli, jos pelissä on kehittyneempääanimaatiota, jota voi ohjailla esimerkiksiliikuttamalla hahmoa ruudussa, kuten ensimmäisissäLeisure Suit Larry -peleissä. Termilläinteraktiivinen fiktio viitataan pääasiassauuden polven tekstipeleihin.Englanninkielisessä maailmassa nimityskäytäntöon hieman sekavampi. Termi interactivefiction viittaa pääasiassa tekstipeleihin,mutta sitä voidaan myös käyttää seikkailupeleistä.Jotkut tekevät myös eron textadventuren ja interactive fictionin välillä.Tässä ensimmäisellä tarkoitetaan kevyitäpuzzle-pelejä, jälkimmäisellä kirjallisempia,kerrontaan painottuvia teoksia.70-luvun luolaseikkailu loi uudenpelityypinMaailman ensimmäinen tekstipeli luotiinvuonna 1975. Sen nimi oli ytimekkäästiAdventure, joskin myöhemmin se on tunnettumyös nimillä Colossal Cave ja ColossalCave Adventure. LuolaharrastajaWill Crowtherin luoma peli oli virtuaaliversioYhdysvalloissa Mammoth Cavenkansallispuistossa sijaitsevasta ColossalCave -luolastosta.Aitoa luolaa höystettiin fantasiahahmoilla,kuten kääpiöillä, varastelevallamerirosvolla ja peikolla. Crowther loi pelinavioerossa vieraantuneille lapsilleenja pyrki yhdistämään siinä omia kiinnostuksenkohteitaan, kuten luolailun jaDungeons & Dragons -roolipelin. Luonnollistakieltä käyttävien komentojen tarkoitusoli tehdä pelistä helposti lähestyttävämyös tietokonetaidottomille.Adventure sisälsi kaikki nykypeleistätutut elementit: tekstimuotoisen kuvailunja parserin, yksinkertaiset puzzletsekä nykyisissä kirjallisissa peleissä harvemminkäytettävän pisteytyksen. Se loikoko lajityypille pohjan, jota käytetäänyhä tänään.Luolastoista Linnunradankäsikirjaan ja pehmopornoon80-luvun alkupää oli kaupallisten tekstipelienkulta-aikaa. Silloin syntyivätsellaiset klassikot kuin Zork-sarja, TheHitchhiker’s Guide to the Galaxy, Trinityja Mind Forever Voyaging. Näiden kaikkientakaa löytyy alan merkittävin pelijulkaisijaInfocom, joka vuonna 1979 kehittämäZ-machine-järjestelmä on käytössäedelleen.Britannian markkinoilla merkittävimmätjulkaisijat olivat Level 9 Computingja Magnetic Scrolls. Osa tekstipeleistäjatkoi Adventuren ja Dungeons & Dragonsinviitoittamalla kevyellä seikkailulinjalla,mutta pelityypin kirjalliset ulottuvuudetymmärrettiin jo varhain. SteveMeretzkyn kirjoittama A Mind ForeverVoyaging on vakavamielinen ja poliittinentarina, jossa pelaaja kontrolloi maailmanensimmäistä tekoälyä nimeltäänPRISM. Ydintuhon pelkoa ja poliisivaltiotakäsittelevä peli oli suoraa kritiikkiäRonald Reaganin ajan politiikalle. Samojateemoja käsitteli Brian Moriartyn Trinity,joka sekoittaa teemoja proosarunoudesta,ydintuhosta ja sodan turhuudestafantasiaelementteihin.Kevyemmän puolen tekstipeleissäluotiin humoristinen ja fantastinen kerrontatapa,joka elää edelleen graafistenseikkailupelien puolella. EsimerkiksiMonkey Island -pelisarja jatkaa suoraanhuumoritekstiseikkailujen perintöä.80-luvulla nähtiin myös joitain lisenssitekstipelejä,joista tunnetuimmat ovatThe Hitchhiker’s Guide to the Galaxy jaThe Hobbit. Linnunradan käsikirja liftareille-teoksen kirjoittaja Douglas Adamsosallistui myös itse pelin suunnittelemiseensekä kirjoitti Infocomille toisenkinpelin nimeltään Bureaucracy. Vuonna1982 julkaistu The Hobbit oli yksi aikansamenestyksiä ja myi yli 100 000 kappaletta.The Hobbitin parseri oli aikaansanähden erittäin kehittynyt. Kahden sanankomentojen sijaan pelin Inglish-parseriymmärsi monimutkaisia lauseita, adverbejaja välimerkkejä, mikä mahdollistiennennäkemättömän luonnolliset komennot.Eräs tekstipelihistorian virstanpylväistäoli Infocomin julkaisema ”seksifarssi”Leather Goddesses of Phobos,joka aiheutti aikanaan niin paheksuntaakuin hihittelyä. Kyseessä oli humoristinenja eroottissävytteinen peli, joka tarjosimahdollisuuden pelata niin mies- kuinnaishahmoa ja valita pelin rivousasteen.Graafisten pelien voittokulkuTekstipelien kaupallinen suosio hiipui90-luvun vaihdetta lähestyttäessä. Vuonna1986 julkaistu Space Quest, 1987päivänvalon nähnyt Leisure Suit Larryja vastaavat seikkailupelien klassikot olivatnäyttäviä ja helpommin lähestyttäviäkuin puhtaat tekstipelit.Vanhat seikkailupelitalot eivät sopeutuneetuuteen aikakauteen. NiinpäActivision osti Infocomin vuonna 1986,Level 9 Computing lopetti toimintansa1991 ja Magnetic Scrolls laittoi lipun luukulle1992. Infocomin seuraaja LegendEntertainment julkaisi 90-luvun alussamuutamia graafisia tekstipelejä, kutenGateway-pelit ja kolme humorististaSpellcasting-seikkailua, mutta vuodesta1993 myös Legend julkaisi vain graafisiaseikkailupelejä.59


Inform 7 -kehitysympäristö mahdollistaa koodaamisen lähes luonnollisella kielellä.Tähän loppui käytännössä tekstipelienhistoria kaupallisina tuotteina ja pelienkehittäminen siirtyi harrastajatoiminnaksi.Interactive Fiction Competition, tuttavallisemminIFcomp, järjestetään jo 19. kerran. Kilpailunvoittajat ovat hyvä tapa tutustua tekstipelikentänparhaimmistoon.Infocomin perintö ja TADSVaikka graafiset pelit valtasivat täysinkaupalliset markkinat, tekstipelit jatkoivatelämäänsä tiiviin harrastajapiirinansiosta. Eräs merkittävä tekijä tälle oliInfocomin nerokas ratkaisu olla kääntämättäpelejään suoraan natiivikoodiksi,joka toimii vain tietyllä käyttöjärjestelmällätai alustalla. Sen sijaan pelit käännettiinZ-Code-välikoodiksi, joka tarvitseeZ-machine-tulkin toimiakseen. Tämätarkoittaa sitä, että pelejä voi pelata millätahansa alustalla, jolle joku tekee toimivantulkin.InfoTaskForce-niminen harrastajaryhmäpurki Infocomin Z-Code-koodin jovuonna 1987 ja teki oman avoimen lähdekoodin”soittimensa”, joka mahdollistiInfocomin pelien pelaamisen monilla uusillaalustoilla. Näin koko pelivalikoimasaatiin tuotua uusilla alustoille kertarysäyksellä,eikä niitä tarvinnut kääntääyksitellen. Yksinkertaistaen tätä voi ajatellaniin, että välikoodiksi käännetty pelion kuin mp3-musiikkitiedosto, jonka voitoistaa millä tahansa laitteella, jolle onkehitetty mp3-soitto-ohjelma.Tekstipelien harrastajajulkaisussatärkeässä osassa ovat Michael J. Robertsinvuonna 1988 julkaisema TADS, TextAdventure Development System, sekäGraham Nelsonin vuonna 1993 julkaisemaInform, jolla oli mahdollista luoda Infocominkäyttämää Z-Code-koodia.Seikkailusta kirjallisuuteen– harrastajan näkökulmaOma historiani tekstipelien harrastajanaalkaa jo 80-luvulta, jolloin pelejä tuli pelattuaala- ja yläaste-englannilla sanakirjatoisessa kädessä. Saan kiittää englanninkielen kympeistäni niitä tunteja, jotkavietin The Hobbitin, Castle Adventuren,Fools Goldin, Jinxterin, Aztec Tombin javastaavien pelien parissa.Suurin osa kohtaamistani peleistä olisuhteellisen yksinkertaisia seikkailuja.Koska luin samaan aikaan paljon tieteisjamuuta kirjallisuutta, muistan kevyenpuzzle-painotteisuuden ärsyttäneen minuajo tuolloin. Nämä pelit voisivat ollaniin paljon enemmän! Väsäilin itse joitainpelintynkiä, mutta koska en ollut silloinkuullut Informin tai TADSin kaltaisistajärjestelmistä, parserin koodaaminentäysin nollasta osoittautui aina pullonkaulaksi.Tekstipeliharrastus jäi hiljaiseloonkymmeneksi vuodeksi, kunnes 2000-luvunalussa törmäsin sattumalta verkossaPhotopia-nimiseen peliin. Pieni nostalgianläikähdys sai minut lataamaan pelin jakokeilemaan, millaista kamaa genressäonkaan luotu vuonna 1998.Peli jätti hiljaiseksi, todella hyvällätavalla. Olin tietämättäni ladannut yhdenlajityypin uusista klassikoista, jossaoli painotettu puzzlejen sijaan kirjallistasisältöä ja kokemuksellisuutta. Photopiaon erinomainen esimerkki uuden aikakaudentekstipeleistä, joilla ei käsikirjoituksenja tarinankerronnan tasolla olehävettävää ”oikean” kirjallisuuden rinnalla.Harrastajat luovat yhä keveitä seikkailupelejä,mutta myös tiukkaa proosaa,jossa fyysisen maailman esinepähkinöitätärkeämpää saattaa olla hahmojen välinenkanssakäynti tai yleinen kirjallinenkokemus. Eräs toinen merkittävä klassikkoon Emily Shortin Galatea, joka koostuukokonaan keskustelusta päähenkilönja elävän patsaan välillä. Keskustelun kulustariippuen tarina voi päättyä hyvin eritavoilla.Kilpailuja, palkintoja ja aktiivinenyhteisöTekstipelien ympärille on muodostunutaktiivinen ja innokas faniyhteisö, joka ontoiminut jo 80-luvulta saakka. Alun perinharrastajat kokoontuivat ja keskustelivatvuonna 1987 perustetuissa rec.arts.int.fiction- ja rec.games.int-fiction-uutisryhmissä,joista keskustelu on vasta viimevuosien aikana siirtynyt modernimmallenettifoorumille, osoitteeseen intfiction.com/forum.Vuosittain julkaistaan kymmeniä uusiapelejä, jotka ovat käytännössä kauttalinjan ilmaisia. Julkaisusesonki painottuuyleensä loppuvuoteen, jolloin järjestetääntekstipelien suurin vuosittainen kilpailuIFcomp. Sitä tasapainottamaan perustettiintoinen kilpailu nimeltään SpringThing, jolla haluttiin houkutella uusiajulkaisuja myös kevätkaudelle. Edellistenlisäksi vuosittain jaetaan XYZZY-palkinnoteri kategorioissa, kuten paras peli,parhaat pelihahmot, paras puzzle ja niinedelleen.Harrastajakentän merkittäviin nimiinkuuluvat mm. Andrew Plotkin, EmilyShort, Adam Cadre sekä Graham Nelson.Plotkin pääsi otsikoihin onnistuttuaankeräämään Kickstarter-kampanjalla 31000 dollaria Hadean Lands -tekstipelinkehittämiseen. Cadren Photopia tuuppasitekstipelikenttää uuteen kirjallisempaansuuntaan, Graham Nelson on Inform-60 2013.4


TekstipelitulkitTekstipelien pelaamiseen tarvitaan tulkki,eräänlainen pelitiedostojen ”soitin”.• Gargoyle (OS X, Windows, Linux): http://ccxvii.net/gargoyle/• Zoom (OS X, Unix, Palm OS, RISC OS):http://www.logicalshift.co.uk/unix/zoom/• Windows Frotz 2002 (Windows):• Frotz (iOS): https://itunes.apple.com/fi/app/frotz/id287653015• JFrotz (Android): https://play.google.com/store/apps/details?id=com.whj1972.jfrotz• Lisätietoja tiedostomuodoista ja tulkeistalöytyy osoitteesta http://ifwiki.org/index.php/Interpreterjärjestelmän pääkehittäjä ja Emily Shorton paitsi luonut useita palkittuja pelejä,myös osallistunut aktiivisesti Inform-järjestelmänkehittämiseen.Kuinka päästä alkuun interaktiivisenfiktion pelaamisessa?Moderneja tekstipelejä ei julkaista itsenäisinä,ajettavina peleinä, vaan niidenpelaamiseen tarvitaan tulkkiohjelmistoeli tekstipelien ”soitin”. Hyviä vaihtoehtojaovat Windows-, OS X- ja Linux-alustoillelöytyvä Gargoyle ja OS X:lle julkaistuhelppokäyttöinen Zoom. Pelaaminenonnistuu myös iOS- ja Android-laitteillajo jopa joillakin graafisilla laskimilla.Suurin osa moderneista sekä vanhoistaei-kaupallisista tekstipeleistä onladattavissa The Interactive Fiction Databasesta,joka sijaitsee osoitteessa http://ifdb.tads.org. OS X:n Zoom mahdollistaamyös pelien etsimisen ja lataamisen suoraantulkkiin ”Find more” -nappulaa painamalla.zblorb, z5, z8, gblorb, blb, acd,gam…Tekstipelejä on luotu 20 vuotta harrastajiltaharrastajille, joten valitettavastitiedostomuotojen selkeys ja käytettävyysjättävät toivomisen varaa. Pelejä on julkaistulähes 20:ssä eri tiedostomuodossa,mutta osa niistä on hyvin harvinaisia.Tällä hetkellä pelejä luodaan pääasiassakolmella järjestelmällä: Informilla,TADSilla sekä Hugolla. Suosituin näistäon Inform, joka luo Infocomin Z-machinenkäyttämää Z-Codea sekä uudempiagluxl-tiedostoja. Kakkossijalla on TADS.Hugolla ja muilla järjestelmillä tehdyt pelitovat suhteellisen harvinaisia.Tarinat julkaistaan usein blorb-wrapperissa,jolloin niiden tiedostopääte on.zblorb tai .gblorb. Wrapperit mahdollistavatmultimedian lisäämisen pakettiin,ja tiedostopäätteen ensimmäinen kirjainkertoo, onko kyseessä Z-Machine- vaigluxl-muotoinen peli. Ilman wrapperiaZ-Code-tiedostojen pääte on .z5 tai .z8,gluxl-pelien .ulx. TADS-tiedostojen pääteon .gam tai .t3, Hugo-tiedostojen .hex.Edellinen oli raaka yksinkertaistusalaa vaivaavasta tiedostomuoto- ja nimikaaoksesta,sillä variaatioita ja julkaisujärjestelmiäon moninkertaisesti enemmän.Sotkun vuoksi uuden seikkailijankannattaa ehdottomasti kokeilla tekstipelejätulkilla, joka tukee suoraan useimpiatekstipelien tarinatiedostomuotoja.Suositeltavia tulkkeja ovat muun muassaGargoyle ja Zoom.Oma peliprojekti käyntiinEnnemmin tai myöhemmin harrastajamiettii oman pelin tekemistä. Tällä hetkelläylivoimaisesti käytetyin järjestelmäon Inform 7 (http://inform7.com/), jonkalähestymistapa pelikehitykseen onvallankumouksellinen. Aiemmat versiotsekä Informista että TADSista ovat melkoperinteistä koodia hakasulkeineen, muuttujineenja funktioineen, mutta Inform7:n kehittäjä Graham Nelson otti järjestelmänuusimman version kehittämisessärohkean askeleen: jos pelit perustuvatluonnolliseen kieleen, myös niiden koodaamisenpitäisi onnistua luonnollisellakielellä.Käytännössä Inform 7:n koodi voinäyttää esimerkiksi seuraavalta: ’Thecottage is a room. The coat is a wearablething in the cottage. Instead of taking thecoat, say ”It is not your coat to take.”’Inform 7:n luonnollisen kielen koodausei ole pelkkä kikka, vaan pienentotuttelun jälkeen se on suorastaan hämmentäväntoimiva. Järjestelmä ei käännäluonnollista kieltä suoraan välikoodiksi,vaan ensin perinteisemmäksi Inform 6-koodiksi, joten se on rakennettu toimivaksitodetulle pohjalle. Myös itse kehitysympäristöon selkeä ja helppokäyttöinenniillekin, jotka eivät ole aiemminohjelmoineet.TADS3 (http://www.tads.org) puolestaantarjoaa perinteistä ohjelmointia, jonkaparissa kokeneet koodaajat ovat kuinkotonaan. Sen varsinainen kehitysympäristöon saatavilla vain Windows-järjestelmille,joten esimerkiksi OS X -käyttäjienon tyytyminen komentotulkkityökaluihin.TADS3 on olio-ohjelmointikieli, siinä missäInform 7 on sääntöpohjainen järjestelmä.TADS3 tarjoaa myös melko monimutkaisenmaailmamallin, Inform 7 taasminimaalisen. Aloittelijan näkökulmastaInform 7 mahdollistaa yksinkertaisen pelinkirjoittamisen yhdessä illassa ilmanmitään ohjelmointikokemusta, TADS3taas vaatii enemmän perehtymistä. Tarkempierittely järjestelmien eroavaisuuksistalöytyy Brass Lantern -sivustolta:http://brasslantern.org/writers/iftheory/tads3andi7.htmlVähemmän käytetty Hugo-järjestelmäon tutustumisen arvoinen niille, jotka haluavatluoda paljon multimediaa sisältäviäpelejä.Laadukkaan pelinkirjoituksenystävilleTekstipelit tulevat tuskin nousemaanenää kaupallisesti merkittäväksi tuotteeksi,mutta taiteellisessa mielessä neovat erittäin kiinnostava pelityyppi. Epäkaupallinenkehitystyö antaa tekijöillemahdollisuudet kirjoittaa kokeilevia,rankkoja ja haastavia tarinoita, jotkaeivät läpäisisi kaupallisten julkaisujenseulaa. Joukossa on paljon huteja, muttavähintään yhtä paljon täysosumia, jotkaantavat osviittaa siihen, millaista pelikäsikirjoittaminenvoisi olla parhaimmillaanmyös kaupallisella puolella.Modernien tekstipelien valioita– kirjoittajan suosikit• Photopia (Adam Cadre, 1998): Tarina, jokayhdistää arkisen elämän tragedian nuoren tytönunelmiin Mars-lennosta.• Galatea (Emily Short, 2000): Keskustelu taideteoksen,elävän patsaan, kanssa.• Vespers (Jason Devlin, 2005): Rutto niittääkuolemaa luostarin ulkopuolella ja jokin muusen sisällä.• The Warbler’s Nest (Jason McIntosh, 2010):Nuori nainen seisoo joen varrella ruovikossa. Sejokin odottaa mökissä.• Violet (Jeremy Freese, 2008): Istu työhuoneessasi,kirjoita tuhat sanaa opinnäytetyötäsi äläkäanna minkään – minkään – häiritä.Lisää laatupelejä kannattaa etsiä vuosittaisen IFcomp-(http://ifcomp.org) ja Spring Thing (http://www.springthing.net/) -kilpailun voittajista sekäZYXXY-palkinnon saaneiden joukosta (http://xyzzyawards.org).61


PelitSorvaa Mariolle haastettaKuka ei olisi haaveillut omien Super Mario -kenttien väsäämisestä?Nykyään se on mahdollista. Aikanaan ruutuvihkoon tuherretutsuunnitelmat voi lopultakin herättää henkiin.Teksti: Pauli MarttinenSuper Mario World on todellinenkuolematon klassikko. Vuonna1990 julkaistun pelin loputontasuosiota syventää entisestään romhackharrastuseli rom-moduulin sisällönmuokkaaminen. Tietokoneelle tallennettuaSuper Nintendon pelimoduulin kuvatiedostoaeli smc-tiedostoa (Super MarioCartridge) voi käsitellä niin paljon kuinmielikuvitusta riittää. Valmiiden työkalujenavulla peliin voi tehdä omien kenttienlisäksi omat kartat, oman musiikin, omaagrafiikkaa, omia vihollisia sekä bugienkorjauksia ja uusia ominaisuuksia, kutendialogeja.Pelin hakkeroinnille on monia syitä.Yleisin lienee omien kenttien tekeminenvalmiiseen peliin. Jotkut taas tahtovattehdä uuden pelin vanhan pelin pohjalta,ja joskus ajatuksena on vain nostaa valmiinpelin vaikeusastetta. Joissakin tapauksissaon myös kyse pelkästä fanikäännöksentekemisestä.Yleisimmin Super Mario Worldiin yhdistetäänelementtejä muista peleistä.Suosituimpia lähteitä ovat Donkey Kong,Mega Man, Touhou Project ja muut SuperMario -pelit. Ahkerat ja avuliaat harrastajatovat muuntaneet ja valmistaneetnäiden ja muiden pelien musiikkia, vihollisia,palikoita ja grafiikkaa muotoon, jossaniitä voi liittää omaan romhackiin.Super Mario Worldin ohella suosittujahakkeroinnin kohteita ovat muut Mariopelit,Pokémonit, Mega Manit ja FinalFantasyt. Todennäköisesti juuri työkalujenja nostalgian vuoksi Super MarioWorldista on tullut selvästi suosituin peliromhack-yhteisölle. Myös romhackienpeluuvideot YouTubessa ovat suosittuja,yhtäältä hauskojen uusien ideoiden vuoksija toisaalta viihdyttävien kommentaarienansiosta.Oman romhackin tekeminen vaatiiluonnollisesti reippaasti osaamista ja jaksamista,mutta valmiista kentistä pääseenauttimaan melko pienellä vaivalla.FPI: The Second Reality Project (2002) oli ensimmäisiä valmistuneita Super Mario Worldiin perustuviaromhackeja.62 2013.4


Yksi pahamaineisimmista romhackeistaon japanilaisen T. TakemotonYuujin Mario (’kaveri-Mario’), joka lännessätunnetaan nimellä Kaizou Mario (’muokattuMario’). Se alkoi kerätä suosiota,kun japanilaiselle videosivustolle, NicoNico Dougalle, ladattiin romhackista läpipeluuvideosarja.Kärsivällinen pelaajaR. Kiba päihittää armottoman vaikeanpelin apunaan vain loputtomat elämät.Sama videosarja on myös YouTubessa otsikollaAsshole Mario. Nykyään epäreilunvaikeiksi tehtyjä romhackeja verrataanensimmäisenä juuri tähän ja tietyntyyppisiäesteitä sanotaan kaizou-esteiksi.Sooloteosten lisäksi romhackeja tekevätmyös useat isommat yhteisöt. Massiivisimpiinprojekteihin lukeutuvat muunmuassa SMW Central -sivuston An SMWCentral Production ja Talkhaus-yhteisönA Super Mario Thing. Näille yhteistäon pelin poikkeuksellisen monipuolinenmuokkaaminen eri alueiden osaajien ansiosta.Carol: Brutal Mario on pirullisen vaikea ja rikkoo Mario-kaavaa mielenkiintoisilla omilla tempuillaan.Merkittäviä romhackejaSuper Mario Worldin hakkerointi on2000-luvun juttu. Nimimerkki FPI:nvuonna 2002 luoma The Second RealityProject on ensimmäisiä romhackeja.Se on niin sanottu vaniljahack, eli vainkenttiä on muutettu. Grafiikka, musiikkija ohjelmointi on jätetty entiselleen. TheSecond Reality Project on haastavuudestahuolimatta jäänyt elämään yhtenäromhack-harrastuksen klassikoista. Siitäon vuosien saatossa tehty päivitettyjäversioita ja jatko-osia.Myös Carolin keskeneräiseksi jäänytBrutal Mario oli aikoinaan edistyksellinen.Se on osin aivan tyypillinen japanilainenromhack. Ensimmäiset kentät ovathyvin helppoja ja yksinkertaisia, muttavaikeustaso nousee nopeasti ja korkealle.Jokaisessa kentässä on oma erityinenjipponsa. Esimerkiksi seitsemännen maailmankummitustalossa on kummitus,jonka ei saa antaa nälkiintyä, tai se syöMarion. Brutal Marion merkittävyys onsekä kikoissa että linnojen loppuvastuksissa.Näin laajaa ohjelmoinnin ja grafiikanmuokkausta ja lisäämistä ei ollutennen tehty. Pelin kehityksestä ei olekuulunut mitään vuoden 2008 jälkeen,mutta demoversiota voi pelata varsin pitkälle.Brutal Marion tavoin keskeneräiseksijäänyt S.N.N.:n Mario’s Keytastrophevuosilta 2007–2009 on ensimmäinenmusiikin korvannut romhack. Myös aiheensapuolesta peli pyörii musiikin ympärillä.Maailmoja ovat muun muassaLegato Plateau ja Andante Region sekäkenttiä esimerkiksi Trumpeteer Cliffs jaBlue Melody Palace. Kentissä tehtävänäon löytää avain. Musiikki oli viimeinenhakkeroimaton Super Mario Worldinosa, ja Mario’s Keytastrophen käyttämänaddmusic-työkalun myötä sekin on saatuhallintaan.S.N.N.: Mario’s Keytastrophe (2007–2009) oli ensimmäinen pelin ääniraitaa muokannut teos.63


Floating IPS -työkalulla yhdistetään romhackinmuutokset alkuperäiseen smc-tiedostoon.T. Takemoto: Yuujin/Kaizou Mario (2007) on hyvä vaihtoehto, jos haluaa kirota myöhään yöhönepäreilulle suunnittelulle – tämä nimittäin on kertaluokkaa vaikeampi kuin alkuperäinen peli.Työkalut kokeilijalleRomhackeja jaetaan netissä ips-tiedostoina(international patching system).Ips-tiedostoon tallennetaan pelkästäänvalmiin romhackin erot alkuperäiseensmc-tiedostoon verrattuna. Floating IPS-työkalulla yhdistetään ips- ja smc-tiedostot.Syntyvän kuvatiedoston voi ajaaemulaattorilla, esimerkiksi ZSNES:llä.Ips-tiedostoja käyttämällä vältytään SuperMario Worldin itsensä laittomalta jakamiselta.Ips- ja smc-tiedostot yhdistetäänFloating IPS:n Apply Patch -painikkeella.Toimenpiteestä syntyvän tiedoston voiajaa emulaattorilla aivan kuin minkä tahansatavallisenkin pelin. Romhack taastallennetaan IPS-tiedostoksi Create Patch-painikkeella. Työkalulle annetaan alkuperäinenkuvatiedosto, sekä romhackattuversio. Syntyvän tiedoston voi jakaaturvallisesti netissä.Super Mario Worldista on liikkeelläerilaisia kuvatiedostoja, kuten englannin-ja japaninkielinen versio, mutta käytännössäkaikki ips-tiedostot pohjautuvatkuvatiedostoon nimeltä Super Mario World(U) [!].smc.Lunar Magicillä alkuunLunar Magic on edistyksellisin editoriSuper Mario Worldiin. Kentät rakennetaanLunar Magicilla, joten se on keskeisinohjelmisto pelin muokkaamisessa.Teit omat resurssit millä halusit, LunarMagicilla koostat niistä pelattavaa.Lunar Magic avaa ja tallentaa kentätsuoraan smc-tiedostoon. Perusnäkymässäon kolme varsinaista muokkaustilaa:Layer 1, Layer 2 ja Sprite. Layer 1 sisältäämaa-, vesi-, ja muita palikoita, joidenkanssa Mario pääasiassa vuorovaikuttaa.Layer 2 sisältää samoja palikoita, ja sevoi liikkua suhteessa Layer 1:een. Sprite-kerrossisältää luonnollisesti spritet.Taustakuvaa (background) ja Layer 2:ta eivoi olla kentässä samanaikaisesti, jotenjos kentässä on taustakuva, Layer 2:ta eivoi editoida.Add Sprites -ikkunassa on lueteltunaspritejä, joihin lukeutuu vihollisten jaesineiden lisäksi komentoja, kuten automaattisenskrollauksen ohjaimet. Monienspritejen grafiikka on riippuvaista tiilisetistä(tileset specific sprites) eli siitä, mitägrafiikkaa kentän käyttöön ladataan. Mikälinäiden spritejen oikea grafiikka sijaitseemuualla kuin ladattavissa osissa,ne näyttävät rikkinäisiltä niin editorissakuin pelissäkin.Add Objects -ikkunassa on lueteltunaLayer 1:lle ja 2:lle lisättäviä palikoita.Myös monien palikoiden grafiikka on riippuvaistakäytetystä tiilisetistä. Spritet jaobjektit lisätään kenttään valitsemalla neluettelosta ja painamalla hiiren kakkosnapillakenttää pääikkunassa. Objektienkokoa voi kappaleesta riippuen venytellätarpeen mukaiseksi.Vaikka Marion pääsisääntulo ja puolivälisisääntulokenttään eivät varsinaisestiole spritejä, niitä voi siirtää sprite-muokkaustilassasamoin kuin muitaspritejä.Kentät jakautuvat pienempiin yksiköihineli screeneihin. Yksiköiden rajatsaa näkyviin F1-näppäimellä. Kentästätoiseen vievät ovet ja putket toimivatscreen exit -määreellä. Add/Modify/DeleteScreen Exits -ikkunassa määritetään, mihinkenttään ovet ja exit enabled -putketvievät. Jos poistumismääre on kenttänumeroeikä toissijainen poistumisreitti elisecondary exit, Mario astuu uuteen kenttäänsen pääsisääntulossa.Toissijaisilla poistumisreiteillä Marioastuu uuteen kenttään muualla kuin pääsisääntulonsijainnissa. Ne määritelläänModify Secondary Entrances -ikkunassa.Secondary Entrance/Exit Number -luettelostavalitaan määriteltävä poistumisreittija sen sijainti määritellään samoin kuinpääsisääntulon sijainti.Kartan editointi Overworld Editorissa onoma taiteenlajinsa, jota varten on käytännössäpakko tutustua syvällisempiin oppaisiin.Karttaeditorissa kannattaa ottaakenttänumerot näkyviin F1-näppäimellänähdäkseen, minkä kenttien editoinnistaon hyvä lähteä liikkeelle.Musiikit vaihtoonSuositellut työkalut musiikin lisäämiseenovat HuFlungDu’s Addmusic ja AddmusicM.Ensimmäinen on ominaisuuksiltaan jakäytöltään yksinkertainen, jälkimmäinenmonipuolisempi mutta myös monimutkaisempi.Lyhyenä esimerkkinä lisäämmetässä pätkän tuttua laulua sekä kartta-että kenttämusiikiksi HuFlungDu’sAddmusicia käyttäen.Musiikin lisäämistä varten smc-tiedostoaon ensin laajennettava. Laajennustapahtuu Lunar Magicin valikosta File >Expand ROM. Sen jälkeen kopioidaan Addmusicinhakemistossa sijaitsevat level-,ow- ja misc-hakemistot sekä AddMusic.inisiihen hakemistoon, jossa smc-tiedostoon. Level-hakemistoon sijoitetaan kenttämusiikkitiedostotja ow-hakemistoonkarttamusiikkitiedostot. Misc sisältää sekalaisiaääniä, kuten kuolemismusiikin.Kopioi oheinen listaus ja tallenna setekstitiedostona level- ja ow-hakemistoi-64 2013.4


Layer 1Layer 2SpriteAdd ObjectsAdd SpritesOverworld EditorAdd/Modify/DeleteScreen ExitsModify SecondaryEntrancesBypass Music andTime Limit SettingSuper Mario World -romhackin tekijälle paras työkalu on monipuolinen Lunar Magic 2.20.hin. Tiedoston nimi voi olla esimerkiksikappale.txt. Avaa AddMusic.ini ja lisääkappaleen tiedostonimi [overworld]- ja[level]-osuuksien mihin tahansa kenttään.Addmusic on komentoriviohjelma, jotensiirry komentorivillä smc-tiedostonhakemistoon ja aja ohjelma näin:> [addmusicin sijainti]\AddMusic.exeromhack.smc -i AddMusic.iniMikäli musiikin lisääminen onnistuu,kappaleen voi valita kenttään Lunar MagicinBypass Music and Time Limit Setting-ikkunassa ja karttaan Change Submap MusicSelection -ikkunassa.Erillinen AM4 Player -ohjelma toistaaMusiikkilistaus#0 @1 w255 y11 t40#1 @8 y7#0o4 g8 / > c4 < g8^16 a16b4 e8^16 e16 a4 g8^16 f16g4 c8^16 c16 d4 d8^16 e16f4 f8^16 g16 a4 b8^16 > c16d4^8 < g8;#1o2 r8 / c4 c4 e4 e4 f4 f4 e4 e4d4 d4 c4 c4 c8 > c8 < b8 a8 g4 >g8 < g8;musiikkia suoraan tekstitiedostosta. Kappalettavoi siis myös kuunnella lisäämättäsitä peliin.Kun lisäät dataa Super Mario Worldiin,muista pitää smc-tiedostosta varmuuskopiota.SMW Central -sivustolta.Super Mario Worldin muokkaamisessatäytyy muistaa, että kaikki työkalutovat harrastajahakkereiden valmistamia,eikä peliä ole suunniteltu muokattavaksiVirheellisen tai toisille ja laajennettavaksi. Tämän vuoksi jotkuttyökaluille tarkoitetun datan lisääminen muokkaustoimenpiteet voivat tuntuasaattaa hajottaa koko tiedoston.työläiltä ja epäintuitiivisilta. Kaikki onkuitenkin mahdollista, minkä todistavatPintaa syvemmälle?Blocktool Super Deluxe on suositeltu työkaluuusien palikoiden lisäämiseen. Romi’sSpritetool ja Tessera ovat suositellut työkalutspritejen lisäämiseen. Spritetoolinja Tesseran mukana tulee valmiiksi suurivalikoima lisättäviä spritejä. Blocktoolinja Spritetoolin mukana tulevan xkasristiassemblerinavulla voi myös koodataomia. YY-CHR on suosittu työkalu grafiikanSMW Centralista ladattavat lukuisatmieltäräjäyttävät romhackit.Työkalut kehittyvät, ja monet ovatavoimia lähdekoodiltaan, joten niiden kehittämiseenvoi osallistua itsekin. Romhakkerointion yhteisöllinen harrastus, jauudet tekijät otetaan ilomielin vastaan.Ei muuta kuin vanhat ruutuvihot auki japäästämään sisäinen kenttäsuunnittelijavalloilleen!muokkaamiseen. Sillä voi myös piir-tää omaa grafiikkaa, jota voi lisätä peliinLunar Magicilla. Näihin ja moniin muihintyökaluihin saa haettua lisää resurssejaMario-hakkerin tärkeimmät linkitLunar Magic: http://fusoya.eludevisibility.org/SMW Central: http://www.smwcentral.net/SMWiki: http://www.smwiki.net/wiki/Main_PageZSNES: http://www.zsnes.com/65


Litteän maailman kehityksestäNäin syntyi Division CellAndroidille, iOS:lle ja selaimille kehitetyn Division Cellin puzzlemekaniikka onkenties uniikki. Pelin kehittäjä kertoo rakkaan lapsensa syntytarinan.Teksti: Visa-Valtteri PimiäTätä tekstiä kirjoittaessani DivisionCellin julkaisupäivä lähestyy.Oman kaupallisen pelin valmistaminenja julkaisu muuttui vuoden urakallaunelmasta todellisuudeksi. Muttamiten tähän pisteeseen päästiin? Alussaoli tviitti.Huomasin alkukeväästä 2013, ettäentinen työkaverini, Evgeni Gordejev,oli tehnyt pelin Googlen Android-käyttöjärjestelmälle.Opiskeluaikanani olimmeEvgenin kanssa yhdessä töissä Arditesnimiselläohjelmistoalan yrityksellä. Kunnäin Play Storen etusivulla Tupsu-nimisenpelin, muistui mieleeni tämä kekseliästamperelainen ohjelmoija vuosientakaa.Muutaman hetken peliä testattuanilöysin Evgenin Twitter-tilin (@gabumba)ja lähetin hänelle seuraavan viestin:”@gabumba If you need any help withfuture porting efforts of Tupsu I’d behappy to help you in any way :). Awesomegame t: visy from Ardites”@notyourusualcup - 10:25 AM - 23 Feb 13Tästä kaikki alkoi, mutta aloitimmekeskustelut Tupsun porttauksen sijaanmahdollisista uusista peliprojekteista.Pian Evgeni esittelikin kehittämänsäpelin prototyyppiä. Ensimmäinen pelaamaniversio oli yksinkertaisen näköinenmutta viehättävä.Varhaista kehitystäProjekti lähti JavaScript-sivusta, jolla olikolme neliötä, joiden reunoilla oli pisteitä.Hetken tällä protolla leikittyänialkoi satunnainen molemminpuolinenajatustenvaihto. Välillä kului viikkojakinmuiden projektien parissa, mutta sittenpalasimme jälleen Evgenin kanssa juttusillemahdollisista peliin liittyvistä konsepteista.Kevätkuukausien saatteessa peruspelinrakenne alkoi hahmottua. Neliöidenlisäksi mukaan testattiin ja hyväksyttiinkolmiot ja piirakat. Päätimme yhdessäperuspelimoodiksi Puzzle Moden, jossaolisi Angry Birdsistä ja monesta muustamobiilipelistä tuttu kolmen tähden läpäisymalli.Lähdimme tutkimaan, voisiko peliingeneroida pseudosatunnaisia tasoja. Proseduraalistenalgoritmien piti myös tarkistaa,että luotu taso on läpäistävissä javisuaalisesti miellyttävä. Alkoi työ kahdenmuun pelimoodin parissa, joissa hyödynnettäisiinautomaattisesti luotuja tasoja.Syntyi Time Attack, jossa kilpaillaankelloa vastaan ja jossa hyvin suoritetuistakentistä tippuu lisäaikaa. Teimme myösEndless Moden, jossa kenttien välissäkerrotaan joka kerta erilainen tarina.Huomasimme satunnaisluotuja tasojatestatessamme, että myös ohjelmallisestiluotu värivalikoima sopisi hyvin pelinkäyttöliittymään. Valitsimme lopulta väritFlat UI -paletista, jossa on erityisesti korostettukäyttöliittymäelementtien kontrastiasekä pastellivärejä pelkistettyjentyylien tarpeisiin.Tärkeä yksityiskohta, jonka huomioimmejo varhaisessa vaiheessa kehitystä,oli pelin tasojen jakaminen muidenpelaajien kanssa. Tärkeimpänä vaikuttimenatähän oli oivallus pelitilanteentallentamisesta pieneen määrään tietoa.Yksi suhteellisen lyhyt ja linkkiin mahtuvanumerosarja riittää kertomaan tasogeneraattorille,luodaanko taso kolmioista,neliöistä vai piirakkamuodoista ja millainentason muoto on.Loppu on vain satunnaislukugeneraattorieniteroimista erilaisille tarkistuksilletason sisällön oikeellisuudesta,läpipelattavuudesta ja symmetrisyydestä.Näin pelin ei juurikaan tarvitse siirtäätietoa verkon yli. Linkissä mukana olevattiedot riittävät kertomaan, kuka tason onjakanut, millä tuloksella ja millaiset numerottuottavat juuri sen muotoisen javärisen kuvion.Tilatehokkuus ja tasojen muodostamatkuvioasetelmat tuovat mielleyhtymiädigitaalitaiteen pseudosatunnaisuuteenja tilakoodaukseen ja toisaalta myös itämaisiintaidemuodon ja palapelin yhdistelmiin:origamiin ja tangramiin. Onpajoku myös verrannut peliä myös sudokuunja sen numeroiden tasapainotukseenperustuvaan pelistrategiaan. Tietyssämielessä samanlaisia menetelmiäkäytetään myös Division Cellin palapelienratkomiseen.66 2013.4


Ensimmäinen prototyyppi ei vielä ollut kovin hiotun näköinen, mutta viehättävä yksinkertaisuus vetosi.Tekniikasta ja julkaisustaKäytämme pelissä PlayN-kirjastoa(https://code.google.com/p/playn/), jonkaavulla kaikki pelilogiikka tarvitsi kirjoittaaJava-ohjelmointikielellä vain kerran.Se käännettiin Apachen Maven-työkalunja Monotouchin avulla iOS:lle, Androidilleja HTML5-renderöijää käyttävälleJavaScriptille. Teknisten valintojen ansiostavoimme julkaista pelin kaikilla kolmellaalustalla samanaikaisesti.Pistelistat ja pelin sisäisten saavutustenseuranta piti toteuttaa kahdellaeri tavalla: iOS:lla Game Centerillä jaAndroidilla Google Play -palvelulla. Toiminnallisuusnäissä kahdessa palvelussaon kuitenkin lähes identtinen, jotenpystyimme vaivattomasti toteuttamaankaikki ominaisuudet molemmilla isoillamobiilialustoilla.Julkaisu Applen ja Googlen alustoillatapahtuu alustakohtaisten maksullistenohjelmakauppojen kautta. Julkaisemisenilosta livahtaa Applelle 99 taalaa vuodessaja Googlelle 25 taalan kertamaksu.Itse julkaisemisessa hermoja raastavintaon Applen tarkastuksen läpäisy.Tarkasteluun lähetetty ohjelma saatetaanhylätä puutteellisena tai ohjelmantietojen virheellisyyden takia. Prosessintekee kehittäjän kannalta hankalaksi sen”musta laatikko” -tyylinen luonne. Tarkastuksestaei saa monen päivän odottelunjälkeen kuin hyväksytyn tai hylätyntuloksen.Ideasta kuvaksiDivision Cellissä on pääasiallisesti vektorigrafiikkaa.Pelkistetty ulkoasu sopii esitettäväksienimmäkseen skaalautuvillaelementeillä kuten kolmioilla, neliöillä jafonteilla. Nettisuunnittelijoille tuttu FontAwesome tulikin erittäin hyvään tarpeeseennappeja ja ikoneita suunnitellessa,koska se sisältää suurimman osan tarvittavistakäyttöliittymän symboleista.Grafiikka on renderöity käyttäenOpenGL ES -kirjaston näytönohjaimenkiihdytystä. Se tekee pelistä keskivertopuzzlepeliäraskaamman, mutta mahdollistaasulavat animaatiot ja kauniinpehmeäreunaiset geometriset kuviotmyös iPadin valtavalla Retina Display-resoluutiolla. Suurin osa kohdelaitteistaPelin perusmuotoja ovat neliöt, kolmiot ja ympyrät. Kun muotoa hipaisee, kaikki sivut, joilla on valkoinen ympyrä, laajenevat. Mustasivuiset reunattaas supistuvat. Tavoitteena on saada kuvioiden kaikista osista samankokoisia.67


on onneksi riittävän tehokkaita grafiikkasuorittimiltaan,joten peli toimii vähintäänkintyydyttävästi, eikä pelaamisenilo pilaannu karvalakkimallien omistajiltakaan.Pelin Story Teller -niminen maskottihahmoanimoitiin Flumpin avulla (http://threerings.github.io/flump/). Flump mahdollistaamonimutkaisten hahmoanimaatioidenpurkamisen pala-animaatioiksi.Kössi Kengurun tai South Parkin tyyliinkoodi asettelee palat päällekkäin ja liikutteleeniitä animaatiodatan määrittämässätahdissa. Näin säästyy tilaa, kunanimaation jokaista kuvaa ei tarvitseerikseen tallentaa kuvatiedostoksi – pelkkäpalojen tallentaminen riittää.Lopussa kiitos seisoo. Oma peli puhelimessa kauniina ja pelikelpoisena. Vielä hetki julkaisuun,mutta kannatti tehdä.Äänien maisemaPelin musiikin on säveltänyt englantilainenkaksikko The Audio Grill, jonkajäsenet David ja Mike innostuivat välittömästipelistä nähtyään loppukesästäpelin demoversion. Sovimme, että hesäveltävät peliin syntetisaattoreidensävyttämän, tunneskaalaltaan miellyttävästäpainostavaan etenevän ääniraidan.Korvauksena The Audio Grill saisi10 prosenttia pelin ensimmäisen neljänkuukauden myynneistä. Ohjeeksi sävellystyöhönhe saivat vain löyhän heiton:”Philip Glass kohtaa Giorgio Moroderin”.Kukin voi pelin musiikista toki itse päätellä,vastaako lopputulos toivetta.Äänitehosteiden ensimmäiset versiotkaivettiin ilmaisista lähteistä ja osittainmyös luotiin itse GoldWave-äänieditorissa.Julkaisuversioon The Audio Grillnauhoitti osan äänistä uudelleen, jotta nesopisivat paremmin musiikkiin.Tärkeänä viimeisenä silauksenaDivision Cellin äänimaisemaan toimiiAnnounceriksi nimetty naisääni. Äänikommentoi valikoissa liikkumista, pelisuoritustatasojen väleissä sekä TimeAttack -tilan pelitapahtumia. KäytimmePhilippa N:n ääninäyttelijän lahjoja myöspelin trailerivideossa. Hän teki kaikkinauhoitukset The Audio Grillin studiollaMiken ohjaamana.Äänisuunnittelu mobiilipeleihin onomalla tavallaan kiittämätön työ. Monetpelaavat pelejä puhelimellaan tai tabletillaanjulkisilla paikoilla, ja siten äänienpäälläolo voidaan kokea häiritseväksi jakiusalliseksi. Monet vaivalla tehdyt kappaleetja muut äänet jäävät kokonaanuseilta pelaajilta kokematta.Sopii toivoa, että Division Cellin pelaajatrukkaavat äänenvoimakkuudenylös. Musiikki muodostaa jopa 70 prosenttiakoko pelipaketin koosta. Tämä onpelin ainoa osa-alue, jossa ei pyritty kokotehokkuuteentai minimalismiin vaanannettiin täysin vapaat kädet musiikinluojille. Äänimaisema on äärimmäisentärkeä vaikutin osana pelikokemusta. Seluo pelaajalle tunnekokemuksia ja antaapelille oman persoonallisen leimansa.Itsenäinen peli – omahinnoittelupolitiikkaTarjosimme peliämme aluksi monelletaholle, esimerkiksi Roviolle. Kukaan eikuitenkaan osoittanut kiinnostusta, jotenpäätimme perustaa oman osakeyhtiön japelistudion. Se voisi myös toimia alustanamyöhemmin tuleville peleille ja niidenkehitykselle.Skrollissakin vaikuttanut Jari ”Jaffa”Jaanto – yksi IRC-Gallerian ja Ninchatinperustajista – lähti pelin viimeisinä kehityskuukausinaperustajajäseneksi jakokeneeksi neuvojaksi mukaan uuteenHyperspace Yard -studioomme. Näinvoimme julkaista pelin juuri siten kuintahdomme, eikä sen sisältöön tarvitsetehdä kyseenalaisia rahanahneita kompromisseja.Uskomme, että pelimme on puolentoistaeuron arvoinen molemmilla mobiilikäyttöjärjestelmillä.Sen satunnaisgeneroituihinkenttiin perustuvat pelimuodottarjoavat potentiaalisesti rajattoman uudelleenpeluuarvonkertaostoksella.Julkaisua miettiessä ja suunnitellessatulee pakostakin tietoiseksi, miten helpostitälläkin pelillä olisi voinut rahastaaFreemium-mallin puitteissa. Pelissä voisimyydä vinkkikolikoita ratkaisua vartentai lisää tasopaketteja, jotka peli voisi jonytkin luoda muutaman rivin koodilla.Emme lähteneet rahastusjunaan. Johtavaajatus peliä tehdessä oli, että senpitää olla sellainen, jota haluamme itsekinpelata julkaisun jälkeen ja jossa ei voiostaa tietään voittoon. Luotamme siihen,että pelaajat ovat valmiita maksamaanlaadukkaasta pelistä, jos se on markkinoituoikein.Tietoa pelistä jaetaan Facebookissa,Twitterissä ja muissa sosiaalisissa medioissa.Mainontapalveluina käytämmealuksi Google Adwordsia ja lisäksi kokeilemmevarmasti myös muita reittejä tuodapeliä ihmisten tietoisuuteen. Olemmemyös ottaneet huomioon pelin sisäisettavat levittää sanaa. Verkossa pelattavatja helposti jaettavat kentät mahtuvatkokonaisuudessaan yhteen internetlinkkiin,joka on helppo jakaa esimerkiksitekstiviestillä sekä ircin tai muiden pikaviestimienvälityksellä. Tämä tekee pelikokemuksenjakamisesta äärimmäisenhelppoa.Pelin kotisivut ja traileri löytyvätosoitteesta http://cell.hyperspaceyard.com.Oma vauva on kauneinPimiä toimitti meille myös lyhyen kuvailevantekstin itse pelistä. Tämä ei ole puolueetonpeliarvostelu, vaan kehittäjän oma näkemys.Ottakaa itse selvää, onko se turhaa kehuavai vaatimatonta vähättelyä:”Division Cell on pelkistetysti esitettypalapeli. Division Cell on tarina kuvioista.Division Cell on hitaasti aukeava origamija muodon eleganttia harmoniaa. Sen musiikissakohtaavat FM-synteesin muisto jaelektropopin hyökkäävät äänimaisemat. Seon jotain niin yksinkertaista ja siltikin kätkeesisäänsä loputtoman monimutkaisen paljonniin vähässä.”68 2013.4


PelitEi näin!Paina nappia, katso videotaAlussa maa oli autio ja tyhjä, ja videopelien grafiikka koostui legoukoista.Sellaisenaankin pelit kelpasivat monille, mutta niiden tekijät halusivatenemmän: elokuvatasoista kuvaa, jota voisi pelata. Ainakin tavallaan.Teksti: Mikko Heinonen Kuva: Ville-Veikko HeinonenPeliautomaattien eläessä 80-luvun Tauti leviää koteihinalussa kultakauttaan käytiin kovaa Videoreaktiotestit eivät kuitenkaan malttaneetjatkaa vain pelihallien riemuna,kamppailua pelaajien kolikoista.Uusia innovaatioita esiteltiin nopeaantahtiin. Mustavalkoisia hahmoja väritettiinensin kalvoilla, joita liimattiin näyttöön.Sitten saatiin jo värigrafiikkaakin.Edelleen ruudulla kuitenkin vilisi yksinkertaisiahahmoja, koska laitteisto eimuuta osannut tuottaa.vaan 80-luvun lopulla ne valmistelivatesiinmarssia koteihinkin. Lipunkantajaoli Control Vision -nimellä kulkenut pelikonsoli,jonka pelit tallennettiin VHSkaseteille.Control Visionin ajatus oli, että VHSsisältäisi sekä ohjelmadatan että videomateriaalin.Niiden rinnalla Dragon’s Lair vuodeltaPrototyypin pelimekanii-1983 näytti uskomattoman hienolta.Tikku-ukkojen sijaan ruudulla seikkailianimaattori Don Bluthin upeasti piirtämäsankari, joka pelasti prinsessaa linnasta.Sujauttamalla kolikon koneeseen saiikään kuin pelata piirroselokuvan. Mitenkasta vastasi muutaman vuoden ikäinenColecoVision-konsoli. Se kertoi osaltaansiitä, että tarkoitus oli vain lisätä videokuvaanyksinkertainen pisteidenlasku.Leluyritys Hasbro lähti mukaan rahoittamaanhanketta. Jossain vaiheessatämä oli edes mahdollista?VHS-tekniikan rajat kuitenkin tulivatNo, eihän se oikeastiollutkaan. Dragon’son kuivui kokoon. Sillevastaan ja Control Visi-Pelaaja ohjasi sitä, toistettiinkotarinalle jatkoaLair koostui LaserDisckuvalevystä,johon kokokokonaista peliä: Night” ehdittiin kuvata kaksivai näyttävä kuolema.animaatio oli tallennettu pätkinä. Pelaajaohjasi käytännössä sitä, toistettiinko seuraavaksitarinalle jatkoa vai jokin näyttäväkuolema. Useimmiten jälkimmäinen,sillä peli oli vain reagoimista ruudulla välähtäviinesineisiin. Niiden mukaan pitiosata ohjata oikeaan suuntaan tai painaanappia oikealla hetkellä.Peleinä tämäntyyppiset LaserDisc-automaatitTrap, jossa suojeltiin teinityttöjä pahiksilta,ja Sewer Shark, jossa lenneltiin ennaltamääritettyä reittiä videokuvan päälläja ammuskeltiin. Molemmat oli toteutettuoikeilla näyttelijöillä, joiden suorituksiasaattoi verrata lähinnä B-elokuviin.Konsolin peruuntumisesta huolimattaostava yleisö ei välttynyt näiltä taideteoksilta.Sega nimittäin esitteli 90-luvunolivat tietenkin köykäisiä koke-alussa MegaDrive-konsoliinsa CD-ase-muksia. Oikean painallusten järjestyksensai opeteltua, kunhan jaksoi syytää riittävästirahaa koneeseen. Kaunis grafiikkakuitenkin houkutteli pelaajia kuin rihkamavariksia, ja LaserDisc-pelejä ilmestyimuitakin. Hieman mielekkäämpiä niistäolivat sellaiset, joissa kuvalevy sisälsivain näyttävää taustagrafiikkaa.man, joka pystyi toistamaan videokuvaasuoraan levyltä. Muuten teknisesti melkovaatimaton laite oli kuin tehty näitä ”fullmotion video” -pelejä varten.Night Trap ja Sewer Shark siirrettiinkinVHS:ltä CD-levylle, ja varsinkinensin mainittu myi kohtalaisesti. Myyntiselittyy pelin tyttölapsilla ja niiden herättämälläkohulla. Muita vastaavia seurasipian, ja nappulan painelu seuraavan videopätkännäkemiseksi eli ja voi hyvin.Mega-CD:n ja aikalaistensa lisäksi videotakatseltiin paljon myös kotitietokoneidenCD-ROM-peleissä.Menneiden aikojen haamutVuosituhannen loppua kohti pelikoneidenteho kasvoi eikä erillisiä videojaksojaenää tarvittu. Ostava yleisökin kyllästyisuttuisiin ja huonosti näyteltyihin mukaelokuviin.Reaktiotestit melkein unohtuivat,kunnes Yu Suzuki esitteli Quick TimeEventiksi (QTE) kutsumansa pelimekaniikanosana mainiota Shenmue-seikkailupeliä.QTE tarkoitti pelin keskelle upotettuatoimintakohtausta, jossa pelaajanpiti suorittaa tietty tapahtumasarja painamallaoikeaa nappulaa oikeaan aikaan.Käytännössä se oli kuin LaserDisc-peliäpelimoottorilla toteutettuna. Tämä uusvanhakeksintö levisi pelisuunnittelijoidenkeskuuteen kuin ruohikkopalo. Suzukioli tarkoittanut QTE:n elävöittämäänhidastempoista seikkailuaan, mutta piankokonaisia pelejä tehtiin sen ympärille.Kun vuonna 2013 käynnistät vaikkapauuden Infinity Blade -pelin iPadillasi,saat nähdä upeaa grafiikkaa, jota täppärisipystyy hädin tuskin edes tuottamaan.Pelaajan osa on piirrellä sormella erilaisiakuvioita ruutuun ja käynnistää ennaltamääritettyjä iskusarjoja. LaserDiscinsijaan silmäkarkkia tuottaa nyt äärirajoillaantoimiva grafiikkasuoritin, mutta äläanna sen hämätä: samasta asiasta tässäon kyse..69


Mallin vikaaKokemuksia 3D-tulostamisesta3D-tulostimet ovat monipuolinen työkalu, jolla voivalmiiden mallien monistamisen lisäksi räätälöidä juuriomiin tarpeisiinsa sopivia välineitä. Aivan mutkatontauuden teknologian käyttö ei kuitenkaan ole.Teksti: Annika Piiroinen Kuvat: Risto Mäki-Petäys, Flickr-käyttäjä edansRisto Mäki-Petäys: ”Oli vuosi 2008,ja kuluttajakäyttöisiä 3D-tulostimiaalkoi hiljalleen näkyä yhäenemmän Suomessa. Alternative Partyilläoli esillä eräs yksilö, mutta sitä eiollut saatu silloin vielä toimintakuntoon.Ensikosketukseni 3D-tulostamiseen jättiminut janoamaan lisää tietoa.3D-tulostimen nopeus ja tarkempi toimintaselvisi vasta, kun Helsinki Hacklabrakensi Torstin eli Prusa Mendel -mallisen,osittain kierrätysmateriaalista kootuntulostimen. Sen käyttöönotto oli yhtäsalatiedettä, eivätkä odotukseni sitä kohtaanolleet kovin korkeat.Muut hacklabilaiset olivat tulostaneetTorstilla lähinnä valmiita objekteja,mikä ei ollut minusta erityisen kiinnostavaa.Olen itse aina tulostanut sellaisiaesineitä, joita ei saa valmiina eikä voitehdä muulla tavalla. Kaikki ideat esineisiinovat syntyneet käytännön tarpeesta.Lähtökohtana on ollut tarve ja ratkaisuna3D-tulostaminen eikä toisinpäin. Ensimmäinentarve, jonka ratkaisin 3D-tulostamalla,oli polkupyörän ohjaustankoonkiinnitettävä kännykkäteline.”Navigaattori pyörään”Halusin pyörääni telineen, johon voisinkiinnittää kännykän siten, että voisinkäyttää sen navigaattorisovellusta ajaessani.Myytävät mallit oli joko tarkoitettuautoille tai väärän mallisille matkapuhelimille,joten itse tekeminen oli luontevavaihtoehto.Koska teline oli kookas, suunnittelinsen rakentuvan kolmesta osasta, jotkakiinnittyisivät ruuveilla yhteen. Tällä tavoinhukkamateriaalia syntyisi vähemmän,jos tulostettu osa osoittautuisikinvääränlaiseksi.Ultimakerin ohjeet olivat epämääräiset.Tulostusjälki ei ollut yhtenäistäeikä tarttunut pintaan. Syy tosin selvisivasta jälkikäteen: tulostuspäässä oli tukos.Torsti tulosti ensimmäiset kaksi osaamallikkaasti, mutta kolmas osa hapertuijo tulostuksensa alkuvaiheessa. Hapertunutosa oli onneksi ainoa, jonka pystyivalmistamaan myös puusta, kun taasmuiden osien tulostamatta jääminen olisikaatanut koko projektin.Aluksi hapertumisen syyksi epäiltiin,että asetuksissa ja ohjelmistoissa on tulostuskoneenvaihdon jäljiltä oltava jotainpielessä. Myöhemmin selvisi, että yksitulostuspään lattakaapelin johdoista olipoikki. Katkeileva pursottimen signaaliaiheutti reikäisyyttä, joka johti hapertumiseen.3D-tulostukseen ryhtyvälle tällaisetyllätykset voivat tulla hyvin tutuiksi!Tulostimen haluttomuus yhteystyöhönei ollut ainoa ongelma. PLA-muoviatulostavaa hartsitulostinta käytettäessäpainovoima ehtii vetää esinettä hiemankasaan ennen kuin käytetty muovi jäähtyyja jähmettyy. Ruuveille tarkoitetutreiät turposivat umpeen, ja niitä pitisuurentaa jälkeenpäin poralla. Poraamisenseurauksena osa kuitenkin lohkesikulmasta. Mallia piti muuttaa siten, ettäreikä oli isompi eikä kasaan painuminenhaitannut.””Hartsitulostinta käytettäessäpainovoima ehtii vetääesinettä hieman kasaanennen kuin käytetty muovijäähtyy ja jähmettyy.”70 2013.4


3D-mallista 3D-esineeksi”3D-mallintaminen oli minulle tuttua jodemoskenestä ja graafikon hommista.Helsinki Hacklabilta minulle vinkattiinOpenSCAD-ohjelmisto, jolla voi suunnitellaskriptattuja 3D-malleja. Sen käyttäminenei vaatinut minulta muita uusiataitoja kuin ohjelmiston oman skriptikielenopettelemisen.OpenSCADissa 3D-malli rakennetaanpelkästään ohjelmointikielen avulla eikäesimerkiksi piirtämällä. Se ei siis oleWYSIWYG-tyyppinen työkalu. Siinä voimäärittää, mitkä mitat riippuvat toisistamitoista, joten kun yhtä mittaa päivittää,päivittyvät kaikki siitä riippuvat mitatautomaattisesti. Se tekee mallin muuttamisestaja skaalaamisesta paljon helpompaa.”OpenSCADissa 3D-mallirakennetaan pelkästäänohjelmointikielen avulla.”OpenSCADilla voi tehdä myös moduuleja,esimerkiksi standardikokoisia ruuvinreikiä,joita voi sitten lisätä omiin malleihinsatarvitsematta keksiä reikää jokakerta uudestaan. Tällöin voi helpostivaihtaa esimerkiksi ruuvikoon suuremmaksi.Aloittelevalle 3D-printtaajalle suosittelenTrimble SketchUpia, joka on helpompikäyttää. Jos taas on mallinnuskokemustaeikä pelkää skriptaamista, voiOpenSCADillakin lähteä suoraan leikkimään.Moni ei enää suosittele OpenS-CADia, mutta itse en ole löytänyt toistaohjelmaa, joka olisi niin näppärä ja tekisisen, mitä haluan.”Kännykkätelineen 3d-malli, jossa väritettynäeri värillä kukin kolmessa osassa tulostuva osasekä pyörän stemmi.Suunnittelija mokaa”Kesällä 2011 polkupyöräni lukkotelinehajosi ajaessani katukiveykseen, ja uusikinteline hajosi samoissa olosuhteissapian käyttöönoton jälkeen. Valmistajanmalli ei selvästikään kestänyt katuajoa.Alkuperäisessä mallissa oli jousimekanismi,jota ei pystynyt 3D-tulostamaan,joten jouduin suunnittelemaan lukkotelineenkokonaan itse.Otin mitat pyörän satulatolpasta sekälukosta ja loin mallin, joka kestäisi tärinääja törmäyksiä. Katsoin tarkkaan,että lukko mahtuisi telineeseen osumattasatulaan tai renkaaseen. Tein myöstelineestä riittävän paksun, jotta ruuvinreikienlaajentaminen poralla ei aiheuttaisilohkeamia muoviin.Tulostaminen meni ensimmäiselläkerralla nappiin, ja teline kiinnittyi satulatolppaanjuuri oikealla tavalla. Lukkokinmahtui telineeseen eikä osunutsatulaan. Oli vain yksi pieni ongelma:itse lukon asettaminen telineeseen olimahdotonta. Koko satula olisi pitänyt irrottaa,jotta lukon saisi pois ja takaisin.Pikku vikoja… Ajan nykyään ilman lukkotelinettä.”Parempi kuin uusi”Aina ei tarvitse suunnitella esinettä tyhjästä,vaan joskus voi käyttää olemassaolevaa esinettä mallina. Tällöin virheitäsattuu lähinnä tulostustekniikkaan liittyvissäasioissa, kuten kasaan painumistenja valumisten vuoksi.Pyöräni ohjaustangon päässä olevattulpat irtosivat jatkuvasti, joten päätintulostaa itse pidempivartisen mallin. Seosoittautui niin hyväksi, että se pysyiOhjaustangon tulppa 3d-mallina ja tulostettunalopullisessa kohteessaan.irtoamatta ja ehjänä, kunnes ajoin kolarinjoitakin vuosia myöhemmin. Tulpansuunnittelu oli hyvä esimerkki siitä, mitä3D-tulostaminen voi parhaimmillaan olla:pääsee itse parantelemaan esineen muotoiluakäytännössä.”Onnistunut käyttöesineon sellainen, jota eitarvitse ajatella.”Onnistunut käyttöesine on sellainen, jonkaolemassaoloa ei juuri kukaan huomaatai jota ei tarvitse ajatella. Se toimii niintäydellisesti. On hieno tunne, kun on onnistunutsuunnittelemaan jotain paremminkuin henkilö, joka tekee sitä työkseen.”Muistilista PLA-muovin tulostajalle[yksinkertaiset mustavalkoiset kuvat valumisjuttuihin?]1. Ota selvää tulostimen rajoituksista,esimerkiksi tulostetun esineen maksimimitoista.2. Yli muutaman sentin pituiset, tyhjänpäällä makaavat ”siltarakenteet” eivätsovellu tulostamiseen.3. Jos tulostettavan pinnan alla on tyhjää,pinta painuu jonkin verran koveraksi.Suorat pinnat kannattaa tulostaapystysuoraan tai tulostusalustaa vasten.Painumista voi jonkin verran vähentääsäätämällä tulostusohjelma rakentamaantukirakennetta tulosteen alle.4. Samasta syystä reiät painuvat kasaan,jos niiden akseli on vaakasuora. Esinekannattaa tulostaa asennossa, jossareiät ovat kohtisuoraan tulostusalustaavasten.5. Jos esineessä on useampia reikiä eikäkaikkia saa tulostuksessa pystyasentoon,kannattaa harkita esineen tulostamistauseammassa osassa.6. Tulostimen säädöt eivät ole aina täydellisestikunnossa, minkä takia kappalettavoi joutua korjaamaan jälkeenpäin esimerkiksiviilaamalla tai mattoveitsellä.7. Suunnittele malli huolellisesti, ota huomioonkaikki tarvittava ja varaudu yllätyksiin.Tulostuspää saattaa vaikka tarttuakiinni tulostettavaan esineeseen ja eksyäkoordinaateista.8. Mieti haluamasi tarkkuus (onko puolenmillimetrin heitto ongelma) ja ota sehuomioon suunnittelussa. On myösmuistettava, että tulostimen tarkkuus onrajallinen.9. Varaudu siihen, että tulostimella onhuono päivä.10. Korjaa mallia testitulosten perusteella.71


Selvää säästöä”Olin myös käyttämässä Suomen ensimmäistäsarjavalmistettua 3D-tulostinta,MiniFactorya, kun sellainen saatiin MikroBitintiloihin testattavaksi.Silloin paikalla ollut tietokirjailija jatietotekniikka-asiantuntija Petteri Järvinentuli tiirailemaan olkani yli projektianieikä tahtonut millään uskoa, että 3D-tulostamisessaon mitään järkeä. Hän epäili,että kallis tulostin maksaisi harvoinitseään takaisin ja että tuotteen ostaminenkaupasta olisi paljon järkevämpää.Yhteiskäyttöiset tulostimet kirjastoissa jahackerspaceissa saivat kuitenkin hänenmielensä muuttumaan suopeammaksi.Osasin myös antaa esimerkkejä tulostusprojekteista,jotka säästivät rahaa.Kun lakkautettua mallia oleva vanhapistorasiakotelo hajosi makuuhuoneestani,vaihtoehtona olisi ollut pulittaasadoista tuhanteen euroa sähkömiehellepistorasioiden uusimisesta. Samallatavalla rahaa säästyi, kun tuttuni vuokraamanasunnon vanhasta uunista murtuiluukun kahvan bakeliittinen kannatin.Olisi pitänyt hankkia kokonaan uusiuuni, mikäli mitoiltaan sopivaa malliaolisi edes löytynyt. Turhaa askarteluahantämä 3D-tulostaminen siis on.”Kuumat paikat”Uunin luukun kahvan kannattimen korvaaminenoli moneltakin kannalta mielenkiintoinenprojekti. Kannattimeenmeni uunin luukun läpi metallisia pultteja,joten kuumuus piti ottaa huomioon.Puu olisi ollut luonteva materiaalivaihtoehto,mutta osa oli sen mallinen, ettäsitä on mahdotonta työstää puusta.Hacklabin Ultimaker tulosti vain PLAmuovia,joka pehmenee liian alhaisessalämpötilassa eikä sovi yhteen uunin kuumuudenkanssa. Testasin kuitenkin tulostamaniosan kestävyyttä lämmittämälläuunia täydellä teholla puoli tuntia, eikäpehmenemistä ilmennyt. Ilmeisesti metalliosateivät johtaneet lämpöä liikaaläpi.Vuokralainen ei ole valittanut tähänkäänmennessä uunista, joten uskoisin,että ongelmia ei ole ollut.”Vuokralainen ei olevalittanut tähänkäänmennessä uunista.”Kannattimen mallintaminen ei ollut helppoa,koska sen sisällä oli neliskulmaisia,hyvin täsmällisiä muotoja, viistoja tasojasekä onkaloita. Siinä oli myös epämääräisestikaartuvia linjoja, jotka piti hienosäätääkohdilleen muutaman testitulostuksenavulla.Toinen kahvan kannatin oli ehjä, jasain siitä tavallisen tasoskannerin ja piirto-ohjelmanavulla laskettua kaltevuuskulmatja tangon ääriviivat. Onkaloidensyvyyden mittaamiseen käytin työntömittaa.Koko projektiin meni kolme iltaa,mutta kun esineen kaarevuus oli saatusäädettyä testipalojen avulla kohdalleen,kokonainen esine toimi lopulta ensi yrittämällä.”Klaustrofoobikot hississä”Olen toteuttanut useita projekteja vuosienvarrella, mutta en aio käydä niitäkaikkia tässä läpi. Haluan kuitenkin kertoavielä eräästä projektista, joka ei vieläole onnistunut mutta jonka taustalla onaito tarve. Kerrostaloni hissiin nimittäinjuuttuu jatkuvasti ihmisiä.Olin eräänä yönä nukkumassa,kun naapurini soitti ovikelloa. Hänenklaustrofobinen ystävänsä oli juuttunuthissiin, ja hän oli saanut jostain päähänsä,että minä olisin oikea ihminen auttamaan.Hissimekaanikko oli hälytetty,mutta häntä ei kuulunut. Hississä jumissaollut mies jo hyperventiloi paniikista jatakoi ovea.Periaatteessa hissin ovea ei pitäisisaada auki siinä tilanteessa lainkaan,mutta se ei tietenkään estänyt kokeilemasta.Onnistuin lopulta kikkailemaanlukon auki kuusiokoloavaimella. Ahdistunutmutta huojentunut pettäneen tekniikanuhri kömpi ulos hissistä. Hän ei olesen koommin käyttänyt talomme hissiäja halaa aina onnellisesti, kun satummetörmäämään.Älä kokeile tätä kotona. Hissikuiluunvoi pudota, jos oven avaa korin ollessakerrosten välissä.Vanhat, likaiset ja haljenneet palat ennen operaatiota.Uusi, siisti 3d-tulostettu pala lopullisessa kohteessaan.72 2013.4Tasoskannerilla otetut mittakuvat alkuperäisestäosasta.Kyseinen tapaus ei suinkaan ollut ainutkerta, kun joku jumittui hissiimme –sitä tapahtui vuosittain. Kuusiokoloavaimellalukon sörkkiminen ei pidemmänpäälle tee lukolle hyvää, joten tarvittiinpysyvämpi ratkaisu. Lukon avaamiseentarkoitettu työkalu on turvallisuussyistälähinnä hissimekaanikkojen saatavilla,joten päätin kokeilla oman tulostamista.Projektit 2011-2013(X: ei päätynyt tuotantoon)ProjektiTulosKännykkäteline polkupyörään :)Polkupyörän lukkoteline :IIDE64:n koteloXPolkupyörän ohjaustangon tulppa :DElektroniikkapelin paristokotelon kansi :)Pistorasian kansi :DHissiavain :(Lasten älypelilelun osaXHellan kahvan kannatin :DOman sekvensserin adapterin palasia :IUSB-reiän suojatulppa :DPolkupyörän vaihteiston kansiXKitaran hihnan tappi keytariin :D


Lukon muoto oli kuitenkin niin epäsäännöllinen,ja avaimeen olisi tarvinnutniin ohuita kohtia, ettei yksikään koekappaleonnistunut. Luovutin toistaiseksi.”Hae mallit netistäProjekteja varten laaditut 3D-mallit jaapuvälinemoduulit löytyvät Skrollin sivuilta,osoitteesta http://skrolli.fi/2013.4.Moduuleihin sisältyy muun muassa M-standardikokoisten pulttien, mutteriensekä vastaavat reikien moduulit ja viivoitinmoduuli,jonka avulla heikompikinmatikkapää voi tarkistaa mittaukset. Sivustoiltakuten Thingverse (http://www.thingiverse.com/) löytyy muiden tekemiävalmiita malleja, joiden tulostaminen voiolla helpoin tapa aloittaa 3D-tulostuskokeilut.Minustako 3D-tulostajaksi?Yleisimmät ja edullisimmat tulostimet esilämmitettävää alustaa, joka on hankittavaerikseen moneen tulostimeen. ABS:ääperustuvat fused deposition modelling -tekniikkaan.Niissä muovifilamenttia syötetään käytetään muun muassa Legoissa.kuumaan tulostuspäähän. Sula muovinauha Muovifilamenttitulostinta pääseetyöntyy ulos tulostuspään ohuesta kärjestäja jähmettyy paikalleen. Tulostuspää ja hackerspaceissa ja pääkaupunkiseudullakokeilemaan esimerkiksi eri paikkakuntien-alusta liikkuvat kolmella akselilla toistensa myös Tapiolan kirjastossa, Lasipalatsin Kohtaamispaikassaja Aalto FabLabin tiloissa.suhteen piirtäen langalla kappaleen muodonalhaalta ylöspäin, yksi kerros kerrallaan.Monia muitakin tulostintyyppejä onKerroksen valmistuttua pää siirtyy hieman olemassa. Stereolitografiassa kovetetaanylös ja uusi siivu tulostetaan. Esine kasvaa nestemäisiä fotopolymeerejä valolle altistamalla.Sintrauslaitteet taas sulattavat pientähitaasti alustasta.Perustulostin, jossa on yksi tulostuspää, muovi- tai metallijauhetta yhteen kerrosmaksaa hieman alle tuhannesta kolmeen kerrokselta. Laajaa valikoimaa jauhemaisiamateriaaleja voidaan kovettaa myöstuhanteen euroa. Kaksisuuttimiset mallitovat kalliimpia, ja niillä voi käyttää kahta eri nestemäisillä sidosaineilla, joita tulostetaanväriä tai materiaalia samassa kappaleessa. jauhekerroksen päälle. Suurin osa muihinRakennussarjana monet tulostinmallit saa tulostustekniikoihin pystyvistä laitteista onedullisemmin.toistaiseksi vähintään kymmenien tuhansienFilamenttitulostimet käyttävät yleensä eurojen hintaisia. Yliopistojen laboratorioissavoi olla jopa miljoonien eurojen ultravio-PLA- tai ABS-muovia. PLA-muovi on kestävämaissipohjainen, kierrätettävä ja biohajoava lettifemtosekuntilasertulostimia tai muitamuovi. ABS-muovia tulostettaessa tarvitaan villejä viritelmiä.Jauhetulostusmenetelmä on kuluttajankäytettävissä erilaisten palveluiden kutenShapewaysin kautta. Palveluun ladataan3D-malli ja valitaan haluttu materiaali, jatulostettu esine saapuu postissa muutamanpäivän kuluttua. Mitä isompia määriä tulostaa,sitä halvemmaksi esineen kappalehintatulee. Tällä tavalla esineiden tekeminenon kuitenkin hitaampaa ja kalliimpaa kuinesimerkiksi yleisessä käytössä olevilla muovifilamenttitulostimilla.• Shapeways:http://www.shapeways.com• Tapiolan kirjasto:http://www.helmet.fi/fi-FI/Kirjastot_ja_palvelut/Tapiolan_kirjasto• Lasipalatsin Kohtaamispaikka:http://www.lasipalatsi.fi/kohtaamispaikka• Aalto Fablab:http://fablab.aalto.fi• Hacklabeja Suomessa:http://hackerspaces.org/wiki/FinlandOpenSCADRisto Mäki-PetäysOpenSCAD on CGAL-kirjastoon pohjautuvavapaa ohjelmisto kiinteitten kolmiulotteistenCAD-mallien suunnittelemiseen. Se eisisällä graafisia työkaluja esineen mallintamiseenja muokkaamiseen, vaan mallitluodaan skriptikielellä. Tämä mahdollistaamuun muassa aiemmin suunniteltujen osienhelpon ja tehokkaan jälleenkäytön, mallienparametrisoinnin sekä toistuvien toimenpiteittennäppärän automatisoinnin.Mallit voidaan luoda kasaamalla erilaisiaprimitiivejä (kuutio, sylinteri, pallo) yhteen,vähentämällä niitä toisistaan boolen algebrallatai vaihtoehtoisesti luomalla ne useammastamonikulmiosta. Myös ohjelmanulkopuolelta tuotuja, DXF-formaatissa oleviamalleja voidaan hyödyntää. Mallin eri osia voihavainnollistamisen vuoksi pinnoittaa haluamillaanväreillä tai säätää läpikuultaviksi.OpenSCAD on näppärä pieni ohjelma,joka on helppo ottaa käyttöön. Vaikka olettaisimallin kirjoittamisen olevan työlästäskriptikielellä, voi OpenGL-esikatselun avullakuitenkin nopeasti hahmottaa kappaleessatapahtuvat muutokset. Joissakin tapauksissamonimutkaisemmalla boolen algebrallarakentuvissa esineissä saattaa esikatselunpiirrossa ilmetä bugeja. Lisäksi joillakinnäytönohjaimilla ilmenee piirrossa puutteita.Vapaaehtoisesti kehitetyssä ohjelmassasaattaa mennä pidemmänkin aikaareagointiin, ellei itse kyllästy ja päätä korjatalähdekoodia.http://www.openscad.org/73


74 2013.4


76 2013.4


78 2013.4


80 2013.4


Säätämisentäyteistä joulua kaikille Skrollin lukijoille!82 2013.4T. Kapsi Internet-käyttäjät ry


PähkinänurkkaTällä palstalla ilmestyy ohjelmointiin ja matematiikkaanliittyviä tehtäviä. Kaikki tehtävät on mahdollistaratkaista nopeasti sopivalla algoritmilla — ja osa ilmantietokonetta!Lauri AlankoUndigran valtakunnassa on levotonta.Maa on hajanainen, maasto on vaihtelevaaja kaupungista toiseen on monenpäivän matka. Kuningas Algor on juuriastunut valtaan. Auta häntä selviämään Undigraakoettelevista uhkista!1. Arboricissa on kapina! Algorin täytyypäästä joukkoineen pääkaupunki ElfigistäArboriciin mahdollisimman nopeasti ennenkuin kapina leviää. Mikä reitti hänenkannattaa valita?2. Kapinaa johtanut velho saatiin vangittua,mutta kapina oli vain harhautus. SalaliittoElfigissä yrittää kaapata vallan! Algorintäytyy palata nopeasti takaisin. Onneksivelho pystyy yhden kerran luomaan portin,joka siirtää Algorin välittömästi yhdenetapin ylitse. Mikä reitti Algorin kannattaanyt valita?3. Algor ehtii viime hetkellä kotiin ja kukistaasalaliiton. Hän päättää olla jatkossaparemmin perillä valtakunnan asioistaja perustaa postiverkon tuomaan raporttejakaikista kaupungeista. Viestinviejiätarvitaan yksi jokaista kaupunkien välistäpäivämatkaa kohden, mutta Algorilla onvain sata viestinviejää. Minkä kaupunkienvälille täytyy perustaa postilinjat, jottaverkosto ulottuisi sadalla viestinviejälläkaikkiin kaupunkeihin?4. Nyt valtakunnan riesana ovat peikot, jotkatekevät tuhojaan syrjäseuduilla ennenkuin apu ehtii Elfigistä paikalle. Algorpäättää perustaa kaksi tukikohtaa, joistasotilaat pääsevät nopeammin kaupunkienavuksi. Minne tukikohdat pitää perustaa,jotta kaukaisimpaankin kaupunkiin olisimahdollisimman lyhyt matka jommastakummastatukikohdasta?5. Tukikohdista on apua, mutta peikot ehtivätyhä mellastaa liian pitkään. Algor määrää,että yksikään kaupunki ei saa olla ylikymmenen päivämatkan päässä tukikohdasta.Kuinka monta tukikohtaa vähintääntarvitaan, jotta tämä onnistuisi?6. Peikot on lopulta saatu aisoihin ja valtakunnassaon taas rauha. Kuningas Algorinkruunajaiset lähestyvät. Undigrassa ontapana, että kuningas vannoo jokaisessakaupungissa suojelevansa sen asukkaita.Sitten hänet kruunataan Tribunovintemppelissä auringonseisauksen aikaan.Auringonseisaukseen on enää 123 päivää!Kuinka Algor ehtii Elfigistä Tribunoviinajoissa?GeheniBucolidArboric Fungulah63725 5 Kolem5Lumian7JunkelInjek 3 4767 9 6 Quorus7HerbinajMinarko810Cardige5 57207 ParquerOmpaqNepotip534 5 317 6SubteruUtvanow4Tribunov3Yozzia7Resort 5Xalyphiz 33362Elg4DomenifVowex 4 Waxey5Undigra. Luvut ovat etappien matka-aikoja päivissä mitattuna. Kartta löytyy koneluettavassamuodossa osoitteesta http://skrolli.fi/2013.4/pahkina/83


Maukkaat epäonnistujatKunnon työvälineet pelaamiseen - Cooler MasterCM Storm QuickFire TK, Cherry MX RedQuickFire TK on taustavalaistu mekaaninenpelinäppäimistö punaisilla kytkimillä. Se onnormaalia lyhyempi ja saanut pelaajien suosionympäri maailman.89,90 €CM Storm Ceres 500Headsetin isot kuulokkeetovat pehmeät ja poistavathäiritsevää taustaääntä.Niiden äänimaailma on suunniteltupelaamiseen, jotensaat selvän edun pelaamiseenPC:llä tai konsolilla.64,90 €CM Storm QuickFire XT, Cherry MX BlueQuickFire XT on mekaaninen pelinäppäimistösinisillä kytkimillä. Se tarjoaa tukevan rakenteen,lasermerkityt näppäinhatut sekä mattapintaisenviimeistelyn.79,90 €CM Storm HavocCM Storm Havoc on 8200DPIAvago 9800 sensorillavarustettu pelihiiri. Se onsuunniteltu tarkkaanpelaamiseen ja siinä on 8 täysinohjelmoitavaa näppäintä.49,90 €Jimm’s Pop GamerJimm’s Pop Gamer on yleisön suosikki. Tämän koneen naapurisikin ostaa,koska se tarjoaa parasta hinta/teho/laatu suhdetta. Nyt järjestelmälevynä SSD!Intel i5-4670K 3.4GHz, 6Mt -prosessori | Intel Z87-piirisarjan emolevy | NVIDIAGeForce GTX 760, 2Gt GDDR5 -näytönohjain | 8Gt (2x4Gt) DDR3 1600MHz,CL9 -keskusmuisti | 120Gt, 2.5”, Sata III -SSD asema | Cooler MasterSilencio 550 Jimm’s Edition -kotelo | Windows 7 Home Premium 64-bit1069 €Asiakaspalvelu+358 29 70 70700asiakaspalvelu@jimms.fiJimm’siltä löytyy nettitilauksiinaina toimituskuluton vaihtoehto!Noutopalvelumyymälä TurkuLukkosepänkatu 720320 TurkuHinnat €/kpl, sis. alv24%

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!