F I Oculus Rift Lumetodellisuuden airut OHM & Assembly Hakkerikekkereiltä pelihelvettiin 3D-tulostin – uuden ajan jeesusteippi ((Näinkin voi (ohjelmoida))) Avatar ydinaavikolla Verkkokulttuuri ennen ja nyt Oma peli, paras peli. Tietokone tietäjänä Ymmärtääkö tekoäly?. Tietokonekulttuurin erikoislehti 2013.4 S K R O L L I
70 3D-tulostaminen Muovi taipuu moneen, jos tietää mitä tekee. 62 Mariohakkerin ABC Parastakin tasohyppelyä voi parannella. Nyrjäytä aivosi toisenlaisella lähestymistavalla! 17 Kolumni – Mikko Heinonen Miksi käyttäjät eivät päivitä ohjelmiaan. 53 Kolumni – Tapio Berschewsky Pohdintoja pelaajasukupolven vaihdoksesta. 83 Pähkinänurkka Kuningas Algor kaipaa apuasi! Sisällysluettelo. 34 Tietoverkkokulttuuri ennen Internetiä Kuinka BBS-purkeista ja verkkojen sekamelskasta päästiin Internetin valtakauteen. 30 Usenet Alkuperäinen vertaisverkko porskuttaa edelleen. 40 Virtuaalielämän evoluutio Keinoelämän rajoja kartoitetaan olentosimulaattoreilla. 2 2013.4 3 Pääkirjoitus Onnistuneen vuoden jälkeen on hyvä jatkaa kohti uusia seikkailuja. 58 Tekstipelit viideltä vuosikymmeneltä Mitä se interaktiivinen fiktio olikaan. 48 Kickstarterilla jatkoa klassikoille Richard Garriottin ja Brian Fargon uudet roolipelit. 4 Piilaakson tarinoita Toimittaja tutustui teknologiamekkaan. 66 Mobiilipelin syntytarina Puolen vuoden kehityksen seurauksena syntyi kaupallinen peli. 24 OpenGL-ohjelmointi, osa 3 Nyt teksturoidaan ja valaistaan. 69 Ei näin! Voiko piirroselokuvaa pelata. 11 Merkkigrafiikan muodot Millaisia kuvia eri merkkivalikoimilla syntyy. 38 Statuspäivitys morsella 1800-luvulla verkotuttiin lennättimen avulla. 8 Ohjelmistojen kääntäminen Eikö se käännöksen tekijä ole edes nähnyt tätä softaa. 18 Common Lisp Esittelyssä perinteikäs sulkumerkkikieli pintaa syvemmältä. 43 Muistutus kaikille tilaajille Tilaukset eivSegmentation fault 44 Longturn koettuna Puoli vuotta sivilisaation hidasta matelua. 7 Kolumni – Henrik Kärkkäinen Journalistikonkari kertoo lehdenteosta. 74 Sarjakuva Nuoruuteni pelien parissa. 54 Pelejä yli rajojen Jos kielimuuri nousee pelikokemuksen esteeksi, peli on käännettävä itse. 12 Ohjelmointiparadigmat Kyllästyttääkö käskyjen latominen jonoon
Ketä tuollainen kiinnostaa. Kestotilauksiin ei meillä valitettavasti vielä ole varaa, mutta ehkä vuoden päästä jo on! Pääkirjoitus Skrolli Tietokonekulttuurin erikoislehti Yhteydenotot toimitus@skrolli.fi ircnet — #skrolli Päätoimittaja Ville-Matias Heikkilä Toimituspäällikkö Toni Kuokkanen Toimitussihteeri Ninnu Koskenalho Taiteellinen johtaja Risto Mäki-Petäys Mediamyynti Jari Jaanto Talous Anssi Kolehmainen Muu toimitus Lauri Alanko, Mitol Berschewsky, Tapio Berschewsky, Mikko Heinonen, Jukka O. Kaikki Skrollin tilaukset ovat määräaikaisia, joten myös vuosikertatilaajien on uusittava tilauksena. Tietokonekulttuurin lonkerot ulottuvat kaikkialle yhteiskuntaan, joten Skrollikin voisi olla taho, jonka näkemystä ja asiantuntemusta arvostetaan myös lukijakuntansa ulkopuolella. Lehti on nyt saavuttanut jonkinlaisen aseman pienen piirin harrastelehtenä, mutta se voisi olla paljon enemmänkin. Mahdoton kuitenkin osoittautui mahdolliseksi, kun Skrollin ensimmäinen numero valmistui keväällä. Kun Skrollia alettiin suunnitella syksyllä 2012, idea tuntui monin tavoin kahjolta. Jotta Skrolli-projekti pysyisi tuoreena ja kiinnostavana, sen ei kannata tyytyä nykyisiin saavutuksiinsa vaan tavoitella uusia haasteita. Jos haluat olla mukana, käy ihmeessä tilaamassa lehti. Lisäksi useimmat tekijät kieltäytyivät heille tarjotusta palkkiosta, mikä oli jo aivan uskomatonta. Ohjelmointijuttuja ja painettua koodia, ollaanko siellä aivan sekaisin. Uusi paperinen tietotekniikkalehti aikana, jolloin tavallisenkin kansan lukutottumukset digitalisoituvat vauhdilla. Mikä tahansa mediatalo olisi hylännyt idean samalta istumalta. Keksisimmekö ensi vuodelle jotain vielä mahdottomampaa. Nelosnumerosta tehtiin peräti 84-sivuinen, koska hyvää julkaistavaa oli niin paljon, eikä kaikki edes mahtunut mukaan. Ykköstä seurasi kolme muuta numeroa, eikä talkoohenki näyttänyt hiipumisen merkkejä missään vaiheessa. Vuonna 2014 lähdemme siis kohti jälleen uutta tuntematonta. Kauppinen, Ronja Koistinen, Sade Kondelin, Teemu Likonen, Kalle Viiri Tämän numeron avustajat Filip De Haas (Otium), Ville-Veikko Heinonen, Juha Impivaara, Panu Kalliokoski, Jari Komppa, Henrik Kärkkäinen, Antti Laaksonen, Tapio Lehtimäki, Pauli Marttinen, Jarto Nieminen, Jarkko Nääs, Annika Piiroinen, Visa-Valtteri Pimiä, Manu Pärssinen, Ville Ranki, Mikko Rasa, Henna Ruohonen, Teija Tuhkio Julkaisija Alternative Party ry Painopaikka Tammerprint, Tampere, ISSN 2323-8992 (painettu) ISSN 2323-900X (verkkojulkaisu) 441 878 Painotuote Kannen kuva: Filip De Haas (Otium) Ville-Matias Heikkilä päätoimittaja. 3 Voitosta voittoon Skrollin ensimmäinen ilmestymisvuosi onnistui erinomaisesti ja kaiken todennäköisyyden vastaisesti
Piilaakson työkulttuurissa ihmiset tuntuvat olevan erityisen sitoutuneita yrityksensä tavoitteisiin ja haluavat tehdä parhaansa sen puolesta. Foursquarella tapaamamme ohjelmistoinsinööri kertoi, ettei ihmisiä niinkään johdeta vaan asiat keskustellaan aikuismaisesti halki. Hashtagit näkyvät voimakkaasti mainoksissa ja katukuvissa. Twitteriä ja mobiilipalveluita käytetään paljon, ja lähes jokaiselle päivittäiselle toiminnolle näyttää olevan oma mobiilisovelluksensa. Evernoten perustaja aloitti ohjelmointiuransa Atari-tietokoneella 1980-luvulla. Sama näkyi monessa yrityksessä: ihmiset kertoivat tekevänsä juuri sitä, mitä haluavat. Sen käyttäminen tuntuu olevan jopa arkipäiväisempää kuin Suomessa. Piilaaksossa tietotekniikka on työkalu ja mahdollisuus. WhatsAppin perustajat koodasivat itse sovelluksensa ensimmäiset versiot, ja nykyinen toimitusjohtaja ja perustaja ohjelmoi yhden mobiilisovelluksista. Kahden viikon tutustumisen perusteella lähes jokaisen yrityksen perustajat ja toimitusjohtaja ovat koodereita. Kun perjantai-iltana kahdeksan aikaan olimme poistumassa eräästä lakitoimistosta, jatkoi moni vielä ahertamista työpisteillään. Tämä on mukavaa vaihtelua, sillä meillä sijoittajat eivät ajanpuutteen takia yleensä koodaa. Ensisijainen syy ei ollut työmäärässä vaan siinä, että ihmiset ihan oikeasti rakastavat työtään. Piilaaksossa jokainen tuntui olevan kädet syvällä tekemisessä kiinni. Reissun tarkoitus oli tutustuttaa yrittäjähenkisiä opiskelijoita paikalliseen yrityskulttuuriin. Myös Android-puhelimia näkyi paljon. Vierailukohteina oli myös pari yrityskiihdyttämöä, lakiyritys ja Stanfordin yliopisto. Listaa voi jatkaa lukemattomien muiden yritysten johtajilla, kuten Foursquaren, Twitterin, Facebookin ja Googlen. Parhaan kuvauksen Piilaaksosta heitti ilmoille talollamme vieraillut Mårten Mickos: ”Tämä Piilaakso on kuin aikuisten Otaniemi.” Viis lomista, nyt koodataan! Piilaakson yrityskulttuuri hakee vertaistaan. Esimerkiksi Kiva-järjestön perustaja Matt Flannery työskenteli aiemmin Tivolla Java-ohjelmoijana mutta lopetti työt, kun televisiolähetyksen tauottaminen ei tuntunut elämäntehtävältä. Hän kutsui Foursquarea aikuisimmaksi työpaikaksi, jossa oli työskennellyt. Tietokoneista suosituin näytti olevan MacBook Pro ja puhelimista iPhone. Teksti: Jari Jaanto Kuvat: Jari Jaanto, Tapio Lehtimäki, Jyri Rasinmäki Kulttuuri. Työkulttuurissa näkyi hyvin myös henki ”hoidetaan hommat nyt saman Skrolli Jenkkilässä Skrolli pääsi elokuussa mukaan Aalto Entrepreneurship Societyn järjestämälle matkalle Piilaaksoon. Facebookin ohjelmistokehittäjä puolestaan kertoi, että kaikki tekevät kovaa työtä ja yrityksen hyväksi tehty työ palkitaan – esimerkiksi onnistunut koodin optimointi, niin että se käyttää 2 % vähemmän prosessoritehoa. Jopa eräs tapaamani sijoittaja hehkutteli tekevänsä nykyään kaiken Scala-kielellä, kehuen sen maasta taivaisiin. 4 2013.4 Y hteensä 20 opiskelijaa teekkareista kauppatieteilijöihin vieraili matkan aikana noin 20 yrityksessä, joista valtaosa oli teknologiatai mobiilisovellusyrityksiä
Hyvä esimerkki on paikallisen taksijärjestelmän kanssa kilpaileva Uber. Uber yhdistää kuljettajat ja asiakkaat mobiilisovelluksen kautta. Skrolli ja jutun kirjoittaja Golden Gatella. Suosittelen käymään niissä ja tutustumaan mahdollisimman moniin ihmisiin. Tapaamisista saa tietoa meetup.comsivulta. Julkisessa terveydenhoidossa ja sosiaalipalveluissa taas ollaan selvästi Suomea jäljessä. Autoilua Amerikan malliin Piilaaksossa ollaan monessa asiassa Suomea edellä. Asiakkaat voivat tilata auton luokseen tai valita kartalta jonkin lähikohteen. Kokouksia ei sovita myöhemmäksi vaan asiat tehdään heti. Olimme viettämässä sunnuntaiiltaa, kun porukkaamme kuulunut Albert juoksi paikalle ja kertoi mahdollisuudesta lähteä TechCrunch Disrupt Hackathlon -tapahtumaan koodaamaan. Maksusta ei tarvitse huolehtia kyydistä noustessa, sillä matkan jälkeen Uber laskuttaa asiakasta automaattisesti. Eräälle henkilölle piirsin pikaisesti arkkitehtuurin hänen ideoimaansa ”blogilinkkien Interface Message Processor – pala alkuperäistä Arpanetia. Kuljettajat saavat iPhonen ja laturin Uberilta, mutta auton vakuutuksista, bensasta ja muista kustannuksista he vastaavat itse. Kuka tahansa voi rekisteröityä Uber-kuskiksi. Kun kuljettajat lähtevät ajoon, he käynnistävät matkapuhelinsovelluksen, joka välittää auton gps-koordinaatit Uberille. Päädyin tapahtumaan sattumusten kautta. Steve Jobsin talolle ei kannata tehdä pyhiinvaellusta, sillä naapurit tulevat heti ajamaan pois. Puhuimme hyvin samaa kieltä. Myös lomat tuntuivat olevan vieras käsite. Tapahtumaan kuului 24 tunnin hackathlon, jossa eri ohjelmoijaryhmät kehittelivät tuotteitaan. Monissa yrityksissä lomat saattavat peruuntua viime hetkellä esimerkiksi ison tilauksen myötä. Eräs Uber-kuski totesikin, että Yhdysvalloissa selvitäkseen on työskenneltävä ahkerasti, sillä pohjoismaista sosiaaliturvaa ei ole. San Franciscossa voi liikkua linjaautolla, ja Piilaaksoon pääsee junalla, mutta alueen sisällä on helpointa liikkua Uber-taksilla. Myös lääkärin saaminen voi olla vaikeaa. Pidempiä matkoja varten voi vuokrata auton lentokentältä. Tietokonetta minulla ei ollut mukana, mutta Albert tarjoutui hakemaan sen asunnoltamme. Hackathlonin tunnelmia Matkamme aikana järjestettiin TechCrunch Disrupt -tapahtuma, jossa teknologia-startupit esittelivät tuotteitaan. Suomalaiset ovat tällä alalla luomassa uusia palveluita: Ari Tullan ja Tapio Tolvasen perustama yhdysvaltalainen yritys BetterDoctor auttaa löytämään hyväksi todettuja lääkäreitä tiettyihin vaivoihin. Sovellus kertoo, kuinka kauan lähimmältä kuljettajalta kestää saapua paikalle. Piilaakson kulttuurin kiteyttävä NeXT Cube, jolla www kehitettiin. San Franciscon kaduilla vaeltelee lukemattomia kodittomia, joilla ei ole mitään paikkaa minne mennä. He voivat ajaa silloin, kun huvittaa. 5 tien pois alta”. Piilaakson suomalaiset kertoivat, että meikäläisiä pitkiä kesälomia ihmetellään rapakon takana. Alueella järjestetään päivittäin useita tapaamisia ja kaikkea on tarjolla tietokonegrafiikasta palvelinten säätämiseen. Hetken emmittyäni tartuin mahdollisuuteen, ja lähdimme kohti tapahtumapaikkaa. Piilaakson trendejä • Autojen, tavaroiden ja palveluiden yhteisöllinen jakaminen • Fyysisten laitteiden, etenkin autojen, kytkeminen nettiin • Hyvinvointiteknologia • Älykodit • Maaseudulle ja kehittymättömille alueille tuotava teknologia • Big Data • Maksujärjestelmät. Kiertelin tapahtumasalissa ja keskustelin osallistujien kanssa ohjelmoinnista. Kuitin saa sähköpostiin, ja mukana tulee kartta tehdystä matkasta
Yön aikana hän piirsi grafiikat ohjelmaamme ja minä koodasin. Myös 1980-luvun robotit olivat hyvin esillä. Ryhmä teki startupbets. Piilaakso ja San Francisco ovat hienoja paikkoja, mutta jos on kiinnostunut startup-yrityksen perustamisesta, ei oppeja tarvitse lähteä sinne saakka hakemaan. Huutelin WhatsApp-kanavallamme, ja kutsuun vastannut graafikko saapui kolmessa tunnissa paikalle lainakone kainalossaan. 6 2013.4 klikkausprosenttimittariin”, minkä jälkeen jatkoin matkaa salissa. Museon lisäksi paikalta löytyi Nasan tukikohta. Illan aikana totesin, että tarvitsisimme myös graafikon, koska lyhyessä ajassa emme ehtisi muuta kuin koodaamaan. Kaikkialla aherrettiin erilaisten ohjelmien parissa, ja niitä riitti yksinkertaisista web-sovelluksista monimutkaisiin graafisiin sovelluksiin. Historian koneiden hurinaa Vierailin Mountain View’ssä sijaitsevassa tietokonehistorian museossa (Computer History Museum). Siellä oli näytillä Mercuryavaruussukkula sekä avaruusasema, jonka sisällä pääsi käymään. Käynti oli todella hieno kokemus, sillä edustettuna oli koko tietotekniikan historia aina helmitauluista nykykoneisiin. Tapahtuma jatkui kaksipäiväisenä startup-esittelytilaisuutena. 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 • Yiftee 3D-mallintamisesta tuttu Utah Teapot. Tuotoksia oli yhteensä lähes 800, ja niiden esittelyyn kului aikaa noin kymmenen tuntia. Piilaaksossa kannattaa käydä tutustumassa tietotekniikan kehitykseen ja mahtavaan teknologiakulttuuriin.. Internetin historiaa edusti paikalla ollut Interface Message Processor (IMP), joka on osa alkuperäistä vuoden 1969 ARPANET-verkkoa. Osa avaruusaseman osista oli todella käynyt avaruudessa, tai niin ainakin kyltit väittivät. Myös auton keräämää dataa oli paljon, ja sitä analysoimalla pystyi optimoimaan auton suorituskykyä. Osat olivat tietysti suurikokoisia nykyisiin verrattuna. Yöruokana oli tietenkin pizzaa, ja tarjoilupöytien ympärille muodostui nopeasti jonoja. Alkuperäinen Pong-kolikkopeli. Itselleni tärisyttävin kokemus oli päästä näkemään Eniacista jäljellä oleva osa. Yhden moduulin kyljessä oli valtava määrä säätövipuja, joilla funktiotaulut säädettiin kuntoon. Apple I. Projekti kuulosti olevan sopiva yhden yön aikana toteutettavaksi. Osa porukasta oli enemmän, osa vähemmän kokenutta. Minusta tuli ryhmän web-ohjelmoija. Museosta löytyi myös Xerox Alto, Next Cube, Apple-1, Honeywell Kitchen Computer, VAX 11/780, IBM 360, PDP-1 ja monta muuta, joita on aiemmin tullut ihasteltua vain kuvien kautta. Herättyään paikalliset ihmettelivät yöllisiä aikaansaannoksiamme. Henkilökemioiden perusteella päädyin lopulta ryhmään, jossa oli alun perin kaksi henkilöä. Siinä näkyi erinomaisesti, kuinka 1940-luvulla ratkottiin tietoteknisiä ongelmia. Putkia ja säätimiä oli reippain mitoin, mutta koneen arkkitehtuuri vaikutti melko yksinkertaiselta. Eniac, ensimmäinen yleiskäyttöinen elektroninen tietokone. Vierailuun kannattaa varata vähintään kolme tuntia aikaa. Softa saatiin jotenkuten valmiiksi määräaikaan mennessä. Tutustumisen arvoinen paikka on myös Nasa Ames Research Center, joka sijaitsee Mountain View’n ja Sunnyvalen välissä. Lopuksi jokainen ryhmä esitteli ja mainosti omaa tuotostaan minuutin ajan. Piirsimme nopeasti käyttöliittymän, jota ryhdyin toteuttamaan, samalla kun toiset rakensivat Pythonilla taustajärjestelmää ja parin palvelun rajapintakoodia. Yksi Piilaakson trendeistä olikin sovellusten kehittäminen autoille. com-nimistä palvelua, jossa voi ostaa virtuaalirahalla startup-yritysten osakkeita ja siten veikata, mitkä niistä tulevat menestymään ja mitkä eivät. Monet yritykset esittelivät myös rajapintojaan, joille pääsi ohjelmoimaan. Merkittävin näistä oli Chevroletin paikalle tuoma auto, jolle hackathlonissa sai koodata. Esimerkkiautossa oli kaksi näyttöä, joista toinen sijaitsi keskikonsolissa ja toinen mittareiden keskellä. Ryhmämme Amerikan-pojat kävivät nukkumassa pari tuntia, mutta minä ja graafikkomme Jyri jatkoimme sisulla läpi yön
On aika paljastaa täydellisen tietokonelehden tekemisen resepti. Sitä vähentävät lehdentekijöiden oleminen ison korporaation palkkalistoilla, klikkausotsikot sekä aiemmin mainittu runsas omppusisältö. Nykyisin kutsutaan tietokoneiksi hopeanvärisiä suorakaiteita, joissa on hedelmän kuva. Raspberry Pi + Pong-koodin asennus = hack. Digitaalista asiaa käsittelevän paketin voi tarjoilla mahdollisimman analogisesti eli puita kaataen, tai vaihtoehtoisesti Yhdysvaltain kansallisen turvallisuusviraston laajennetun intranetin välityksellä. Ja sitten kutistaa taas yhteen ruutuun ja saada haukut juuriensa unohtamisesta. Yhä useammalla on tietokone, mutta samalla niistä ymmärretään yhä vähemmän. Goodwilliä taas lisäävät sisällön askartelu yöaikaan ja lomilla vapaaehtoisvoimin. Ne tehtiin jo. Siispä tarvitaan lukujuttuja eli tarinoita bittimaailman hämmästyttävistä syövereistä. Lisäksi ohjelmien keskipituuden muutos johtaisi painoteknisiin ongelmiin, kun fonttikoko lähentelee prosessorien viivaleveyksiä. Sellaisen järjestäminen on hankalaa, mutta joskus vihollinen järjestää itse itsensä. Tietokonelehden tekeminen on nykyisin vähän vaikeaa. Harvalla on silti kykyä tai halua avata sen koteloa. Ensimmäisen resepti on nopeasti käsitelty: Paljon hedelmäsisältöä, isoja kuvia, kallista paperia ja näyttävä esillepano. Esimerkiksi sellainen, jonka lukijat tuomitsivat ei-toivotuksi sisällöksi erään tietokonelehden alkutaipaleella vuonna 1984. Jossain vaiheessa tietotekniikkalehden kehitystä on nimittäin saavutettava vessapaperivirstanpylväs, tai sitten lehdentekijän on syytä alkaa katsella muita töitä. Sarjakuva on bonusta. Oikein, sillä virittely. Esimerkiksi tekemällä lehtiuudistuksen. Se saa olla mielellään yksiruutuinen, ja sen voi lehden suosion kasvaessa venyttää kolmiruutuiseksi. Paljon toisin. Huonolaatuiselle tuumorille (sic) voi vaikka perustaa oman palstansa, ettei se saastuta koko julkaisua. Paljon vaikeaa. Esitellään sen tärkein ja salaisin ainesosa ensimmäisenä. Ei ja kyllä. Tee siinä sitten tietokonelehteä. Sitten toivotaan parasta. 7 Kolumnit P uhukaamme tietotekniikkalehden tekemisestä, tuosta salatieteistä vaarallisimmista, ja tiestä, jonka harva on viime aikoina kulkenut joutumatta naurunalaiseksi. Myös koodaamista on syytä opettaa. No, olisiko tällaisen lehden tekeminen mahdollista. Aiemmin lehti tarkoitti prosessoitua kuollutta puuta. Nii. Kyllä siksi, että jotkut pääsevät aika lähelle. Tai no, ei valehdella vieläkään. Maailma muuttui. Tietokonelehteä voi tehdä kahdella tavalla, joko vetoamalla laajaan ipadonparastaikinä ja tekniikantarkoitusonhelpottaaelämää -ryhmään tai matriisitulostimella tehtyjä ohjelmistolistauksia palvovaan, sisäänpäin lämpiävään kansanosaan. Se on kohderyhmä eli ne, jotka keitoksesta maksavat. Eli retris. Sitten on se kivisempi tie. Tämä on väärin, sillä resepti on liian mainstream. Kuten tarina Ron Austinin ja Kevin Poulsenin kiinni jäämisestä 80-luvulla. Kohderyhmä löydetään sisällöllä. Nykyisin se on hankalampaa kuin ennen, sillä juuri nyt ei ole tarjolla yhtä paljon ilmaisia, tulevien it-pomojen tarjoamia ohjelmistolistauksia. Ne asiat ovat tietokone ja lehti. Kannattaa olla varovainen, sillä sen voi toteuttaa väärin. Täysin asiaan liittymättä: Missä sinä muuten luet tätä nyt. No joo, ei valehdella heti alussa. Esimerkki: Tetris on klassinen retropeli. Lukijan tunneside viimeistellään antamalla hänelle ulkoinen vihollinen. Rakenteluekstra Henrik Kärkkäinen Tekisinkö itse tietokonelehden?. Uutta 20–30 vuoden takaisessa maailmassa olevaa lehteä kukaan ei halua lukea. ” Lukijoiden ohella tärkein osa on goodwill. Näistä kumpikaan ei ole väärin, mutta ensimmäinen on enemmän oikein, koska paperi on tablettia kevyempi kannateltava pöntöllä istuttaessa. Puuta vai bittiä Lukijoiden ohella tärkein osa on goodwill. Tarvitaan myös huumoria, mielellään sisäpiirisellaista. Viimeisenä sisältöosana tulee jakelukanava. Ei siksi, että retrolehdenkin on oltava moderni. Kirjoittaja on kirjoittanut useampiin Sanoman lehtiin – mukaan luettuina monien mielestä kehnohkosti uudistunut sellainen ja klikkaaseksihelle-otsikoiva sellainen.. Kaksi reittiä Yritetään silti. Näettehän eron. Nyt se tarkoittaa myös klikkaaseksihelle-nettisivuja sekä lukijoiltaan piilotettuja tablettitiedostoja, joiden myyntivoitosta kolmannes menee eräälle hedelmätukulle tai sen liikemallia peesaileville firmoille. Ei tuollaisia kehtaa ympäri lehteä ripotella. Kaksi asiaa on nimittäin vähän toisin kuin kolmekymmentä tai kymmenenkin vuotta sitten. Oikean maun perässä Seuraavaksi lehteen tulee rakentelua. Prosessori + tuulettimet + tahnat + emolevy + muistit + näytönohjain + massamuisti + kotelo + erikoisuudentavoittelu-pci-e-kortit = pc
Kolmas ammattiryhmä käännösalalla ovat tekniset kääntäjät, joiden vastuualueita ovat käyttöohjeet, viralliset asiakirjat ja ohjelmistojen lokalisoinnit. Lyhyt vastaus on, että ei useinkaan ole. Jossain vaiheessa käy kuitenkin niin, että käännösmuistista tulee lopputulosta rasittava riippakivi. Sen avulla samaa projektia voi tehdä vaikka usea kääntäjä samanaikaisesti ja tyyli pysyy yhtenäisenä, kunhan kaikki noudattavat vanhojen käännösten sanastoa ja ilmaisutapaa. Tietotekniikan sanasto on tällä välillä voinut muuttua moneen otteeseen, ja toisaalta ei ole lainkaan varmaa, että kaikki alkuperäistä ohjelmaa kääntäneet ovat tienneet, mistä tarkalleen on kysymys. Käännösmuistin käyttöä ei ole syytä sekoittaa konekääntämiseen, vaikka niillä samoja piirteitä onkin. Käyttöohjeesta apua etsivä käyttäjä kiroaa mielessään, eikö se kääntäjä ole edes nähnyt tätä ohjelmaa. Kaikkeen muuhun se osaa tehdä vain ehdotuksia, joita ihmisen pitää muokata. Käännösmuisti ei osaa kääntää automaattisesti kuin täsmälleen samanlaisina toistuvat jaksot. Jotta voisimme ymmärtää, miksi tällaista tapahtuu, pitää aloittaa varsin kaukaa. Tämä on myös järkevää kielen yhtenäisyyden kannalta ja helpottaa uusien kääntäjien ottamista mukaan työhön. Niinpä vuoden 2013 ohjelmistokin voi ihan sujuvasti jutella käyttäjälle levykkeistä tallennusvälineinä. Koska esimerkiksi käyttöohjeet ja ohjelmistot sisältävät runsaasti samoja ilmauksia ja käytäntöjä, on niin sanottujen käännösmuistien käyttö muodostunut keskeiseksi työkaluksi teknisessä kääntämisessä. Suomen kaltaisen kielen tapauksessa erona on myös se, että tietokoneavusteinen käännös nopeuttaa kääntäjän työtä, siinä missä konekäännöksen sijamuotojen ja sanavalintojen korjailu lähinnä hidastaa sitä. Osa suurten ohjelmistojen käännöksistä saattaa olla yli 15 vuotta vanhoja. Televisioohjelmia ja elokuvia taas suomentavat AV-kääntäjät, jotka nousivat julkisuuteen suurten mediatalojen ulkoistettua käännöstoimintansa. ” Kulttuuri. Teksti: Mikko Heinonen Kuvat: Manu Pärssinen V alitse Asetukset, napsauta sitten painiketta Tiedot ja valitse Ota käyttöön”, toteaa ohjelmauutuuden käyttöohjetiedosto. Monet yritykset vain ajavat vanhat käännökset sisään automaattisesti eivätkä tarkista, pitävätkö ne vielä paikkansa. Rengistä isännäksi Kääntäminen maksaa rahaa, joten yrityksen taskulaskinosasto haluaa säästöjen nimissä käyttää samoja käännöksiä aina kun mahdollista. Kone muistaa, ihmistä tarvitaan Tekninen kääntäminen eroaa kirjallisuuden kääntämisestä ja AV-kääntämisestä siinä, että se on hyötynyt eniten tekniikan kehityksestä. Käännösmuisti tallentaa kaikki tiettyä projektia koskevat semanttiset yksiköt – esimerkiksi yksittäiset sanat, lauseet tai virkkeet – suureen tietokantaan, josta niitä voidaan myöhemmin hakea. Ihannetilanteessa käännösmuisti on erinomainen työkalu. Ja vaikka olisikin, hänellä ei ehkä ole ollut lupaa muuttaa virheellistä käännöstä. Englanninkielinen termi Computer Assisted Translation tarkoittaa juuri tätä. Selvitimme, mistä käännösongelmat saavat alkunsa ja miten ohjelmistoja ylipäänsä käännetään. 8 2013.4 Ohjelmistokäännöksen kivikot Tietotekniikan käyttäjä huomaa yhäkin kielikukkasia suomenkielisissä ohjelmissa. Kielenkääntäjästä tulee useille yhä mieleen kammiossaan istuva ammattilainen, joka ansaitsee elantonsa kääntämällä kaunokirjallisia teoksia. Myöhempien päivitysten teko helpottuu huomattavasti, kun kaikki aiemmat käännökset ovat käytettävissä. Käyttäjä sen sijaan näkee edessään ihan erilaisen ikkunan, jossa näkyy ”Valinnat”, ”Lisätiedot” ja ”Käytä”. Vaikka nykyinen kääntäjä olisi perustellusti eri mieltä käännösmuistin kanssa, vanhaa käännöstä on usein pakko käyttää yhteneväisyyden nimissä – tai ainakin siksi, ettei sen muuttamisesta makseta kenellekään. Jotkut moniottelijat tekevät kaikentyyppistä käännöstyötä, mutta useimmat kääntäjät keskittyvät vain yhteen lajityyppiin
Microsoft Language Portal -sivustosta löytyvät kaikkien tärkeimpien ohjelmistojen käännökset kaikille kielille. Ei siksi, että sen käännökset välttämättä olisivat mitenkään ylivertaisia. Rakas, rikas äidinkielemme Aivan oman mausteensa käännöskeitokseen antavat suomen kieli ja sen taivutusjärjestelmä. Lue se manuaali, jos pystyt Riippuvuussuhteet tulevat vieläkin monimutkaisemmiksi, kun samaan projektiin kuuluvat sekä ohjelmisto että käyttöohje. Sen seurauksena samoja asioita käännetään monella eri tavalla. Sivuston hakutoiminnon tuloksista on mahdollista tutkia, missä tuotteessa kutakin käännöstä on viimeksi käytetty. Aina ei ole tietoa käyttöliittymästä, jolloin kääntäjä arvailee parhaansa mukaan ja syntyy tämän artikkelin aloituskappaleen mukaisia tilanteita. Syynä on se, että Microsoft on asettanut lähes kaikki tekemänsä käännökset vapaasti saataville. File on tiedosto tai arkisto, riippuen siitä, missä käyttöjärjestelmässä ollaan. 9 Tarpeeksi paisuttuaan käännösmuisti alkaa sisältää samalle asialle erilaisia käännöksiä. Joskus kääntäjätkin ylisuorittavat ja huomauttavat ohjelmistossa olevista virheellisistä teksteistä. Termistöjen sekamelskaa Yrityksen viestintä on tärkeä osa sen julkisuuskuvaa, ja moni on ottanut kielen mukaan imagonsa luomiseen. Käyttöohjeen kääntäjille annetaan tavallisesti vain lista, jossa on lueteltu ohjelman käyttöliittymän käännökset. Seuraava mahdollisuus virheellisen käännöksen korjaamisen tulee vastaan silloin, kun jokin tekninen seikka pakottaa kirjoittamaan kyseisen kohdan uusiksi. Tällöin kääntäjän on ratkaistava, mitä varianttia käytetään, ja usein markkinaosuudet ratkaisevat. Ohjelmisto luonnollisesti käännetään ensin, minkä jälkeen käyttöohje usein kilpailutetaan erikseen ja annetaan jollekin toiselle ryhmälle tehtäväksi. Aloitteleva kääntäjä, joka ei tunne käännettävää ohjelmistoa, ei luonnollisestikaan tiedä, mikä käännösmuistin tarjoamista vastineista pitäisi valita. Usein aloittelevan kääntäjän on myös palkannut yritys, joka on tarjonnut työstä halvimman hinnan. Kyse onkin tilkesanoista, joilla suomen taivutus saadaan sopimaan anglosaksiseen ympäristöön.. Tällöin virheellinen käännös onkin jo usein levinnyt niin moneen paikkaan, ettei sen täydellinen poistaminen ole enää mahdollista. Joskus tuntuu, että markkinointipuolella laaditaan kilpaa erilaisia tyylioppaita ja kehitetään omaa sanastoa. Termistöjen suhteen parhaan arvosanan ansaitsee Microsoft. Parhaassa tapauksessa muutos saattaa tulla seuraavaan versioon, mutta kieliasiat ovat harvoin niin keskeisiä, että asiaan jaksettaisiin panostaa. On jopa voitu toteuttaa projekti, jossa ikivanhoja käännöksiä on korjailtu nykyaikaisemmiksi mutta vanhat on jätetty muistiin kummittelemaan. Vain ani harvoin heille annetaan itse ohjelmaa. Jokainen suomenkielisiä ohjelmia käyttänyt on varmasti törmännyt sanoihin ”kohde” ja ”järjestelmä”, jotka eivät yleensä tarkoita yhtään mitään tilanteissa, joissa niitä käytetään. Tätä listaa on sitten noudatettava kuin pyhää kirjaa, ja myös sen virheet on jäljennettävä. Yleensä se ei johda mihinkään, sillä käyttöohjetta käännettäessä ohjelmisto on jo ”kiinni”, eikä siihen enää tehdä muutoksia. Näin on helppoa poimia omaan käyttöön ajantasainen viittaus esimerkiksi Windows 8:n käyttöliittymään. Sama koskee monia muitakin keskeisiä termejä. Kääntäjän näkökulmasta tämä aiheuttaa runsaasti ongelmia, sillä usein esimerkiksi ohjelmiston Windowsja Mac OS -versiot tulevat käännettäviksi samaan aikaan. Alkukielinen teksti ei erottele eri käyttöjärjestelmiä, vaikka käännöksissä niin tehtäisiin. Esimerkiksi icon voi olla suomeksi kuvake, ikoni tai symboli
2. Jos haluat todella varmistaa hyvän lopputuloksen, kehitä oma käännöstyökalu ja pyydä kääntäjiä syöttämään käännökset sinne. Jos teknisillä kääntäjillä on jotain kysyttävää tuotteistasi, kannattaa laittaa taloon juuri tullut markkinointisihteeri vastaamaan kysymyksiin. Tekniseen kääntämiseen tarkoitettuja ohjelmistoja on kehitetty vasta muutama kymmenen vuotta, joten yrityksesi kesäharjoittelija tekee varmasti paremman ensimmäisenä PHP-harjoitustyönään. Tässä %1 on ilmeisesti tiedostonimi, joka ei kaipaa taivutusta, mutta ”%2 to %3” vaatisi jo suomessa sijamuotoja. Näin varmistat niin pitkän alihankintaketjun, ettei sen lopussa nälkäpalkalla nyhertävää kääntäjää kiinnosta kurja softasi vähääkään. Toimittuani kokopäivätoimisena kääntäjänä kymmenisen vuotta olen ehtinyt istua vähän joka puolella pöytää: aloittelijana ihmettelemässä uutta outoa tuotetta, idealistisena maailmanparantajana tekemässä kehitysehdotuksia ja kyynisenä palkkaorjana lätkimässä pieniä katkelmia jo menetettynä tapauksena pitämäni projektin sekaan. Samoin kääntäjän työmotivaatiolle tekee hyvää, kun pääsee selittämään testaajalle neljännen kerran saman projektin aikana, mitä se sijamuoto taas tarkoittikaan. Välillä olen ihmetellyt, kuinka ylipäätään mitään saadaan käännettyä tolkullisesti. Älä suotta tarkista, onko tarjoajan suomenkielisten projektien hallinta esimerkiksi Kiinassa tai puhuuko kukaan sen henkilöstöstä kohdekieltä. Monet suuryritykset valvovat tarkasti tavaramerkkejään ja kieltävät ehdottomasti niiden taivuttamisen, koska joku ilmeisesti saattaisi tulkita, ettei taivutettu merkki enää olekaan rekisteröity. Missään nimessä ei kannata haaskata tuotteen tehneiden ohjelmoijien aikaa tällaiseen joutavuuteen, ja paras onkin jättää vastaamatta kääntäjien kysymyksiin. Tarjouskilpailu Hyväksy halvin käännöstarjous. 10 2013.4 Tilkesanoihin päädytään useimmiten silloin, kun tekstissä on tavaramerkkejä tai muuttujia, jotka estävät normaalin taivuttamisen. Onneksi olen myös saanut ilahtua siitä, miten toisissa yhtiöissä kieliasioihin suhtaudutaan riittävällä vakavuudella. On myös tärkeää, että kaikki ohjelmiston merkkijonojen pituudet pakotetaan englannin kielen mukaisiksi. Hyvin, huonosti ja hyvin huonosti Ohjelmistokääntämisen ala on siis haasteita pullollaan. Minkään kielen sanat eivät voi olla pidempiä. Käännettävä aineisto Lähetä käännettäväksi mahdollisimman varhainen versio ohjelmistosta ja muuta sitä useita kertoja matkan varrella. 3. Testaus Ohjelmiston testaus ja laadunvarmistus kannattaa myös antaa halvimman tarjouksen tehneelle, jos nyt laatua edes halutaan varmistaa. Ammattilainen saattaisi puuttua ohjelmistokehittäjien synnynnäisesti nerokkaisiin ratkaisuihin, jotka automaattisesti toimivat joka kielellä. Puhumattakaan siitä, ettei muuttujan nimien perään useinkaan voi kirjoittaa suoraan ja että muuttujan kohdalle voi lauseessa tulla yksi tai useampia sanoja, mikä sotkee suomen yhdysmerkkisäännöt. Kokemukseni pohjalta olen laatinut aloitteleville ohjelmistoyrityksille oheisen taulukon, jota noudattamalla on helppoa munata ensimmäinen ohjelmistokäännösprojekti kokonaisvaltaisesti. Lähetä käännettävää myös jouluaatoksi, jolloin itse vietät aikaa perheen parissa. Sana ”kohde” taas pitää tulkita niin, että kääntäjä on saanut eteensä pelkän luettelon viittauksia, joiden tilalle ohjelmistossa voidaan vaihtaa yksi tai useampia sanoja. Koska maksat heille, on heidän tehtävänsä selvittää tällaiset asiat parhaaksi katsomallaan tavalla eikä vain kopioida toisten jo tekemää työtä. Näin siis %1 kopioidaan kohteesta %2 kohteeseen %3 – taas kerran, varmuuden vuoksi. Merkkirajoista ei kannata kertoa kääntäjille etukäteen, sillä he ehtivät kyllä lyhennellä käännöksensä myöhemmin, samaan hintaan tietysti. 1. Toimita kaikki lisäykset eri tiedostomuodoissa ja vaihda esimerkiksi muuttujien merkintätapaa joka kerta. Kaikki esimerkit ovat tosielämästä.. Kieltähän kuitenkin käännetään kirjoittamalla samat sanat peräkkäin eri kielellä. Näin syntyy kukkasia kuten ”SuperSystem-järjestelmään” eli ’superjärjestelmäjärjestelmään’. Toisilla yrityksillä taas on tapana tehdä monia versioita ohjelmistostaan, jolloin vaikkapa ”SuperSystem 8000 Ultra-Professional” ja ”SuperSystem 7500 Piss-Poor” näkyvät kääntäjälle havainnollisena muuttujana ”%s” tai ”%ProdName”. Tämä työllistää myös mukavasti testaajia, kun he saavat ottaa sadoittain ruutukuvia näyttöteksteistä, jotka ovat keskeltä katkenneita.. 4. Tämä korostaa juuri sinun hankkeesi tärkeyttä. Tyyppiesimerkki tällaisesta on vaikkapa ”copy %1 from %2 to %3”. Käännöksen laatu on helposti määritettävissä seuraavalla kaavalla: käännetyn tekstin pitää olla erilainen kuin alkuperäinen teksti mutta ei liian erilainen. Älä toimita mitään viiteaineistoa, josta kääntäjät voisivat tutustua aiempiin käännöksiin tai selvittää, mihin ohjelmistosi liittyy. Esimerkiksi Kaukoidässä toimiva testauskeskus pystyy tarjoamaan aivan ainutlaatuista osaamista suomalais-ugrilaisissa kielissä. Älä missään nimessä palkkaa alan koulutuksen saanutta ihmistä vastaamaan kieliasioista tai osta sellaisen palveluita. Muista, että kääntäjät toimivat sitä paremmin, mitä tiukempi aikataulu heille annetaan. On vain mahdotonta tietää, mihin kirjaimeen tai välimerkkiin ne loppuvat, joten tyyppi %2sta %3een ei onnistu. Voin vakuuttaa, että tämä särähtää kääntäjänkin korvaan, mutta mitään muuta vain ei ole tehtävissä. Kääntäjien kysymykset Ohjelmistokehitys on sen verran kiireistä puuhaa, että humanistit ovat siinä vain tiellä
Baudot (1870) Kaukokirjoitin keksittiin jo 1800-luvulla. Teksti: Ville-Matias Heikkilä Taide. Viisibittisiin baudot-koodistoihin kuuluvat vain isot kirjaimet ja numerot sekä joukko välimerkkejä. Seuraa pikakatsaus muutamiin merkkigrafiikan muotoihin. Grafiikka on yleensä tarkoitettu 80 × 25 tai 80 × 50 merkin tekstitilalle, mutta teoksilla voi olla mittaa jopa kymmeniä ruudullisia. tw1tt3rart text-mode.tumblr.com Merkistöt taiteen rakennuspalikoina Kun jossain liikkuu tekstiä sähköisesti, liikkuu siellä usein myös merkkigrafiikkaa. Suurin osa tietoliikenteen merkkigrafiikasta onkin ollut nimenomaan ASCII-grafiikkaa. Teksti-tv ei siis mahdollista ANSItyylistä väri-ilottelua. Merkkejä voi kuitenkin lyödä päällekkäin, mikä mahdollistaa tummemmat ja monipuolisemmat palikat. Merkkipohjaisuus on myös taloudellista, mistä syystä sitä suosittiin pitkään kaikenlaisissa tietokoneohjelmissa. Kaikki eivät tosin ole käytettävissä samaan aikaan pienten kirjainten kanssa. Näin teksti-tv-sivuilla voi olla tekstin lisäksi myös karkeaa pikseligrafiikkaa. Useimmat merkkigrafiikkataiteilijat pitäytyvätkin mieluummin klassisissa merkistöissä. 11 V arhainen tietoliikenne oli yleensä tekstimuotoista, joten helpoin tapa esittää grafiikkaa oli muotoilla se tekstiksi. Lähinnä PC:stä tuttujen palikoiden voi olettaa toimivan edes jotenkuten samoin eri fonteissa. Amigalla syntyneessä ”oldskool-tyylissä” muodostetaan yhtenäisiä kuvioita keno-, kauttaja muista viivoista. Dan Farrimond teletextart.com PETSCII (1977) PETissä ja myöhemmissä kasibittisissä Commodoreissa käytettyyn PETSCIIhin kuuluu muun muassa kymmeniä erilaisia viivaja palkkielementtejä. Erilaisia tyylejä on lukemattomia. ASCII (1967) 128 merkkiä ja ohjauskoodia käsittävä ASCII on miltei kaikkien myöhempien merkistöjen perusta. Kaikki fontit eivät kuitenkaan yhdistä viivoja toisiinsa aukottomasti. RTTY:llä siirreltiin myös grafiikkaa. Unicode tarjoaa kuitenkin joitakin uusia mahdollisuuksia, kuten tarkemerkkien kasaamisen päällekkäin. Värejä on käytössä 8 sekä merkille että sen taustalle, mutta eriväriset alueet on erotettava toisistaan värinvaihtokoodeilla. Kuvan tekijä tuntematon rtty.com asciiarena.com Hiro Protagonist Teksti-TV (1976) BBC:n kehittämä teksti-tv lähettää 40×25 solun kokoisia sivuja tv-kuvan lomassa. Merkkivärejä on C-64:llä tarjolla 16, ja ruudulle mahtuu 40 × 25 merkkiä. Solu voi sisältää joko kirjoitusmerkin, näkymättömän ohjauskoodin tai 2×3 pikselin grafiikkaelementin. Nykyään useimpiin paikkoihin voi ympätä millaisia kuvia hyvänsä, joten merkkigrafiikka on entistä useammin taiteellinen valinta teknisen välttämättömyyden sijaan. Muutamat nykyiset ansieditorit ja useat pääte-emulaattorit tukevat laajempia väripaletteja, joita käytetään ainakin joidenkin MUDien grafiikoissa. Mermaid / Genesis Project IBM PC (1981) PC-merkkigrafiikkaa kutsutaan usein ANSI-taiteeksi sen käyttämien päätteenohjauskoodien vuoksi: kullekin merkille voi niillä valita päävärin 16:sta ja taustavärin 8:sta vaihtoehdosta. Ungenannt / Blocktronics sixteencolors.net Unicode (1991) Nykyisin kaikkialla käytettävä Unicode pyrkii yhdistämään kaikki merkistöt, mutta se ei vieläkään kata esimerkiksi PETSCIItä tai Videotexiä. Mahdollisuudet kuitenkin vesittyvät siihen, että useimmat tasalevyisetkään nykyfontit eivät huomioi merkkigrafiikkayhteensopivuutta mitenkään. Radioihin kytketyistä kaukokirjoittimista syntyi radioamatöörien käyttämä RTTY-yhteyskäytäntö eli Radio Teletype. Tarjolla on vähemmän erilaisia palkkeja kuin PETSCIIssä, mutta sävytyselementeistä saa kauniita väriliukuja
Ohjelmointiparadigma merkitsee yleistä ajatusmallia, jota pystyy soveltamaan mihin hyvänsä ohjelmointitehtävään. Niiden vastakohtaa, perinteistä GOTOtai jmp-ohjelmointia, puolestaan ei kannattane mainita muuten kuin historiallisena kuriositeettina. Imperatiivinen ohjelmointi soveltuu erityisen hyvin sellaisiin tehtäviin, joissa ohjataan suoraan laitteistoa, esimerkiksi ohjelmoidaan laiteajureita. 12 2013.4 Koodi O hjelmoijan työssä luodaan asioita tyhjästä. Ohjelmoijan tuottaman koodin alkuperä on aina ohjelmoijan ajatuksissa, vaikka ohjelmoitaessa toki myös muokataan vanhaa koodia tai kirjoitetaan uusi ohjelma esimerkkikoodin pohjalta. 1 Paradigmat on todistettu yhtäpitäviksi, niin että yhden paradigman ohjelmat on muunnettavissa automaattisesti toisen paradigman ohjelmiksi. Monet varhaiset ohjelmointikielet toivat esiin käytössä olevan laitteiston ominaisuuksia. Ohjelmointiparadigmat kytkeytyvät ohjelmointikieliin siten, että kielen sanotaan ”edustavan” jotakin paradigmaa. Erilaiset lähestymistavat tuottavat eri pituisia ohjelmia ja ottavat huomioon erilaisia ohjelman laajennusja muutostapoja. Proseduraalinen ohjelmointi puolestaan tarkoittaa, että ohjelma jaotellaan useiksi aliohjelmiksi . Harmillista kyllä, useimmat näistä paradigmoista eivät ole kovin hyvin määriteltyjä, eikä termien tarkoista merkityksistä vallitse yksimielisyyttä. Tässä artikkelissa käsitellään seuraavia paradigmoja: •?Imperatiivinen paradigma, jonka alalajeja ovat strukturaalinen, proseduraalinen ja oliopohjainen ohjelmointi. Imperatiivinen paradigma muistuttaa hyvin paljon todellisten tietokoneiden toimintaa. Ohjelmointikäytännöt ovat ohjeita, jotka rajoittavat sitä, millaisia ohjelmia saa kirjoittaa. Strukturaalisessa ohjelmoinnissa edellytetään, että hyppyjä tehdään vain osana ehtorakenteita ja toistorakenteita, jotka eivät saa lomittua keskenään (listaus 1). 1 Sen sijaan ajatusmalleja kutsutaan yleensä suunnittelumalleiksi (design patterns) , jos ne soveltuvat vain tiettyyn tilanteeseen tai ongelmatyyppiin. Uusi paradigma on myös uudenlainen älyllinen haaste. Ulkoisesti samalla tavoin toimivan ohjelman voi kirjoittaa äärettömän monella eri tavalla. Esistrukturaalinen (BASIC): 10 INPUT a, b 20 c = a 30 IF a < b THEN 60 40 c = a MOD b 50 IF c = THEN 90 60 a = b 70 b = c 80 GOTO 40 90 PRINT "syt: " b Strukturaalinen (FORTRAN): READ(*,*) a, b IF (a < b) THEN c = a a = b b = c END IF DO c = MOD(a, b) IF (c == 0) EXIT a = b b = c END DO WRITE(*,*) 'syt: ', b Listaus 1. Mikä ehkä vieläkin tärkeämpää, ohjelmakoodiin saatiin proseduraalisen ohjelmoinnin myötä yleensä nimi erilaisille toiminnoille. Jokainen näistä tekee yhden tarkkaan määritellyn tehtävän, ja aliohjelmat kutsuvat toisiaan tarvittaessa (listaus 2). Hyvinkin monimutkaiselta vaikuttava ongelma tai algoritmi saattaa toisella tavoin hahmotettuna olla niin yksinkertainen, että sen saa ratkaistuksi muutaman rivin ohjelmalla. Ohjelmointikielen ja laitteiston läheinen yhteys teki imperatiivisesta ohjelmoinnista kaikkein luonnollisimman lähestymistavan. Toteutuskieli: BASIC, FORTRAN. Useimmat nykyaikaiset kielet ovat kuitenkin moniparadigmaisia , eli niillä on mahdollista kirjoittaa kohtuullisella vaivalla useamman paradigman mukaisesti. Ohjelman tila on molemmissa muuttujien a, b ja c sisältö kunakin suoritushetkenä sekä tieto siitä, millä rivillä ohjelmaa edetään. •?Funktionaalinen paradigma, jonka alalajeja ovat perinteinen funktionaalinen, korkeamman kertaluvun funktioita hyödyntävä ja tietovuopohjainen ohjelmointi. Toisaalta ne tekevät ohjelmista lyhyempiä, helpommin ymmärrettäviä ja helpommin toimivaksi todistettavia. Tämän vuoksi rekursio (tyypillinen funktionaaliseen paradigmaan kuuluva ohjelmointitekniikka) ei ollut mahdollinen. Ei ole harvinaista, että ohjelmoija tuottaa sivukaupalla ohjelmakoodia ohjeenaan vain oma intuitio ja kokemus sekä jonkinlainen määrittely siitä, miten ohjelman olisi tarkoitus toimia. Koska ohjelmat syntyvät puhtaasti ajatuksista, ohjelmoijien ajattelutavoilla on valtava vaikutus siihen, millaisiksi ohjelmat tulevat. Ne säätelevät ohjelmoijan ajattelua ja vaikuttavat ohjelman lopputulokseen. Suurimman yhteisen tekijän etsintä. Alkuaikoina harva kieli kuitenkin tuki sitä, että aliohjelma saisi kutsua itseään. Suuri osa moderneista ohjelmointikäytännöistä on kehittynyt erilaisista abstraktiokerroksista ja muista keinoista, joilla ohjelmoijat ovat pyrkineet järjestelemään ja selkeyttämään koodiaan sekä helpottamaan sen ylläpitoa. Tätä moninaisuutta ei kuitenkaan ole mahdollista esitellä tässä jutussa, joten olen valinnut jokaiselle termille yhden melko laajasti hyväksytyn merkityksen. •?Logiikkaparadigma, johon kuuluvat predikaattien monisuuntaisuus ja indeterminismi. Paradigmat eivät aina sulje toisiaan pois, vaan ohjelman eri osat voivat olla eri tyyleillä kirjoitettuja. Tämä paradigma on useille ohjelmoijille kaikkein tutuin, koska imperatiivista ohjelmointia tukevia (ja muut ohjelmointitavat hankalaksi tekeviä) kieliä on ollut olemassa jo hyvin pitkään. Imperatiivinen paradigma Imperatiivisessa paradigmassa ohjelman suoritus etenee selkeästi tietyssä järjestyksessä ja ohjelmalla on kullakin hetkellä tietty tila , jota ohjelman erilaiset komennot käsittelevät. Ohjelmointiparadigmat Ohjelmointiparadigmat tarjoavat erilaisia näkökulmia ohjelmointiin. Erilaisten ohjelmointitapojen perusteellinen läpikäynti on valtava työ, minkä vuoksi tutustumme tässä vain muutamiin keskeisimpiin paradigmoihin. Tällä tavoin koodia saadaan usein siistityksi, kun toistuva koodi saadaan siirretyksi omaan aliohjelmaansa. Eri paradigmat toki tuottavat erilaisia ja eri tavoin siistejä ratkaisuja ongelmiin. Nykyisille ohjelmoijille strukturaalinen ja proseduraalinen lähestymistapa ovat lähes itsestään selviä. Tyypillinen valtavirtakieli (esimerkiksi C, Java tai Python) tukee siedettävästi ainakin funktionaalista, oliopohjaista ja proseduraalista lähestymistapaa. Teksti: Panu Kalliokoski Kuvat: Mitol Berschewsky, Panu Kalliokoski, Henna Ruohonen, Teija Tuhkio, Risto Mäki-Petäys. Strukturaalinen ja proseduraalinen ohjelmointi Sekä strukturaalinen että proseduraalinen ohjelmointi ovat rajoituksia sille, milloin ohjelman suoritus saa hypätä uuteen kohtaan ohjelmakoodissa. Se sopii myös ohjelmiin, joiden täytyy tehdä asiat tietyssä järjestyksessä tai antaa takeita vasteajoista, muistinkulutuksesta tai muusta vastaavasta
Esimerkiksi peliin voi helposti lisätä uusia tekoälyjä tai esineitä. Listan summa. Proseduraalisen ohjelmoinnin avulla tehtiin hyödyllisiä aliohjelmia, joita sitten käytettiin uudestaan ja uudestaan osana suurempia ohjelmointiprojekteja. Olioton versio käyttää indeksejä; oliollisessa on erillinen listan läpikäyjäolio. Imperatiiviset ohjelmat laskevat asioita päivittämällä ohjelman tilaa, käytännössä muuttujien arvoja ja tietorakenteiden sisältöjä. 13 Olio-ohjelmointi Strukturaalisen ja proseduraalisen ohjelmointitavan avulla pärjättiin muutamia vuosikymmeniä. Toteutuskieli: Python. Oli tiettyjä asioita, jotka aiheuttivat säännöllisesti ohjelmointivirheitä suurissa ohjelmistoissa ja vaikeuttivat niiden ylläpitoa. Tietorakenteesta tulee tällä tavoin itsenäinen yksikkö, olio . Ilman oliota: def summa(lista): i, tulos = 0, while i < len(lista): tulos = tulos + lista[i] i = i + 1 return tulos summa([1, 2, 4, 9]) Olion kanssa: def summa(kokoelma): tulos = while kokoelma.available(): tulos = tulos + kokoelma.next() return tulos class ListaIteraattori: def __init__(s, lista): s.index = s.lista = lista def available(s): return s.index < len(s.lista) def next(s): cur = s.lista[s.index] s.index = s.index + 1 return cur summa(ListaIteraattori([1,2,4,9])) Python-toteutus: class Shape: def __init__(s): raise NotImplemented def area(s): raise NotImplemented def border(s): raise NotImplemented class Circle(Shape): def __init__(s, radius): s.radius = radius def area(s): return math.pi * s.radius * s.radius def border(s): return 2 * math.pi * s.radius myshape = 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. Huomattiin, että monet ohjelmavirheet johtuivat siitä, että ohjelman eri osat muuttelivat samaa muuttujaa tai tietorakennetta toisistaan tietämättä. Oliopohjaista ohjelmaa pystyy helposti laajentamaan uusilla tietotyyppitoteutuksilla. Olio-ohjelmointi soveltuu erityisen hyvin tilanteisiin, joissa halutaan tuottaa valmiskäyttöisiä tietorakenteita tai muita palveluita tulevien ohjelmien käyttöön. Joskus luullaan, että oliopohjaista ohjelmointia varten kielessä pitää olla erityinen tuki erilaisille oliorakenteille. Jälkimmäinen summa tarvitsee toimiakseen ListaIteraattori-olion mutta toisaalta pystyy käyttämään mitä tahansa oliota, joka toteuttaa metodit available() ja next(). Ilman 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: void 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. Olioohjelmointi puolestaan avasi oven tietorakenteiden uudelleenkäytölle. TOIMI TO IM I T O IM I TO IM I T O IM I T O IM I T O IM I T O IM I TO IM I TOIM I Listaus 3. Se toimii siten minkä tahansa olion kanssa, joka toteuttaa oikein samat metodit. Shape-rajapinta ja sen circle-toteutus. Kukin metodi pystyy osaltaan varmistamaan, että tietorakenne on eheässä ja toimivassa tilassa, kun ohjelman suoritus luovutetaan takaisin metodin ulkopuolelle. Olio-ohjelmoinnissa tietorakenteita käsittelevät aliohjelmat yhdistetään tietorakenteisiinsa siten, että vain tietyt aliohjelmat, metodit , saavat muutella kutakin tietorakennetta. Python-kielessä on valmis tuki oliorakenteille, Schemessä ei.. Ajatellaan esimerkiksi aliohjelmaa, joka käy läpi lukulistaa (laskeakseen siitä jotain) ja tekee jonkin aliohjelmakutsun jokaisen listan elementin kohdalla: jos kyseinen aliohjelma sivuvaikutuksenaan muokkaa läpi käytävää listaa, lopputulos saattaa olla aivan muuta kuin ohjelmoija ajatteli. Toteutuskieli: Python, Scheme. Lisäksi olio-ohjelmoinnin myötä tuli huomattavasti helpommaksi kirjoittaa korkean tason koodia: oliota käsittelevä aliohjelma pystyy käyttämään sen metodeja sokeasti. Niiden vahvuutena on, että ohjelman suoritusjärjestys on helppo hahmottaa. Toteutuskieli: C. Näin ohjelmien toiminnallisuutta saattoi jälkikäteen laajentaa uusilla tietotyypeillä (listaus 3). Todellisuudessa oliopohjaista koodia pystyy kirjoittamaan lähes kaikilla yleisessä käytössä olevilla ohjelmointikielillä (listaus 4) matalan tason konekielistä lähtien. Shellsort-järjestelyalgoritmi. Ajan mittaan kuitenkin huomattiin, ettei ohjelman suorituksen eteneminen ollut ainoa vaikeaselkoinen osuus ohjelmoinnissa. Samalla ohjelmien ylläpidettävyys paranee: tietorakenteen sisäistä toteutusta muutettaessa ei tarvitse korjata koko ohjelmaa käyttämään uusia rakenteita, vaan riittää, että päivittää rakenteen omat metodit
Niinpä funktionaalisessa ohjelmassa funktioiden suorittamista ja arvojen laskemista voi viivästää, kunnes tulosta todella tarvitaan. Funktionaalisista ohjelmista on helpompi todistaa erilaisia ominaisuuksia, ja ne ovat yleensä jonkin verran lyhyempiä kuin vastaavat imperatiiviset ohjelmat. Toiston päättyminen nimittäin riippuu eri muuttujien tiloista, eikä funktionaalisessa ohjelmassa muuttujan arvo enää perustamisen jälkeen muutu. 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 = btree if value < curvalue: return (curvalue, btree_insert(left, value), right) if value > curvalue: return (curvalue, left, btree_insert(right, value)) return btree Listaus 6. Ohjelmat määritetään funktioina . Allegoria tosin ontuu sikäli, että funktiot eivät ”kuluta” syötettään vaan saman syötteen voi rauhassa antaa vaikka kuinka monelle funktiolle. Destruktiivinen versio muokkaa alkuperäistä tietorakennetta, applikatiivinen säilyttää sen. Toteutuskieli: Python. Rekursio Imperatiivisesta ohjelmoinnista tuttuja toistorakenteita ei funktionaalisessa ohjelmoinnissa voi sellaisenaan olla. Tällöin tietorakenteen sisältöä ei lasketa etukäteen, vaan siihen upotetaan funktiPython: 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. Rekursio tarkoittaa, että funktio käyttää määrittelyssään avuksi itseään (listaus 5). Toteutuskieli: Python, Scheme. Usein on mahdollista sekä säilyttää alkuperäinen että muodostaa uusi tietorakenne hyvin pienellä muistinkulutuksella (listaus 6). Tosiasiassa kuitenkin yhtä tietorakennetta voi käyttää toisen osana, ja monet niistä voivat jakaa keskenään osia, jos niiden muuttumattomuuteen voi luottaa. Rekursio on hyvin yleispätevä ohjelmointitekniikka, joka käy erityisen hyvin rekursiivisten tietorakenteiden (kuten puiden ja tiedostojärjestelmien) läpikäyntiin tai eri mahdollisuuksien tutkimiseen esimerkiksi tekoälyssä. 14 2013.4 Funktionaalinen paradigma Funktionaalisessa paradigmassa käsitellään toisistaan riippumattomia arvoja (esimerkiksi lukuja, merkkijonoja tai listoja) sen sijaan, että muuteltaisiin yhden suuren koneen tilaa (todellisen tai virtuaalisen). Funktio on tarkka määritys siitä, kuinka lähtöarvoista lasketaan uusia arvoja. Tätä suoritusjärjestysten vapautta voi hyödyntää laiskoissa tietorakenteissa . Monimutkaiset funktiot määritellään yhdistelemällä yksinkertaisempia funktioita komposition avulla, eli määrittämällä, minkä funktion tulos annetaan millekin syötteeksi. Vanhat heitetään automaattisesti pois, kun niitä ei enää tarvita. Juuri tämä ominaisuus erottaa funktionaalisen ohjelmoinnin imperatiivisesta: imperatiivisessa ohjelmoinnissa laskennan osana usein muutellaan jo olemassa olevia muuttujia tai tietorakenteita, mutta funktionaalisessa ohjelmoinnissa vain tuotetaan uusia arvoja ja tietorakenteita vanhojen perusteella. Funktion lopputulos riippuu ainoastaan sen saamista lähtöarvoista. Intuitiivisesti voi ajatella, että funktiot ovat kuin koneita, joihin menee sisään tiettyjä arvoja (syötteitä) ja jotka tuottavat niistä toisia arvoja (tuloksia). Listan summa. Funktionaalinen ohjelmointi sopii erityisen hyvin tiedon muunnoksiin ja prosessointiin. Luonnolliset luvut ja parilliset luvut laiskana listana. Lisäksi funktionaalinen koodi on paikallaan niissä tilanteissa, joissa koodin virheettömyys on tärkeää. Uuden arvon sijoitus järjestettyyn binääripuuhun. Toteutuskieli: Python.. Scheme sisältää valmiiksi laiskojen tietorakenteiden käsittelyä helpottavia palveluita, Python ei. Iteratiivinen: def summa(lista): tulos = for e in lista: tulos += e return tulos Rekursiivinen: def summa(lista): if len(lista) == 0: return return lista[0] + \ summa(lista[1:]) Listaus 5. Laiskat tietorakenteet Funktion tulos riippuu sen syötteistä eikä tilanteesta, jossa se suoritetaan. Mielivaltaisen kokoisia tietorakenteita, kuten listoja, käsitelläänkin funktionaalisissa ohjelmointikielissä rekursion tai siihen perustuvien funktioiden avulla. Tietorakenteiden muuttumattomuus ja jakaminen Koska funktiot eivät koskaan muokkaa syötteeksi saamiaan tietorakenteita, vaan luovat aina uusia, saattaa tuntua, että funktionaalinen ohjelmointitapa kuluttaa hyvin paljon muistia
Monet algoritmit ovat esitettävissä elegantisti muunnoksina, joissa funktio lukee yhtä laiskaa tietorakennetta ja tuottaa sen perusteella toista (listaus 7). Toteutuskieli: Python. Erityisen keskeinen funktionaali tässä ohjelmointitavassa on kompositio-operaattori , joka antaa yhden funktion tuloksen toiselle syötteeksi. Alkioita vertaillaan metodilla tai argumenttina saadulla funktiolla. Kun funktioiden välinen verkko monimutkaistuu, tarvitaan myös koko ajan lisää funktionaaleja ja muita apukeinoja syötteiden ohjaamiseksi oikeille funktioille. Koska kaikki funktiot voi määritellä yksinkertaisempien funktioiden kompositioina, konkatenatiivisissa ohjelmointikielissä kompositiosta tehdään ohjelmoinnin perusoperaatio. Onko lista järjestyksessä. 3 Korkeamman kertaluvun funktiot Yleensä funktionaaliset ohjelmointikielet tukevat myös korkeamman kertaluvun funktioita eli funktionaaleja sekä niiden käyttökelpoisuutta huimasti lisääviä sulkeumia (closure) . 15 oita, joilta voi tarvittaessa pyytää rakenteen varsinaisen sisällön. 2 Laiskat tietorakenteet sopivat lukuisiin tarkoituksiin aina numeerisista menetelmistä optimointiin ja jäsentämiseen. 4 Monessa tilanteessa funktionaalien käyttö toimii vaihtoehtona olio-ohjelmoinnille. Laiskat tietorakenteet voivat olla äärettömän suuria, koska niitä lasketaan vain tarpeen mukaan. 5 Monet funktiot voi kirjoittaa kokonaan kompositio-operaattorin avulla. Toteutuskieli: Haskell.. Imperatiivisessa ohjelmassa koodia syötteekseen ottavista aliohjelmista on lähes yhtä paljon hyötyä kuin funktionaalisessa ohjelmassa. Parillisten laskeminen. Listan summa ja peräkkäisten toistuvien elementtien poisto. Ero perinteisempään funktionaaliseen ohjelmointiin on se, että arvojen kuljetus funktiolta toiselle on annettu funktionaalien tehtäväksi eikä arvoihin viitata enää niin paljon erillisillä muuttujilla. 6 Tietovuo-ohjelmointi tuottaa kaunista ja selkeää koodia silloin, kun funktioiden kompositiorakenne ei ole tavattoman monimutkainen. Funktionaali tarkoittaa funktiota, joka ottaa syötteekseen tai palauttaa toisia funktioita. Funktionaalit taas saavat argumentteina ne funktiot (aliohjelmat), joilla rakennetta käsitellään. Tällaista ohjelmointityyliä kutsutaan nimellä point-free notation , ja se tuo usein selkeästi esiin tietovuot, joiden kautta arvot kulkevat laskennassa (listaus 10). Esimerkkejä laiskoista tietorakenteista ovat muun muassa laiskat listat eli virrat tai vaikkapa puutietorakenne, josta löytyy jokainen mahdollinen shakkipelin kulku. Esimerkiksi seuraava komento laskee syötteensä sanojen frekvenssijakauman: tr ’ ’ \\012 | sort | uniq -c | sort -nr Rekursiivinen: def summa(lista): if len(lista) == 0: return return lista[0] + \ summa(lista[1:]) def toistoton(lista): if len(lista) <= 1: return lista if lista[0] == lista[1]: return toistoton(lista[1:]) return lista[0] + toistoton(lista[1:]) Funktionaaleihin perustuva: def summa(lista): return reduce(lambda x,y: x+y, lista, 0) def toistoton(lista): return map(lambda (x,y): x, filter(lambda (x,y): x != y, zip(lista, lista[1:]))) + lista[-1:] Listaus 8. Funktionaalit soveltuvat erittäin monenlaisten toimintatapojen, tietorakenteiden ja laskentaympäristöjen abstrahointiin. 2 Tietyissä ohjelmointikielissä, kuten Haskellissa, kaikki tietorakenteet ovat laiskoja. Molemmilla tavoilla saadaan aikaiseksi tietotyyppien suhteen yleistettyä koodia (listaus 9). 5 Muita tärkeitä funktionaaleja ovat monadisen ohjelmoinnin bind-toteutukset sekä tietorakenteita läpikäyvät katamorfismit , kuten listojen reduce(). Rekursiivinen: countEvens [] = countEvens (x:xs) | even x = 1 + countEvens xs | otherwise = countEvens xs Tietorakennefunktionaaleilla: countEvens xs = length (filter even xs) Kompositio-operaattorilla: countEvens = length . filter even Listaus 10. Metodin avulla: def is_ordered(ls): for e1, e2 in zip(ls, ls[1:]): if not e1.__lt__(e2): return False return True Argumentin avulla: def is_ordered(ls, is_less): for e1, e2 in zip(ls, ls[1:]): if not is_less(e1, e2): return False return True Listaus 9. Tietovuo-ohjelmointi 90-luvulta lähtien funktionaalisessa ohjelmoinnissa on yleistynyt tyyli, jossa funktiot määritellään yhdistelemällä funktionaaleilla muita funktioita. Olio-ohjelmoinnissahan pystyy kirjoittamaan tietorakenteesta riippumattomia algoritmeja käyttämällä tietorakenteiden tarjoamia metodeja. Toteutuskieli: Python. Joidenkin tunnettujen imperatiivisten kielten (Tcl, Ruby ja Smalltalk) ehtoja toistorakenteita on toteutettu tällaisilla menetelmillä. 3 Niillä voi myös faktoroida lopetusehdot erilleen iteratiivisista algoritmeista siten, että iteratiivinen algoritmi tuottaa äärettömästi tarkentuvan listan tuloksia ja listaa lukeva funktio päättää, milloin on aika lopettaa. 6 Tunnetuin näistä kielistä on Factor. Monelle tietovoita korostava point-free notation on tutumpi Unix-komentoriviympäristön putkirakenteista . 4 Korkeamman kertaluvun funktioiden käyttö on hyödyllistä muutenkin kuin funktionaalisen ohjelmoinnin kannalta. Rekursio on usein korvattavissa sopivan funktionaalin käytöllä (listaus 8)
Indeterminismi ei ole ainoastaan logiikkaohjelmointiin rajoittuva tekniikka, vaan myös funktionaalisessa ohjelmoinnissa voi toteuttaa funktioita, jotka palauttavat haluttaessa useampia arvoja (tai ei yhtään). Toivon, että tämä kirjoitus rohkaisee lukijoita tutustumaan uusiin ohjelmointitapoihin. Listan pituus: length([], 0). Joskus ohjelmaa suoritettaessa tiettyyn osaongelmaan on monta ratkaisua, mutta jokin niistä ei myöhempien sääntöjen vuoksi kelpaakaan. Lisäksi ratkaisuja on joskus yksi, joskus monta ja joskus ei yhtään. Toteutuskieli: Prolog. Listauksen käyttöesimerkeistä näkyy, että määritelmien perusteella voi laskea pituuksia listoista, listoja pituuksista, yhdistettyjä listoja osalistoista tai osalistoja yhdistettävistä listoista. Esimerkiksi väite [1, X, 3] = [1, 2, Y] pitää paikkansa silloin ja vain silloin, kun X = 2 ja Y = 3. Ohjelmia muodostetaan määrittämällä predikaatteja . 16 2013.4 Logiikkaparadigma Logiikkaparadigmassa laskentaa tarkastellaan prosessina, jossa etsitään ehtoja, joilla annetut väitteet pitävät paikkansa. Predikaatti on sääntö, joka määrittää, missä suhteessa sen argumentit ovat toisiinsa. Indeterminismi Kuten todettu, logiikkaohjelmassa asetettuihin ehtoihin voi olla yksi, monta tai ei yhtään ratkaisua. Funktioiden määrittelyt ovat käytännössä väitteitä siitä, mikä on funktion syötteiden ja tuloksen suhde. X = 3 . length([F|Rest], X) :length(Rest, Y), plus(Y, 1, X). Ohjelmointi on ajattelua, joten uudet ohjelmointitavat ovat samalla uusia ajatustapoja ja auttavat parhaimmillaan ymmärtämään myös maailmaa paremmin.. Käyttöesimerkit: ?cat([1,2], [3,4], X). Listaus 11. ?cat(X, Y, [a, b]). Esimerkiksi seuraava Haskell-ohjelma kertoo, mikä on listan ja sen pituuden suhde. X = [1, 2, 3, 4]. ?len([1,2|X], 4). Laskenta etenee siten, että logiikkalausekkeita seuraamalla etsitään ne muuttujien arvot, joilla kaikki ohjelman väitteet pitävät yhtä aikaa paikkansa. cat([E1|L1], L2, [E1|L3]) :cat(L1, L2, L3). Jo vähäinenkin ohjelmointitapojen tuntemus kehittää ohjelmoijan taitoja, mutta lopulta erilaiset ohjelmointiparadigmat tarjoavat kiinnostuneille lähes ehtymättömän aarreaitan. Listan pituus ja kahden listan yhdistäminen. Listojen katenaatio: cat([], L2, L2). Käyttöesimerkit: ?len([4,6,2], X). X = [_G335, _G338] . Sekä logiikkaettä funktionaalinen paradigma ovat esimerkkejä deklaratiivisesta ohjelmoinnista. 7 Puhtaissa funktionaalisissa kielissä indeterministinen funktio yleensä palauttaa laiskan listan erilaisista tuloksistaan, mutta jatkeita ( continuations ) tukevissa ohjelmointikielissä indeterminismin voi toteuttaa myös hyppimällä jatkeilla ohjelman suorituksessa takaisin aikaisempiin vaiheisiin.. Logiikkaohjelmointi soveltuu erityisen hyvin tilanteisiin, joissa etsitään ratkaisua monimutkaiseen rajoiteongelmaan (esimerkiksi liikennevalojen ajastukseen), haetaan erilaisista vaihtoehdoista parasta (esimerkiksi shakkitekoäly) tai parseroidaan eli jäsennetään kieliä. 7 Oppia ikä kaikki Tässä jutussa on käsitelty vain pintapuolisesti kaikkein yleisimpiä niistä paradigmoista, joiden avulla ohjelman toimintatavan voi määritellä. Deklaratiiviset ohjelmat eivät ole vain ohjeita siitä, miten jotain lasketaan, vaan ne voi tulkita myös väitteiksi siitä, miten asiat ovat. X = [], Y = [a, b] ; X = [a], Y = [b] ; X = [a, b], Y = [] . On kuitenkin olemassa myös uudempia paradigmoja, joiden tutkimus on vasta alullaan. ?length([1,X,3], 2). Jokainen esitellyistä ohjelmointiparadigmoista kantaa mukanaan vuosikymmenten perinnettä ja tutkimusta siitä, miten erilaiset ongelmat voi ratkaista elegantisti. Tällaista suoritustapaa, jossa mahdollisia tuloksia on useita ja kaikki mahdollisuudet tutkitaan läpi, kutsutaan indeterministiseksi (listaus 12). Monimutkaiset predikaatit määritellään yleensä sen perusteella, miten ne riippuvat yksinkertaisemmista (listaus 11). Tällöin joudutaan palaamaan takaisin (backtrack) muihin mahdollisiin ratkaisuihin ja katsomaan, tyydyttäisikö seuraava niistä loputkin rajoitteet. false. length [] = length (x:xs) = 1 + length xs Logiikkaohjelmointi menee tässä pidemmälle ja tekee ohjelman predikaateista symmetrisiä siten, että niissä ei määritetä, mikä on syötettä ja mikä tulosta, vaan väitteen yhden argumentin voi laskea toisen perusteella ja päinvastoin
Kolumnit. Kehitys ei kehity Mikko Heinonen Ohjelmiston päivittämisestä saisi olla jotain hyötyäkin. Ne kyllä osaavat satoja eri tiedostomuotoja, mutta käyttäjäystävällisyys ei kuulu niiden sanavarastoon. Kukaan ei vain kysy asiaa kääntäjiltä, vaan ohjelmistot kirjoitetaan etupäässä projektinhallinnan käyttöön. Minun on siis hyvin helppo ymmärtää, miten syntyvät ne historialliset ohjelmistokertymät, jotka aiheuttavat ongelmia päivitysten yhteydessä. Työssäni teknisenä kääntäjänä joudun päivittäin käyttämään ohjelmia, joista moni tietokoneen käyttäjä ei ole kuullutkaan. Dokumentteja, sopimustekstejä ja ohjelmistoja käännetään lause tai sana kerrallaan käännösmuistiohjelmilla, jotka pyrkivät nopeuttamaan kääntäjän työtä tallentamalla vanhat käännökset tietokantaan ja ehdottamalla käännöksiä. Suunta on väärä, vauhtia liikaa Minun on mahdotonta uskoa, ettei kunnollista käännösohjelmaa saisi aikaan. Se on paras, vaikka se usein pilaa asiakirjan muotoiluja ja saattaa yhtäkkiä kieltäytyä siirtymästä seuraavaan lauseeseen. 17 O letteko koskaan miettineet, mistä syntyy se vanhojen ohjelmistojen kiviriippa, joka vaikeuttaa vaikkapa eri käyttöjärjestelmään siirtymistä yrityksessä. Minulle aihe on hyvin tuttu. Tradosin sitkeyttä selittäneekin osaltaan se, että sen käyttöliittymä on käytännössä Microsoft Word. Tällöin käyttäjä, joka haluaa vain tehdä työtään, kahlitsee itsensä vanhaan luottosoftaansa kuin luontoaktivisti puunrunkoon: tätä ette minulta vie.. Saman ohjelman uudempi versio, Trados Studio, poisti Word-symbioosin ja toimii uudemmissakin käyttöjärjestelmissä hyvin. Asennus nykyisiin Wordin versioihin edellyttää tiedostojen manuaalista kopiointia ja uudelleen nimeämistä, eikä se välttämättä toimi silloinkaan. Valitettavasti hyvin toimiminen on nykyisin lähinnä harvinainen poikkeus. Tämä siitäkin huolimatta, että se sai viimeisen päivityksensä vuonna 2007 ja omistajayhtiö on yrittänyt aktiivisesti tappaa sitä myyntinsä edistämiseksi. Eikä ole salaisuus, että kääntäjinä työskentelee paljon ihmisiä, joiden harrastuneisuus ei riitä sekavien valikoiden kaiveluun. Seurauksena on se, että useat käännöstoimistot lähettävät töitä vielä tänäkin päivänä vanhalla Tradosilla tehtäväksi. Miksi ihmeessä osa käyttäjistä ei halua päivittää ohjelmiaan uuteen versioon. ” Ohjelmistoja kehitetään epäolennaisiin suuntiin ja niistä tehdään hitaampia. Varsinaisen työnkulun kannalta Trados tuntuu nimittäin olevan niitä harvoja kääntäjän näkökulmasta kirjoitettuja ohjelmia. Samalla se on kuitenkin kadottanut edeltäjänsä erinomaiset muistihakutoiminnot ja tehnyt käytöstä niin monimutkaista, että lyhyenkin tiedoston kääntäminen vaatii useita projektinhallintaoperaatioita. Yksittäinen lisenssi voi maksaa tuhatkin euroa. Pienille aloille ei tunnu riittävän ohjelmistokehityksen osaamista, joka saisi pidettyä viisasten kiven hallussaan sen kerran löydettyään. Nykyisin myynnissä olevat työkalut ovat pääosin insinöörihirvityksiä, joissa on kymmenittäin valikoita ja asetuksia. Ohjelmistoja kehitetään epäolennaisiin suuntiin ja niistä tehdään yleensä entistä hitaampia. Hymyä kyynelten läpi Tuo vanha sotaratsu onkin edelleen kenties paras työkalu, kun on vain tarkoitus kääntää pikaisesti tekstiä. Kohtuullisen pieni käännösohjelma-ala tuntuu vetävän puoleensa pyörän uudelleen keksijöitä, jotka kieltäytyvät matkimasta ominaisuuksia toisiltaan. Ehkä juuri tämän vuoksi yksikään uudemmista käännösohjelmistoista ei ole onnistunut nousemaan uudeksi de facto -standardiksi, vaan alan suuret toimijat ovat hankkineet kuka minkäkin ohjelmiston käyttöönsä. Tonni on aika iso raha ohjelmasta, joka ei tee juuri mitään sen paremmin kuin vanha Trados. On yhteistyötä, konekäännöstä ja online-työnkulkua, mutta ei edelleenkään hyvää muistihakua, vaikka se olisi itse työn kannalta huomattavasti oleellisempaa. Trados, ohjelmista tunnetuin, käyttää apunaan Microsoft Wordin lisäosaa, joka on ilmeisesti kirjoitettu jossain vuoden 2000 tienoilla. Se on tehty kirjoitetun kielen käsittelyyn, ei merkkijonojen koodaukseen. Ne eivät ole juurikaan yhteensopivia, joten freelance-kääntäjän tai suurten toimistojen alihankkijayrityksen on ylläpidettävä useita eri lisenssejä voidakseen ottaa töitä vastaan. Lähestymistavasta on tuloksena joukko työkaluja, jotka toistavat toistensa virheitä ja hukkaavat hyvät ominaisuutensa huonojen joukkoon. Hyvin toimiessaan järjestelmä vauhdittaakin työtä reippaasti. Se on paras siitäkin huolimatta, että ohjelman ikkuna voi useampaa näyttöä käytettäessä siirtyä yhtäkkiä X-koordinaattiin 10 000. Itse asiassa omaan käyttööni sellainen olisi jo olemassa, jos saisin yhdistellä nykyisten ominaisuuksia vapaasti. Toimistosovellusten monopolista voi toki olla käärmeissään, mutta Wordin käytettävyys on kyllä kohdallaan verrattuna keskimääräiseen, lähinnä taulukkolaskennalta näyttävään käännösohjelmaan
Se ei ole akateeminen kielentutkimushanke eikä pedagoginen esimerkkikieli. Melko nuori perheenjäsen on Common Lisp, joka syntyi yhdistämään aiempia Lispin murteita ja hajanaista kehitystyötä. Kielen nimi oli LISP, joka on lyhenne sanoista ”list processing”. Useat toisistaan riippumattomat tahot innostuivat kielen kehittämisestä, ja pian se jakautui useiksi eri murteiksi. 18 2013.4 Common Lisp – ohjelmoitava ohjelmointikieli Common Lisp on samanaikaisesti tietojenkäsittelytieteen klassikko ja nykyaikainen ohjelmointikieli. John McCarthy (1927–2011), Lispin keksijä. Teksti: Teemu Likonen Kuvat: Risto Mäki-Petäys, Marcin Wichary, Roland Dobbins, Teemu Likonen, Dave Fischer Sukujuuret syvällä Tässä artikkelissa keskityn kieleen nimeltä Common Lisp, joka on vain yksi murre Lispin suuressa perheessä. Common Lisp on uudehko perheenjäsen, mutta kieliperheen juuret ovat syvällä historiassa. Luonteenpiirteitä Common Lisp on yleiskäyttöinen dynaaminen kieli, joka tukee useita ohjelmointityylejä. 1960-luvun lopussa oli jo olemassa tai kehitteillä MacLisp, ZetaLisp ja Interlisp. Tuolloin kehitystyö kytkeytyi keinoälytutkimukseen IBM:llä, Darmouthin yliopistolla sekä Massachusettsin teknillisessä korkeakoulussa. Uuden kielen varsinainen tietokonetoteutus alkoi syksyllä 1958, ja sitä pidetäänkin kielen syntymävuotena. Dynaamisen luonteensa vuoksi koko kieli on läsnä Symbolicsin Lisp-kone Googlen museossa. Niiden käyttöjärjestelmät ohjelmoitiin tietysti Lispillä. Koodi. Lisp-kielisten ohjelmien tehokasta suorittamista varten rakennettiin 1970ja 1980-luvulla erityisiä tietokoneitakin, Lisp-koneita. Lisp-kielen perusteet loi John McCarthy vuonna 1956. Haluttiin määritellä standardi Lisp, jossa yhdistyvät monien aiempien murteiden ominaisuudet. Kieliperheen nimeksi vakiintui Lisp. Uusia ominaisuuksia lisättiin, ja alkuperäinen lyhennenimi ”listojen käsittelijä” alkoi jäädä syrjään. Se on tarkoitettu käytännöllisten ohjelmien kirjoittamiseen ja todellisten ongelmien ratkaisemiseen. Lisp-kielten evoluutio on rakentanut vanhojen perusideoiden varaan uuden kielen, joka vastaa nykyajan tarpeisiin ja haastaa ilmaisuvoimallaan kokeneenkin ohjelmoijan. Kieli sai virallisen aseman vuonna 1994, kun siitä tuli yhdysvaltalainen ANSI-järjestön standardi. Kohta mukaan tulivat myös Portable Standard Lisp, NIL, S-1 Lisp, Franz Lisp, Scheme ja SpiceLisp
Leikillisestä selityksestä huolimatta sulkeet eivät ole liiallisia eivätkä tarpeettomia. Kun funktio määritellään, se muodostaa sulkeuman (engl. Karkeasti ilmaistuna lauseet tekevät jotakin ja lausekkeet palauttavat jonkin arvon. Luku-tietotyypeissä on eräitä erikoisuuksia moniin ohjelmointikieliin verrattuna. Tyyppijärjestelmässä merkkijono on vain taulukon erikoistapaus, ja sitä voi käsitellä samoilla funktioilla kuin taulukoitakin. Sulkeita on paljon, koska niiden avulla merkitään tietotyyppi nimeltä lista. Common Lispissä on pelkästään lausekkeita eli kaikki ohjelmarakenteet palauttavat arvon. Jos lista suoritetaan funktiokutsuna, sen ensimmäinen elementti on funktion nimi ja loput elementit argumentteja. Luvut vain tulkitaan merkkien koodeiksi jonkin merkistökoodauksen avulla. Yksi hienous ovat rationaaliluvut. Myös muuttujien tyypit ovat dynaamisesti muutettavissa, eikä niitä tarvitse julistaa tietyn tyyppiseksi. We managed to drag a lot of them about halfway to Lisp.” – Guy Steele, yksi Java-kielen määritelmän kirjoittajista lähde: http://people.csail.mit.edu/gregs/ll1-discussarchive-html/msg04045.html. Lisp-ohjelman on hyvin helppoa lukea, muokata ja tuottaa uutta Lisp-koodia, ja siksi Lisp-kieliä sanotaankin ohjelmoitaviksi ohjelmointikieliksi. Loogisesti kielen syntaksi on kuitenkin erittäin yksinkertainen, koska ohjelmakoodin tulkitsemisen säännöt ovat yksinkertaiset ja koska ohjelmakoodi muodostuu kielen omista tietorakenteista. Se auttaa optimoinnissa, ja tehokkaimmat Common Lisp -kääntäjät tuottavatkin suoritusteholtaan lähes C-kielen kääntäjien tasoista konekieltä. Lisp-koodi koostuu sisäkkäisistä listarakenteista. Niitä ovat esimerkiksi kokonaisluku, liukuluku, merkkijono, lista, taulukko, hajautustaulu ja luokka. Common Lispissä myös merkki on oma tietotyyppinsä, jolla on oma syntaksinsa. Ominaisuus tarkoittaa esimerkiksi sitä, että funktioita voi luoda ohjelman suorituksen aikana, tallentaa muuttujiin tai muihin tietorakenteisiin ja antaa argumentiksi toisille funktioille. Seuraava esimerkki luo yksinkertaisen silmukan dotimes-makron avulla. Listoja käytetään paitsi tietorakenteena mutta myös funktioiden, makrojen ja muiden ohjelmarakenteiden esittämiseen. Standardi silti määrittelee declare-lausekkeen, jonka avulla kääntäjälle voi kertoa, minkä tyyppisiä muuttujat ovat. Yhdessä nämä ominaisuudet tekevät metaohjelmoinnista helppoa. closure), jossa voi viitata sen ulkopuolella määriteltyihin muuttujiin. Luvuista mainittakoon myös, että ne voivat olla mielivaltaisen suuria. Nykyaikana on varsin tavallista, että funktiot ovat ensiluokkaisia. Ohjelmoija voi lisätä kieleen uusia ominaisuuksia ja syntaktisia rakenteita. Niiden ansiosta lukuja voi käsitellä mielivaltaisen tarkasti ilman pyöristysvirheitä. Sulkeiden sekaan Leikillisesti on sanottu LISP-lyhenteen tarkoittavan ”lots of irritating superfluous parentheses” tai muuta vastaavaa. Muutkin ohjelman rakenteet ilmaistaan listojen avulla. Tässä yhteydessä esittelen harvinaisempia ominaisuuksia. Tiedon tyypit Common Lispissä on suunnilleen samat tietotyypit kuin muissakin korkeatasoisissa kielissä. Common Lisp on myös ohjelmoitava ohjelmointikieli, mikä tarkoittaa, että kieltä itseään voi muokata. Tämä ominaisuus toteutettiin ensimmäisenä nimenomaan Lispissä, ja se on mukana myös Common Lispissä. Standardikirjastoon kuuluu useita niin sanottuja korkeamman kertaluvun funktioita, jotka tarvitsevat argumentikseen toisen funktion. Esimerkiksi jakolaskusta (/ 4 3) saadaan tulokseksi rationaaliluku 4/3 eikä pyöristettyä liukulukua. Päällisin puolin Lisp-ohjelmassa näyttääkin olevan hyvin paljon sulkeita. Perinteisesti ohjelmointikielissä merkkijono ei todellisuudessa ole merkkien jono vaan lukujono. Nimi ”+” viittaa yhteenlaskufunktioon. 19 ohjelman suorituksen aikana. Useissa ohjelmointikielissä ovat erikseen lauseet ja lausekkeet. Lisäksi Common Lisp tukee kompleksilukuja. (dotimes (i 10) (write-line "Tätä 10 kertaa!")) Lisp-ohjelma voi näyttää monimutkaiselta, jos kieli on lukijalle outo. Nykyaikana Common Lispin toteutukset noudattavat Unicode-merkistöä ja sen koodaustapoja. Ohjelmoijan kannalta merkki ei ole sidoksissa sen tekniseen toteutustapaan tietokoneella. Common Lispin merkkijono on vektori eli yksiulotteinen taulukko, jonka kaikki elementit ovat merkkejä. ” We were not out to win over the Lisp programmers; we were after the C++ programmers. Funktioita voi myös kääntää ohjelman suorituksen aikana, niin että niiden suoritus nopeutuu. Funktiokutsu näyttää esimerkiksi tältä: (+ 1 2 3). Ohjelma voi esimerkiksi luoda suorituksen aikana uusia funktioita tai määritellä vanhoja uudelleen. Lispin merkittävin syntaktinen ominaisuus on se, että ohjelmakoodi muodostuu kielen omista tietorakenteista. Tämä ominaisuus kytkeytyy sujuvasti funktionaaliseen ohjelmointiin, koska palautettuja arvoja voi hyödyntää tehokkaammin
Ohjelmoija kirjoittaa makron usein siksi, että hän haluaa välttää samankaltaisten rakenteiden toistuvaa kirjoittamista. Jos metaohjelmointia ei ole ennen harrastanut, voi olla aluksi hankalaa ymmärtää makron ja funktion eroa. Virran elementit ovat merkkejä (merkkivirta) tai tavuja (binaarivirta). Kun tällaista täytyy kirjoittaa usein, toivoisi ehkä kieleen seuraavanlaista rakennetta: (if-let (arvo (funktiokutsu)) (tee-jotain arvo) (tee-muuta)) Näin väliaikainen muuttuja määriteltäisiin osana ehtolauseketta ja ohjelmoija säästyisi hieman vähemmällä kirjoittamisella. Makrot ovat kiinteä osa Common Lispiä, ja monet kielen valmiista ominaisuuksista on toteutettu makrojen avulla. Ohjelmoija voi määritellä niitä myös itse. Makro tuottaa ohjelmakoodia ennen kuin ohjelmaa varsinaisesti vielä suoritetaan. Tiedosto voidaan avata esimerkiksi merkkivirraksi ja syntyneestä virtaobjektista voidaan lukea merkkejä. Muita tietotyyppien erikoisuuksia ovat tiedostopolut ja symbolit. Symboleja voi luoda omiin tarkoituksiinkin, yksilölliseksi tunnisteeksi mille tahansa. Virrasta voidaan lukea tietoa tai siihen voidaan kirjoittaa tietoa. Tiedostopolku sisältää tietoa, joka nimeää tiedoston tiedostojärjestelmässä. Ne nimeävät esimerkiksi muuttujia, funktioita, makroja, tiloja ja luokkia. (defmacro if-let ((muuttuja ehto) tosi &optional epätosi) `(let ((,muuttuja ,ehto)) (if ,muuttuja ,tosi ,epätosi))) Olemme luoneet yksinkertaisen makron eli syntaktisen abstraktion. Käytetään muuttujaa: (tee-jotain arvo) ;; Epätosi. Tehdään jotain muuta: (tee-muuta))) Edellisessä esimerkissä luodaan väliaikainen muuttuja ja asetetaan sille funktiokutsun arvo. Onneksi on helppoa kirjoittaa makro, joka luo kyseisen if-let-rakenteen. Valikoituja ominaisuuksia Monessa mielessä Common Lisp on hyvin samanlainen kuin nykyaikaiset korkeatasoiset dynaamiset kielet. Ohjelman suorituksen aikana ei makroja enää ole, vaan ainoastaan niiden tuottama koodi. Myös verkkoliikenne ja tekstipohjainen viestintä ohjelman käyttäjän kanssa tapahtuvat virtojen avulla. Samankaltaisuudesta huolimatta erityispiirteitäkin on. Esimerkin vuoksi luodaan yksinkertainen makro. Makrot puolestaan muokkaavat ohjelmakoodia toisenlaiseksi. Makrot Makrot ovat niin sanottuja metaohjelmia, koska ne tuottavat ohjelmakoodia ohjelmallisesti. Common Lispissä makrot määritellään defmacro-nimisellä makrolla ja ne kirjoitetaan tavallisella Common Lispillä. Ne niputtavat ohjelmakoodia yhteen, suorittavat määrätyn tehtävän ja palauttavat jonkin arvon. Sen jälkeen käytetään arvoa if-rakenteen ehtolausekkeessa ja vielä toisessa if-rakenteen haarassa. Tiedostojen lukeminen ja kirjoittaminen on käytännössä virtojen käsittelyä. Lispissä molemmat nimittäin näyttävät samalta. Ohjelmoija voi luoda virtoja omiinkin tarkoituksiinsa, esimerkiksi ohjelman sisäiseen viestintään. Lisp onkin ollut innoittajana monille kielille. Niiden avulla luodaan syntaktisia abstraktioita eli muokataan itse ohjelmointikieltä. Oletetaan, että seuraavanlainen rakenne toistuu koodissa usein: ;; Asetetaan muuttujalle funktiokutsun arvo: (let ((arvo (funktiokutsu))) ;; Testataan, onko arvo tosi: (if arvo ;; On tosi. Symboleja puolestaan käytetään yksilöllisinä tunnisteina ja niminä. Uusi if-let-rakenne helpottaa ohjelmoijan työtä, koska se tuottaa ohjelmallisesti koodia, jonka Symbolics 3600 -Lisp-koneen näppäimistö.. 20 2013.4 Virta on tiedonsiirtoon tarkoitettu tietotyyppi. Funktiot toimivat ohjelman suorituksen aikana. Kieli on siis samalla itsensä metakieli. Esittelen seuraavaksi ominaisuuksia, jotka ovat joko itsessään harvinaisuuksia tai joiden toteutus on poikkeuksellinen
Yleisfunktio kuvaa jotakin yleistä toimintoa, ja metodit puolestaan toteuttavat kyseisen toiminnon joidenkin luokkien näkökulmasta. (anna-tieto) ; => "alkuperäinen arvo" (setf (anna-tieto) "uusi arvo") (anna-tieto) ; => "uusi arvo" Tilat ja uudelleenkäynnistys Ohjelmointikielissä on tavallisesti ominaisuus ja syntaktinen rakenne, jolla käsitellään virhetilanteita. Luokilla voi olla useita rinnakkaisia kantaluokkia, ja luokat perivät ominaisuutensa kaikilta kantaluokiltaan (moniperintä). Vaikka edellä esitelty makro onkin käyttökelpoinen, se ei anna kattavaa kuvaa makrojen todellisista kyvyistä. Seuraavat esimerkit valottavat asiaa. Monimetodien luonnollinen seuraus on, että metodeja ei ole järkevää sitoa yksittäiseen luokkaan. Mihin tahansa ohjelman kohtaan voidaan määrittää uudelleenkäynnistyspisteitä. Rakennetaan oliomalli ”kivi, sakset ja paperi” -peliin. Ne voivat vaatia hieman toisenlaista ajattelutapaa, jos on tottunut muihin oliokieliin. Luokkia ja niiden välisiä suhteita voi muuttaa dynaamisesti ohjelman suorituksen aikana. Yleisfunktion metodit (7 kpl) erikoistuvat erilaisiin esinevaihtoehtoihin. Lopulta palataan matalan tason funktioon jatkamaan alkuperäistä tehtävää. Makrolla voi asettaa paitsi muuttujalle uuden arvon myös monien muiden tietorakenteiden ja tallennuspaikkojen arvon. Tällä tavoin abstrahoidaan ensin kielen syntaksia ja käytetään sitten tätä korkeammantasoista kieltä varsinaisen ohjelman kirjoittamiseen. Virheen tai muun poikkeustilanteen havainnut ohjelman osa lähettää asiasta tiedon (tilan), ja ohjelman suoritus siirtyy paikkaan, jossa poikkeustilanne käsitellään. Kyseistä elementtiä voi muokata lausekkeella (setf (elt lista 0) "uusi arvo"). let-rakenteen avulla muuttuja on suljettu funktion sisään (sulkeuma), joten muuttujaan ei pääse käsiksi mistään muualta. setf on myös laajennettavissa rajattomasti. Kun tapahtuu virhe tai muu poikkeustilanne, siirrytään käsittelyosaan, mutta sieltä on mahdollista palata voimassa oleviin uudelleenkäynnistyspisteisiin. Oliojärjestelmä muodostuu luokista, olioista, yleisfunktioista ja niiden metodeista. Yksi tällainen on loop, joka sisältää silmukoihin erikoistuneen ohjauskielen. Kokeillaan ohjelmaa. Sama ajatus on yleistetty muihinkin tietorakenteisiin. Määritellään ensin esine-luokka ja sille alaluokiksi tarvittavat kolme esinettä. ” Greenspun’s Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp.” – Philip Greenspun lähde: http://philip.greenspun.com/research/. Oliot Myös Common Lispin oliojärjestelmässä on omat erityispiirteensä. loop-makro lienee syntynyt ajatuksesta, että monimutkaistenkin silmukkarakenteiden kirjoittamisen pitäisi olla mahdollisimman helppoa ja että usein toistuva rutiinikoodi pitää abstrahoida pois näkyvistä. Makrojen avulla voi lopulta luoda ikään kuin pienoiskielen, jota ohjelmoija sitten käyttää oman ohjelmansa kirjoittamiseen. Rakenne on kaksiosainen: tiedon lähettäjä ja poikkeustilanteen käsittelijä. loop-rakenteessa olevilla avainsanoilla säädellään silmukan toimintaa. Esimerkiksi funktiokutsu (elt lista 0) palauttaa listan ensimmäisen elementin. Kutsutaan ensin anna-tietofunktiota, käytetään sitten setf-makroa ja sijoitusfunktiota ja kutsutaan lopuksi funktiota uudelleen. Kieli tukee monimetodeja, eli metodit voidaan valita useamman argumentin perusteella. Kolmeosaisen tilajärjestelmän avulla matalan tason funktion havaitsema virhetila voidaan lähettää ylemmän tason ohjelmalle käsiteltäväksi ja korjata jossakin muualla. Avainsanojen lomassa on tavallista Lisp-koodia. Sen jälkeen määritellään yleisfunktio ottelu, joka saa argumenteiksi kaksi esine-oliota. Metodit eivät ole sidoksissa luokkiin, vaan ne ryhmitellään yleisfunktioiden alaisuuteen. Perustilanne on lausekkeessa (setf tieto 3), jossa asetetaan muuttujan tieto arvoksi 3. Ohjelmoija voi laajentaa setf-makroa luomalla uusia sijoitusfunktioita, kuten on tehty seuraavassa esimerkissä: (let ((tieto "alkuperäinen arvo")) (defun anna-tieto () tieto) (defun (setf anna-tieto) (arvo) (setf tieto arvo))) Edellä oleva ohjelma määrittelee funktion anna-tieto, joka palauttaa muuttujan tieto arvon. Lisäksi ohjelma määrittelee samannimisen sijoitusfunktion setf-makroa varten, joten sen avulla tieto-muuttujaan voi vaikuttaa. Silmukkatyökalu LOOP Makrot antavat ohjelmoijalle mahdollisuuden kehittää kielen syntaksia, mutta myös monet Common Lispin valmiit ominaisuudet on toteutettu makrojen avulla. Vastaavalla tavalla muokataan myös taulukon tai hajautustaulun elementtejä sekä olioiden sisältämiä arvoja. Siksi on kehitetty yleisfunktion käsite. Common Lispin tilajärjestelmä on kolmeosainen, sillä mukana on myös uudelleenkäynnistys. 21 toistuva kirjoittaminen on tylsää. Seuraava esimerkki lienee suunnilleen ymmärrettävissä, vaikkei makroa ennestään tuntisikaan: (loop with käsitellyt = (make-array 10) for numero from upto 9 for rivi = (read-line virta nil) for käsitelty = (käsittele rivi numero) while rivi collect rivi into rivit do (setf (elt käsitellyt numero) käsitelty) finally (return (values rivit käsitellyt))) Yleiskäyttöinen SETF setf on yleiskäyttöinen sijoitusmakro
Oikeanlainen koodirivien sisentäminen on hyvin monitasoista, eivätkä tavalliset sarkainkohdat riitä. Se on löydettävissä internetistä nimellä ”Common Lisp HyperSpec”. Suositeltava opas on Peter Seibelin ”Practical Common Lisp” (2005), joka esittelee kielen ominaisuuksia käytännönläheisesti. Hyvät editorit myös tunnistavat Lispin listaja muut rakenteet ja sisältävät toimintoja niiden käsittelyyn. Lisätään ”kivi, sakset ja paperi” -peliin yksi yhteinen around-metodi, joka kertoo ottelun alkamisesta ja päättymisestä. Common Lispin opetteluun on olemassa hyviä oppaita mutta valitettavasti ei suomenkielisenä. Paljon kehuja on saanut myös Conrad Barskin ”Land of Lisp” (2010), joka opettaa kieltä hauskalla tavalla peliohjelmoinnin kautta. Ohjelmointi Common Lisp -kielellä alkaa siitä, että hankitaan jokin kielen toteutus ja asennetaan se tietokoneelle. Niiden avulla voi kirjoittaa ohjelmia, jotka ovat siirrettävissä toteutuksesta toiseen. Ohjelmat kyllä ovat tavallisia tekstitiedostoja, mutta niiden kirjoittaminen on vaivalloista, jos editori ei lainkaan ymmärrä Lispkoodia. Editori jo itsessäänkin on suurimmaksi osaksi toteutettu Lispin murteella, Emacs Lispillä, mutta se sopii käytet. Sen jälkeen tulevat Clozure Common Lisp (CCL) ja GNU CLISP. Vapaista avoimen lähdekoodin periaatteella kehitettävistä toteutuksista selvästi suosituin on Steel Bank Common Lisp (lyh. (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 esimerkiksi seuraavan: Ottelu alkaa! Sakset voittaa paperin. Kaupallisia toteutuksia ovat puolestaan LispWorks ja Allegro Common Lisp (ACL). Metodeja ja niiden palauttamia arvoja on mahdollista yhdistää monilla eri tavoilla. On olemassa esimerkiksi before-, afterja around-metodit, jotka suoritetaan ennen varsinaisia metodeja, niiden jälkeen tai niiden ympärillä. Seuraava skriptiesimerkki hyödyntää SBCL-nimistä toteutusta: #!/usr/bin/sbcl --script (write-line "Terveisiä Lisp-ympäristöstä!") Toteutukset tarjoavat myös toisistaan poikkeavia lisäominaisuuksia. On vaikeaa neuvoa, mikä toteutus kenenkin pitäisi valita, mutta aluksi lienee järkevintä turvautua suosituimpiin. Kielen määritelmä ei estä tarjoamasta enemmän kuin vaadittavat toiminnot, ja toisaalta määritelmästä puuttuukin eräitä tärkeitä nykyaikana tarvittavia ominaisuuksia. SBCL). Yksi toteutus kääntää ohjelmat konekielelle ja toinen puolestaan tavukoodiksi. Siksi käytännössä vähimmäisvaatimuksena on, että editori osaa sisentää koodirivejä automaattisesti oikealla tavalla. On kuitenkin olemassa ohjelmakirjastoja, jotka piilottavat toteutuskohtaiset erot yleisen ohjelmointirajapinnan taakse. Määritelmästä puuttuu esimerkiksi verkkoliikenne, prosessin sisäiset säikeet ja rajapinta C-kielisten ohjelmakirjastojen käyttöön. 22 2013.4 ;;; 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. Hakuteokseksi ohjelmoija tarvitsee tietenkin myös itse kielen määritelmän. Mielekäs Lisp-ohjelmien kirjoittaminen vaatii muokkausohjelmalta, tekstieditorilta, hieman enemmän kuin useimmat muut ohjelmointikielet. Määritelmän perusteella on kuitenkin tehty useita tietokoneohjelmia, jotka toteuttavat kielen ja tarjoavat suoritusympäristön ohjelmille. Eroja on esimerkiksi siinä, mihin muotoon ohjelmat käännetään. Mikään toteutuksista ei ole virallinen, sillä virallista kehittäjätahoa ei ole. (ottelu (make-instance 'paperi) (make-instance 'sakset)) Paperi häviää saksille. Kirja on saatavana painettuna, mutta se on myös vapaasti luettavissa internetistä. Ensimmäiset suljesulkeiset. Ottelu päättyi! Määritelmästä toteutuksiin Common Lisp on kielen määritelmä eli vain tekstiä, joka kuvaa kielen ominaisuudet. Nämä kaikki sisältyvät suosituimpiin toteutuksiin. Kielen toteutukset eroavat hieman toisistaan, koska määritelmä antaa vapautta. (ottelu (make-instance 'kivi) (make-instance 'kivi)) Tasapeli. Myös Unix-tyyppisten skriptiohjelmien kirjoittaminen voi olla mahdollista. Vapaiden ohjelmistojen joukossa kehittynein ja suosituin Lisp-kehitysympäristö on GNU Emacs -tekstieditori. Toteutuskohtaisten lisäominaisuuksien hyödyntäminen tarkoittaa samalla sitä, että ohjelma toimii vain kyseisessä toteutuksessa
Kun Emacsiin asentaa Slime-laajennoksen, muodostuu siitä lähes ihanteellinen Common Lispin kehitysympäristö. http://www.paulgraham.com/onlisp.html • McCarthy, John 1979: History of Lisp. Mielestäni Common Lispissä ja sen toteutuksissa yhdistyvät ihanteellisella tavalla matalatasoisten staattisten kielten suoritusteho ja korkeatasoisten dynaamisten kielten ilmaisuvoima. Kaupallisten Common Lisp -toteutusten mukana saattaa tulla oma editorinsa ja kehitysympäristönsä. Lisäksi on olemassa LispForum, nettiselaimella käytettävä keskustelualue, josta voi saada apua Lisp-taipaleella. 23 täväksi muidenkin murteiden kanssa. Jos tämän artikkelin kirjoittajalta kysytään, Common Lispiä ei kannata jättää pelkäksi kokeiluksi, sillä se on paljon muutakin kuin eksoottinen kuriositeetti valtakielten joukossa. Kaikkein tärkeintä on tietysti oma tutkimisen halu ja kokeileminen. 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://www-formal.stanford.edu/jmc/history/lisp/lisp.html • Seibel, Peter 2005: Practical Common Lisp. http://landoflisp.com/ • Graham, Paul 1993: On Lisp. 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/ GNU Emacs ja Slime – vapaa kehitysympäristö Common Lispille.. Koodia voi suorittaa ja testata joustavasti sitä mukaa, kun sitä syntyy. Voiko parempaa olla?. Kummassakin on läsnä lahjakkaita ohjelmoijia, jotka tuntevat Common Lispin läpikotaisin. Apress. Lisp-yhteisö kokoontuu ircissä Freenodeverkon kanavalla #lisp ja Usenetin uutisryhmässä comp.lang.lisp
Näytteistettäessä valitaan lähimmäksi osuva suurempi ja pienempi taso, poimitaan niistä väriarvo lineaarisella suodatuksella ja lopuksi interpoloidaan lineaarisesti näiden välillä. Sarjan tässä osassa herätämme kappaleet uuteen loistoon. Vaihtoehtona on peilata joka toinen toistokerta, jolloin symmetrisestä kuviosta tarvitsee pitää muistissa vain puolet. Koodi. Tekstuurin tekselit harvemmin kohdistuvat täsmälleen näytön pikseleihin. linear filtering). Tekstuurista lasketaan etukäteen puolet pienempiä versioita aina yhden tekselin kokoon saakka. Tässäkin tapauksessa voimakkaasti pienennetty tekstuuri puuroutuu, koska joitakin tekseleitä jätetään välistä. Teksturoitu pinta on paremman näköinen kuin tasavärinen, mutta sekin on OpenGL-ohjelmointi: teksturointi ja valaistus 3D-ohjelmoinnissakin on välillä heittäydyttävä pinnalliseksi ja kiinnitettävä huomio pelkkään ulkokuoreen. mipmapping). Lähimmäksi pääsevät ehkä laboratoriot ja sairaalat, joiden on tarkoituskin olla steriilejä. Toiston voi kytkeä myös kokonaan pois päältä. Luonnossa ei esiinny täsmällistä toistuvuutta, joten tietokonegrafiikassa vaarana on, että pinta näyttää keinotekoiselta. Tapaa kutsutaan teksturoinniksi. Näytteistettäessä voidaan valita lähin tekseli ja käyttää sen väriarvoa sellaisenaan. Mieluummin kannattaa ottaa halutusta pinnasta vain pieni osa ja monistaa sitä. Monissa ihmisen tekemissä pinnoissa esiintyy toistuvia kuvioita. Oletusasetuksena on tekstuurin toistaminen sellaisenaan peräkkäin. texel, TEXture ELement). Tekstuuri on hyvä tehdä riittävän suureksi, ja kovin voimakkaita yksityiskohtia on syytä välttää. Tekstuurin kuvapisteistä käytetään termiä tekseli (engl. Laadukkain tapa tekstuurin pienentämiseen on mipmäppäys (engl. On myös mahdollista käyttää moniteksturointia laajaalaisen vaihtelun lisäämiseksi. 24 2013.4 Teksturointi Todellisessa maailmassa harva pinta on täysin tasainen ja yksivärinen. Koska kolmiulotteisella tietokonegrafiikalla jäljitellään usein todellista maailmaa, on pintoihin saatava eloa jollain tavalla. Lopputuloksena on laatikoitunut kuva tai mössöä, riippuen siitä, suurennetaanko vai pienennetäänkö tekstuuria. Siinä valitaan tekstuurikoordinaattien ilmaisemaa pistettä ympäröivät tekselit ja interpoloidaan niiden välillä. Teksti: Mikko Rasa Kuva: Mikko Rasa, Mitol Berschewsky Ei toistoa: tekstuurin reunimmaiset tekselit venyvät loputtomiin. Tällä voi välttää reunoilla esiintyvät artifaktit tekstuurissa, jota ei ole tarkoitettu toistuvaksi. OpenGL tarjoaa kaksi eri algoritmia toistuvien pintakuvioiden luomiseen. Yksinkertaisimmillaan tekstuuri on kolmiulotteisen kappaleen pinnalle liimattu kuva. Koko seinän tai kadun tekeminen yhtenä tekstuurina vaatisi valtavan määrän tekseleitä, eikä tekstuureja mahtuisi muistiin kovin monta. Osien täytyy kuitenkin sopia yhteen, jotta ne vierekkäin ja päällekkäin sijoitettuna muodostaisivat saumattoman pinnan. Yleensä pinta on vinossa tai tekselit ovat erikokoisia kuin pikselit. Normaali toisto: trolliarmeija hyökkää! Peilattu toisto: nyt niitä kasvaa jo katossakin. Parempi lopputulos saadaan lineaarisella suodatuksella (engl. Sen sisältö voi olla mitä tahansa, esimerkiksi sanomalehden sivu, tiiliseinä tai puunrungon kaarna. Tällaisia ovat vaikkapa seinäpaperi tai katukiveys
Moniteksturointia varten on olemassa funktio glActiveTexture, joka asettaa käytettävän teksturointiyksikön. Tekstuurikoordinaatteina käytetään kolmiulotteista vektoria, ja näytteistys tapahtuu kuution pinnalta vektorin osoittamasta suunnasta. Jos jonkin tason koko on väärä, tekstuuria ei voi käyttää. Se on ikään kuin kaksija kolmiulotteisen tekstuurin välimuoto. Puolikkaat tekselit pyöristetään alaspäin. Jotta kuva näkyisi kappaleen pinnalla, on shaderi saatava käyttämään sitä. Anisotrooppinen suodatus ei ole mukana vielä OpenGL 3.3:n ydinmäärittelyssä vaan löytyy laajennoksesta GL_EXT_texture_filter_anisotropic. OpenGL tukee yksi-, kaksija kolmiulotteisia tekstuureita sekä kuutiotekstuureja. Sidontapisteenä käytetään tällöin yhtä kuudesta vakiosta, jotka kuvaavat kuution sivuja. Parametrina annetaan tekstuuriyksikköä kuvaava symbolinen vakio. On tärkeää huomioida, että kaikki tekstuurioperaatiot kohdistuvat aktiiviseen tekstuuriyksikköön. Se muistuttaa kaksoislineaarista suodatusta, mutta neljän tekselin muodostaman neliön sijaan käytetään jopa 16×2 tekselin suorakaidetta. Ongelma ratkaistaan skaalaamalla normaalikartan arvot 0:n ja 255:n välille tekstuuriin tallennusta varten ja muuntamalla ne shaderissa takaisin vektorimuotoon. Täysikokoinen kuva on taso 0, ja jokainen sitä korkeampi taso on puolet edellistä pienempi. Ne kaikki käyttävät yhteistä oliotyyppiä Texture mutta eri sidontapisteitä. OpenGL ei tarjoa rajapintaa kuvatiedostojen lataamiseen, vaan pikselidata on saatava tiedostosta muistiin muulla tavoin. Ensimmäinen sidonta määrittelee tekstuurin tyypin, eikä sitä voi muuttaa myöhemmin. normalmap). 25 Jos teksturoitua pintaa katsellaan lähes pinnan suuntaisesti, suodatuslogiikka valitsee liian pienen mipmap-tason ja seurauksena on sumentunut tekstuuri. Tekstuurin suodatus-, toistoja muut asetukset asetetaan funktioilla glTexParameteri ja glTexParameterf. volumetric) tehosteisiin tai animoituihin pintoihin. Kuutiotekstuurille ei ole erillistä funktiota, vaan kukin sivu ladataan erikseen kaksiulotteisena tekstuurina. Eksoottisempi tekstuurityyppi on kuutiotekstuuri. Siinä piilee sudenkuoppa, sillä yksinkertaista teksturointia käyttävä koodi saattaa toimia väärin, jos moniteksturoiva osuus jättää aktiiviseksi muun kuin ensimmäisen yksikön. Tekstuurin ei välttämättä tarvitse olla kaksiulotteinen. muodoltaan tasainen. Kun kuva on muistissa, se ladataan tekstuuriin funktiolla glTexImage<N>D, jossa <N> on ulottuvuuksien määrä. Tekstuurin sisäinen säilytysformaatti ja syötettävän datan formaatti annetaan erikseen. Level-parametria käytetään mipmaptasojen lataamiseen. Tekstuuriolion rakentaminen on vasta puoli voittoa. Yleinen käytäntö on, että positiivinen Z-koordinaatti osoittaa ulospäin pinnasta, jolloin neutraali vektori saa väriarvon #8080FF. Jos data-osoitin on null, tekstuurille varataan tilaa, mutta sen sisältö on määrittelemätön. Tämä säästää vaivaa eksoottisempien formaattien kanssa, koska ohjelman ei tarvitse käsitellä esimerkiksi 11-bittisiä liukulukuja. Yleisesti käytetyt kuvaformaatit pystyvät tallentamaan väriarvot ainoastaan 8-bittisinä kokonaislukuina, ja normaalikarttaan tarvitaan liukulukuja –1:n ja 1:n väliltä. Kolmiulotteisia tekstuureja käytetään tilavuudellisiin (engl. Näin voidaan luoda esimerkiksi kuvapuskurina käytettävä tekstuuri eikä tarvitse turhaan varata suurta muistialuetta, joka heti perään vapautettaisiin. Toisaalta kuvatiedostojen sijaan voidaan laskea vaikkapa fraktaaleja suoraan muistissa oleviin puskureihin. Samalla määritellään tekstuurin koko ja väriformaatti. Viimeisenä silauksena pinnasta pitäisi saada epätasaisen näköinen, mutta pienten yksityiskohtien tekeminen kolmioverkolla nostaisi kulmapisteiden määrää liikaa. Yksiulotteista tekstuuria (yksittäinen rivi tekseleitä) voi käyttää esimerkiksi väriliukujen tekemiseen. Kuutiotekstuuri koostuu kuudesta kaksiulotteisesta tekstuurista, jotka on sijoitettu kuution sivuille. Jotta tekstuurista olisi mitään iloa, on siihen ladattava kuva. Koska tekstuureja voi olla käytössä useita samanaikaisesti, on Korkeuskartta, siitä tehty normaalikartta ja valaistu lopputulos.. edellinen numero). Sitä käytetään pinnan normaalin muunteluun kulmapisteiden välillä, jolloin valo heijastuu eri kohdista eri tavalla. Suodatusparametreihin on kiinnitettävä erityistä huomiota, koska GL_MIN_FILTER-parametrin oletusarvo on GL_NEAREST_MIPMAP_LINEAR eikä mipmapeja käyttävä tekstuuri näy, ellei kaikkia mipmap-tasoja ole määritelty. Koska normaalit usein poikkeavat neutraalista vain vähän, normaalikartoista tulee sinisävytteisiä. OpenGL:n tekstuurirajapinta Tekstuurit noudattavat OpenGL:n normaalia oliorajapintaa (ks. Tämän huomaa erityisen selvästi, jos mukana on pistemäisiä valonlähteitä tai heijastuksia. Viimeisellä tasolla tekstuurin koko kaikissa suunnissa on yksi tekseli. Muhkuraisen pinnan illuusion voi luoda myös siihen tarkoitetulla tekstuurilla, niin sanotulla normaalikartalla (engl. Kuutiotekstuureita käytetään yleisesti ympäristökarttojen tai taivaan toteuttamiseen. Erona näillä on asetettavan parametrin tyyppi. Tähän auttaa anisotrooppinen suodatus. Kuvanlatauskirjastojen käyttö ei kuitenkaan kuulu tämän artikkelin aihepiiriin
Ulkotiloissa voi parempaan lopputulokseen päästä käyttämällä puolipallovaloa (engl. Valaistusta laskettaessa on kiinnitettävä huomiota myös siihen, että laskutoimituksiin osallistuvat vektorit ovat samassa koordinaatistossa. Helpompaa onkin laskea valonlähteen suunta pinnan koordinaatistossa. Toinen päätyyppi on pistemäinen valo (engl. Yleensä käytetään pinnasta valonlähteeseen osoittavaa vektoria. Jos pistemäinen ja suunnattu valo yhdistetään, saadaan spottivalo (engl. On kuitenkin myös tilanteita, joissa kulmapisteshaderin täytyy muunnella tekstuurikoordinaattia tai jopa laskea se muiden syötteiden perusteella. Tarkasti todellisuutta jäljittelevä valaistus vaatii paljon pikselikohtaista laskentaa. Esimerkiksi monet katulyhdyt ovat likimain pistemäisiä valonlähteitä. Koska esimerkiksi pelimaailman osien sijainnit on käytännöllisintä ilmaista maailman koordinaatistossa, on grafiikkamoottorin huolehdittava koordinaatistomuunnoksesta, kun se syöttää valojen ominaisuuksia shadereille. Sillä on sekä sijainti että suunta ja lisäksi myös valokeilan leveys. NEAREST-suodatuksella pikselit suurenevat terävärajaisiksi neliöiksi.. spot light). Tämä aiheuttaa tummemman valaistuksen pintojen keskelle ja kirkkaamman kulmapisteiden läheisyyteen. Valaistuksen toteuttaminen on onneksi varsin yksinkertaista. Shaderin puolella näytteistäjiä voi käyttää ainoastaan näytteistysfunktion parametrina. Näytteistysfunktion ensimmäinen parametri on näytteistettävä tekstuuri ja toinen parametri tekstuurikoordinaattivektori. Valaistus Toinen realistisen grafiikan kulmakivi on valaistus. Jokaisen tason voi halutessaan tehdä erikseen. Näytteistäjien on oltava uniform-muuttujia. Mikäli tekstuurin määrittelyssä on puutteita, palautetaan vec4(0, 0, 0, 1). Valaistuslaskennan peruspalikka on vektorien pistetulo. Esimerkiksi kaksiulotteiselle tekstuurille se on texture2D. Isäntäohjelman puolelta niihin asetetaan kokonaislukuarvo, joka kertoo käytettävän teksturointiyksikön järjestysnumeron. Kuten monessa muussakin asiassa, myös valaistuksessa voidaan tehdä valinta suorituskyvyn ja ulkonäön välillä. Vektorit on siksi muistettava normalisoida ennen pistetulon ottamista. Mikäli interpoloinnin päätepisteet poikkeavat toisistaan enemmän kuin aivan vähän, välivaiheet eivät pysy yksikköpituisina. Se perustui verteksikohtaiseen valaistukseen ja oli siten varsin karkea, erityisesti valonlähteiden lähellä. Valaistuksen kirkkaus riippuu valon tulosuunnan ja pinnan normaalin välisen kulman kosinista, joka on yksikkövektoreilla sama kuin pistetulo. Normaalikartat ovat hankalampi tapaus. Kaikki näytteistysfunktiot palauttavat nelikomponenttisen vektorin, joka sisältää RGBA-arvot. Se esitetään kaikkien pisteiden valaistukseen lisättävänä vakioarvona. Yleensä kappaleen kulmapisteille määritellään etukäteen tekstuurikoordinaatit ja kulmapisteshaderi vain välittää saamansa syötteen eteenpäin pikselishaderille. Sitä tarvitaan silloin, kun käytetään normaalikarttoja ja eräitä muita tehosteita. Tekstuuri on myös sijoitettava oikein suhteessa kappaleen muotoihin. Negatiiviset tulokset muutetaan nollaksi. Vektorien interpolointi tapahtuu komponenteittain lineaarisesti. directional light) on niistä yksinkertaisempi. Valonlähteitä on kahta eri päätyyppiä. Tasaisten pintojen valaistukseen käytetään tavallisesti kameran koordinaatistoa. LINEAR-suodatus toimii hyvin valokuvamaiselle materiaalille, mutta tässä tapauksessa siitä on enemmän haittaa kuin hyötyä. Hyvä esimerkki spottivalosta on taskulamppu. 26 2013.4 shaderille välitettävä tieto siitä, mitä tekstuuria tai tekstuureja halutaan käyttää. Tämäkin ominaisuus jätettiin pois muun kiinteän laskennan mukana. omnidirectional light, omni light), jolla on sijainti mutta ei suuntaa. Valaistuksen muodostamiseksi on kullekin pisteelle laskettava erikseen valon tulosuunta. Yksittäisten valolähteiden lisäksi lähes jokaisessa ympäristössä on myös hajavaloa (engl. Tämä voidaan tehdä jo kulmapisteshaderissa ja siten välttää kallista pikselikohtaista laskentaa. Ennen versiota 3.0 OpenGL:n kiinteässä toiminnallisuudessa oli tarjolla valaistusmalli. ambient light), jota tulee kaikista suunnista. Valonlähteen ja normaalin välinen pistetulo lasketaan kuten suunnatulle valolle, mutta tulos skaalataan niin, että vasta täysin valonlähteestä poispäin osoittava pinta on täysin pimennossa. Mipmapeilla voidaan hallita pienennetyn kuvan laatua. Ilman sitä teksturoidutkin kappaleet näyttävät latteilta ja muotoja on vaikeaa erottaa. Pistetulo on positiivinen, kun pinta on valonlähdettä kohti. Esimerkiksi kaksiulotteisen tekstuurin näytteistäjä on sampler2D. Kulmapisteille on sitä varten lisättävä kaksi tangenttia, jotka kertovat normaalikartan orientaation pinnalla. Suunnattu valo (engl. hemispherical light, hemi light), joka on ikään kuin suunnatun valon ja hajavalon välimuoto. Jokaiselle näytteistäjätyypille on vastaava näytteistysfunktio. Se onnistuu käyttämällä erityisiä näytteistäjätyyppejä, joita on kullekin tekstuurityypille omansa. Komponentit ovat normaalisti välillä nollasta yhteen, mutta joillakin väriformaateilla on eri arvoalue. Normaalit tallennetaan karttaan suhteessa kolmioverkon määräämiin pinnanmuotoihin, ja niiden muuntaminen kameran koordinaatistoon vaatisi paljon laskentaa pikselishaderissa. Yleisin esimerkki suunnatusta valosta on aurinko. Se osuu kaikkialle samassa suunnassa, joten laskutoimitukset helpottuvat huomattavasti. Valaistuksen voimakkuuden laskeminen kulmapisteshaderissa ja interpolointi pinnan yli tuottaa vain karkean likiarvon mutta on erittäin nopeaa
Piirtokomentojen vähentämiseksi ja rajapintojen yksinkertaistamiseksi koko esine piirretään yhtenä kolmioketjuna. Rakentajalle annetaan verteksija pikselishaderien lähdekoodit merkkijonoina. Listaus 2: Uniform-muuttujien käsittelyfunktiot. Hätiin tulevat C++:n luokat ja RAII-periaate. Texture-luokka on varsin yksinkertainen. Rakentajalle annetaan parametrina Lunttilappu OpenGL:n tekstuurirajapintaan Funktiot void 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, sizei depth, 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, enum format, 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 parametrit GL_MIN_FILTER suodatus pienennettäessä (minification) GL_MAG_FILTER suodatus suurennettaessa (magnification) GL_WRAP_S ensimmäisen ulottuvuuden toisto GL_WRAP_T toisen ulottuvuuden toisto GL_WRAP_R kolmannen ulottuvuuden toisto Suodattimet GL_NEAREST ei suodatusta GL_LINEAR lineaarinen suodatus GL_LINEAR_MIPMAP_LINEAR lineaarinen suodatus mipmapeilla Toistotavat GL_CLAMP_TO_EDGE ei toistoa, reunimmaiset tekselit jatkuvat äärettömyyteen GL_REPEAT normaali toisto GL_MIRRORED_REPEAT peilattu toisto Sidontapisteet GL_TEXTURE_1D yksiulotteinen tekstuuri GL_TEXTURE_2D kaksiulotteinen tekstuuri GL_TEXTURE_3D kolmiulotteinen tekstuuri GL_TEXTURE_CUBE_MAP kuutiotekstuuri Väriformaatit GL_RED yksi värikanava, ainoastaan R-komponentti käytössä GL_RG kaksi värikanavaa, Rja G-komponentit käytössä GL_RGB kolme värikanavaa GL_RGBA neljä värikanavaa Yllä olevat formaatit eivät määrittele bittisyvyyttä, vaan toteutus valitsee sopivan. int Shader::get_uniform_location(const string &name) { map<string, int>::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); }. Jokaiselle eri uniform-tyypille tarvitaan oma asetusfunktionsa, joista on tilan säästämiseksi listattu tässä vain yksi. Rakentajalle annetaan parametrina taulukot vertekseistä ja indekseistä. OpenGL:n olioiden hallinta käsipelillä käy äkkiä työlääksi. Muuttujien arvoja joudutaan muuttamaan usein, joten GL-kutsujen vähentämiseksi säilytämme niiden sijainnit paikallisesti. Ylikuormituksen ansiosta ne voivat olla samannimisiä. Listauksessa 1 on uusi struktuuri kokonaisuudessaan. Shader-luokka huolehtii shaderien kääntämisestä ja uniform-muuttujien asettamisesta. Kulmapistestruktuuri on saanut uusia jäseniä teksturointia varten. Listauksessa 2 on uniform-muuttujien käsittelyyn käytettävät funktiot. Kun OpenGL-olio luodaan luokan konstruktorissa ja vapautetaan destruktorissa, voidaan niihin soveltaa normaalia C++:n muistinhallintaa. Bittisyvyyden voi määritellä lisäämällä sen vakion perään: GL_fmt8 8 bittiä per komponentti GL_fmt16 16 bittiä per komponentti GL_fmt16F 16 bittiä per komponentti, liukuluku GL_fmt32F 32 bittiä per komponentti, liukuluku 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 ovat teksturointiin tarvittavat muuttujat. U ja v ovat tekstuurikoordinaatit, ja t-alkuisiin muuttujiin tallennetaan pinnan tangentti ja b-alkuisiin binormaali. 27 Esimerkkiohjelma Esimerkkiohjelmassa on tällä kertaa runsaasti uusia asioita, joten käymme tässä läpi vain pääkohdat. Jos käännöksessä tapahtuu virhe, rakentaja heittää poikkeuksen. Esineiden luominen on myös siirretty omiin funktioihinsa, jotka ottavat parametreina luotavan esineen mitat. Object-luokka kuvaa kolmiulotteista esinettä ja pitää sisällään sen tarvitsemat puskurit. primitive restart). Koska useimpia esineitä ei ole mahdollista esittää yhtenä kolmioketjuna, käytämme primitiivien uudelleenkäynnistystä (engl. Uniform-muuttujan asetus kohdistuu aina aktiiviseen shaderiin, joten shaderi on muistettava ottaa käyttöön ensin. Sen avulla tietty indeksi voidaan määritellä tarkoittamaan uuden samantyyppisen primitiivin aloittamista
Sen sijaan pikselishaderi lukee pikselikohtaisen normaalin tekstuurista ja skaalaa rgb-arvot takaisin oikealle arvoalueelle. •?Lue seuraavalla sivulla oleva osio valaistuksen teoriasta ja koeta lisätä shadereihin peiliheijastukset. Lineaarisessa suodatuksessa käytetään kullakin akselilla sekä edellistä että seuraavaa tekseliä ja lasketaan interpolaatioarvo sen mukaan, missä kohtaa tekselien välillä ollaan. Kertolaskuoperaattorilla ketjuttamalla niistä voi kasata monimutkaisempia muunnoksia. Yritä tehdä siitä pistemäinen tai kohdevalo. Tehtäviä ja haasteita: •?Koeta tehdä lisää erilaisia esineitä. OpenGL käyttää normalisoituja tekstuurikoordinaatteja, eli koordinaatit ovat aina nollan ja yhden välillä. Listaus 4: Normaalikarttaa käyttävä pikselishaderi. •?Joitakin esimerkkiohjelman mukana tulevia tekstuureja ei voi toistaa saumattomasti. •?Muuntele kameran reittiä esineiden ympärillä ja laita esineet liikkumaan. Lineaarinen suodatus kaksiulotteisessa tekstuurissa. Sen lisäksi luokassa on ainoastaan sidontafunktio. •?Esimerkkishaderin valonlähde on suunnattu. Pinnan normaalia ei välitetä shaderien välisessä rajapinnassa, koska TBN-avaruudessa neutraali normaali on vakio. Ennen näytteistystä tekstuurikoordinaatista vähennetään lähin pienempi kokonaisluku. Osaatko tehdä niistä (tai jostain muusta kuvasta) saumattomia. Etsi jonkin 3D-tiedostomuodon kuvaus ja yritä kirjoittaa sille latausfunktio, tai keksi oma. Max-funktio estää valaistusarvon muuttumisen negatiiviseksi, jos pinta osoittaa poispäin valonlähteestä. Voimakkuuteen lisätään vielä vakioarvo, jotteivät varjon puolella olevat pinnat olisi täysin mustia. Valon suunnan muunnoksessa TBN-avaruuden matriisi on poikkeuksellisesti oikealla puolella, koska kyseessä on kohdeavaruuden matriisi lähdeavaruudessa esitettynä. 28 2013.4 ladattavan kuvatiedoston nimi. Listaus 3: Normaalikarttaa käyttävä kulmapisteshaderi. Matriisiluokka sisältää myös joukon staattisia funktioita perusmuunnosten luomiseen. Näytteistettävää tekseliä valittaessa tekselin sijainti määräytyy sen keskipisteen mukaan. Listauksissa 3 ja 4 on normaalikarttaa käyttävän kulmapisteja pikselishaderin lähdekoodi. 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; } 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); } tekselin keskipiste näytteistyspiste x = (0.8·0.6)a + (0.2·0.6)b + (0.8·0.4)c + (0.2·0.4)c 20 % 80 % 40 % 60 % a b c d tekselin keskipiste näytteistyspiste x = (0.8·0.6)a + (0.2·0.6)b + (0.8·0.4)c + (0.2·0.4)c 20 % 80 % 40 % 60 % a b c d. Tämä vaikuttaa myös lähimpien tekselien valintaan liKuvakaappaus esimerkkiohjelmasta. Sen seurauksena tekstuuri toistuu loputtomiin. •?Esineiden luominen ohjelmakoodilla on pidemmän päälle hankalaa. Myös vektorit ja matriisit ansaitsevat omat apuluokkansa. Pärjäämme varsin maltillisella määrällä operaatioita. Jos tekstuurin koko on N tekseliä, yhden tekselin koko tekstuurikoordinaateissa ilmaistuna on 1/N. •?Ota valokuvia tapetistasi, talosi seinästä tai pihatiestä ja tee niistä tekstuureja. Ilman suodatusta valitaan yksinkertaisesti lähin tekseli. Teorialisä: tekstuurien näytteistys Tekstuuri koostuu suorakulmaisesta taulukosta tekseleitä, joihin viitataan tekstuurikoordinaateilla. Tilan säästämiseksi muuttujien esittelyt on jätetty pois
Esimerkistä käy käsittelemätön puupinta tai puuvillakangas. Suurempi määrä fotoneita aistitaan kirkkaampana valona. Jos pinta on vinossa valonlähteen suuntaan nähden, sama valomäärä leviää laajemmalle alueelle. Jos fotonikimpun leveys on l ja valaistu alue a, valaistuksen suhteellinen voimakkuus on l/a. Mekanismin hahmottamista helpottaa, jos tarkastellaan valonlähteestä tiettynä hetkenä lähteneitä fotoneja yhtenäisenä pallon muotoisena rintamana. diffuse reflection). Tietokonemonitorin dynamiikka on huonompi kuin silmän, ja lähellä valonlähdettä olevien kappaleiden kirkkaus saturoituu helposti, ellei asialle tehdä jotain. Suurempi eksponentti saa aikaan pienemmän heijastuksen ja vaikutelman kiiltävämmästä materiaalista. Kohtauskulman lisäksi valaistuksen voimakkuuteen vaikuttaa etäisyys valonlähteestä. Säteen ja pinta-alan välillä on neliöllinen suhde, eli säteen kaksinkertaistuessa pinta-ala nelinkertaistuu. Kaukana valonlähteestä eroa ei juuri huomaa.. 1/r². 29 neaarisessa interpolaatiossa, jos koordinaatti on lähellä tekstuurin reunaa. Hajaheijastus: valonsäteet heijastuvat satunnaisiin suuntiin. Näin saadaan piilotettua tasopintojen reunat, mutta näkyviä artifakteja esiintyy silti monissa tilanteissa. Niin ikään Phongin kehittämä on parempi interpolaatioalgoritmi, jossa valaistusarvojen sijaan interpoloidaan pinnan normaalia. Teorialisä: valaistusmallit Todellisessa maailmassa valo koostuu fotoneista, joita valonlähde tuottaa tietyn määrän aikayksikköä kohti. Tämä vaatii enemmän laskentatehoa, koska interpoloitavia muuttujia on yhden sijaan kolme ja vektori pitää vielä normalisoida kunkin pikselin valaistusta laskettaessa. Kääntäen pintaan osuva valomäärä pinta-alaa kohden ja siten pinnan aistittu kirkkaus vähenee. Oudolta vaikuttavat rajat estävät aiemmin mainittujen artifaktien syntymisen. Ensimmäiset valaistusmallit laskivat kappaleen jokaiselle tasopinnalle yhden valaistusarvon, jolloin lopputulos oli varsin kulmikkaan näköinen. Tummat pinnat imevät osan fotoneista. On jopa mahdollista luoda aivan muunlaisia pintarakenteita, kuten valon takaisin tulosuuntaansa heijastava heijastin. Vuosikymmenten varrella on kehitetty useita valaistusmalleja, jotka tuottavat kelvollisen arvion valaistuksesta olematta liian vaativia. Pinta voi olla kaareva, valonlähde pistemäinen tai molempia. Ne heijastuvat pinnasta toiseen, kunnes lopulta päätyvät silmään ja tuottavat valoaistimuksen. Algoritmi kuitenkin pystyy laskemaan spekulaariset heijastukset myös laajojen pintojen keskellä ja mahdollistaa monia kehittyneempiä valaistustekniikoita. Diffuusin valaistuksen voimakkuus lasketaan pinnan normaalin ja valon suunnan pistetulona. Tätä kutsutaan diffuusiksi heijastukseksi (engl. Henri Gouraud keksi laskea valaistusarvot verteksikohtaisesti ja interpoloida niitä pintojen yli. Valomäärä pinta-alaa kohden pienenee vastaavasti, ja sen sanotaan olevan kääntäen verrannollinen etäisyyden neliöön, kaavana ilmaistuna E v . Suunnatut valonlähteet, kuten aurinko, ovat niin kaukana, että etäisyys on käytännössä vakio eikä havaittavaa heikkenemistä tyypillisen pelimaailman alueella tapahdu. Peiliheijastus: valonsäteet heijastuvat samaan suuntaan. Heijastuneen fotonin suunta riippuu pinnan mikroskooppisesta rakenteesta. Tässäkin on kyse saman valomäärän leviämisestä laajemmalle alueelle. Jakolaskulla on ikävä taipumus tuottaa hyvin suuria tuloksia, kun jakaja lähestyy nollaa. Reaaliaikaisessa kolmiulotteisessa grafiikassa on viime kädessä kyse huijauksesta. Himmeä metallipinta ja lakattu puu heijastavat valonlähteet kirkkaina pisteinä tai läiskinä, mutta peilikuvaansa niistä ei näe. Toistuminen voidaan estää rajoittamalla koordinaatin arvo välille 0.5/N – (N– 0.5)/N. Monissa materiaaleissa heijastuskuvio on jotain tältä väliltä. Spekulaarista komponenttia varten lasketaan ensin heijastuvan valon suunta ja muodostetaan pistetulo sen ja katselusuunnan välillä. Erittäin tasaisesta pinnasta, kuten vaikkapa kiillotetusta metallista tai peililasista, lähes kaikki fotonit heijastuvat samaan suuntaan. Peilattu toisto toimii muuten samoin, mutta parittomilla kokonaisluvuilla koordinaatti käännetään ympäri vähentämällä se yhdestä. Joissakin tapauksissa heijastuskuvio riippuu valon tulosuunnasta ja materiaalin sanotaan olevan anisotrooppinen. Helppo ratkaisu on poiketa jälleen tosimaailman fysiikasta ja lisätä jakoviivan alle vakiotermi, joka pitää jakajan positiivisena. Saatu arvo korotetaan potenssiin suuntautuneen heijastuskuvion simuloimiseksi. Blinn–Phong-malli on tehokkaampi suunnattuja valonlähteitä käytettäessä, koska samaa puolivälivektoria voidaan käyttää koko kuvalle. Valon voimakkuus heikkenee etäisyyden kasvaessa.. Normaali toisto päästää koordinaatin läpi sellaisenaan. Täydentämällä kuvio kolmioksi ja merkkaamalla valon suunnan ja pinnan normaalin välistä kulmaa ?:lla nähdään, että l/a = cos?, joka saadaan näppärästi laskettua vektorien pistetulona. Toistoparametrilla voidaan vaikuttaa tekstuurikoordinaattiin ennen näytteistystä. Bui Tuong Phongin kehittämässä, hänen mukaansa nimetyssä Phong-mallissa valaistus jaetaan erilliseen diffuusiin ja spekulaariseen komponenttiin. Mikäli vastakkaisessa reunassa oleva tekseli on erivärinen, syntyy reunaan näkyviä artifakteja. Harjattu metalli on tällainen materiaali. Pistemäiset valonlähteet kuitenkin sijaitsevat pelimaailmassa muiden esineiden keskellä, jolloin etäisyyden vaikutus täytyy ottaa huomioon. Tehokkaimmankaan näytönohjaimen laskentateho ei riitä sellaisiin monimutkaisiin integraaleihin, joita todellisuuden pikkutarkka simulointi vaatii, ainakaan jos samalla halutaan myös sulavaa liikettä. specular reflection). Valon suunta pintaan nähden on harvoin vakio. Tasaiseltakin vaikuttava pinta voi atomien tasolla olla rosoinen, jolloin fotonit heijastuvat satunnaisiin suuntiin. Näin syntyy spekulaarinen heijastus (engl. Phong-mallista käytetään usein Jim Blinnin kehittämää muunnelmaa, jossa spekulaaristen heijastusten laskentaan käytetään valon heijastusvektorin sijasta valonlähteen ja katselupisteen puoliväliin osoittavaa vektoria
Kaikki palvelimet olivat tasa-arvoisia, eikä ollut mitään keskustahoa, joka olisi voinut hallita koko verkkoa. Paljon helpompaa on löytää sivustoja, jotka mainostavat Usenetiä eliittipiirien salaisena piratismiverkkona. Vain paria viikkoa aiemmin Tim Berners-Lee oli kertonut omasta projektistaan julkisesti ”alt. Ärsyttävätkö välkkyvät mainokset, sivujen latausajat, mielivaltaiset moderaattorit tai pakolliset rekisteröinnit. Koska järjestelmää käytettiin alun perin tiedottamiseen, eri aiheiden keskusteluryhmiä kutsutaan yhä nimellä newsgroups, ”uutisryhmät”. Muutaman tunnin sisällä suomalaisen käyttöjärjestelmän syntysanat oli kopioitu ympäri maailmaa, tuhansille koneille, paikallisten lukijoiden nähtäville. Karua mutta toimivaa Nyyssien seuraamiseen tarvitaan lukuohjelma, joka ottaa yhteyden NNTP-palvelimeen. Alkuaikojen keskustelut Usenetissä koskivat lähinnä ohjelmistoja ja tietoverkkoja. Kun koneiden käyttäjät pääsivät näin yhteyteen keskenään, syntyneen verkon nimeksi tuli ”Usenet”, käyttäjien oma verkko. Vuosi oli 1991, ja järjestelmä oli Usenet, tuolloin internetin suosituin tapa käydä julkista keskustelua. Nykyään sitä verhoaa salaperäisyys: keskusteluihin ei törmää tavallisilla www-hauilla kuin satunnaisesti. Vertaisverkkojen esi-isä Usenet syntyi 1970-luvun lopulla Yhdysvaltain Pohjois-Carolinassa. Kahden yliopiston sisäiset tiedotusjärjestelmät alkoivat vaihtaa viestejä keskenään puhelinlinjoja pitkin, ja käyttäjät pääsivät lukemaan toistensa kirjoituksia. Niitä ei voi muokata jälkikäteen eikä. Se on yksi internetin vanhimmista viestintäpalveluista, heti sähköpostin jälkeen. On siis syytä valottaa, mistä on kyse: avoimesta, hajautetusta viestintävälineestä, jolla on paljon tarjottavaa. Pian nyysseistä tuli orastavan internetin vallitseva julkinen keskustelujärjestelmä. Muutaman hetken päästä yliopiston palvelin lähetti viestin koneeseen Espoossa, josta se välitettiin Amsterdamiin ja sieltä yhä eteenpäin. Nyyssien perustoiminnallisuus on vaatimatonta. Usenetiä voikin pitää varhaisena vertaisverkkona, vaikka yksittäiset käyttäjät eivät yleensä pitäneet omaa palvelinta. Jos vastasit myöntävästi, Usenet voi sopia juuri sinulle! Teksti: Lauri Alanko Kuvat: Lauri Alanko, Mitol Berschewsky K un Linus Torvalds oli aloittanut uuden käyttöjärjestelmänsä kehittämisen, hän kirjoitti asiasta lyhyen viestin, jonka lähetti Helsingin yliopiston palvelimelle Minix-käyttöjärjestelmän keskusteluryhmään. Myös monet sähköpostiohjelmat ja jotkin wwwselaimet tukevat nyyssejä suoraan. Nykyajan sosiaalista mediaa ei ollut, sillä koko WWW oli vasta lapsenkengissään. Usenetillä on pitkä ja maineikas historia. Vaikka erillisen ohjelman käyttöönotto vaatii hieman vaivaa, se maksaa itsensä pian takaisin. Pian aiheet levisivät harrastuksiin, tieteeseen ja politiikkaan. hypertext”-ryhmässä, Usenetissä sekin. Termit ovat hämääviä, ja suomeksi on selkeintä puhua tuttavallisesti ”nyysseistä”. Samasta syystä viestejä kutsutaan usein ”artikkeleiksi” ja palvelimia ”uutispalvelimiksi”. Vaikka nyyssien suosio on vähentynyt, on järjestelmä yhä olemassa, ja se toimii pitkälti samalla tavalla kuin kymmeniä vuosia sitten. Viestit ovat yleensä paljasta tekstiä ilman korostuksia tai kuvia. Palvelimia syntyi tuhansittain ympäri maailmaa, ja ne levittivät tuhansia keskusteluryhmiä kaikenlaisista aiheista. Idea osoittautui suosituksi, ja kun tekniikka oli kerran kehitetty, monet muut korkeakoulut ja muutamat teknologiafirmat osallistuivat viestien vaihtoon. Internetin alkuperäinen keskustelujärjestelmä porskuttaa yhä luotettavasti, vailla krumeluureja, kaukana julkisuuden valokeiloista. 30 2013.4 Kulttuuri Usenet Vanhus yhä voimissaan Oletko tuskastunut web-foorumeihin. Harva verkon teknologia on kestänyt aikaa yhtä hyvin. Jos innokkaimmat opiskelutoverit seurasivat samaa ryhmää juuri tuolloin, he saattoivat nähdä viestin ensimmäisinä maailmassa. Lukuohjelmia on niin tekstipohjaisia, graafisia kuin selainkäyttöisiä, ja niitä löytyy kaikille alustoille. 1980-luvulla nopeat tietoliikenneyhteydet yleistyivät. Usenetiä varten luotiin NNTP-protokolla, jonka avulla viestejä voitiin lukea ja lähettää internetin kautta
Näitä niin kutsuttuja ”Big-8-hierarkioita” ovat muun muassa ”comp.*” tietotekniikalle, ”rec.*” harrastuksille ja ”sci.*” tieteelle. Mitään erillisiä yhteisöllisiä toimintoja tai profiileja ei ole, vaan järjestelmä keskittyy pelkkään viestimiseen. Monilla kielillä on oma ryhmähierarkiansa, jota jaetaan ainakin kielen levinneisyysalueen palvelimilla, usein muuallakin. 31 siirtää toiseen ryhmään. Esimerkiksi ”comp. Säännöllinen nimeämiskäytäntö auttaa myös palvelinten ylläpitäjiä määrittämään, kuinka eri ryhmiä kohdellaan palvelimella. Jaottelu auttaa luokittelemaan ryhmät aiheittain ja estämään nimitörmäyksiä. Kaikki Usenetin käyttäjät voivat lukea ja kirjoittaa kaikissa palvelimen tarjoamissa ryhmissä. Visuaalisen kikkailun puute auttaa keskittymään itse asiaan, eikä mainoksia järjestelmän ympärille ole edes mahdollista ympätä. Kaikkia eivät ryhmien hallinnointisäännöt miellytä, ja siksi on olemassa ”alt”-hierarkia, johon kuka hyvänsä voi perustaa uusia ryhmiä ilman byrokratiaa. Viestit aukeavat silmänräpäyksessä, sillä pelkkä teksti ei vaadi kaistaa eikä konetehoa. Lähettäjillä on vain nimi ja osoite, ja joskus harvoin pikkuriikkinen kuvake. Näin Usenetissä voi olla myös paikallisia ryhmiä, joita ei tarvitse levittää ympäri maailmaa. Suomenkielisille ryhmille on kaksi hierarkiaa, hallinnoitu ”sfnet” ja vapaampi mutta heikommin levitetty ”finet”. Kymmenien ryhmien seuraaminen yhden ohjelman sisältä on verrattomasti vaivattomampaa kuin kymmeneen web-foorumiin osallistuminen. Nyyssiryhmillä on pisteillä jaotellut hierarkiset nimet. Usenetin ydin koostuu kahdeksasta ylähierarkiasta, joiden ryhmiä kaikkien nyyssipalvelinten odotetaan levittävän. Nämä ryhmät ovat lähtökohtaisesti vilkkaita, vaikka jotkin niistä hiipuvat ajan myötä. Nyyssien keskustelujärjestelmä on lähtökohtaisesti avoin. Valitettavasti suomenkielisten ryhmien suosio on vähentynyt roimasti, ja vain muutamassa ryhmässä on enää aktiivista keskustelua, sekin varsin pienen piirin kesken. Keskustelua maailmalla... Koska yhdelle aiheelle on aina korkeintaan yksi ryhmä, on Big-8-ryhmien jaottelu varsin siisti. Uusiin ryhmiin tutustumiseen on siis erittäin matala kynnys. Minkä nyyssit menettävät näyttävyydessä, ne voittavat tehokkuudessa ja käytettävyydessä. Ohjelma: Mozilla Thunderbird. Vaikka näihin ryhmiin kirjoittaminen on vapaata, Big-8-hierarkioiden ryhmärakenne on hallinnoitua. Koska ryhmien luomiskynnys on niin matala, ne jäävät usein autioiksi tai niiden sisältö ei ole maailmanlaajuisen levityksen arvoista. Usenet loistaa siinä, mihin se keskittyy. Monimutkaistenkin viestiketjujen läpi on helppoa suunnistaa hyvällä ohjelmalla. Elizabeth Rather, maailman toinen Forth-ohjelmoija, jakaa yhä neuvoja ”comp.lang.forth”-ryhmässä. Erityisesti nimen alkuosa eli ryhmän ylähierarkia määrää, mitkä palvelimet sitä jakavat. lang.c” on C-ohjelmointikieleen keskittyvä ryhmä. Melkein mille tahansa aiheelle voidaan luoda oma ryhmä, mutta sellainen luodaan vain, kun aiheelle on laajaa kiinnostusta. On myös muunkielisiä keskusteluryhmiä. Vaikka palvelimet usein rajoittavat käyttäjäkuntaansa, keskusteluryhmät eivät vaadi erillistä rekisteröitymistä. Edellisten lisäksi on olemassa monia ASCII-taide taipuu monimutkaisiinkin tarpeisiin. Kuvia voi aina linkata webin kautta, ja kaavioiden esittäminen onnistuu monesti perinteisellä ASCII-taiteella. Ohjelma: trn.. Ja kun verkkokatkon aikaan web on täysin käyttökelvoton, nyyssilukijalla voi selailla esiladattuja viestejä paikallisesti ja jopa vastailla niihin. Tämän vuoksi kaikki palvelimet eivät levitä kaikkia ”alt”-ryhmiä tai säilytä niiden viestejä kovin pitkään
Yksi syy on eittämättä webin etulyöntiasema. Se ei ole lähdössä mihinkään. Yhtenäinen, helppopääsyinen, sulava ja skaalautuva järjestelmä on vaihtunut moninaisten käyttöliittymien, rekisteröintien, selausviiveiden ja ylläpitäjien mielivallan vitsauksiin. Hyvällä lukuohjelmalla voi seurata niin paikallisia kuin kaukaisiakin keskusteluja. Nykyään pelätään nyyssien muuttumista tiedostonjakovälineeksi ja varsinaisen keskustelun tyrehtymistä. Monissa ryhmissä on vilkasta keskustelua, ja uusia ryhmiä perustetaan yhä. ...ja omissa piireissä. Kierre vahvistaa itseään, kun ihmiset hakeutuvat sinne, missä muutkin ovat. Kaikesta huolimatta nyysseillä on yhä käyttäjänsä. Kaikille tämä ei riitä. Ylläpito onnistui vakiintuneilla työkaluilla, ja käyttäjät kirjoittivat satoja tuhansia viestejä vuodessa autuaan tietämättöminä alla pyörivästä ikiaikaisesta teknologiasta. Ehkäpä muutkin vielä saavat jonain päivänä tarpeekseen webfoorumien kömpelyydestä ja rajoitteista, ja löytävät tiensä Usenetiin. Hiljattain perustetussa ”comp.sys.raspberry-pi”-ryhmässä saa vastauksia teknisiinkin kysymyksiin Raspberry Pista. Ohjelma: slrn.. Varsinaisen Usenet-palvelimen perustaminen vaatii sopimusta viestien vaihdosta jonkun toisen palvelimen ylläpitäjän kanssa. Tämän vuoksi kenelläkään ei ole erityistä intressiä edistää sen käyttöä. Ohjelma: Pan. 32 2013.4 muitakin hierarkioita. Monet korkeakoulut ja yritykset ovat tehneet näin. Syitä tähän voi vain arvailla. Tällaisia sovelluksia on tarjolla monia, ja onpa tämän jutun kirjoittajakin aikoinaan tehnyt suurehkolle firmalle web-foorumin, jonka alla pyöri nyyssipalvelin. Koska nyyssipalvelimen protokolla on avoin, keskusteluille voi tarjota web-käyttöliittymän niille, jotka eivät nyyssejä muuten harrasta. Kaikki palvelimet eivät levitä niitä, joten niiden ei katsota kuuluvan varsinaiseen Usenetiin, eikä niillä välttämättä tavoita ihmisiä yhtä laajalti kuin Big-8ja alt-ryhmillä. Joskus syyksi on esitetty keskusteluiden taantumista käyttäjämäärien noustessa, joskus taas pelätty, että viranomaiset ja ylläpitäjät sulkevat koko järjestelmän laittomuuksien estämiseksi. Näin ihmiset ohjautuvat web-foorumeille, ennen kuin edes oppivat vaihtoehdon olemassaolosta. Tavalliset web-haut löytävät kyllä www-sivustojen keskustelut, mutta eivät Usenet-viestejä, ellei joku ole peilannut niitä webiin. Web-foorumit ja nyyssiryhmät eivät ole toisiaan poissulkevia ratkaisuja. On siis helpompaa lisätä uusia yksityisiä ryhmiä lukuohjelmaan kuin alkaa seurata uutta webfoorumia säännöllisesti. Usenet on silti tähän asti selvinnyt kaikista uhista. Raskaassa käytössä nyyssipalvelimet myös skaalautuvat mainiosti, sillä järjestelmä tukee luonnostaan synkronointia useamman palvelimen kesken. Nyyssiryhmän perustamalla ei saa mainetta, mainostuloja kuin sananvaltaakaan, vaan ainoastaan paikan, jossa keskustella. Käyttäjämäärät ovat kuitenkin selvästi laskeneet, ja valtaosa internetin julkisesta keskustelusta on siirtynyt lukemattomiin erilaisiin web-foorumeihin. Nyyssit kuolemaisillaan — jo toistakymmentä vuotta Usenetin tuhoa on povattu jo parinkymmenen vuoden ajan. Tämä on hyvä ratkaisu sisäiseen viestintään pienillekin piireille, sillä monet nyyssiohjelmat pystyvät vaivatta seuraamaan ryhmiä useammasta palvelimesta yhtä aikaa. Usenetin ongelma on myös se, että kukaan ei sitä omista. Kuka tahansa voi kuitenkin pystyttää oman eristetyn NNTP-palvelimen ja luoda sinne yksityisiä keskusteluryhmiä. Ja vaikka siitä oppisi, erillisen ohjelman asentaminen voi tuntua kohtuuttomalta vaivalta selainkäyttöisten palveluiden rinnalla
Nykyään yhteydentarjoajat ovat kuitenkin pitkälti luopuneet nyyssien tarjoamisesta, joten Usenetiin pääsy on hieman hankalampaa. Lue lisää käytännön ohjeita Usenetiin pääsemiseen jutun verkkoliitteestä Skrollin sivuilla! http://skrolli.fi/2013.4/usenet Skrolli.fi nyysseissä! Ohjelma: Claws Mail. Ilmaisia lukuohjelmia löytyy kaikille alustoille, ja nyyssipalvelin on perinteisesti ollut sähköpostiin ja kotisivutilaan verrattava peruspalvelu, joka on tullut internet-yhteyden mukana. Webissä on kyllä monien listojen arkistoja, mutta keskustelujen seuraaminen niiden kautta on hankalaa. Toisin kuitenkin kävi. Ja koska tiedostonjakajat mainostavat välinettään nimellä ”Usenet”, on sana saanut verkossa uuden merkityksen, jonka alta ei alkuperäistä keskustelujärjestelmää enää helposti löydä. Ilmaisia palvelimia on kuitenkin yhä olemassa. Näin nyyssien käyttäjän ei tarvitse kuin lisätä Gmanen palvelin ohjelmaansa, jotta saa pääsyn tuhansiin uusiin keskustelualueisiin varsinaisen Usenetin lisäksi. Monet tiedostoja laittomasti jakavat alkoivat pelätä viranomaisten jäljitystä, joten nyyssien binääriryhmien epäsuoruus vaikutti houkuttelevalta: koska kaikki liikenne kulkee nyyssipalvelimen kautta, toimii luotettu palvelin anonymisoijana, joka piilottaa, kuka on tiedoston lähettänyt, ja ketkä sen ovat ladanneet. Vaikka binääriryhmien suosio onkin osoitus nyyssiteknologian monikäyttöisyydestä, on se tehnyt vain hallaa todelliselle Usenetille.. Tiedostojen levitykseen luotiin erilliset ”binääriryhmät”, joita monet palvelimet kohtelivat eri tavalla kuin tavallisia keskusteluryhmiä. Usenetin alkuaikoina verkkoyhteydet olivat vaatimattomia ja tiedostojen saatavuus verkon kautta oli heikkoa. Gmanen NNTP-palvelimen kautta pääsee lukemaan ”gmane”-hierarkian ryhmiä, jotka peilaavat eri postituslistoja. Se oli monille ainoa tapa tarjota omia tiedostoja yleiseen käyttöön. Massiivisen tiedostonjaon vuoksi ilmaiset, keskustelupohjaiset palvelimet eivät enää tue binäärejä ollenkaan, vaikka joskus sellaisille olisi keskustelujen lomassa perusteltua tarvetta. Postituslistoja on kuitenkin vaivalloista tilata ja lopettaa, ja saapuvien listaviestien lajittelu vaatii oman vaivansa. Gmane on palvelu, joka ratkaisee nämä ongelmat tarjoamalla monia julkisia postituslistoja nyyssiryhmien kautta. Gmanella on myös sisarpalvelu Gwene, joka ohjaa webin RSS-syötteitä nyyssiryhmiin. Onkin syntynyt monia NNTP-pohjaisia tiedostonjakopalvelimia, jotka tarjoavat maksullista palvelua innokkaimmille lataajille ja jakajille. Nyyssien maine laittomuuksien välineenä on myös saanut jotkut tahot sulkemaan palvelimensa kokonaan. Binääriryhmät: nyyssien turmio. Tavallisilla käyttäjillä ei ollut tiedostonjakopalvelimia. Käyttäjäkunnan kasvaessa myös binääriryhmien suosio kasvoi, ja ne alkoivat muodostaa valtaosan nyyssipalvelimien kuormituksesta. 33 Gmane ja Gwene – maili ja web nyysseihin Sähköpostilistat ovat nyyssien ohella toinen perinteinen verkon massaviestintäväline. Koska Usenet kuitenkin tavoitti ihmisiä laajalti, ryhdyttiin sitä käyttämään tiedostojenkin levitykseen. • http://gmane.org/ • http://gwene.org/ Kuinka sinne pääsee Nyyssien lukemiseen tarvitsee lukuohjelman ja pääsyn nyyssipalvelimelle. Usenet ei ollut erityisen tehokas tapa levittää tiedostoja, joten www:n ja vertaisverkkopalvelujen kehittyessä binääriryhmien olisi pitänyt vaipua unholaan vanhanaikaisina. Sen avulla monia blogeja ja foorumeitakin voi lukea nyyssiohjelman kautta, joten säännöllinen verkkopäivitysten seuraaminen nopeutuu
Uutistoimistojen piti lähettää paljon tekstiä toisilleen nopeasti, ja siihen käytettiin kaukokirjoittimia, eräänlaisia etäohjattavia sähkökirjoituskoneita. Myöhemmin käyttötavat muuttuivat dramaattisesti, kun koneisiin alettiin kytkeä päätteitä. Teksti: Ville-Matias Heikkilä Kuvat: Manu Pärssinen, Ville-Matias Heikkilä, Wikimedia Commons. Ennen pitkää sikisi myös ajatus tehdä omasta kotitietokoneesta ”keskuskone”, johon toiset voisivat ottaa yhteyksiä. Tietokoneet ovat kuitenkin viestineet toisilleen jo paljon tätä ennen, ja Internetilläkin meni vuosikausia, ennen kuin se syrjäytti muut verkot. Kirjoittimen ja puhelinlangan väliin tarvittiin vain modeemi eli modulaattori-demodulaattori, joka muuntaa merkkidataa äänitaajuuksiksi ja takaisin. Tietokoneet, päätteet ja modeemit kiinnostivat myös tekniikkaharrastajia, ja monet rakensivat niitä jopa itse. Hyvästit reikäkorttipinoille Tietokoneet olivat alkuvuosikymmeninään isoja ja kalliita, ja harva pääsi käyttämään niitä henkilökohtaisesti. Ensimmäinen laaja tietokoneverkko oli vuonna 1958 jenkkiarmeijan käyttöön ottama SAGE (Semi-Automatic Ground Environment). Se käytti yhteydenpitoon enimmäkseen tavallisia puhelinyhteyksiä ja modeemeja. Maailman ensimmäisen julkisen harrastaja-BBS:n pystyttivät chicagolaiset Ward Christensen ja Randy Suess helmiInternetit ennen Internetiä – modeemipurkkien nousu ja tuho Suomi on ollut nyt 25 vuotta kiinni Internetissä. Ensimmäiset puhelinmodeemit otettiin käyttöön 1940-luvulla, joten alusta asti oli valmiina tekniikka tietokoneiden kytkemiseksi puhelinverkkoon. Päätteet liitettiin usein modeemeilla, joten käyttäjä saattoi olla eri kaupungissa kuin tietokone. Kaukokirjoittimilla oli oma Telex-verkko, mutta puhelinverkko ulottui laajemmalle ja oli usein edullisempi. Tekniikkaan paneutunut opiskelija saattoi näin käyttää koulunsa keskuskonetta kotoa käsin. Kyseessä oli tietenkin puhelinverkko. Puhelinverkko oli houkutteleva ratkaisu myös muun kuin puheen välittämiseen. Ositusajossa useammat käyttäjät komensivat samaa keskustietokonetta samanaikaisesti eri päätteiltä ja saivat vasteet liki välittömästi. 34 2013.4 Kulttuuri Koneetkin puhuivat puhelimessa Sähköisiä tietoverkkoja ruvettiin rakentamaan jo 1800-luvulla, ja eräs niistä levittäytyi myöhemmin lähes joka kotiin. Käyttäjät suunnittelivat ohjelmat paperilla, lävistivät ne reikäkorteille, toimittivat korttipinot konesaliin eräajettavaksi ja saivat ohjelman tulosteet aikanaan itselleen. Siviilipuolella varhaisia omaksujia olivat pankit, joiden keskustietokoneet soittelivat toisilleen vaihtaakseen rahaliikennetietoja. Suomalaiset olivat alusta asti innostuneet verkon rakentamisesta: 1890-luvulla Helsingissä oli jo useita puhelimia sataa asukasta kohden, mikä oli kärkilukuja koko maailmassa
Sivustolle kirjaudutaan käyttäjätunnuksella ja salasanalla, joiden saamiseksi on vastailtava muutamiin kysymyksiin, lähinnä annettava henkilötietoja. Tyypillinen purkki toimi kuitenkin harrastajan kotikoneessa. Suomen suurin purkki oli vuosina 1994–2002 toiminut MBnet, jossa oli tilaa yli 500 yhtäaikaiselle käyttäjälle. Kun sivustolle yrittää päästä, se on todennäköisesti varattu. Foorumiviestejä tai tiedostolistoja ei kannata jäädä selailemaan, vaan ne on hyvä ladata omalle koneelle tutkittavaksi. Mustalle pohjalle ilmestyi verkkaisesti listoja komennoista, joita kirjoittamalla pääsi liikkumaan järjestelmässä alueelta toiselle ja tekemään eri asioita. Foorumin lisäksi sivustolla on alue, josta saa ladattua ohjelmia ja muita tiedostoja ja jonne voi lähettää omia tiedostojaan. Isompiakin purkkeja toki oli. Jopa piraatit vaihtelivat ohjelmakopioitaan aina vuosikymmenen lopulle asti etupäässä postitse, levykkeillä. Purkin palvelinkone sijaitsi useimmiten ylläpitäjänsä, systeemioperaattorin eli SysOpin kotona. Kun jonnekin vihdoin pääsee sisään, on yhteysaikaa käytettävissä rajoitetusti, esimerkiksi puoli tuntia. Suomen ensimmäisen vastaavan järjestelmän perusti kesäkuussa 1982 Seppo Uusitupa, ja se oli nimeltään CBBS Helsinki. Freenet Finland oli monille purkkikäyttäjille ensikosketus Internetiin.. Purkkien toiminta BBS-järjestelmiä kutsuttiin Suomessa 1980-luvulla sähköisiksi postilaatikoiksi tai bokseiksi mutta myöhemmin myös kannuiksi ja purkeiksi. BBS-tyylistä viestintää haluttiin markkinoida myös massoille: teksti-tv:n serkkuna 1970-luvun lopulla syntyneen videotexin piti mahdollistaa joka kodin tietoverkkoyhteydet helppokäyttöisten päätelaitteiden avulla. Odotellessa voi yrittää päästä jollekin toiselle sivustolle. Lisäksi omassa osiossaan voi esimerkiksi pelata pelejä muita käyttäjiä vastaan. Osasyynä oli varmasti se, että modeemin käyttöönotto oli tsaarinaikaisen lennätinlain vuoksi pitkään harrastajille melko kallista. Suomalaisia videotex-palveluja olivat Telesampo ja Infotel, joita käytettiin etenkin pankkiyhteyksiin. Järjestelmä oli nimeltään yksinkertaisesti CBBS (Computerized Bulletin Board System) ja se toimi Altairyhteensopivalla koneella. 35 kuussa 1978. Monet olivat aivan oikeissa laitetiloissa, monilinjaisia ja joskus jopa maksullisia. BBBS-ohjelmistoa käyttävän purkin valikkoja. Järjestelmä löi kuitenkin kunnolla läpi vain Ranskassa, jonka MinitelKaukokirjoitin. Viestien vastaukset kannattaa kirjoittaa omalla koneella erityisellä offline-lukuohjelmalla ja lähettää ne pakettina takaisin sivustolle vaikka seuraavana iltana. Kuvittele sivusto, jolla on keskustelufoorumi. Purkkien toimintaa ja viehätystä oli niiden kulta-aikana vaikeaa selostaa maallikoille, mutta nykyisin se onnistuu vertaamalla niitä WWW-sivustoihin. Yhteysaika kannattaa käyttää tehokkaasti. Se vapautuu ehkä vartin tai tunnin kuluttua. Ylläpitäjä seuraili usein käyttäjiensä touhuja ja saattoi tulla välillä chattailemaan kahden kesken. Lisäksi yhteys maksaa vähintään paikallispuhelumaksun. Purkkeihin soittelu ei vielä 1980-luvulla ollut kovin yleistä suomalaisten tietokoneharrastajien keskuudessa. Tietenkään BBS-purkit eivät olleet mitään sivustoja, vaan yhteystapana oli suora, merkkipohjainen pääteyhteys. Foorumilla kirjoittelee useita kymmeniä ihmisiä kaikesta mahdollisesta. Kuvittele seuraavaksi, että sivustoa pystyy käyttämään vain yksi käyttäjä kerrallaan. Tällainen sivusto on helppo käsittää useimmille Internetin käyttäjille. Osa oli auki ympäri vuorokauden, osa vain öisin. Purkit oli usein sisustettu persoonallisiksi värikkään merkkigrafiikan avulla, ja niihin soittaminen tuntui parhaimmillaan vierailulta omistajansa kotiin
Nordunet yhdistyi Internetiin marraskuussa 1988, kun Tukholman ja Princetonin välille avattiin 56 kilobitin satelliittiyhteys. BBS-maailmassa myöhemmin yleistynyt Fidonet perustui myös viestipakettien vaihtamiseen. Decnetissä oli vain VAXeja ja muita Digitalin koneita. Kiinteät linjat olivat fyysisesti samanlaisia kuparijohtoja kuin puhelinlangatkin, mutta ne oli kokonaisuudessaan varattu kahden pisteen yhdistämiseen. Pakettiverkot tulivat Suomeen vuonna 1983, kun Postija telelaitos alkoi tarjota Datapak-nimistä X.25-verkkoa. Yhdysvallat oli kuitenkin varuillaan Suomen suhteen, olihan se aivan Neuvostoliiton kupeessa. Maailmojen kilpajuoksu Purkit olivat vielä 1990-luvun alussa selvästi eri maailmassa kuin pakettiverkot. Nykyään harva tunnistaa esimerkiksi EARNia nimeltä, vaikka se oli monen vuoden ajan suosituin tietoverkko Euroopan yliopistoissa. Postisäkkejä vaihdettiin yleensä vain kerran pari päivässä, joten laajemmissa UUCP-verkoissa viestit matkasivat päivätolkulla. Unix-koneet puhuivat vain IP:tä, mutta VMS-koneet puhuivat kaikkia protokollia. Funet siirtyi kuitenkin joidenkin vuosien päästä kiinteisiin 64 kilobitin vuokralinjoihin, kun runsas sähköpostiliikenne aiheutti sille satojentuhansien markkojen laskuja. EARN oli IBM:n perustama ja sponsoroima eurooppalaisten yliopistojen verkko, jonka hienouksia olivat postituslistat ja RELAY-pikaviestit. Ainoa kiinteä ulkomaanyhteys oli EARNin kautta, joten kansainväliset Unix-sähköpostit ja -nyyssit jouduttiin vielä vuonna 1987 siirtämään modeemeilla. Asiakas maksoi linjasta kiinteää vuokraa ja sai sen koko kapasiteetin omaan käyttöönsä. Internet syrjäytti vähitellen muut protokollat yliopistoverkossa. Yliopistoilla oli 1980-luvun alussa Unix-koneita, jotka tukivat käyttäjien välistä sähköpostia (mail) ja julkisia keskustelualueita (news). Verkkoa käyttivät aluksi etenkin pankit, mutta myös samana vuonna alulle pantu Suomen yliopistojen Funet-verkko päätti ottaa sen käyttöönsä. Linjojen risteyksissä on reitittimiä, jotka ohjaavat paketteja osoitteen mukaan eteenpäin. 36 2013.4 palvelulla oli parhaimmillaan miljoonia käyttäjiä. Suomessa Internet-tyyppinen viestintä alkoi kuitenkin täysin modeemivetoisilla verkoilla. Unixissa oli ohjelma nimeltä Unix to Unix Copy (UUCP), jonka avulla Unix-koneet pystyivät siirtämään keskusteluja toisilleen modeemiyhteyksien yli. Laskutus perustui siirretyn datan määrään. Samalla armeijan koneet erkanivat omaksi verkokseen, ja jäljelle jäänyttä osaa alettiin kutsua nimellä Internet. Eräs suosituimpia purkkipelejä, Legend of the Red Dragon eli LORD.. Arpanetin linjoilla siirrettiin dataa aluksi 50 kilobitin sekuntinopeudella – parikymmentä kertaa nopeammin, kuin mihin tavallisella puhelinmodeemilla pääsi. Pakettiverkon ideana on, että verkkoon kytketyt koneet lähettävät linjalle datapaketteja, joihin kuuluu vastaanottavan koneen osoite. Tästä päästiin eroon seuraavana vuonna, kun Pohjoismaiden yliopistoverkot yhdistettiin 64 kilobitin linjoilla Nordunet-verkoksi. Isot koneet ja yliopistot Samaan aikaan, kun harrastajat rakensivat ensimmäisiä modeemiboksejaan, keskuskoneiden maailmassa rakennettiin jo pakettiverkkoja kiinteiden yhteyksien varaan. Suomen verkko yhdistettiin kansainväliseen UUCPverkkoon vuonna 1983. Koneet myös kuuntelevat linjaa jatkuvasti ja ottavat talteen itselleen osoitetut paketit. Euroopassa vastaava verkko oli ranskalaisten Cyclades, ja hahmoteltiinpa Suomeenkin samantapaista yliopistoverkkoa jo vuonna 1974. Vielä saman vuoden puolella Pohjoismaiden Internet-yhteys pistettiin poikki viikoksi, kun joku innokas suomalaisopiskelija oli kolkutellut jenkkiarmeijan koneita. Arpanet käytti aluksi NCP-nimistä paketointikäytäntöä mutta vaihtoi vuonna 1983 Internet-protokollaan eli IP:hen. Yhdysvaltalaiset olivat vuodesta 1969 lähtien rakentaneet Arpanetiä, johon kuului puolustushallinnon ja yliopistojen koneita. Useimpien BBS-käyttäjien käsitys Internetistä olikin melko epämääräinen. Joillakin purkeilla oli jonkinlainen yhteys Internetin puolelle esimerkiksi UUCPHaciend el Bananasin ansi-grafiikkaa. Yliopistoissa oli monien eri valmistajien koneita, joilla oli kaikilla eri verkkotekniikat, ja Funetissa liikkui kaikkien paketteja sekaisin
Purkkitilanne 2013 Sivusto telnetbbsguide.com listaa tätä kirjoitettaessa 350 toiminnassa olevaa BBS:ää. Äänensä kuuluviin saaminen on nykyisin helppoa myös teknisesti tumpelommille, ja kiinnostavan sisällön löytäminen kohinan keskeltä on vaivattomampaa. Uudesta palvelusta puuttuu aina jokin ratkaiseva ominaispiirre, eivätkä monet sopeudu uuteen. Kiinteät laajakaistayhteydet saivat monet ahkerat käyttäjät luopumaan lankapuhelinliittymistään ja siten myös purkeista. Monet purkkiyhteisöt hajosivat kokonaan, koska netin puolelta ei löytynyt sopivaa kokoontumispaikkaa. Suomalaista Batmudia pelaa enimmillään noin 200. net), Rampton Bird’s Box (rbb.bbs.fi:32) ja tietokonetaiteeseen erikoistunut Haciend El Bananas (haciend.bbs.fi). Ensi vuosikymmenellä Facebook on jo vaihtunut johonkin aivan muuhun. Olo oli kuin maalaiskylän kasvatilla suurkaupungin keskellä. Muutos pakottaa kuitenkin myös luopumaan: kun suositun nettipalvelun kukoistus loppuu ja käyttäjät siirtyvät toisaalle, ei samanlainen yhteisöllisyys enää toistu. Tutkijoiden, opiskelijoiden ja tietokoneihmisten perässä seurasivat vähitellen kaikki väestökerrokset. Purkit koettiin selkeinä ja tiiviinä pienyhteisöinä, joissa samanhenkiset ihmiset jutustelivat kaikesta mahdollisesta keskenään. Internet on muuttunut vuosien mittaan, välillä jopa parempaan suuntaan. Mudit voivat kuitenkin edelleen hyvin wowien ja lolien noususta huolimatta: suurimmissa mudissa on mudstats.comin mukaan parhaimmillaan yli 800 yhtäaikaista pelaajaa. Sähköposti vastasi yksityisviestejä, nyyssit julkisia viestejä ja IRC monilinjaisten purkkien chatteja. Vuosikymmenen jälkipuoliskolla netti alkoi syödä BBS-maailmaa. Useimmille Internetin palveluille oli tuttu vastine BBS-maailmassa. Alkuvuodesta 1996 oli Suomessa julkisia 24H-purkkeja vielä yli 500, mutta vuonna 2000 enää joitakin kymmeniä. Ehkäpä silloin myös BBS-historia voidaan nostaa ansaitsemaansa arvoon, kukapa tietää?. Lähteitä ja muuta mediaa: • Funet – Suomen tie Internetiin (CSC:n julkaisu, 2008) • BBS-harrastajat 1990-luvun tietoverkkokulttuurin murrosvaiheessa (Mikko Hirvonen 2010, pro gradu, Digitaalisen kulttuurin laitos, Turun yliopisto) • Funetista Facebookiin: Internetin kulttuurihistoriaa (Helsingin yliopisto, 2009) • BBS: The Documentary, amerikkalaisen Jason Scottin dokumenttisarja. Modeemit yleistyivät 1990-luvulla, mikä näkyi sekä BBSettä Internet-käytön kasvuna. Tällöin Suomeen ilmestyi lukuisia nuorison saavutettavissa olevia palveluntarjoajia. IRC oli toki olemukseltaan hyvin erilainen, mutta se onnistui vangitsemaan purkeille ominaisen tiiviin yhteisöllisyyden paremmin kuin esimerkiksi foorumit tai nyyssiryhmät. Yhteisöt hajoavat, ja monet jäävät kaipaamaan entistä. Paikallispuhelualueiden rajat synnyttivät kuhunkin maakuntaan oman purkkiskenen, jonka jäsenet tapasivat tosiaan myös elävässä elämässä. Ikuisen syyskuun loppua odotellessa Internet on Suomessa olonsa aikana kasvanut osaajaeliitin salaseurasta koko kansan perusoikeudeksi. PTT BBS, jättimäinen taiwanilaispurkki. Monet käyttivät ahkerasti molempia, mutta eri tarkoituksiin. Koukuttava nettiyhteisöllisyys tuli Pihtiputaan mummollekin tutuksi viimeistään Facebookin myötä. Monet nykyboksit ovat varsin autioita – kuin museoesineitä, jotka on jätetty esille, vaikka käyttäjät ovat kadonneet. Viimeistään siinä vaiheessa suuretkin kansanjoukot ovat alkaneet ymmärtää Internetin historiallisuutta – sitä, kuinka tietoverkkokulttuurissakin on murroksia ja uusi rakentuu aina vanhan päälle. Sitkeimmät systeemioperaattorit siirsivät purkkinsa Internetin puolelle joko sellaisinaan tai nettifoorumeiksi muutettuina, mutta harva menestyi enää tämän jälkeen. On kuitenkin edelleen myös aktiivisia ja hyvin suuria järjestelmiä. Parhaiten koossa pysyivät ne yhteisöt, jotka vaihtoivat purkit IRC-kanaviin. Uskollisimmat BBS-intoilijat lähtivät vasta pakon edessä, eikä siirtymä ollut helppo. 37 verkon kautta, ja olipa Suomessa jo pari kiinteästi nettiin kytkettyä BBS:ää yliopistojen tiloissa. Useat näistä olivat itsekin purkkeja, joiden kiinteä Internet-linja kustannettiin käyttäjien maksamilla muutaman kymmenen markan kuukausimaksuilla. Vilkkaita keskustelualueita oli tuhansia, ja niitä saattoi löytää hyvin kapeille ja erikoisille aihepiireille. Käyttöliittymät olivat edelleen merkkipohjaisia, käyttöajat rajoitettuja ja linjat tuuttasivat usein varattua. Internet oli kasvottomampi, kaoottisempi ja joka suuntaan rajaton ”tiedon valtameri”, josta haettiin erityisaiheisiin liittyviä tiedostoja, keskusteluja ja asiantuntemusta. Listalla on myös kolme suomalaista purkkia: BBBSohjelmiston tukipurkki BCG-Box (bbbs. Chateissa ja MUD-peleissä oli käsittämätön määrä samanaikaisia käyttäjiä kymmenistä eri maista, eivätkä valtioiden rajat tuntuneet missään. Mittakaava oli kuitenkin aivan toinen. Valtaosaan saa yhteyden vain telnetillä, mutta muutamalla amerikkalaisboksilla on myös puhelinlinja. Monet harrastajat ottivat ensimmäiset Internet-yhteytensä noin vuonna 1993. Länsimainen BBS-skene on läheisessä suhteessa MUD-peleihin, eikä purkin ja mudin raja ole aina edes kovin selvä. Taiwanilaisessa PTT:ssä on parhaimmillaan yli 150 000 yhtäaikaista käyttäjää
Ranskalainen Claude Chappe kehitti järjestelmän, joka koostui korkeille mäille rakennetuista torneista. Silloinkin läheteltiin statuspäivityksiä ja tuskailtiin salakuuntelun vuoksi. Optisia lennätinketjuja oli pian Keskija Etelä-Euroopassa useissa maissa. Sähköttäjä lähetti viestin eteenpäin lennätinlaitteella muuntamalla sen morseaakkosten mukaiseksi ”pisteiden” ja ”viivojen” muodostamaksi koodiksi. Sähkeen hinta määräytyi viestin kulkeman matkan perusteella. Teksti: Ronja Koistinen Kuvat: Ignacio Cobos Rey, Wikimedia Commons, Flickr-käyttäjä Groume T eliaSonera ja Itella lukeutuvat Suomen viestinnän infrastruktuurille tärkeimpien yritysten joukkoon. Kulttuurisessa mielessä varhainen viestijärjestelmä sisälsi kuitenkin tuttuja nykyajan ilmiöitä. Sähkeet reititettiin käsin karttojen ja taulukoiden avulla keskustoimistojen kautta, ja käytyään läpi tarvittavat hypyt viesti pääsi lopulta perille vastaanottajalle. Sähköistä lennätintä edelsi Napoleonin Ranskassa 1700-luvulla keksitty optinen lennätin. Jäljennöksen luovuttanut käyttöön Bostonin yleisen kirjaston Norman B. Mikä lennätin. Sonera oli ennen Tele ja Itella oli Posti, mutta sitä ennen ne olivat valtion liikelaitos nimeltä Postija telelaitos. Myös Venäjän ensimmäinen optinen lennätinlinja rakennettiin Pietarin ja Laatokan välille 1824. Vielä aiemmin, vuoteen 1981 asti, laitoksen nimi oli Postija lennätinlaitos. Kirjojen julkaiseminen olikin pitkään isoa liiketoimintaa. Ruotsista ja Suomesta ei tiettävästi tunneta raunioita. 1860-luvulle tultaessa oli olemassa maailmanlaajuinen lennätinjärjestelmä, verkosto piuhoja ja viestikeskuksia, joita pitkin operaattorit lähettivät sähkösanomia paikasta toiseen. Niissä oli jatkuva miehitys. Tämä artikkeli ei ole historiikki valtion omistusten yksityistämiskehityksestä, mutta organisaatioiden kautta kehityksen käänteisiin on helppo sukeltaa nykyisyydestä käsin. Merkit luettiin seuraavalta tornilta kaukoputken avulla ja viesti välitettiin eteenpäin seuraavalle tornille. Suomi kuului tuolloin Ruotsiin, jossa hääri toimelias vapaaherra Abraham Niclas Edelcrantz. Sen sijaan monien maiden paikannimistössä on jäänteitä näiden tornien sijainneista. Isossa-Britanniassa on paljon Telegraph Hill -nimisiä, Ruotsissa ja Suomen eteKartan lähde: International Telegraph Bureau, Bern, Sveitsi, 1901. Viestin lähettääkseen asiakas käveli konttoriin ja kirjoitti paperikaavakkeelle haluamansa viestin ja vastaanottajan katuosoitteen. Kulttuuri. Joissakin ketjuissa lähetettiin viestit suoraan aakkosia merkitsemällä, kun toisissa taas viestittiin numeroita, joiden merkitys luettiin erityisistä koodikirjoista. Jo edellisellä vuosisadalla kukoisti maapallon joka kolkkaan levittäytynyt, yötä päivää piipittävä ja nakuttava sähköinen viestijärjestelmä, lennätinverkko. Hän toi lennätinteknologian Ranskasta Ruotsiin. Sähköisten viestien välittämistä globaalin mittakaavan verkossa ei kuitenkaan keksitty 1980-luvulla. 1790-luvulla Ruotsin itärannikolle ja Länsi-Suomeen rakennettiin optisia lennätintorneja, joista oli Ruotsille suuri hyöty Suomen sodassa 1808–1809 Venäjää vastaan. Leventhal Map Center. Meemit ja omaleimaiset sukupolvikokemukset puhuttavat. Alkuperäisistä optisista lennätintorneista on säilynyt varsin vähän arkeologisia jäänteitä. Ruotsalaisten rakentamia torneja oli ainakin Ahvenanmaalla, mutta venäläiset tuhosivat ne sodan jälkeen. Tornit muistuttivat vähän tuulimyllyjä, sillä niillä viestittiin liikuttamalla merkinantovipuja pitkien sauvojen päässä. Myös Suomen ensimmäinen kosketus lennättimiin tapahtui jo 1700-luvulla. Aikaamme leimaa internet ja sen syövereissä vellova kulttuurin ja viestinnän meri. Välillä on hyvä palauttaa mieleen, että vaikka yhtiöiden toimialat eivät paljoa kohtaa, niillä on yhteinen menneisyys. 38 2013.4 Lennätin – 1800-luvun netti Sana lennätin tuo useimmille mieleen lähinnä morseaakkoset ja sähköisen piipityksen
Viestit eivät voineet koskaan olla täysin luottamuksellisia, sillä jokaisessa linkkitoimistossa oli vastassa ihminen. Ensimmäinen sotilaallinen koodinmurtamiseen erikoistunut organisaatio oli ranskalainen Bureau du Chiffre. Sähköttäjät kommunikoivat toisilleen reaaliaikaisesti vaihtamalla erilaisia statusviestejä ja arkisia kuulumisiaan. Morsen lyhyisiin ja pitkiin signaaleihin perustuva järjestelmä mullisti sähkötysnopeuden. Selkokielisen tekstin lukeminen ja lähettäminen oli myös paljon nopeampaa kuin pikkutarkan merkkisotkun. Espanjassa säilynyt optisen lennätintornin raunio. Näin viestin matkalla napannut taho ei voinut purkaa ainakaan koko sisältöä, vaikka olisikin tiennyt, minkä merkkiseen koodikirjaan salakirjoitus perustui. Internet reitittyy automaattisesti koneiden avulla, mutta sähkeitä reitittivät ihmissähköttäjät käsityönä. Kaikilla muilla kielillä lähetettyjä viestejä kohdeltiin koodina ja niistä perittiin korkeampi taksa. Viestintä oli täysin reaaliaikaista vuorottelua linjalla, toisin kuin viralliset asiakkaiden tilaamat sähkeet, jotka kirjattiin paperille sisään tullessa ja vastaanottajalle toimitettaessa. Sähkeet laskutettiin sanamäärän perusteella, ja toiminnan kannattavuus kärsi, koska salauskoodit lyhensivät viestejä huomattavasti. Tämä viestikieli muuttui puolivirallisiksi lyhenteiksi ja jargoniksi hyvin varhain. Tällöin sähköttäjät tapasivat viettää aikaa jutellen naapurikeskusten kanssa. Syntyi erilaisia yhteistyösopimuksia, ja 1865 perustettiin International Telegraph Union eli ITU. Päivittäiseen linjan hoitamiseen kuului sellaisia luonnollisia lyhenneilmaisuja kuin ”hyvää huomenta”, ”olen valmis vastaanottamaan” ja ”toista edellinen”. (ITU on olemassa edelleen, joskin sen nimi on vaihtunut muotoon International Telecommunication Union.) ITU närkästyi salauskoodeista ja siansaksan lähettämisestä. Suomessa käytettävät morseaakkoset A ·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 --·· Å ·--·Ä ·-·Ö ---·. Sähköttäjä kuunteli viestin linjalta, kirjoitti sen paperille ja sähkötti eteenpäin seuraavaan toimistoon kohti viestin määränpäätä. Yksinkertaisella sähkötysavaimella saattoi taitava sähköttäjä viestiä hyvinkin nopeasti. Asiasta kiisteltiin pitkään palveluntuottajien ja asiakkaiden välillä. Valtiot valvoivat ennen pitkää myös kotimaanliikennettä. Jotkin kirjat olivat koko painokseltaan samanlaisia, mutta monissa oli myös mahdollisuus omiin merkintöihin. Järjestelmät toimivat monissa paikoissa pitkään niin, että esimerkiksi New Yorkin ja Bostonin välistä liikennettä hoitivat joka päivä kummassakin päässä samat sähköttäjät. Muutamia suomenkielisiäkin Telegrafivuoria ja -kallioita on siellä täällä. Sähköttäjien, kilpailijoiden ja vieraiden valtojen silmien välttämiseksi alettiin käyttää salakirjoitusta. Lopulta ITU antoi ukaasin, että salausta sai käyttää mutta koodin tuli koostua luonnollisista sanoista kahdeksalla sallitulla kielellä: englanti, espanja, hollanti, italia, latina, portugali, ranska ja saksa. Duunikavereita ja romanssia Vaikka sähkösanomat sinänsä ovatkin enimmäkseen verrattavissa nykyajan sähköpostiin, kulki linjoilla paljon muutakin liikennettä. Myös sotilastiedustelu kiinnostui lennätinliikenteestä melko pian. 39 lärannikolla taas Telegrafberget-nimisiä kukkuloita. Nämä ihmiset eivät välttämättä koskaan tavanneet toisiaan, mutta vuosikausien pituiset ihmissuhteet hoituivat linjoja pitkin aivan samoin kuin nykyäänkin.. Operaattori kuulee kaiken Lennättimessä ja nykyajan internetissä olennainen ero on reitityksessä. Sähköttäjillä oli pelkästään lennättimen välityksellä hoidettuja ystävyyssuhteita naapurikaupungeissa tai pidemmälläkin työskenteleviin sähköttäjiin. Koodikirjat tulivat uudelleen muotiin, ja kirjapainot alkoivat suoltaa kaupallisia salauskirjoja. Näiden välille saattoi syntyä vuosikausien työparisuhde, johon mahtui ruuhkahuippujen välillä epävirallista rupattelua ja kuulumisten vaihtoa. Kirjoista saattoi esimerkiksi ennalta sovitusti vaihtaa sivuja keskenään tekemällä sivunumerointiin uudelleenohjauksia. Brittien verkosta oli yhteydet muuhun kansainväliseen verkkoon vain tietyistä kohdista, joiden viestiliikennettä valvottiin tarkasti. Brittiläinen imperiumi olikin huolissaan vieraiden valtojen kuuntelusta ja rakensi oman verkkonsa. Lennätinkeskukset oli usein miehitetty varautuen ruuhkahuippuihin, joiden ulkopuolella saattoi olla luppoaikaa
Ohjelmoijat ja matemaatikot ovat haastaneet itseään siten, että etsivät esimerkiksi itseään kopioivia koneita ja tietokoEvolve muistuttaa ohjelmointiympäristöä. 40 2013.4 Bittibiologian alkeet Elämä ja evoluutio ovat monimutkaisia prosesseja ja oivallisia kohteita simuloinnille. Pelin mielenkiinto liittyy kuitenkin elämän simuloimisen sijasta pitkälti pelin matemaattisiin ominaisuuksiin. Jos tyhjällä ruudulla on kolme naapuria, siihen syntyy uusi solu. Teksti: Kalle Viiri Kuvat: Teija Tuhkio, Kalle Viiri, Bigben Interactive / Fishing Cactus Soluautomaatio Matemaatikko John Conwayn kehittämä Game of Life on tunnettu soluautomaatti, matemaattinen ”peli”, jossa solut vaikuttavat toisiinsa ennalta määrättyjen sääntöjen mukaisesti. Useista lähtötilanteista kehittyy villisti ja pitkään laajenevia kaoottisia solurykelmiä, mutta myös vakaita kuvioita. Solut elävät ruudukossa, ja ne selviävät vain, jos niillä on sopiva määrä eläviä soluja naapureinaan. Alle kaksi naapuria johtaa kuolemaan yksinäisyyden vuoksi ja yli kolme naapuria kuolemaan tungoksen takia. Yksinkertaisesta säännöstöstä huolimatta Game of Life on täynnä mielenkiintoisia ilmiöitä. Elollisten olentojen simulaatiot vaihtelevat matemaattisista abstraktioista digitaalisiin geeneihin, aina robotteihin saakka. Muita mielenkiintoisia kuvioita ovat ruudukolla vaeltavat liitimet (glider) ja avaruusalukset (spaceship). Tarkasteltavana solun ominaisuudet Tiede. Game of Lifea pidetään usein keinoelämän alkeellisena muotona, sillä monet solurykelmät käyttäytyvät orgaanisen oloisesti. Vakaita kuvioita kutsutaan oskillaattoreiksi, jos ne liikkuvat, ja still lifeiksi, jos ne ovat täysin paikallaan
Game of Lifen ja muiden soluautomaattien kokeiluun on saatavilla kymmenittäin ohjelmia. Ulkonäkö kuitenkin pettää. Sukupuolihormonien toiminta alkaa aikuisuuden kynnyksellä ja saa nornin kiinnostumaan Norn-lapsi Bob valittelee väsymystään Nornit osaavat kommunikoida keskenään ja pelaajan kanssa yhdistelemällä verbejä ja objekteja.. Periytyminen toimii melko sujuvasti, koska kForthissa on helposti käsiteltävä rakenne. Solut palauttavat energiaansa syömällä itiöitä, toisia soluja tai kuolleita soluja, pitäen näin energian kierrossa. Vastasyntyneet nornit tarvitsevat paljon ravintoa, liikkuvat hitaasti kontaten ja sairastelevat helposti. Kädellä voi siirtää esineitä, käskeä norneja sekä lyödä tai silittää niitä rangaistukseksi tai palkinnoksi. Esimerkiksi liedellä kätensä polttanut norn oppii välttämään kuumia asioita. Jokainen Evolven solu on ohjelmoitu kForthilla, Forth-ohjelmointikielen kaltaisella kielellä, joka määrittää solun toiminnan. Solut lisääntyvät jättämällä ympäristöönsä itiöitä. Soluilla on myös alkeellisia järjestelmiä toistensa kanssa viestimiseen. Game of Lifen lailla peli keskittyy yksittäisten solujen elämään ja vuorovaikutukseen ruudukkomaailmassa. 41 neita, jotka voi toteuttaa pelin säännöillä. Kun kaksi itiötä jätetään samaan ruutuun, niistä syntyy elävä solu. Jos itiöt ovat peräisin samasta eliöstä, kyseessä on suvuton lisääntyminen, muussa tapauksessa suvullinen lisääntyminen. Kauniit mutta syvälliset Vuonna 1996 julkaistun Creaturesin ulkokuori on hämäävän suloinen. Kokeiden tuloksena on syntynyt useasta erikoistuneesta solusta koostuvia organismeja, jotka selviävät merkille pantavan hyvin jopa silloin, kun ne kilpailevat ravinnosta ihmisen ohjelmoimien organismien kanssa. Pelaaja vaikuttaa nornien maailmaan kädellä, joka toimii kursorina. Käskyt tekevät kaiken, mikä liittyy solun toimintaan. Solujen määrää ja niiden käyttämää muistia rajoittaa simulaatiouniversumin energiamäärä, joka pysyy jatkuvasti vakiona. Uusi eliö perii vanhempiensa piirteet ohjelmakoodin muodossa mutta satunnaismutaatioilla höystettynä. Pelin kehittäjä Ken Stauffer on tehnyt useita kokeita, joissa simulaatioiden annetaan toimia todella pitkiä aikoja. Kasvaessaan norn alkaa liikkua nopeammin ja kiinnostuu toisista norneista enemmän. Yksinkertaisuudestaan huolimatta Evolven simulaatiomalli mahdollistaa yllättävän monimutkaisten otusten kehittymisen. Ohjelmoitavia solurobotteja Evolve 4.0 muistuttaa ensi vilkaisulla soluautomaattia. Evolven solut muistuttavat Conwayn matemaattisen mallin sijasta yllättävän paljon reaalimaailman organismeja. Pääroolissa olevat norn-hahmot ovat suurisilmäisiä pörröpäitä, jotka kätkevät sisäänsä kiehtovan monimutkaisen simuloidun elimistön, käytösmallin ja perimän. Solu seuraa koko elämänsä ajan ohjelmakoodia suorittaen käskyn kerrallaan. Yksi tunnetuimmista lienee GoLLy, josta tämän artikkelin kuvankaappaukset on otettu. Solu tarvitsee energiaa itiöiden tuottamiseen ja sisäisen muistipinonsa kasvattamiseen. Ne käyttäytyvät kuten lapset: leikkivät mielellään, kiinnostuvat asioista helposti ja oppivat asioita yrityksen ja erehdyksen kautta. Nornin elinkaari on hyvin samankaltainen kuin ihmisen. Suurimmissa tällaisissa rakennelmissa on miljoonittain soluja, ja niiden toiminnasta on erittäin vaikeaa ottaa selvää ihmissilmällä. Muut toiminnot ovat solulle ilmaisia, mutta kun sen energia loppuu, se kuolee. Olennot osoittavat toisilleen hellyyttä pusuilla ja toisinaan purkavat vihaansa lyömällä toisiaan. Ne liikuttavat solua, saavat sen syömään, kasvattamaan uusia soluja osaksi itseään tai tuottamaan itiöitä lisääntyäkseen
Niillä voi olla myös toivottavampia piirteitä kuten poikkeuksellisen tehokasta aineenvaihduntaa, harvinaisia värikuvioita, myrkkyimmuniteettia tai jopa kuolemattomuutta. Nornin luonnollinen elämä kestää yleensä 5–10 tuntia. Yleisesti nähtyjä hahmoja Game of Lifessa: vasemmalla ”palikka”, ”mehiläispesä” ja ”vilkkuja”, oikealla liidin ja avaruusalus. Se on suunniteltu muistuttamaan todellista DNA:ta rakenteeltaan ja toiminnaltaan. Kun nornit ikääntyvät, niiden hedelmällisyys heikkenee. Acorn 512 sukupolven jälkeen. 1990-luvun lopulla Creatures-sarjan fanien joukkoon syntyi alakulttuuri, jossa kehiteltiin kekseliäitä tapoja kiduttaa tai surmata norneja. Lisäksi niihin kuuluvat eliön tarpeita kuvaavat vietit kuten sukupuolivietti, kipu ja nälkä. Norneilla on vähemmän tunnettu mutta merkittävä rooli digitaalisten eliöiden oikeuksiin liittyvässä keskustelussa. Avointa lähdekoodia ja dokumentaatiota korostava OpenWorm pyrkii simuloimaan C. OpenWorm on vielä keskeneräinen, mutta osittain toimivia soluja hermostomalleja pääsee lataamaan ja tutkimaan osoitteessa http://www.openworm.org/.. 42 2013.4 vastakkaisesta sukupuolesta. Ilmiön huippuvuosina jaettiin internetissä muun muassa pelokkaaksi mutta itsetuhoiseksi koulutettua nornia, jonka perimään oli peukaloitu kroonisen humalatilan aiheuttava geeni. Toisena vaihtoehtona on käyttää pelin lisäosana saatavaa geenieditoria ja muokata geenikoodia suoraan. elegans -sukkulamatoa yksittäisten solujen tarkkuudella. Pinnan alle Nornin käyttäytymistä säätelevät kemikaalit, joita on jokaisessa eliössä yli sata erilaista. Niistä tulee hitaampia, ja ne sairastuvat helpommin. Monet nornien ystävät suivaantuivat, ja keskustelualueilla otettiin vilkkaasti kantaa siihen, onko digitaalisten eläinten kiduttaminen oikein. Terveyttä voi ylläpitää lääkitsemällä vanhuuden vaivoja erilaisilla kemikaaliruiskeilla, mutta ennemmin tai myöhemmin norn kuolee. Lucy toimii osoituksena siitä, että keinoelämää voi esiintyä myös virtuaalimaailman ulkopuolella.. Perintötekijöiden vaihtelu aiheuttaa todella paljon vaihtelua saman lajin yksilöiden välillä. Rotuja ympäristötekijät vaikuttavat elinikään, mutta norn voi kuolla myös ennen vanhuusikää erilaisiin sairauksiin, myrkkyihin, nälkiintymiseen tai vammoihin. Acorn eli ”käpy”, pieni kuvio, joka laajenee pitkään pelin käynnistymisen jälkeenkin.K Open Worm Keinoelämän luominen voi olla tieteen työkalu siinä missä muutkin simulaatiot. Sen toimintaa ohjailee keinotekoinen neuroverkko, jonka avulla Grand toivoo Lucyn oppivan maailmasta omatoimisesti. Sukkulamato valittiin simuloinnin kohteeksi yksinkertaisen hermostonsa vuoksi, ja se niitti tiedeyhteisössä mainetta jo 1998 olemalla ensimmäinen monisoluinen eliö, jonka perimä sekvensoitiin kokonaan. Kemikaalien vaikutukset eivät ole kiinteitä, vaan ne riippuvat paljolti eliön perintötekijöistä. Risteyttämällä norneja sopivasti pelaaja voi jalostaa haluamiaan piirteitä esiin, mutta se on melko hidasta. Sukukypsien nornien välinen suukottelu voi johtaa raskauteen ja jälkikasvun syntymiseen. Keskustelu käytiin jo muutamaa vuotta ennen kuin perheiden polttaminen elävältä The Simsissä muodostui kansanhuviksi! Sarjan päävisionääri, englantilainen tietojenkäsittelytieteilijä Steve Grand on tehnyt Creaturesin jälkeen monia mielenkiintoisia keinoelämäkokeita. Yksi kunnianhimoisimmista hankkeista on nytkähdellen liikkuva suurisilmäinen robottioranki Lucy, joka tunnustelee ja katselee sille annettuja esineitä kuin pieni lapsi. Kemikaaleja ovat myös myrkyt ja taudinaiheuttajat sekä niiden vasta-aineet. Norneilla voi esiintyä perinnöllisiä ongelmia kuten ruokahaluttomuutta tai heikkoa vastustuskykyä. Joissakin sarjan peleissä toimintaa voi nopeuttaa käyttämällä ”geeniyhdistäjää”, joka surmaa kaksi olentoa ja muodostaa niiden geeneistä uuden yksilön. Kemikaalien eritystä säätelevä geenijärjestelmä on monimutkainen. Lapsinornit perivät vanhempiensa piirteitä pelin perimämallin mukaisesti. Suuri osa kemikaaleista kuuluu normaaliin aineenvaihduntaan, esimerkiksi glukoosi, rasva, happi, hiilidioksidi ja C-vitamiini. Yksi kiehtova esimerkki simuloitujen organismien mahdollisuuksista on OpenWorm -projekti
Jättimäisiä pelejä Freeciv tukee nykyään jopa 126 pelaajan pelejä ja kahden miljoonan ruudun kokoisia karttoja. Pelit. Freecivin merkittävimpiä eroja Civilization-pelisarjaan on sen lähes loputon muokattavuus. Loppuvaiheessa peliä siihen voi kulua tuntejakin. Jaakko Heusala Freeciv Longturn Pitkää vuoroa pukkaa Kiinnostaako kuukausien pituinen Civ-matsi. Freeciv.fi aloitti maailman ensimmäisen 126 ihmispelaajan longturn-pelin syyskuussa 2011, noin kuukausi ensimmäisen tähän kykenevän Freecivin version 2.3.0 julkaisun jälkeen. Peliä myös kehitetään porukalla paremmaksi: tuodaan omia ideoita esiin, keskustellaan niistä ja tehdään niistä yhdessä todellisuutta. Erityisesti alussa aikaa menee pelipalvelimen erityispiirteiden opiskeluun. Tuloksena syntyi yksi tarina, yksi kokemuskertomus ja lyhyt oppimäärä perustietoa kätevässä paketissa. Teksti: Jaakko Heusala, Ville-Matias Heikkilä, Jarto Nieminen, Tapio Berschewsky Kuvat: Ricardo Liberato, Ville-Matias Heikkilä, Jaakko Heusala Jumalaisen komea Wenden, vain hieman alun jälkeen. Aluksi pelejä pelattiin muutamassa eri porukassa, jotka ovat sittemmin yhdistyneet Freeciv.fin alle. Miten pian ne murskaantuisivatkaan. Suurten pelien kanssa on tosin suurempi riski törmätä uusiin bugeihin. Kansainvälisessä Longturn.orgissa vuoron pituus on yleensä 23 tuntia, ettei kukaan pelaajista saa etua aikavyöhykkeen ansiosta. Teutonisen ritarikunnan maailmanvalloitussuunnitelmat näyttivät tässä vaiheessa vielä hyviltä. Näihin peleihin osallistuu yleensä noin 40-60 pelaajaa per peli. Monipuoliset diplomaattiset sopimukset onnistuvat sekä tekoälyn että toisten pelaajien kanssa. 44 2013.4 F reeciv on Civilization-pelisarjan ensimmäisten osien tyylinen vuoropohjainen strategiapeli, joka perustuu kokonaan vapaaseen lähdekoodiin ja on kehittynyt alkuperäisistä Civilization-peleistä eteenpäin. Meitä kiinnosti. Kehitystä on tapahtunut niin yksinpelissä kuin moninpelissäkin. Pelaajat pääsevät yleensä itse vaikuttamaan näihin ennen pelin alkamista äänestyksillä ja esittämällä omia ideoitaan. Jos haluaa tehdä pelistä mielenkiintoisemman tai korjata epämiellyttäviä ominaisuuksia, voi muutokset yleensä tehdä helposti palvelimen asetuksia muuttamalla. Pelaaminen näissä yhteisöissä vaihtelee paljon ja säännöt vaihtelevat, mutta yhteistä kaikille on, että pelaajat päättävät asioista yhdessä. Maailmalla on nykyään myös kaksi kansainvälistä peliyhteisöä, Longturn ja Greatturn. Kotimaassa ja muualla Suomessa longturn-pelejä on järjestetty jo yli kymmenen vuotta. Verkkosivujen lisäksi yhteisön löytää Ircnetistä kanavalta #freeciv.fi. Vielä enemmän saa aikaan, jos osaa Ctai LUA-ohjelmointikieliä. Merkittävimpiä jättipelejä ovat Longturnit. Longturnissa Freeciviä tai Civilizationia pelataan yksi vuoro tietyn pitkän ajanjakson kuluessa, kuten kerran päivässä. Pelaamiseen riittää periaatteessa varttitunti päivässä. Harvempi tarttuukin tällaiseen järkälepeliin, joka myös vaatii enemmän tehoja palvelimelta. Freeciv on viimeisten vuosien aikana kulkenut ripeää vauhtia eteenpäin. Erot voivat olla hyvinkin suuria riippumatta siitä, onko pelannut aikaisemmin, sillä asetukset vaihtelevat paljon palvelinten välillä
Ensimmäinen naapurini, Sveitsi, oli vajonnut koomaan juuri paria päivää ennen ensiyhteyttä, kun pelaaja oli kyllästynyt yksinäisyyteensä. Olin havainnut aikoinaan moninpelit liian hankaliksi ajankäytön kannalta, mutta Longturnista kuuleminen palautti kiinnostukseni. Kansat muodostivat liittoumia, joiden kesken vaihdeltiin karttoja ja haalittiin uusia jäseniä. Pelin kesto johti myös siihen, että monet pelaajat rupesivat ennen pitkää idlaamaan, eli kyllästyivät peliin antamatta sitä kaverinsa jatkettavaksi. Osallistuin myös hyvin ahtaalla yhtenäismantereella käytyyn Greatturniin, enkä pärjännyt siinä läheskään yhtä hyvin kuin Longturnissa. Rajat murtuvat Ensikontakti muutti pelin luonteen täysin. Peli kestää kuukausitolkulla, mutta koska sitä pelataan vain vuoro päivässä, pitäisi sen ainakin periaatteessa sopia paremmin kalenteriin. Vaihtoja ei siis pahemmin edes yritetty, vaan hitaammin kehittyneille liittolaisille pyrittiin järjestämään tilaisuuksia käydä teknologiavarkaissa isojen vihollisten mailla. Miksteekkien alkukoti loistaa varhaisessa kukoistuksessaan niin puhtaana, kauniina ja yksimielisenä. Erään pitemmän palvelinongelman aikana nettiin ilmestyikin kilpaileva Greatturn, jossa pelaajat äänestivät käyttöön otettavista säännöistä enemmistödiktatuurin keinoin. Itselleni dramaattisin käänne tapahtui vuorolla 148, kun itänaapurin pääsaari vallattiin kokonaan yhden ainoan vuoron aikana. Pian ei enää riittänyt, että teki siirtonsa jossain vaiheessa vuorokautta, sillä etenkin sotaoperaatioissa myös vuorokaudenaika oli tärkeässä osassa. Kävi kuitenkin ilmi, etteivät monet kokeneetkaan pelaajat olleet jaksaneet paneutua sääntöihin ja asetuksiin kunnolla, vaan sortuivat perustavanlaatuisiin virheisiin. Ville-Matias Heikkilä Diplomaattilaiva on juuri saapunut Sveitsin pääsaaren rantaan. Osa luhistuu tielle Aiemmissa otteluissa ongelmallisiksi olivat kuulemma muodostuneet teknologianvaihtoringit, joita rakentamalla etenkin isot liittoumat pystyivät kehittymään järkyttävän nopeasti. Vaikka periaatteessa vuorot saattoi hoitaa muutamassa minuutissa, käytin välillä simulointiin ja taustatarinointiin jopa tuntikausia. Kaikki pikkuvenein saavutetut saaret olivat asumattomia, ja vasta syvän meren laivat alkoivat löytää naapureita. Miksteekkien alue oli vain pieni saarirykelmä valtameressä, jota kansoitti yli 70 sivilisaatiota. Muutamista ongelmista huolimatta suosittelen Longturnin tai Greatturnin kokeilemista kaikille Civilizationeista pitäville – etenkin niille, joilla on pitkäjänteisyyttä mutta ei aikaa tuntikausien pelisessioille. Koska Longturn-otteluita on pelattu jo kymmenen vuotta, ajattelin pelitapojen hioutuneen sen verran, että tulokkaan saattaisi olla vaikea pärjätä. Kokeilun arvoinen Vaikka Longturn saattaakin ajankäytöllisesti muistuttaa kasuaalipelejä, ei se missään nimessä ole sellainen. Tein saaresta itselleni kopion, jolla simuloin läpi mahdolliset kehityskulut kymmeniä vuoroja eteenpäin: Millä ratkaisuilla saisin kirjastot kaupunkeihin mahdollisimman nopeasti. Voimatasapaino muuttui etenkin Kirkon jäsenten hyvän koordinointityön ansiosta, ja rauhan viholliset kukistettiin lähes täysin ennen vuoroa 180. Yhteyttä pidettiin ircissä, jabberissa ja keskustelufoorumeilla. Kuukausien päivittäinen sitoutuminen on tärkeää, kuten myös hyvä yleinen ote Civilizationiin. Peli 31 käytiin saarikartalla, jolta kukin pelaaja sai alussa täysin oman mantereen. Tällöin rauhanomaisenkin sivilisaation piti ruveta varustautumaan kunnolla. Pitäisikö tähdätä ensin monarkiaan vai yliopistoon. Odotin joutuvani imperialistien jyräämäksi melko varhaisessa vaiheessa, mutta selvisinkin kunnialla loppuun asti. Maailma polarisoitui: sotahullujen ekspansionistien yhdistäessä voimiaan Raar, Kirkko ja muutamat muut rauhanomaiset liittoumat muodostivat oman yhteenliittymänsä. 45 Ensi kertaa pitkässä pelissä Loppuvuonna 2012 alkanut Longturnpeli numero 31 oli ensimmäinen Freecivmoninpeli, johon osallistuin yli kymmeneen vuoteen. Päätin itse olla osallistumatta peliin 32, sillä se ajoittui kesälle, jolloin päivärutiinista kiinni pitäminen on muutenkin hankalampaa. Yksinäisyyden aikaa kesti lopulta yli kaksi kuukautta. Suunnittelin kehityslinjan hyvin tarkkaan ajatuksenani keskittyä etenkin rauhanomaiseen tieteeseen. Alkupeli olisi tästä syystä varsin yksinäistä puurtamista. Idlaajasaarten valtaaminen katsotaan Longturnkulttuurissa täysin hyväksytyksi toimenpiteeksi myös rauhanomaisen linjan vetäjille. Sääntöihin liittyvät erimielisyydet aiheuttivat myös skismaa. Sveitsin valtionjohto oli kuitenkin vetäytynyt jo ennen kontaktia. Oikea kontakti saatiin vihdoin vuorolla 73 itävaltalaisiin ja heidän Raar-liittoumaansa, ja liityin melko pian Raarin kolmanneksi jäseneksi. Teknologian siirtämistä oli tästä syystä vaikeutettu, ja mukana oli jopa riski, että vaihdon molemmat osapuolet unohtavat tietämyksensä. Vuorolla 14 uskottiin vielä, ettei merten takana olisi mitään tai ketään.
Teutoniritarikunta on juuri perustanut ensimmäisen asuinpaikkansa, pääkaupunki Wenden. Aikansa saartaan tutkittuaan, Suurmestari huomaa harmikseen, ettei hän hallinnoi kovinkaan suurta mannerta. Raar-liitto on tämän vuoksi päättänyt, etteivät Teutonit ole tarpeeksi merkittävä ja suuri valtio liittolaisekseen. Kaikki alkaa vuonna 4000 eaa. Siihen liittyminen tuntuu hieman paradoksaaliselta sotilaalliseen varusteluun panostaneelle Suurmestarille. Sveitsin tyhjiksi jääneet temppelit ja autioituneet kadut oli helppo vallata. Tämä on vasta alkusoittoa Suurmestarin vihan liekeille. Suhteet ympäröiviin valtoihin eivät kuitenkaan ole välittömästi yhtä kylmät tai jyrkät kuin Suurmestari alun perin oletti. Kymmenen tuhatta kansalaista kuolee Wendenin kaduille loppuun piiskattuina. Tämä saa Suurmestarin määräämään valtakunnan viisaat kehittämään entistäkin tehokkaampia aseita ja varustautumaan mahdolliseen miehitykseen. Kirkko on toisaalta suurin liitto, ja sen jäseniin on valmiiksi diplomaattiset suhteet. Liittoneuvottelut käyvät hetken aikaa kuumina, ja Suurmestari onnistuu saavuttamaan alustavan paikan liiton jäsenehdokkaana. Kymmenen vuoron päästä Suurmestari saa tietää, että Raar-liitto on päättänyt hylätä Teutoniritarikunnan. Kirotut petturit saisivat vielä maistaa oikeuden kylmää terää. Luonnollisesti kristillisenä valtiona Teutoniritarikunnan Suurmestaria kiinnostaa jäsenyys rauhan filosofiaa edustavassa Kirkon liitossa. Kymmenen tuhannen kansalaisen menetys jo ensimmäisellä vuorolla on hidastanut ritarikunnan kehittymistä. Osa tarinasta on kirjuri Thihin tulkintaa, osa suoria otteita Suurmestarilta ja osa ehkä pelkkää legendaa... Maailman loputtomat rikkaudet odottavat ottamistaan yhdistyneen mahdin edessä. Valtakunnan tuotanto suunnitellaan uudelleen. Miksteekit eivät kohdanneet vastustusta siirtäessään omat nukkehallitsijansa paikalle. Tiedustelijat näkevät kuitenkin läheisen matalikon yli toiselle maalle. Hyvin nopeasti siirtokunta kasvaa kahdella lisäkylällä. 46 2013.4 180 vuoroa longturn-freeciviä Tämä historiallinen kertomus perustuu Teutoniritarikunnan Suurmestari Metonin saneltuihin muistiinpanoihin. Veneiden rakentaminen jää kymmeneksi vuoroksi sivuun Suurmestarin pyrkiessä tyydyttämään Raar-liiton maanviljelytarpeita. Kukaan ei edes älähtänyt, kun salkoon vedettiinkin valkoristin sijaan kaunis maanläheinen miksteekkilippu.. Suurmestari olettaa tilanteestaan liikoja ja luulee tulleensa osaksi Raar-liittoa. Raar-liittouman kartta jaetaan Suurmestarille. Suurmestari päättää viisaudessaan, että kolmesta uudisraivaajaryhmästä yksi lisättäisiin pääkaupungin asukkaisiin. Veneillä sananKun miksteekit liittyivät raramurien ja itävaltalaisten perustamaan Raar-liittoon, alkoivat kartan mustat alueet täyttyä vauhdilla. Königsberg ja Marienburg ovat vaatimattomia valtakunnan ylpeyden rinnalla, mutta silti merkittäviä agraarisia keskuksia. Suurmestari vannoo kostoa Viznutille, Bamskampille ja kaikille muille tyhjiä lupauksia tehneille Raarin johtajille. Ensimmäinen kosketus Hyvin nopeasti muut valtiot alkavat liittoutua isommiksi kokonaisuuksiksi. Hänen uransa tulee olemaan täynnä tuskaa, vääriä päätöksiä, selkään puukottavia liittolaisia ja sen myötä suoranaista pelkuruutta. Suhteellisen läheltä löytyy myös Raar-liitto (Ramaruni-Austria), johon kuuluu muutama lähemmin historiasta tunnettu kansa. Veneiden kehitys palautetaan kansakunnan ykkösprioriteetiksi välittömästi. Jotain kuitenkin menee vikaan viestiketjussa, ja paikallinen vasallihallitsija päättää käyttää uudisraivaajia orjatyövoimana pääkaupungin tuotannon lisäämiseksi
Jarto Nieminen, Tapio Berschewsky Turkkilaiset ja englantilaiset ovat juuri tunkeutuneet Ruotsin pääsaarelle. Hyökkäysjoukot valmistuvat teutonisella tehokkuudella etuajassa ja lähtevät pitkälle purjehdukselle kohti liittolaisvaltio Itä-Saksan rannikkoa. Saari vallattiin kokonaan samalla vuorolla, mikä jätti ruotsalaisille vain muutaman syrjäisen pikkusaaren. Planetfall jää Teutonien ainoaksi sotasaaliiksi, ja Suurmestari vaipuu lopulliseen epätoivoon. Teutoniarmeijan upseerit ja kouluttajat ryhtyvät välittömästi toimiin vätysten piiskaamiseksi ruotuun. Armeijan on tarkoitus nousta maihin poukamassa, joka on sodan etulinjassa. Kirkon liiton sotilasmestari Xercise lähettää Teutoniritarikunnan varustamolle tilauksen. Vihdoin loppupeli koittaa, ja Suurmestarin ensimmäinen sotaretki alkaa. Liittosopimus syntyykin nopeasti. Täällä joukkojen on määrä odottaa Kirkon yhteistä maihinnousuhyökkäystä pahuuden voimia vastaan. Salakavala vihollinen on kuitenkin kaikkia ovelampi ja hiipii laivaston selustaan sukellusveneillään. Suureen sotaan kaivataan joka mies, vaikka Suurmestarin epäonni ja taidottomuus tieteen ja talouden hoidossa tarkoittaakin sitä, että hänen joukkonsa ovat teknologisesti alivarusteltuja viholliseen verrattuna. Ensimmäisten vuorojen virheiden päälle kerääntyy nippu uusia takaiskuja. Uskonsodan alkumetrit Yhteistyö kirkon kanssa asettuu kymmeniksi vuoroiksi tasaiseksi ja jopa tylsäksi maanviljelyksi. Kostosuunnitelmat ja vanhat kalavelat unohtuvat suuremman kuvan avautuessa Suurmestarille. Suurmestarin päiväkäsky joukkojen rantauttamisesta ei kuitenkaan löydä tietään Amiraalin toimistoon. Yhteen kaljuunaan mahtuu 4 komppaniaa miehiä. Tilaukseen kuuluu 3 kaljuunalastillista parhaita musketöörejä ja tykkejä. Kunniaton tappio Joukot saapuvat perille turvallisesti ja ajoissa. Syvyyksistä ilmaantuvat tuholaiset upottavat vaivatta koko Teutoniritarikunnan vanhentuneen kaluston. Aivan viimeisillä vuoroilla saavutetaan pieniä, mutta kokonaiskuvassa merkityksettömiä voittoja Palatinaattiritarikuntaa vastaan Syyrialaisten armollisella avustuksella. Kaikki yritykset auttaa tai tukea Kirkon eteneviä joukkoja valuvat hiekkaan. Laivaston antiikkinen purjekalusto ei yksinkertaisesti ole tarpeeksi nopea pysyäkseen modernimpien laivojen perässä. Neuvotteluissa Raar-liitolta saadut kartat ja tiedustelutiedot ovat kelpoa kauppatavaraa. Yhteensä tilauslistalla on siis 12 komppanian armeija Teutoniritareiden tykistöä ja musketöörejä. Rauhanliiton maanviljelijöiden marssiessa valtaamaan maailmaa hän vaipuu hiljaa pois yksinäiseen tuntemattomuuteen. Tankit vyöryvät eteenpäin viimeiseen saakka, ja ydinpommit paukkuvat.. Pian sekä Raar että pari muuta ympäröivää liittoa kuuluvat Kirkkoon. Asiat kehittyvät kuitenkin nopeasti ja odottamattomin tavoin. Malttamaton Suurmestari ei ole tyytyväinen peltojen raivaamiseen, vaan kaipaa voitokkaaseen sotaan. Teutonien eliitit jäävät siis odottamaan laivoihin rannikon tuntumaan – valmiina hyökkäykseen. Myös iso osa liittolaisten moderneista hävittäjistä uppoaa samassa rytäkässä. Syvä masennus ajaa hänet etsimään neuvoa pullon pohjalta. Murskaava tappio käy raskaaksi Suurmestarin moraalille. Teutoniritarikunnan taival päättyy hiljaiseen ja hampaattomaan raivoon.. Kaljuuna-armadaa suojelee vastarannalta lähestyviltä vihollisilta Hakkereiden, Itä-Saksan ja Ranskan hävittäjälaivastot. Viimeisellä vuorolla liittoumat tekevät kaikkensa, jotta saisivat vallattua vielä muutaman takapajuisen kaupungin. Loput hallintokaudestaan Meton viettää enemmän tai vähemmän päihtyneenä kiroten kurjaa kohtaloaan. 47 saattajat raivaavat ensitöikseen tiensä Kirkon liiton jäsenten pakeille
48 2013.4 Joukkorahoituspalvelu Kickstarterin menestystarinat ovat innoittaneet haudanryöstäjiä etsimään muinaisia peliaarteita. Niille ei ole vielä edes kunnon opetusohjelmaa, joten Garriott ylipuhuu rehtorinsa antamaan luvan itse suunnitellun ja itseohjatun tietokoneohjelmointikurssin suorittamiseen. Teksti: Jukka O. Asiaa täytyy tutkia aikakoneen kautta. Wasteland 2 haki 900 000 dollaria ja sai 2,9 miljoonaa. Shroud of the Avatar haki miljoonan dollarin rahoitusta, mutta kassaan on kirjoitushetkellä kertynyt jo 2,7 miljoonaa, josta 1,9 Kickstarterista. Onneksi Skrollilla on sellainen! Reikänauhaseikkailuja 70-luvulla Eletään vuotta 1977. Miksi muinaisten pelisarjojen joukkorahoitukseen osallistutaan näin innolla. Shroud ei ole Ultima, mutta se on temaattisesti selvä paluu Ultima-saagan varhaisempiin vuosiin. Seuraavan kahden vuoden aikana poika kirjoittaa koulussa kaukokirjoitinpohjaiselle tietokonejärjestelmälle hurjat 28 tekstipohjaista fantasiaseikkailupeliä, läpäisten tietokonekurssin haasteet täysin pistein. Kaksi joukkorahoituksen avulla uutta tulemistaan tekevää peliä on yli muiden. Kesällä 1977 Richard vietti seitsemän viikkoa Oklahoman yliopiston tietokoneleirillä, jossa hän sai lempinimen. Genren oikeutettu jumalhahmo Richard ”Lord British” Garriott palaa pelikentälle fantasiaroolipelillä Shroud of the Avatar: Forsaken Virtues. Kummastakaan pelistä ei voi kiittää perinteisiä julkaisijoita. Vuonna 1979 nuorukainen oli töissä Ultimoiden historia Akalabeth: 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. Keräysten suosio osoittaa, että pelaajakansa on enemmän kuin halukasta näkemään vanhoille klassikoille perinteitä kunnioittavia jatko-osia, joita tehdessä ei tarvitse nöyristellä kaupallisuuden paineiden alla. Kauppinen Kuvat: Jukka O. Roolipelilegenda Brian Fargon unelmaprojekti ei sekään vaikuta hassummalta. Wasteland 2 on toistakymmentä vuotta suunniteltu jatko-osa kaikkien post-apokalyptisten seikkailujen isälle. Ennen niin kunniakas Ultima-sarja on denegeroitunut mikromaksuseikkailuiksi, ja Wastelandin jatko-osan suunnitelmat kustantajat hylkäsivät kerta toisensa jälkeen. Kauppinen, Risto Mäki-Petäys, Mobygames R oolipelaajille on luvassa hieno pelivuosi, joka lupaa palauttaa veteraanikörmyt aikaan, jolloin kaikki oli paremmin. 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 (1997 Ultima IX: Ascension (1999) Lord of Ultima (2010) Ultima Forever (2013) Legendojen Paluu: Ultiman ja Wastelandin Perilliset Pelit. Koneessa ei ollut lainkaan magneettista tallennusmediaa. Richard Garriott on 15-vuotias lukiolainen, joka tutustuu koulussa uuteen ilmiöön: tietokoneisiin. Laaja ja uskollinen faniyhteisö intoutui kantamaan klassikoiden jatko-osille muhkeat rahoituspotit Kickstarterin kautta. Tuosta kesästä lähtien Richard oli Lord British. Tietokonepohjaisen seikkailemisen lumosta voi saada etäisen mielikuvan kun muistaa, että kaukokirjoitin oli kuin kirjoituskone, johon kuului reikänauhalukija
Akalabethia myytiin tusinan verran, ja yksi kappale päätyi kalifornialaiselle pelijulkaisijalle. Garriottin ensimmäinen kaupalliseksi suunnittelema seikkailu viitoitti hänen näkemyksiään siitä, millaisia tietokonepelit voisivat olla. 49 teksasilaisessa tietokonekaupassa, jossa hän näki ensimmäisen kerran Apple II -tietokoneen. Sosarian rauhaa rakastava hallitsija Lord British kutsuu avukseen sankarin, joka voi nujertaa Mondainin ja tehdä maailmasta taas hyvän paikan elää. Tämä teki pikavauhtia julkaisusopimuksen, jota seurasi yllätysmenestys: Akalabeth myi nopeassa tahdissa 30 000 kappaletta. Vaikka se on nykysilmin katsottuna kömpelö ja vaivalloinen, oli pelissä selvästi tunnistettavia teemoja. Ja Ultima I. Keskustelujärjestelmä oli alkeellinen, mutta esimerkiksi hahmonluonti onnistui jo neljän eri rodun ja ammatin paletilla. Silloin ilmestyivät Indiana Jones ja kadonneen aarteen metsästäjät, Das Boot ja Mad Max 2. Ultima IV muistetaan erityisesti alun hahmonluonnistaan, joka tapahtui ennustajaeukon kysymyksiin vastaamalla. Pimeyden ensimmäinen aika 1981 oli merkittävä vuosi. Ultima III esitteli esimerkiksi useasta hahmosta koostuvat seikkailijaryhmät, rajoitetut näkökentät, värikkäät luolastot ja erillisillä kartoilla käytävät taistelut. Lord Britishin lisäksi pelissä oli toinenkin persoonallinen henkilö, Iolo the Bard, joka on nähty sittemmin yhtä vaille jokaisessa pääsarjan Ultimassa. Ultima poiki jatko-osia nopeaan tahtiin. Ultima VII oli isometrisen perspektiivinsä kera jo varsin näyttävä.. Lisäksi pelaaja oli osa suurta maailmaa, jonka dramaattisessa tarinassa Sosarian maailmaa uhkaa velho Mondain. Ultima I olikin todellinen mestarinäyte. Ultima II: The Revenge of Enchantress (1982) ja Ultima III: Exodus (1983) rakensivat esikoisteoksen hyvis vs. Sarja lanseerasi nopeaan tahtiin monia nykypelien standardeja. Se teki kaupan omistajaan niin suuren vaikutuksen, että tämä ylipuhui Richardin tekemään siitä myös kaupassa myytävän version. Niin myös Frogger, Haunted House, Jupiter Lander, Pac-Man ja Softporn Adventure. pahikset -teeman päälle, laajentaen Sosarian tarinaa ja vieden sitä kohti uutta, ensimmäisen trilogian katastrofien jälkeistä maailmaa, jonka opimme tuntemaan Britanniana. Ultima IV vasta olikin kova juttu, aiUltima I oli mullistava sukellus tietokoneroolipelaamisen maailmaan. Siinä oli oikeaa grafiikkaa, värejä ja jopa äänet! Richard intoutui tekemään Applelleen ensimmäisen kunnollisen roolipelinsä, Akalabethin. Graafinen tiilityyli pysyi lähes samana aina Ultima V:een saakka. 17-vuotias Richard tienasi huvikseen tekemällään pelillä ja 200 dollarin panostuksella 150 000 dollaria (nykyrahassa 555 000 dollaria), ja yliopisto-opintojen rahoitus ratkesi kerralla
Maaliskuussa 2013 avattu Kickstarter-keräys haali puolessa vuorokaudessa 500 000 dollaria. Kun ensimmäiset kolme Ultimaa kuvasivat Sosarian maailman pimeää aikakautta, osat IV–VI kuvasivat valaistumisen aikaa, jolloin etsittiin puhdasta sielua ja keskityttiin ihmisen sisimmän tutkimiseen. Ultima IV oli Garriottin omien sanojen mukaan peli, jossa hän opetteli tarinankertojaksi. Hahmo luotiin nopanheiton sijaan ennustajaeukon kysymyksiin vastaamalla, ja pelaajan käytös vaikutti tarinaan hämmästyttävillä tavoilla. Etenkin Ultima VIII: Pagan (1994) ja IX: Ascension (1994) kertoivat synkempiä ja pelottavampia tarinoita. Leikitään kotia tai seikkaillaan, tutkitaan Lord British, avaruuden lapsi Ensimmäinen Ultima vei pelaajansa avaruusmatkalle. Ultima-kaanonia rikkonut seikkailu ei vastannut fanien odotuksia. Koetaan ihmeitä ja tehdään mitä huvittaa. Samalla Origin Systems suuntasi rohkeasti kohti kuuttatoista bittiä ja keskittyi tekemään pelejä PC:lle. Nykyseikkailut, morpeista puhumattakaan, keskittyvät roolipelaamisen sijaan grindaamiseen. VGA-värimaailmaan ja isometriseen kuvakulmaan siirtyminen oli joillekin liikaa, mutta Ultimoiden suosio ja mittakaava vain kasvoivat. Rauha vallitsi, mutta kaivattiin viisautta, esikuvaa – ehkä jopa täydellistä ihmistä. Lisätietoja: http://www.imdb.com/title/tt1611990/. Joukkorahoitettu lupaus huomisesta Richard Garriott kätyneineen seurasi Tim Schaferin Double Fine -studion häikäisevää joukkorahoitusmenestystä kiinnostuksella ja totesi, että aika on kypsä selvittää ovatko pelaajat yhä kiinnostuneita Ultima-henkisistä roolipeleistä. Dokumentti kuvaa poikkeuksellisella avoimella tavalla venäläistä avaruusturistin koulutusvaihetta ja avaruuslennon arkipäivää. ”Mitä Ultima Viidessä ei ole, sitä ei tarvita”, sanottiin. Seuraava neliosainen trilogia syöksyi jälleen synkkyyteen. Erittäin suositeltavaa katsottavaa sekä Garriottin että yleensä avaruuslentojen faneille! Elokuvan voi tilata muun muassa Amazonista. Myöhemmin Garriottin perustama Origin Systems teki monia avaruusseikkailuja ja NCSoftin leivissä mies loi scifimorppi Tabula Rasan. Garriott, oli NASAn astronautti, joka työskenteli kahdella NASAn avaruusasemalla. Kun sekä Ultima VIII että IX myivät odottamattoman kehnosti, pisti Origin Systemsin omistava EA jäihin sekä jatko-osien, lisälevyjen että Ultima Online 2:n kehityksen. Uusi aikakausi ja tarinan päätös Ultima VI: The False Prophetin myötä Ultima-saagan maine oli korkeimmillaan. Hänen isänsä, Owen K. Tuleva roolipeli ei ole Ultima, vaikka se kovin siltä kuulostaa. Sattumasta tuskin on kyse, sillä juuri tätä teemaa Ultima-sarjan hengellinen jatko-osa tavoittelee. Näkökulma oli poikkeuksellinen silloin ja on sitä yhä tänäänkin, kun vastassa ei olekaan suurta myyttistä pahuutta. Ehkä näin. Viitosessa peli oli kehitetty täydellisimmilleen, ja puritaanien mukaan sen jälkeen on menty vain alamäkeä. Se oli myös yksi ensimmäisistä tietokonepeleistä, jossa eettisyydellä ja pelaajan moraalisilla arvoilla oli merkitystä. Shroud lupaa paluuta vanhan ajan tarinavetoiseen, interaktiiviseen ja moraaliseen roolipelaamiseen. Olivat he. Garriott onkin maailman toinen toisen sukupolven avaruuslentäjä. Monille sarja huipentui seuraavassa osassa, 1988 ilmestyneessä Ultima V:ssä. 50 2013.4 nakin meille suomalaisille. Garriottin avaruuslennosta tehtiin myös dokumenttielokuva, jota on kutsuttu maailman kalleimmaksi kotivideoksi. Lord British oli kadonnut vasta löydetyn alamaailman uumeniin, ja valtaistuimelle nousi sijaishallitsija, vihattu Blackthorne. Tämän täytyi olla valaistumista ja viisautta etsiessään hyveellinen ja esimerkillinen sankari. Pelillä oli myös muita mullistavia ansioita, kuten avainsanoihin perustuva ainutlaatuinen keskustelujärjestelmä, vuorokaudenajat ja maaston vaikutus liikkumiseen. Viiden vuoden aikana peli tehtiin uusiksi neljä kertaa ja tekijät vaihtuivat tiuhaan tahtiin. Seikkailtavaa riitti. Garriottin tiimin näkemys palaa tarinankerronnan ytimeen: siihen, että roolipelissä ollaan joku muu. The End. Garriottin elämää on fantasian ohella värittänyt rakkaus avaruuteen ja tieteeseen. Syystäkin legenda. Pääpelien rinnalle synnytettiin rinnakkaiset pelisarjat Worlds of Ultima ja Ultima Underworld. Ultima IX päätyi myös kirjaimelliseen kehityshelvettiin. Nyt koko pelimaailma kuvattiin samassa mittasuhteessa niin maan päällä, kaupungeissa kuin luolastoissakin. Vuonna 2008 Garriott suoritti avaruuslennon kansainväliselle avaruusasemalle ollen maailman kuudes avaruusturisti. 83-minuuttinen elokuva kuvaa niin avaruuslennon taustoja, koulutusvaiheen kuin avaruuslennon tapahtumiakin. Hahmon roolissa eletään virtuaalisessa maailmassa. Sosarian raunioille perustettua Britanniaa hallitsi viisaasti ja jalosti oikeamielinen Lord British. Siitä suuri kiitos Niko Nirvin MikroBitissä julkaistulle arvostelulle, jonka ansiosta peli breikkasi kovaa. Fin. Jo nimi – Avatarin kääreliinat: hylätyt hyveet – antaa ymmärtää, että Avatar on pistetty hautaan ja aloitettu kaikki alusta
Originilla oli yllätys hihassaan: beta päättyi yllättäen maailmanloppuun. Siinä, missä Ultima Underworld (1992) loi ensimmäisen kolmiulotteisen roolipelikokemuksen, oli Ultima Online (1997) yksi ensimmäisistä todellisista verkkoroolipeleistä, jonka perintöä seuraavat tänään niin World of Warcraft kuin muutkin genren edustajat. Britannia kasvoi pelaajiensa kanssa peli peliltä, tasaisesti laajentuen. Tarinoiksi, joissa Hyvä ja Paha kamppailevat – ja Hyvä voittaa aina. Maailma peittyi demoneihin ja kuolemaan, eikä edes Lord British säästynyt. Garriott koki velvollisuudekseen luoda peleihin syvempiä teemoja, joissa korostettiin suurempia hyveitä – kuten sitä, että vahvoilla on myös velvollisuuksia, ei ainoastaan oman käden oikeuksia. Ultimoiden arkkivihollinen, ulottuvuuksien välinen kauhistus, pahuuden perikuva ja maailmojen tuhoaja Guardian laskeutui Britanniaan. Ultimat olivat yhtä aikaa hiekkalaatikkomaisia avoimia seikkailuja ja vaihtoehtomaailmoja fantasian mahdollistamassa äärettömyydessä. Viimeiseksi todelliseksi Ultima-seikkailuksi jäänyt Ultima IX sisälsi muodikasta pelinsisäistä mainontaa.. Se oli ensimmäinen todellinen virtuaalinen pelimaailma, rakkaudella rakennettu jatkumo, jossa lähes mikä tahansa tuntui olevan mahdollista. Niiden käsikirjoittamattoman yllätyksellisyyden ja avoimuuden ansiosta jokainen koki tarinan eri tavoin. Lords of Ultima (2010) on käpyinen ilmaispelattava MMO-strategia, ja iOS-alustalle saapunut Ultima Forever -mobiilimorppi (2013) on eräiden pelaajien mukaan sarjan historian masentavin, idiooteille tehty rimanalitus. Mitä tapahtuikaan, kun Avatar nautti taikasieniä Ultima IX:ssä. Peli, maailma ja sen asukkaat muistavat. Sekään ei haitannut, että Ultimat olivat pitkään todellisia tienraivaajia niin tarinankerronnaltaan kuin teknisesti. Ne olivat aitoja roolipelejä. Peli sisältää yksinpelin, yhteistyö-henkisen moninpelin ystävien kanssa ja verkkomoninpelin. Ei siis ihme, että Garriott lupaa pelimaailman olevan mahdollisuuksia täynnä. Moni uusi tehtävä tai tarina voi löytyä niistä, liki huomaamatta. Eräänkin kerran näin yhden ainokaisen pupun perässä puoli tusinaa pelaajaa. Nyt urakka alkaa alusta. Shroud on vasta alkua. Seikkailussa ei ole lainkaan nykypelien tehtävärakenteita. Todellisuuden rajoja työnnettiin luovalla 2D:n ja 3D:n yhdistelmällä, hiekkalaatikolla, pelaamisen vapaudella ja verkkomoninpelaamisen saralla. Osa Ultimoiden lumosta tulee pelien maailmasta. 30 vuotta sitten Garriott loi Ultimoiden maailman yksin. Sen kehitys kuitenkin junnasi ja pelimoottoria päätettiin käyttää Ultima-seikkailuun. 51 Kohokohtia ja kompasteluja Ultima Onlinen alfaja beetatestivaihe kesti liki puolitoista vuotta. Yksi vastaus on pelisarjan merkitys koko tietokoneroolipelien genren synnylle. ja etsitään aarteita. Faneille Ultima-sarja on kuollut, mutta legendan nimi elää kahdessa uudessa mikromaksupelissä. Ehkä siksi pelisarja on tuntunut aina niin oikealta, niin rehelliseltä. Pitkän viimeistelyvaiheen jälkeen pelaajat kerääntyivät juhlistamaan betan loppua pelimaailmaan. Shroud of the Avatar on peli, jossa ei ole kompasseja kohteisiin, ei kiinteitä hahmoluokkia, ei grindausta, ei rautalankaa. Työläs virtuaalimaailman mallinnus ei kuitenkaan ehtinyt edes käynnistyä, kun pelaajat säntäsivät metsiin ja tappoivat kaiken. Aikataulut pettivät pahemman kerran ja rahoittajat hermostuivat, minkä johdosta peli tuupattiin kauppoihin hätäisesti kokoonkursittuna, sisällötään riisuttuna versiona. Kuvailin kerran Ultimoita nykyaikaisiksi saduiksi. Lopulta maailmasimulaatio poistettiin, koska pelimaailmaan levittäytyneet ihmiset tuhosivat ekosimulaation lähtökuoppiinsa. Selkeiden tehtävien ja tavoitteiden sijaan pelaajia kannustetaan seuraamaan tarinan kaaria ja keskustelemaan maailmaa kansoittavien henkilöiden kanssa. Aikana, jolloin seikkailupelit olivat lähes pelkästään tekstiseikkailuja, Akalabeth ja ensimmäinen Ultima tähtäsivät korkeammalle. Samat tekijät loivat myöhemmin System Shockin (1994) ja Thiefin (1998) kaltaiset mestariteokset. Ehkä Shroudista tulee uusi Ultima. Ultima Onlineen (1997–) tehtiin interaktiivinen maailmasimulaatio, jossa kaikella oli tarkoituksensa ja kaikki vaikutti kaikkeen, aina luonnon kiertokulusta lähtien. Ultima VIII Part Two: Serpent Islen (1993) ei alkujaan edes pitänyt olla Ultima. Vaikka seikkailut suunnattiin varttuneille pelaajille, perusidea oli sama: oikeuden voitto ja heikkojen puolustaminen. Ho eyoh he hum Mikä Ultimoissa viehättää. Kukaan ei edes huomannut sen olemassaoloa. Aivan kaiken. Early access -versio joukkorahoittajille julkaistaan vuodenvaihteessa, ja virallinen julkaisu ajoittuu vuoden 2014 loppuun. Mikäli peli löytää pelaajansa, tulee Garriott tiimeineen työstämään uutta fantasiamaailmaa vielä pitkään, monen uuden pelin ja laajennuksen merkeissä. Samalla hän varoittaa, että pelaajien on kannettava vastuu teoistaan ja elettävä niiden seuraamusten kanssa. Uskomaton tapa päättää beta ja avata maailma yleisölle! Ultima Underworld: The Stygian Abyss (1992) oli yksi ensimmäisistä todellisista 3D-peleistä, ja äimistytti pelaajia jo ennen id Softwaren Doomia (1993) tai Quakea (1996). Kiireen takia teokseen jäi runsaasti bugeja ja tarinallisia aukkoja, eikä kaikkia sivutehtäviä voinut edes ratkaista. Kohdataan lohikäärmeitäkin
”Useimmat pelaajat eivät koskaan ehdi nähdä kaikkea”, Fargo lupaa ja kehuu, että eriävien tarinapolkujen ja vaihtelevien valintojen ansiosta tekemistä riittää varmasti useaksi läpipeluukerraksi. Se sijoittuu aikaan 15 vuotta ensimmäisen pelin ja noin sata vuotta maailman raunioittaneen atomisodan jälkeen. Pelillisesti Wasteland 2 tuntuu veteraaneille tutulta, mutta nykypelaajatkin huomioidaan. Veteraanikehittäjä Brian Fargo teki ensimmäisen kaupallisen pelinsä vuonna 1981. Se antoi nostetta kovan luokan science fictionin suosiolle tietokoneroolipelien piirissä, mutta ansioistaan huolimatta pelin jatko-osan syntyä on odoteltu epäonnisten tähtien alla. Teoksen suurimmat avut löytyvät tarinankirjoituksesta ja kauaskantoisuudesta. Fargo on kertonut kuvitelleensa 20 vuoden ajan jokaisen pelinsä jälkeen, että nyt on oikea hetki tehdä Wasteland 2. Säteilyaavikoiden kutsu Wasteland 2 nousi radioaktiivisesta haudastaan.. Fargon peleistä legendaarisin on silti Wasteland. 52 2013.4 M enestynyt joukkorahoituskampanja herätti henkiin myös toisen klassikon. Fargo teki ensimmäisen kaupallisen seikkailupelinsä, Demon’s Forgen, jo 1981 ja perusti Interplay-pelitalon 1983. Syystäkin, sillä pelaajien rahoittamaa peliä ei tarvitse siloitella julkaisijoiden pelkojen mukaan. Se jäi kesken, kun kotimikromarkkinat siirtyivät ryminällä 16-bittiseen aikakauteen, eikä peliä kannattanut siirtää uudelle alustalle. Wasteland 2 noudattaa esikuvansa mallia tyylikkäästi, nykypäivän vaatimuksia noudattaen. Aina turhaan. Wasteland 2 ilmestyy vuoden 2014 aikana.. Wasteland 2 vaikuttaa peliltä, joka on vahvasti vanhan koulun edustajien mieleen. Kääntyivätkö hyvät tarkoitusperät nurinniskoin. Wastelandin kirous Vaikka Wasteland oli rakastettu hitti, ei peliala hellinyt sen jatko-osia. Se oli kuin sarkastinen, älykäs videopeliversio Mad Max -elokuvista, jonka taitavaa tarinankerrontaa ja maailmankuvaa on sittemmin lainattu liki kaikissa ydintuhokuvauksissa, ei vähiten Fallout-sarjassa. Moni Fargon teoksista muistetaan seikkailuja roolipeliklassikkoina, joista mainittakoon Bard’s Tale -sarja (1985), Borrowed Time (1986), Dragon Wars (1989), Neuromancer (1989) ja Star Trek: 25th Anniversary (1992). Nämä vaikuttavat sekä seikkailuun että maailman ja asukkaiden suhtautumiseen pelaajan ryhmään – ja tietenkin pelaajaan itseensä. Kun rahoja ei törsätä dialogin puhumiseen, voidaan tekstiä kirjoittaa arastelematta. Science fiction -roolipeli Wasteland (1988) oli aikanaan suuri menestys, joka vaikutti merkittävästi roolipelien kehittymiseen ja tarinankerrontaan. Systeemi on erittäin toimivan oloinen ja mahdollisesti yksi hardcore-tasoisimmista, mitä uusista peleistä löytyy. Hahmojärjestelmä on pohjaltaan sama kuin 25 vuotta sitten. Jos Wastelandin oikeaa jatko-osaa saatiinkin odottaa 25 vuotta, Falloutit ainakin tekivät parhaansa muiston ylläpitämisessä. Niin nytkin. Sarja ei kuitenkaan lainauksistaan huolimatta ole jatkoa Wastelandille. Sen taustalla on tieteiskirjailijanakin tunnetun Michael A. Pelimaailma oli dynaaminen ja muuttui jokaisella pelikerralla. Wasteland oli amerikkalaisen pitkän linjan pelisuunnittelija Brian Fargon (1962) käsialaa. Fargo palasi ydinaavikoille vuonna 1997 toisen klassisen roolipelin, Falloutin, parissa. Ensin se jäi Electronic Artsin politiikan jalkoihin. Kestätkö päätöstesi aiheuttamat, kenties yllättävät ja kauhistuttavat seuraukset. Mihin henkinen kanttisi venyy. Paluu ydinaavikoille Wastelandin ansioita olivat muun muassa ydinaavikon outoja tapahtumia tutkivien pelihahmojen kuvaaminen inhimillisinä hahmoina, jotka eivät aina käsittäneet pelaajan kotkotuksia tai suostuneet noudattamaan kummallisia käskyjä. Osasyynä tähän oli se, ettei Fountainin tekijöissä ollut ketään Wastelandin tiimistä, eikä peli yltänyt Fargon luomuksen tasolle. Yhtiön tapasi teettää pelit ulkopuolisella studiolla ja jos se menestyi, jatko-osa tehtiin EA:n sisällä. Ongelmiin löytyy paljon erilaisia ratkaisuja, ja pelijärjestelmän avoimuuden ansiosta pelaajat keksivät varmasti odottamattomia temppuja. Stackpolen Mercenaries, Spies and Private Eyes -lautapelin hahmojärjestelmä. Se on kirjoitettu esikuvansa tapaan täyteen moraalisia valintoja ja päätöksiä, joilla on sekä välittömiä että kauaskantoisia seuraamuksia. Lisenssin menetettyään Fargo ja Interplay tekivät Fountainin rinnalla omaa jatkoosaansa nimeltä Meantime. 1990 ilmestyi Fountain of Dreams, mutta sitä ei lopulta markkinoitu Wastelandin jatko-osana. Sen kompromissittomuus näkyy muun muassa tekstin paljoudessa. Ydintuhon jälkeiseen maailmaan sijoittuva roolipeli rakensi ainutlaatuisen hienosti käsikirjoitetun ja kyseenalaistavan tarinan romahduksen jälkeisestä maailmasta asukkaineen. Paluu ydinaavikoille ei löytänyt rahoittajaa edes Fallout 3:n tai New Vegasin menestyksen jälkeen, vaan vasta suoraan faneihin vetoaminen mahdollisti pelinteon. Seikkailun koosta puhumattakaan! ”Tämä on ISO peli”, Fargo rykäisee allekirjoittaneelle ja jatkaa, että se on ”paljon isompi kuin Fallout 1 tai 2”
Kun Abbott oli ilmaissut, että pelaajien oletettiin lukevan ne ennen pelaamista, olivat oppilaat tyrmistyneitä. Wabashin korkeakoulun professori ja Brainy Gamer -blogin perustaja Michael Abbott kirjoitti vuonna 2010, että hänen oppilaansa eivät selviä Ultima IV:stä. Nintendon testissä vain 10 % uusista yrittäjistä pääsi ensimmäisen kentän läpi. Klassinen rope oli muuttunut pelikelvottomaksi. Genren nykypelien kanssa aloittaneelle se olisi suorastaan mahdoton. Pelaaminen vaati manuaalien lukemista. Englannintaitoiselle nykyteinille Ultima IV:ssä ei kai pitäisi olla mitään mahdotonta. Ainakin uusille pelaajille, taaksepäin katsoen. Koulukaverit väittivät minun valehtelevan. Iso avoin maailma aarteita pursuavine luolastoineen, loitsuineen, pulloineen ja taisteluineen on tuttua kamaa. Mainitut pelit eivät olleet pienen hardcore-yleisön indiepelejä vaan isoja julkaisuja. Pienestä putiikista irtosi halvalla Game Boy Advancen versio Manic Minerista. Ovatko keinot universaaleja vai aikaan sidottuja. Muistan, kun ensimmäistä kertaa sain haltuuni piraattilaivan ja matkustin sillä toiselle saarelle, jonka kauppa myi maagisia välineitä. Kasarilla suunniteltiin myös tasohyppelyjä, joiden haaste ei perustunut yliampuvan vihamieliseen ympäristöön ja kiikkerään hahmoon. Ihmiskunnan ylpeys Tässä lehdessä muistelemme Ultima-roolipelisarjaa. Kohtaamme siis ehkä ensi vuosikymmeneen mennessä pelaajasukupolven, jolle Monkey Island, Wing Commander ja Civilization ovat epäintuitiivisia ja mystisiä kokemuksia, joista he eivät saa selvää. Kesäkuussa 2013 Nintendon toimitusjohtaja Satoru Iwata kertoi osakkeenomistajille tyrmistyttävän tarinan. Nintendon pelit ovat nykyään helpompia kuin 80-luvulla, koska uudet pelaajat eivät selviä SMB 1:stä. Ensimmäinen kenttä meni läpi heti ja itse pelikin muutamassa illassa. Uusi pelaajasukupolvi on lukutaidoton sille, mikä ennen oli selvää. Edistymisen tunne, joka syntyy omin päin maailmaa tutkimalla, jäi saavuttamatta, koska oppilaat olivat tottuneet kädestä pitelyyn. 53 Kolumnit K ymmenen vuotta takaperin Schipholin lentokentällä törmäsin aarteeseen. Näinhän se Skyrimkin toimii. Noin 70 % kuoli ensimmäiseen viholliseen. Itselleni sen ikimuistoisin osa on neljäs. Onko tämä paha. Nyt ne ovat pelikelvottomia valtaosalle uusista yrittäjistä. Tottumusten summa määrittää, mikä on yksinkertaista ja mikä ei. Abbott tiputtaa kurssilaisensa viikoksi Britanniaan pdf-manuaalien kanssa, vailla muuta opastusta. Manic Minerin design on armoton. Siinä ei ollut oppaita, ei tutkaa eikä tehtävälistaa. ” Oppilaat eivät selviä Ultima IV:stä.. Manic Miner oli niin vaikea, etten 80-luvulla päässyt ikinä edes kuudenteen kenttään. Tämä sai ajattelemaan, kuinka helpoilta nykypelit jo silloin tuntuivat. Monet pelkäsivät kolikoita ja koettivat välttää niitä. He eivät tienneet, miten edetä tai mikä on tavoite. Niitä pelasivat kaikki, jotka genreistä pitivät. Näistä esimerkeistä päättelemällä voisi sanoa, että se muuttui tunnistamattomaksi vain yhden sukupolven aikuistumisen aikana. Pelien kieli on muuttunut kuluneen 30 vuoden aikana melkoista vauhtia. Näin ei kuitenkaan ole. Kolme vuotta sitten uudet oppilaat eivät enää ymmärtäneet peliä. Helposti ohjattavan hahmon ja mainion kenttäsuunnittelun olettaisi toimivan aivan yhtä hyvin nyt. Manuaaleista kysyttäessä luokka ihmetteli, eivätkö ne olleetkaan vain pakollista laatikon täytettä. Jo ensimmäinen ruutu vaati useamman yrityksen, jotta kömpelösti liikkuvan hahmon sai ohjattua loppuun asti. Peli mittasi pelaajan toimien hyvyyttä, ja vain kirkasotsainen näki lopputekstit. Matthew Smithin tasohyppely oli ennestään tuttu Commodore 64 -julkaisusta. Heistä oli käsittämätöntä, että peli voisi olla niin laaja ja hieno. Kunhan siskoni lapset alkavat olla peli-iässä, taidan suorittaa muutaman ihmiskokeen. Kymmenvuotiaalle pelin englanti oli vaikeaa, joten sanakirja pysyi mukana. Ei pelattavissa Tapio Berschewsky Kulttuuria pitää säilöä, mutta kenelle sitä säilötään. Pääsin Game Boylla pidemmälle, mutta en kovin montaa kenttää. Aikanaan Super Mario Bros 1 ei tuntunut vaikealta. Tarkoitus ei ollut voittaa pahaa pääörkkiä vaan kilvoitella täydelliseksi ihmiseksi, Avatariksi. Alkuun pääsi heti, mutta läpäisy odotutti hetken itseään. Onko tulevaisuus Cookie Clickerin?. Se oli monipuolisempi kuin mikään näkemäni peli. Seuraavassa Skrollissa alkaa juttusarja modernin pelisuunnittelun keinoista
Joskus tiellä on kielellisiä ja kulttuurisia muureja, mutta tosifaneille ne ovat vain mukava haaste! Teksti: Visa-Valtteri Pimiä Kuva: Tuukka Virtaperko Pelit. 54 2013.4 Fanikäännösprojektit Kun vain itse tehty on kyllin hyvää. Pelifanit ovat aina löytäneet keinoja pelaamiseen ja pelikokemusten jakamiseen
Onpa tehty sellaisiakin käännöksiä, jotka eivät edes toimi alkuperäisellä konsolilla vaan pelkästään emulaattorin sallimissa ”valheellisissa” rajoissa. Kääntäjien työhön kuuluu alkuperäisen pelin tekstija grafiikkasisällön kääntäminen. Nykyisin fanikäännökset ovat yhtä hyviä tai jopa parempia kuin isolla rahalla tuotetut kaupalliset käännökset. Moonspeak – monien merkistöjen magiaa Japanilaiset pelit käyttävät sekä äänneettä ideogrammimerkistöjä. Teknisesti kyvykkäät ja japanin kieltä osaavat harrastajat synnyttivät lukuisia projekteja pelien kääntämiseksi englannin kielelle. Japanissa julkaistaan pelejä paljon, mutta länsimaiset maahantuojat vain valitsevat niistä omille asiakkailleen sopivia ja entuudestaan tuttujen pelien jatko-osia. Koska pelien lähdekoodeja ja -tiedostoja ei yleensä ole saatavilla, tarjoaa pelien kääntäminen myös ainutlaatuisia teknisiä ja tarinankerronnallisia haasteita. Taistelu muistin vähyyttä vastaan Englanninkieliset ilmaukset ovat usein monisanaisempia kuin alkuperäiset japaninkieliset, mistä seuraa suurempi muistinkulutus. Tämän takia kääntäminen vaatii usein myös taitavaa graafikkoa, joka osaa jäljitellä alkuperäisten taiteilijoiden tyyliä. Onnistuu se muillakin kielillä Pelejä ei käännetä aina pelkästään englanniksi, vaan niitä on tehty jopa arabiaksi. Kahdeksanbittisillä alustoilla ideogrammimerkistön käyttäminen ei yleensä ole mahdollista, koska muistia on vähän. Niinpä fanit ovat toimineet oma-aloitteisesti. Näitä teoksia voi tarkastella ja ladata Yliluoman sivuilta.. Vasta internetin ja emulaattoreiden yleistymisen myötä tulivat pinnalle julkisesti dokumentoidut ja maailmanlaajuiset käännösprojektit, joissa huomio keskittyi erityisesti tarinasisältöön ja käännöksen laatuun. Jälkimmäisen etuna on se, että peliruudussa pienellä kuvapistemäärällä voi ilmaista suuren määrän informaatiota. Näin kompromissien määrä väheni merkittävästi. Faneja tällaiset esteet eivät kuitenkaan haittaa. Joskus pelistä jätettiin pois tarinalle tärkeitä osia. Fanikääntämisen taide ja tiede Muutamia poikkeuksia lukuun ottamatta fanikäännöksiä tehdään japanilaisista peleistä, joista julkaisija ei ole tehnyt virallista käännöstä. Heidän tavoitteenaan on käännöspelien saatavuuden parantaminen ja pelikokemusten jakaminen muillekin. Pelejä käännettiin pienissä piireissä jo 80-luvun lopussa ja 90-luvun alkupuolella, mutta siitä ei jäänyt juurikaan todisteita. Ohjelmoijien vastuulla on pelin ohjelmakoodin muuttaminen ja alkuperäisten, vierasta kieltä sisältävien grafiikoiden ja tekstien korvaaminen käännetyillä. Toiminta käynnistyi, kun laiteharrastajat löysivät ensimmäisistä suurista ROM-tiedostokokoelmista pelihelmiä, joita ei ennestään länsimaissa tunnettu. Siksi pelien käyttöliittymässä ja dialogissa suosittiin yleensä äännemerkistöjä, ja sellaisen korvaaminen länsimaisilla kirjaimilla onkin yleensä huomattavasti pienempi työ kuin vastaavien ideogrammien. Niitä kääntäjäryhmä ratkoo yhteisvoimin. Käännettyihin kuviin täytyy sisällyttää pelin ja tarinan ymmärtämisen kannalta oleellinen tieto. Varsinkin konsolipeleissä rajoitteena on pelimoduulin ROM-muistin määrä ja pelin muistinkäyttöä voi joutua miettimään uudelleen. Julkaisut sisälsivät vain vähän tekstiä. Peleissä saattaa esiintyä japanilaista tekstiä myös grafiikoissa, kuten pelin nimiruudussa, taustagrafiikassa ja onomatopoeettisissa äänitehosteissa, joiden idea on lainattu mangasta. Joskus se vaatii pelikoodin kekseliästä muokkaamista tai pelin alkuperäisen fyysisen muistikonfiguraation korvaamista suuremmalla vaihtoehdolla. Pelkän valikkotekstin ja dialogin kääntäminen ei kuitenkaan aina riitä. Kulttuurierot toki vaikeuttavat kääntämistä ja saattavat tehdä sen taloudellisesti kannattamattomaksi. Kulttuurinen tietous on tärkeää, jotta länsimaiselle kohdeyleisölle vaikeasti avautuvat viittaukset voidaan korvata tutummilla vastineilla. Niinpä he usein typistivät käännöksestä tekstiä. Monet varhaiset pelikäännökset olivat laadultaan heikkoja, koska käännösprojekteja aloittelevat amatööriohjelmoijat eivät useinkaan osanneet lisätä peliin länsimaisten kielten vaatimaa tilaa. Graafikoiden tehtävään kuuluu alkuperäisteoksen vieraskielisten kuvaelementtien muokkaaminen ja uusien kirjaintyyppien luominen. Lisäksi projekteissa voi olla mukana tekstikäsikirjoitusta parantelevia ja muokkaavia editoijia sekä testaajia, joiden tehtävänä on testata käännöspelien toimivuus ja ymmärrettävyys. 55 K ulttuuriset erot länsimaiden ja Aasian maiden pelihistoriassa ovat aiheuttaneet sen, että monia aasialaisia pelejä ei ole lainkaan julkaistu länsimaissa, lähinnä kaupallisista syistä. Jo 90-luvulta saakka he ovat hakkeroineet alkuperäisiä pelejä ja kääntäneet niitä toiselle kielelle. Tämä vaatii yleensä kattavaa ymmärrystä lähdeteoksen kulttuurikontekstista. Grafiikassa erityinen haaste on alkuperäisen pelin visuaalisen kielen ja tyylin säilyttäminen. Fanikäännösprojektien historia ja ryhmien organisointi Tietokoneja konsolipelien laajamittaiset fanikäännökset ovat ainutlaatuisesti internetin synnyttämä ilmiö. Tässä artikkelissa keskitytään näihin myöhempiin, kunnianhimoisempiin ja teknisesti haastavampiin projekteihin. Monille käännösprojekteille saumaton graafinen kokemus on kunnia-asia ja merkittävä tekijä käännöksen laadussa. Kun yhteisöjen tekninen osaaminen, työkalujen laatu ja ryhmien keskinäinen tiedonvaihto paranivat vuosien saatossa, parani myös käännösten laatu huomattavasti. Parhaiten tunnetut esimerkit olivat piraattijulkaisuja ja syntyivät Nintendon Famicom/NESin ja muiden pelilaitteiden harrastusja piraattipiireissä. Joel ”Bisqwit” Yliluoma on kääntänyt muun muassa Tales of Phantasian, Chrono Triggerin ja Castlevania II – Simon’s Questin suomeksi. Jo alkuvaiheessa käännösryhmät koostuivat useista erilaisista jäsenistä. Käännösten tekeminen kun on kallista, etenkin jos pelin myynti jää vähäiseksi. Moni alkujaan heikkolaatuinen käännös julkaistiin myöhemmin uudelleen, kun toiset ryhmät olivat parannelleet aiempia käännöksiä. Näissä ei huomioida laitteiston ominaisuuksia joko tarkoituksella tai naiivin toteutuksen vuoksi. Usein ohjelmoijat kehittävät myös työkaluja niille, joilla on vähemmän teknistä osaamista tai joilla on asiantuntemusta muilla aloilla
Varsinainen käännös valmistui vasta vuonna 2007, mutta käsikirjoitus ja käännetyt grafiikat piti vielä upottaa pelimoottoriin. Sega Saturn -version virallinen englanninkielinen versio luvattiin kauppoihin jo 1996, mutta sitä ei kuitenkaan julkaistu koskaan. Niinpä projekti pysähtyi noin vuodeksi. Niihin lasketaan kaikki alkuperäisen kehittäjän, Zunin Shanghai Alice -studion teokset. Kojiman peleistä se oli ainoa, jota ei koskaan lokalisoitu länsimaihin. Internet on kuitenkin mahdollistanut mannertenväliset yhteistyöprojektit, joissa japanilaiset jäsenet auttavat muita ymmärtämään japanilaisia käsitteitä. Pelistä julkaistiin myös dubattu versio, jonka ääninäyttelijöiden taidot ovat jokseenkin kyseenalaiset. Peleissä selviämisen elinehtoja ovat sekä ulkoa opettelu että toistuvien kuvioiden tarkka ennalta lukeminen. Vuosia myöhemmin SNES-käännöksestä julkaistiin paranneltu PlayStation 1 -versio, jota tehtiin useita vuosia. Pelin on luonut Hideo Kojima, joka tunnetaan Metal Gear -sarjastaan. Emulaattoreiden yleistyessä tämä teknisesti ja sisällöllisesti näyttävä teos sai paljon huomiota, mutta sen kääntäminen oli erityinen haaste, koska peli oli massiivinen ja sisälsi japaninkielistä puhetta. Tunnettuja käännösprojekteja Policenauts Translation Project (1996) Monien fanikääntäjien unelmaprojektina oli pitkään CD-helmi Policenauts. 13 vuoden ajan viilattu Policenautsin käännös onkin yksi korkealaatuisimmista fanikäännöksistä, jolle monet virallisetkin käännökset kalpenevat. Peli jäi melko tuntemattomaksi Japanin ulkopuolella. Slowbeef onnistui purkamaan pelikoodin, ja pelin fanikäännöksen ensimmäinen versio julkaistiin sopivasti Kojiman syntymäpäivänä vuonna 2009. Toisaalta animen ja japanilaisen elokuvan maailmanlaajuinen suosio on tehnyt monista aiemmin vieraista käsitteistä arkipäiväisiä myös länsimaiselle yleisölle. Se kuvitettiin animetyylisesti videoilla. Se oli scifiseikkailu, joka sisälsi valtavasti tekstiä sekä puhuttua dialogia alusta loppuun saakka. Touhou Project (1996) Varmaankin kaikkien aikojen suosituin Doujinsoft-sarja, länsimaalaisittain karkeasti tulkittuna indiepelisarja Touhou Project, sisältää pääkaanonissaan jo kymmeniä pelejä. Tähän tarvittiin taitavaa ohjelmoijaa, joka tekisi pelin tiedostoihin ja ohjelmakoodiin tarvittavat muutokset. Touhou-sarjan ensimmäinen peli oli eräänlainen Breakout-klooni, mutta myöhemmissä luomuksissa on keskitytty danmaku-pelityyliin, joka käännetään englanniksi bullet helliksi eli luotihelvetiksi. Tales of Phantasia (1995) Tales of Phantasia on Wolf Team -ryhmän kehittämä japanilaistyylinen, fantasiamaailmaan sijoittuva JRPG-roolipeli Nintendon SNES-konsolille. 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.net. Something Awful -sivuston käyttäjä Michael ”slowbeef” Sawyer aloitti kuitenkin PlayStation-version kokeilun syksyllä 2008. Tämä versio on vieläkin kunnianhimoisempi, sillä se sisältää puheiden tekstityksen ja PS-version lisäsisällön käännökset. Yhtenä syynä saattaa olla se, että japaninkielisiä pelejä julkaistaan virallisestikin suuret määrät ja ne kattavat merkittävän osan runsastekstisistä länsimaisista peleistä. Kaikille sarjan peleille on yhteistä taikamaassa seikkailevat taikatytöt, keijut, noidat ja ties mitkä muut yliluonnolliset olennot, joiden tärkein hyökkäysmetodi on epileptisten kuviomerten taikominen pelaajahahmoa vastaan. Käännökset toiseen suuntaan eli englannista japaniksi ovat äärimmäisen harvinaisia. Lisäksi fanit ovat tehneet pelejä, joissa käytetään samoja hahmoja ja joskus myös samoja peliominaisuuksia. Niinpä fanit aloittivat oman käännösprojektinsa, jota tehtiin yli vuosikymmen. 56 2013.4 Kulttuurisidonnaisuus Kuten käännöstyössä yleensäkin, on japanilaiselle kulttuurille ominaisten käsitteiden kääntäminen omanlaisensa haaste. Lopullinen käännös ei koskenut puheeseen mutta käänsi kaiken tekstin ja grafiikan. Ensimmäinen virallinen käännös pelistä julkaistiin vasta vuonna 2006 Gameboy Advancelle. Kääntäjille Touhou-peleissä on ollut työtä lähinnä tarinaosuuksissa ja käyttöliittymäteksteissä. Japanilaisilla on myös pitkä suhde videopeleissä käytettyyn englantiin, minkä ansiosta pelisanasto on monille tuttu, vaikka englantia ei muutoin hyvin osaisikaan.. Luotihelvettitermi onkin äärimmäisen osuva nimitys ammuntaja väistelypelille, jossa monimutkaiset ammuskuviot tavoittavat omanlaisensa esteettisen kauneuden. Niinpä Touhou-pelejä on pelattu jo ennen fanikääntäjien julkaisuja, sillä kielimuuri ei juuri pelaamista hidasta
Olen ollut puolisen vuotta Vincitillä kehittämässä web-palveluita. 57 Tulin Vincitille 2009, jolloin meitä oli noin 20. Siitä yritys on mennyt huimasti eteenpäin ja nyt meitä on jo 80! Nykyisin vedän Vincitin mobiilitiimiä. Ollaan toteutettu esimerkiksi metsästystutka, lyhytelokuvapalvelu ja muumipeli. – Juha R. Juha ja Tommi etsivät työkaveria tositarkoituksella careers@vincit.fi www.vincit.fi Vuoden yritys 2013 – OP-Pohjola & Kauppalehti. Työn ja opiskelun yhteensovittaminen onnistuu helposti, sillä TTY on kävelymatkan päässä ja Vincitillä ollaan joustavia työaikojen suhteen. Projektit ja niissä käytetyt teknologiat ovat olleet tosi monipuolisia. Meinataan hukkua mielenkiintoisiin projekteihin joten apuvoimia kaivataan kuumeisesti. – Tommi L
Muutamalla lauseella pystyi luomaan mielikuvia massiivisista avaruustaisteluista, joiden toteuttaminen tietokonegrafiikalla oli vain muutaman kyberpunkkarin haaveunta. Parseri on ohjelmakomponentti, joka kääntää pelaajan luonnollisella kielellä kirjoittamat komennot tietokoneen ymmärtämään muotoon. 58 2013.4 Pelit 80 -luvulla tietokonegrafiikka oli vielä varsin alkeellista, eikä kotimikroilla pystynyt luomaan kovin näyttäviä kohtauksia tukeutumatta pelaajan mielikuvitukseen. Legendaarinen Zork, yksi genren varhaisimmista edustajista, alkaa tilanteesta, jossa peli kertoo hahmon olevan avoimella niityllä valkoisen talon länsipuolella. KehitTekstipelien lumo – Pulmapeleistä interaktiiviseen fiktioon Nykypeleihin tottuneille tekstipelit näyttävät karuilta. Etenkin kotimikroaikaan parserit ymmärsivät usein vain kahden sanan komentoja, kuten ”open door” tai ”kill spider”. Kauppinen, Janos Honkonen. Ei ihme, että kyseinen vuosikymmen oli tekstipelien kulta-aikaa. Talon ikkuna on suljettu laudoilla ja sen edessä on pieni postilaatikko. Yksinkertaisimmillaan pelimaailman kuvaukset saattavat olla parin lauseen mittaisia. Teksti: Janos Honkonen Kuvat: Mikko Rasa, Jukka O. Pelaaja voi reagoida tilanteeseen kirjoittamalla yksinkertaisen komennon, vaikkapa ”avaa postilaatikko” tai ”katso taloa”, minkä jälkeen peli kertoo, mitä toiminnasta seuraa. Tekstipelejä ei nykyisin pelikauppojen hyllyiltä löydy, mutta lajityyppi on kaikkea muuta kuin kuollut, kiitos innokkaan ja aktiivisen harrastajakunnan. Mutta vaikka kuvaukset saattoivatkin olla pitkiä, oli parseri varsin alkeellinen. Tekstipeli, anteeksi mikä. Tekstipeleissä pelaaja saa tekstimuotoisen kuvauksen pelihahmon ympäristöstä, tilanteesta ja maailmassa tapahtuvista asioista, ja pelaaja ohjaa hahmoaan tekstikomennoin. Fotorealismiin 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ä
Luonnollista kieltä käyttävien komentojen tarkoitus oli tehdä pelistä helposti lähestyttävä myös tietokonetaidottomille. Crowther loi pelin avioerossa vieraantuneille lapsilleen ja pyrki yhdistämään siinä omia kiinnostuksen kohteitaan, kuten luolailun ja Dungeons & Dragons -roolipelin. Vuonna 1982 julkaistu The Hobbit oli yksi aikansa menestyksiä ja myi yli 100 000 kappaletta. Niinpä Activision osti Infocomin vuonna 1986, Level 9 Computing lopetti toimintansa 1991 ja Magnetic Scrolls laittoi lipun luukulle 1992. Linnunradan käsikirja liftareille -teoksen kirjoittaja Douglas Adams osallistui myös itse pelin suunnittelemiseen sekä kirjoitti Infocomille toisenkin pelin nimeltään Bureaucracy. Vuonna 1986 julkaistu Space Quest, 1987 päivänvalon nähnyt Leisure Suit Larry ja vastaavat seikkailupelien klassikot olivat näyttäviä ja helpommin lähestyttäviä kuin puhtaat tekstipelit. Englanninkielisessä maailmassa nimityskäytäntö on hieman sekavampi. Termillä interaktiivinen fiktio viitataan pääasiassa uuden polven tekstipeleihin. 59 tyneemmät parserit selvisivät jo varhain vaikeammista komennoista, kuten ”plant the pot plant into the plant pot and drop it”. Luolastoista Linnunradan käsikirjaan ja pehmopornoon 80-luvun alkupää oli kaupallisten tekstipelien kulta-aikaa. Ydintuhon pelkoa ja poliisivaltiota käsittelevä peli oli suoraa kritiikkiä Ronald Reaganin ajan politiikalle. Kyseessä on seikkailupeli, jos pelissä on kehittyneempää animaatiota, jota voi ohjailla esimerkiksi liikuttamalla hahmoa ruudussa, kuten ensimmäisissä Leisure Suit Larry -peleissä. Se loi koko lajityypille pohjan, jota käytetään yhä tänään. Näiden kaikkien takaa löytyy alan merkittävin pelijulkaisija Infocom, joka vuonna 1979 kehittämä Z-machine-järjestelmä on käytössä edelleen. Pelimaailma on jaettu ”huoneisiin”, jotka eivät ole varsinaisia huoneita maailman sisällä vaan ne voivat olla yhtä hyvin avaruusaluksen komentosilta, vuoren huippu kuin ruohotasanko. Kahden sanan komentojen sijaan pelin Inglish-parseri ymmärsi monimutkaisia lauseita, adverbeja ja välimerkkejä, mikä mahdollisti ennennäkemättömän luonnolliset komennot. Steve Meretzkyn kirjoittama A Mind Forever Voyaging on vakavamielinen ja poliittinen tarina, jossa pelaaja kontrolloi maailman ensimmäistä tekoälyä nimeltään PRISM. Silloin syntyivät sellaiset klassikot kuin Zork-sarja, The Hitchhiker’s Guide to the Galaxy, Trinity ja Mind Forever Voyaging. Vaikka tämä ei olisi tarinan tasolla luontevin mahdollinen tapa, sitä käytetään usein edelleen siksi, että käytäntö on pelityypin harrastajille tuttu. Esimerkiksi Monkey Island -pelisarja jatkaa suoraan huumoritekstiseikkailujen perintöä. Sen nimi oli ytimekkäästi Adventure, joskin myöhemmin se on tunnettu myös nimillä Colossal Cave ja Colossal Cave Adventure. Jotkut tekevät myös eron text adventuren ja interactive fictionin välillä. Vanhat seikkailupelitalot eivät sopeutuneet uuteen aikakauteen. Adventure sisälsi kaikki nykypeleistä tutut elementit: tekstimuotoisen kuvailun ja parserin, yksinkertaiset puzzlet sekä nykyisissä kirjallisissa peleissä harvemmin käytettävän pisteytyksen. Eräs tekstipelihistorian virstanpylväistä oli Infocomin julkaisema ”seksifarssi” Leather Goddesses of Phobos, joka aiheutti aikanaan niin paheksuntaa kuin hihittelyä. Samoja teemoja käsitteli Brian Moriartyn Trinity, joka sekoittaa teemoja proosarunoudesta, ydintuhosta ja sodan turhuudesta fantasiaelementteihin. Osa tekstipeleistä jatkoi Adventuren ja Dungeons & Dragonsin viitoittamalla kevyellä seikkailulinjalla, mutta pelityypin kirjalliset ulottuvuudet ymmärrettiin jo varhain. Graafisten pelien voittokulku Tekstipelien kaupallinen suosio hiipui 90-luvun vaihdetta lähestyttäessä. Aitoa luolaa höystettiin fantasiahahmoilla, kuten kääpiöillä, varastelevalla merirosvolla ja peikolla. Luolaharrastaja Will Crowtherin luoma peli oli virtuaaliversio Yhdysvalloissa Mammoth Caven kansallispuistossa sijaitsevasta Colossal Cave -luolastosta. Liikkuminen tapahtuu perinteisesti ilmansuuntien mukaan sekä ylös ja alas. Tässä ensimmäisellä tarkoitetaan kevyitä puzzle-pelejä, jälkimmäisellä kirjallisempia, kerrontaan painottuvia teoksia. Infocomin seuraaja Legend Entertainment julkaisi 90-luvun alussa muutamia graafisia tekstipelejä, kuten Gateway-pelit ja kolme humoristista Spellcasting-seikkailua, mutta vuodesta 1993 myös Legend julkaisi vain graafisia seikkailupelejä. Termi interactive fiction viittaa pääasiassa tekstipeleihin, mutta sitä voidaan myös käyttää seikkailupeleistä. Kevyemmän puolen tekstipeleissä luotiin humoristinen ja fantastinen kerrontatapa, joka elää edelleen graafisten seikkailupelien puolella. Kyseessä oli humoristinen ja eroottissävytteinen peli, joka tarjosi mahdollisuuden pelata niin mieskuin naishahmoa ja valita pelin rivousasteen. The Hobbitin parseri oli aikaansa nähden erittäin kehittynyt. Tekstipelien monet nimet Suomalaisittain tekstipeliksi kutsutaan peliä, jossa pääpaino on tekstimuotoisilla kuvailuilla ja komennoilla, mutta mukana voi olla myös animoituja still-kuvia. Tekstipelit eivät olleet alkumetreilläkään pelkkää kevyttä viihdettä, vaan niissä käsiteltiin ydintuhoa, politiikkaa ja muita raskaampia teemoja.. 70-luvun luolaseikkailu loi uuden pelityypin Maailman ensimmäinen tekstipeli luotiin vuonna 1975. 80-luvulla nähtiin myös joitain lisenssitekstipelejä, joista tunnetuimmat ovat The Hitchhiker’s Guide to the Galaxy ja The Hobbit. Britannian markkinoilla merkittävimmät julkaisijat olivat Level 9 Computing ja Magnetic Scrolls
Cadren Photopia tuuppasi tekstipelikenttää uuteen kirjallisempaan suuntaan, Graham Nelson on InformInteractive Fiction Competition, tuttavallisemmin IFcomp, järjestetään jo 19. Alun perin harrastajat kokoontuivat ja keskustelivat vuonna 1987 perustetuissa rec.arts.int. Keskustelun kulusta riippuen tarina voi päättyä hyvin eri tavoilla. Sen sijaan pelit käännettiin Z-Code-välikoodiksi, joka tarvitsee Z-machine-tulkin toimiakseen. Pieni nostalgian läikähdys sai minut lataamaan pelin ja kokeilemaan, millaista kamaa genressä onkaan luotu vuonna 1998. Robertsin vuonna 1988 julkaisema TADS, Text Adventure Development System, sekä Graham Nelsonin vuonna 1993 julkaisema Inform, jolla oli mahdollista luoda Infocomin käyttämää Z-Code-koodia. Näin koko pelivalikoima saatiin tuotua uusilla alustoille kertarysäyksellä, eikä niitä tarvinnut kääntää yksitellen. Infocomin perintö ja TADS Vaikka graafiset pelit valtasivat täysin kaupalliset markkinat, tekstipelit jatkoivat elämäänsä tiiviin harrastajapiirin ansiosta. Harrastajakentän merkittäviin nimiin kuuluvat mm. Tekstipelien harrastajajulkaisussa tärkeässä osassa ovat Michael J. Edellisten lisäksi vuosittain jaetaan XYZZY-palkinnot eri kategorioissa, kuten paras peli, parhaat pelihahmot, paras puzzle ja niin edelleen. kerran. Seikkailusta kirjallisuuteen – harrastajan näkökulma Oma historiani tekstipelien harrastajana alkaa jo 80-luvulta, jolloin pelejä tuli pelattua alaja yläaste-englannilla sanakirja toisessa kädessä. 60 2013.4 Tähän loppui käytännössä tekstipelien historia kaupallisina tuotteina ja pelien kehittäminen siirtyi harrastajatoiminnaksi. Saan kiittää englannin kielen kympeistäni niitä tunteja, jotka vietin The Hobbitin, Castle Adventuren, Fools Goldin, Jinxterin, Aztec Tombin ja vastaavien pelien parissa. fictionja rec.games.int-fiction-uutisryhmissä, joista keskustelu on vasta viime vuosien aikana siirtynyt modernimmalle nettifoorumille, osoitteeseen intfiction. Koska luin samaan aikaan paljon tieteisja muuta kirjallisuutta, muistan kevyen puzzle-painotteisuuden ärsyttäneen minua jo tuolloin. Vuosittain julkaistaan kymmeniä uusia pelejä, jotka ovat käytännössä kautta linjan ilmaisia. Photopia on erinomainen esimerkki uuden aikakauden tekstipeleistä, joilla ei käsikirjoituksen ja tarinankerronnan tasolla ole hävettävää ”oikean” kirjallisuuden rinnalla. Sitä tasapainottamaan perustettiin toinen kilpailu nimeltään Spring Thing, jolla haluttiin houkutella uusia julkaisuja myös kevätkaudelle. Eräs toinen merkittävä klassikko on Emily Shortin Galatea, joka koostuu kokonaan keskustelusta päähenkilön ja elävän patsaan välillä. Kilpailun voittajat ovat hyvä tapa tutustua tekstipelikentän parhaimmistoon. Tekstipeliharrastus jäi hiljaiseloon kymmeneksi vuodeksi, kunnes 2000-luvun alussa törmäsin sattumalta verkossa Photopia-nimiseen peliin. Suurin osa kohtaamistani peleistä oli suhteellisen yksinkertaisia seikkailuja. Eräs merkittävä tekijä tälle oli Infocomin nerokas ratkaisu olla kääntämättä pelejään suoraan natiivikoodiksi, joka toimii vain tietyllä käyttöjärjestelmällä tai alustalla. Tämä tarkoittaa sitä, että pelejä voi pelata millä tahansa alustalla, jolle joku tekee toimivan tulkin. Peli jätti hiljaiseksi, todella hyvällä tavalla. com/forum. Kilpailuja, palkintoja ja aktiivinen yhteisö Tekstipelien ympärille on muodostunut aktiivinen ja innokas faniyhteisö, joka on toiminut jo 80-luvulta saakka. Andrew Plotkin, Emily Short, Adam Cadre sekä Graham Nelson. Olin tietämättäni ladannut yhden lajityypin uusista klassikoista, jossa oli painotettu puzzlejen sijaan kirjallista sisältöä ja kokemuksellisuutta. InfoTaskForce-niminen harrastajaryhmä purki Infocomin Z-Code-koodin jo vuonna 1987 ja teki oman avoimen lähdekoodin ”soittimensa”, joka mahdollisti Infocomin pelien pelaamisen monilla uusilla alustoilla. Nämä pelit voisivat olla niin paljon enemmän! Väsäilin itse joitain pelintynkiä, mutta koska en ollut silloin kuullut Informin tai TADSin kaltaisista järjestelmistä, parserin koodaaminen täysin nollasta osoittautui aina pullonkaulaksi. Plotkin pääsi otsikoihin onnistuttuaan keräämään Kickstarter-kampanjalla 31 000 dollaria Hadean Lands -tekstipelin kehittämiseen. Harrastajat luovat yhä keveitä seikkailupelejä, mutta myös tiukkaa proosaa, jossa fyysisen maailman esinepähkinöitä tärkeämpää saattaa olla hahmojen välinen kanssakäynti tai yleinen kirjallinen kokemus. Yksinkertaistaen tätä voi ajatella niin, että välikoodiksi käännetty peli on kuin mp3-musiikkitiedosto, jonka voi toistaa millä tahansa laitteella, jolle on kehitetty mp3-soitto-ohjelma. Inform 7 -kehitysympäristö mahdollistaa koodaamisen lähes luonnollisella kielellä.. Julkaisusesonki painottuu yleensä loppuvuoteen, jolloin järjestetään tekstipelien suurin vuosittainen kilpailu IFcomp
Hyviä vaihtoehtoja ovat Windows-, OS Xja Linux-alustoille löytyvä Gargoyle ja OS X:lle julkaistu helppokäyttöinen Zoom. Järjestelmä ei käännä luonnollista kieltä suoraan välikoodiksi, vaan ensin perinteisemmäksi Inform 6 -koodiksi, joten se on rakennettu toimivaksi todetulle pohjalle. TADS3 tarjoaa myös melko monimutkaisen maailmamallin, Inform 7 taas minimaalisen. TADS3 (http://www.tads.org) puolestaan tarjoaa perinteistä ohjelmointia, jonka parissa kokeneet koodaajat ovat kuin kotonaan. Tarkempi erittely järjestelmien eroavaisuuksista löytyy Brass Lantern -sivustolta: http://brasslantern.org/writers/iftheory/ tads3andi7.html Vähemmän käytetty Hugo-järjestelmä on tutustumisen arvoinen niille, jotka haluavat luoda paljon multimediaa sisältäviä pelejä. Aiemmat versiot sekä Informista että TADSista ovat melko perinteistä koodia hakasulkeineen, muuttujineen ja funktioineen, mutta Inform 7:n kehittäjä Graham Nelson otti järjestelmän uusimman version kehittämisessä rohkean askeleen: jos pelit perustuvat luonnolliseen kieleen, myös niiden koodaamisen pitäisi onnistua luonnollisella kielellä. • Galatea (Emily Short, 2000): Keskustelu taideteoksen, elävän patsaan, kanssa. Tällä hetkellä ylivoimaisesti käytetyin järjestelmä on Inform 7 (http://inform7.com/), jonka lähestymistapa pelikehitykseen on vallankumouksellinen. Tarinat julkaistaan usein blorb-wrapperissa, jolloin niiden tiedostopääte on .zblorb tai .gblorb. Tällä hetkellä pelejä luodaan pääasiassa kolmella järjestelmällä: Informilla, TADSilla sekä Hugolla. Pelaaminen onnistuu myös iOSja Android-laitteilla jo jopa joillakin graafisilla laskimilla. 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). Oma peliprojekti käyntiin Ennemmin tai myöhemmin harrastaja miettii oman pelin tekemistä. Edellinen oli raaka yksinkertaistus alaa vaivaavasta tiedostomuotoja nimikaaoksesta, sillä variaatioita ja julkaisujärjestelmiä on moninkertaisesti enemmän. Ilman wrapperia Z-Code-tiedostojen pääte on .z5 tai .z8, gluxl-pelien .ulx. Suositeltavia tulkkeja ovat muun muassa Gargoyle ja Zoom. Pelejä on julkaistu lähes 20:ssä eri tiedostomuodossa, mutta osa niistä on hyvin harvinaisia. OS X:n Zoom mahdollistaa myös pelien etsimisen ja lataamisen suoraan tulkkiin ”Find more” -nappulaa painamalla. Wrapperit mahdollistavat multimedian lisäämisen pakettiin, ja tiedostopäätteen ensimmäinen kirjain kertoo, onko kyseessä Z-Machinevai gluxl-muotoinen peli. Sen varsinainen kehitysympäristö on saatavilla vain Windows-järjestelmille, joten esimerkiksi OS X -käyttäjien on tyytyminen komentotulkkityökaluihin. Instead of taking the coat, say ”It is not your coat to take.”’ Inform 7:n luonnollisen kielen koodaus ei ole pelkkä kikka, vaan pienen totuttelun jälkeen se on suorastaan hämmentävän toimiva. Suosituin näistä on Inform, joka luo Infocomin Z-machinen käyttämää Z-Codea sekä uudempia gluxl-tiedostoja. TADS-tiedostojen pääte on .gam tai .t3, Hugo-tiedostojen .hex. The coat is a wearable thing in the cottage. Hugolla ja muilla järjestelmillä tehdyt pelit ovat suhteellisen harvinaisia. Käytännössä Inform 7:n koodi voi näyttää esimerkiksi seuraavalta: ’The cottage is a room. • Violet (Jeremy Freese, 2008): Istu työhuoneessasi, kirjoita tuhat sanaa opinnäytetyötäsi äläkä anna minkään – minkään – häiritä. Myös itse kehitysympäristö on selkeä ja helppokäyttöinen niillekin, jotka eivät ole aiemmin ohjelmoineet. php/Interpreter. Sotkun vuoksi uuden seikkailijan kannattaa ehdottomasti kokeilla tekstipelejä tulkilla, joka tukee suoraan useimpia tekstipelien tarinatiedostomuotoja. Se jokin odottaa mökissä. Kakkossijalla on TADS. Moderneja tekstipelejä ei julkaista itsenäisinä, ajettavina peleinä, vaan niiden pelaamiseen tarvitaan tulkkiohjelmisto eli tekstipelien ”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 tulkeista löytyy osoitteesta http://ifwiki.org/index. Tekstipelitulkit Tekstipelien pelaamiseen tarvitaan tulkki, eräänlainen pelitiedostojen ”soitin”. Kuinka päästä alkuun interaktiivisen fiktion pelaamisessa. Joukossa on paljon huteja, mutta vähintään yhtä paljon täysosumia, jotka antavat osviittaa siihen, millaista pelikäsikirjoittaminen voisi olla parhaimmillaan myös kaupallisella puolella.. 61 järjestelmän pääkehittäjä ja Emily Short on paitsi luonut useita palkittuja pelejä, myös osallistunut aktiivisesti Inform-järjestelmän kehittämiseen. Epäkaupallinen kehitystyö antaa tekijöille mahdollisuudet kirjoittaa kokeilevia, rankkoja ja haastavia tarinoita, jotka eivät läpäisisi kaupallisten julkaisujen seulaa. Laadukkaan pelinkirjoituksen ystäville Tekstipelit tulevat tuskin nousemaan enää kaupallisesti merkittäväksi tuotteeksi, mutta taiteellisessa mielessä ne ovat erittäin kiinnostava pelityyppi. Suurin osa moderneista sekä vanhoista ei-kaupallisista tekstipeleistä on ladattavissa The Interactive Fiction Databasesta, joka sijaitsee osoitteessa http:// ifdb.tads.org. TADS3 on olio-ohjelmointikieli, siinä missä Inform 7 on sääntöpohjainen järjestelmä. Aloittelijan näkökulmasta Inform 7 mahdollistaa yksinkertaisen pelin kirjoittamisen yhdessä illassa ilman mitään ohjelmointikokemusta, TADS3 taas vaatii enemmän perehtymistä. zblorb, z5, z8, gblorb, blb, acd, gam… Tekstipelejä on luotu 20 vuotta harrastajilta harrastajille, joten valitettavasti tiedostomuotojen selkeys ja käytettävyys jättävät toivomisen varaa. Modernien tekstipelien valioita – kirjoittajan suosikit • Photopia (Adam Cadre, 1998): Tarina, joka yhdistää arkisen elämän tragedian nuoren tytön unelmiin Mars-lennosta. • The Warbler’s Nest (Jason McIntosh, 2010): Nuori nainen seisoo joen varrella ruovikossa. • Vespers (Jason Devlin, 2005): Rutto niittää kuolemaa luostarin ulkopuolella ja jokin muu sen sisällä
Suosituimpia lähteitä ovat Donkey Kong, Mega Man, Touhou Project ja muut Super Mario -pelit. Ahkerat ja avuliaat harrastajat ovat muuntaneet ja valmistaneet näiden ja muiden pelien musiikkia, vihollisia, palikoita ja grafiikkaa muotoon, jossa niitä voi liittää omaan romhackiin. Yleisimmin Super Mario Worldiin yhdistetään elementtejä muista peleistä. FPI: The Second Reality Project (2002) oli ensimmäisiä valmistuneita Super Mario Worldiin perustuvia romhackeja. Teksti: Pauli Marttinen S uper Mario World on todellinen kuolematon klassikko. Pelin hakkeroinnille on monia syitä. Pelit. Vuonna 1990 julkaistun pelin loputonta suosiota syventää entisestään romhack harrastus eli rom-moduulin sisällön muokkaaminen. Jotkut taas tahtovat tehdä uuden pelin vanhan pelin pohjalta, ja joskus ajatuksena on vain nostaa valmiin pelin vaikeusastetta. Todennäköisesti juuri työkalujen ja nostalgian vuoksi Super Mario Worldista on tullut selvästi suosituin peli romhack-yhteisölle. Myös romhackien peluuvideot YouTubessa ovat suosittuja, yhtäältä hauskojen uusien ideoiden vuoksi ja toisaalta viihdyttävien kommentaarien ansiosta. Tietokoneelle tallennettua Super Nintendon pelimoduulin kuvatiedostoa eli smc-tiedostoa (Super Mario Cartridge) voi käsitellä niin paljon kuin mielikuvitusta riittää. 62 2013.4 Sorvaa Mariolle haastetta Kuka ei olisi haaveillut omien Super Mario -kenttien väsäämisestä. Valmiiden työkalujen avulla peliin voi tehdä omien kenttien lisäksi omat kartat, oman musiikin, omaa grafiikkaa, omia vihollisia sekä bugien korjauksia ja uusia ominaisuuksia, kuten dialogeja. Aikanaan ruutuvihkoon tuherretut suunnitelmat voi lopultakin herättää henkiin. Joissakin tapauksissa on myös kyse pelkästä fanikäännöksen tekemisestä. Nykyään se on mahdollista. Super Mario Worldin ohella suosittuja hakkeroinnin kohteita ovat muut Mariopelit, Pokémonit, Mega Manit ja Final Fantasyt. Yleisin lienee omien kenttien tekeminen valmiiseen peliin. Oman romhackin tekeminen vaatii luonnollisesti reippaasti osaamista ja jaksamista, mutta valmiista kentistä pääsee nauttimaan melko pienellä vaivalla
Myös aiheensa puolesta peli pyörii musiikin ympärillä. S.N.N.: Mario’s Keytastrophe (2007–2009) oli ensimmäinen pelin ääniraitaa muokannut teos.. Esimerkiksi seitsemännen maailman kummitustalossa on kummitus, jonka ei saa antaa nälkiintyä, tai se syö Marion. Musiikki oli viimeinen hakkeroimaton Super Mario Worldin osa, ja Mario’s Keytastrophen käyttämän addmusic -työkalun myötä sekin on saatu hallintaan. Yksi pahamaineisimmista romhackeista on japanilaisen T. Kärsivällinen pelaaja R. Näille yhteistä on pelin poikkeuksellisen monipuolinen muokkaaminen eri alueiden osaajien ansiosta. Kiba päihittää armottoman vaikean pelin apunaan vain loputtomat elämät. Brutal Marion tavoin keskeneräiseksi jäänyt S.N.N.:n Mario’s Keytastrophe vuosilta 2007–2009 on ensimmäinen musiikin korvannut romhack. Ensimmäiset kentät ovat hyvin helppoja ja yksinkertaisia, mutta vaikeustaso nousee nopeasti ja korkealle. Maailmoja ovat muun muassa Legato Plateau ja Andante Region sekä kenttiä esimerkiksi Trumpeteer Cliffs ja Blue Melody Palace. Se on niin sanottu vaniljahack, eli vain kenttiä on muutettu. Jokaisessa kentässä on oma erityinen jipponsa. Näin laajaa ohjelmoinnin ja grafiikan muokkausta ja lisäämistä ei ollut ennen tehty. Myös Carolin keskeneräiseksi jäänyt Brutal Mario oli aikoinaan edistyksellinen. The Second Reality Project on haastavuudesta huolimatta jäänyt elämään yhtenä romhack-harrastuksen klassikoista. 63 Merkittäviä romhackeja Super Mario Worldin hakkerointi on 2000-luvun juttu. Kentissä tehtävänä on löytää avain. Sooloteosten lisäksi romhackeja tekevät myös useat isommat yhteisöt. Grafiikka, musiikki ja ohjelmointi on jätetty entiselleen. Siitä on vuosien saatossa tehty päivitettyjä versioita ja jatko-osia. Pelin kehityksestä ei ole kuulunut mitään vuoden 2008 jälkeen, mutta demoversiota voi pelata varsin pitkälle. Carol: Brutal Mario on pirullisen vaikea ja rikkoo Mario-kaavaa mielenkiintoisilla omilla tempuillaan. Massiivisimpiin projekteihin lukeutuvat muun muassa SMW Central -sivuston An SMW Central Production ja Talkhaus-yhteisön A Super Mario Thing. Se on osin aivan tyypillinen japanilainen romhack. Sama videosarja on myös YouTubessa otsikolla Asshole Mario. Nykyään epäreilun vaikeiksi tehtyjä romhackeja verrataan ensimmäisenä juuri tähän ja tietyntyyppisiä esteitä sanotaan kaizou-esteiksi. Brutal Marion merkittävyys on sekä kikoissa että linnojen loppuvastuksissa. Takemoton Yuujin Mario (’ kaveri-Mario ’), joka lännessä tunnetaan nimellä Kaizou Mario (’ muokattu Mario ’). Se alkoi kerätä suosiota, kun japanilaiselle videosivustolle, Nico Nico Dougalle, ladattiin romhackista läpipeluuvideosarja. Nimimerkki FPI:n vuonna 2002 luoma The Second Reality Project on ensimmäisiä romhackeja
Työkalulle annetaan alkuperäinen kuvatiedosto, sekä romhackattu versio. Romhack taas tallennetaan IPS-tiedostoksi Create Patch -painikkeella. Toissijaisilla poistumisreiteillä Mario astuu uuteen kenttään muualla kuin pääsisääntulon sijainnissa. Ipsja smc-tiedostot yhdistetään Floating IPS:n Apply Patch -painikkeella. 64 2013.4 Työkalut kokeilijalle Romhackeja jaetaan netissä ips-tiedostoina (international patching system). Toimenpiteestä syntyvän tiedoston voi ajaa emulaattorilla aivan kuin minkä tahansa tavallisenkin pelin. Layer 1 sisältää maa-, vesi-, ja muita palikoita, joiden kanssa Mario pääasiassa vuorovaikuttaa. Teit omat resurssit millä halusit, Lunar Magicilla koostat niistä pelattavaa. Yksiköiden rajat saa näkyviin F1-näppäimellä. Ne määritellään Modify Secondary Entrances -ikkunassa. Ips-tiedostoon tallennetaan pelkästään valmiin romhackin erot alkuperäiseen smc-tiedostoon verrattuna. Secondary Entrance/Exit Number -luettelosta valitaan määriteltävä poistumisreitti ja sen sijainti määritellään samoin kuin pääsisääntulon sijainti. Objektien kokoa voi kappaleesta riippuen venytellä tarpeen mukaiseksi. Karttaeditorissa kannattaa ottaa kenttänumerot näkyviin F1-näppäimellä nähdäkseen, minkä kenttien editoinnista on hyvä lähteä liikkeelle. Vaikka Marion pääsisääntulo ja puolivälisisääntulo kenttään eivät varsinaisesti ole spritejä, niitä voi siirtää sprite-muokkaustilassa samoin kuin muita spritejä. T. Syntyvän tiedoston voi jakaa turvallisesti netissä. Myös monien palikoiden grafiikka on riippuvaista käytetystä tiilisetistä. Syntyvän kuvatiedoston voi ajaa emulaattorilla, esimerkiksi ZSNES:llä. Floating IPS -työkalulla yhdistetään ipsja smc-tiedostot. Musiikit vaihtoon Suositellut työkalut musiikin lisäämiseen ovat HuFlungDu’s Addmusic ja AddmusicM . Kentät jakautuvat pienempiin yksiköihin eli screeneihin. Layer 2 sisältää samoja palikoita, ja se voi liikkua suhteessa Layer 1:een. Monien spritejen grafiikka on riippuvaista tiilisetistä ( tileset specific sprites ) eli siitä, mitä grafiikkaa kentän käyttöön ladataan. Add/Modify/Delete Screen Exits -ikkunassa määritetään, mihin kenttään ovet ja exit enabled -putket vievät. Add Objects -ikkunassa on lueteltuna Layer 1:lle ja 2:lle lisättäviä palikoita. Sen jälkeen kopioidaan Addmusicin hakemistossa sijaitsevat level -, ow ja misc -hakemistot sekä AddMusic.ini siihen hakemistoon, jossa smc-tiedosto on. Misc sisältää sekalaisia ääniä, kuten kuolemismusiikin. Ensimmäinen on ominaisuuksiltaan ja käytöltään yksinkertainen, jälkimmäinen monipuolisempi mutta myös monimutkaisempi. Musiikin lisäämistä varten smc-tiedostoa on ensin laajennettava. Taustakuvaa ( background ) ja Layer 2:ta ei voi olla kentässä samanaikaisesti, joten jos kentässä on taustakuva, Layer 2:ta ei voi editoida. Mikäli näiden spritejen oikea grafiikka sijaitsee muualla kuin ladattavissa osissa, ne näyttävät rikkinäisiltä niin editorissa kuin pelissäkin. Level-hakemistoon sijoitetaan kenttämusiikkitiedostot ja ow-hakemistoon karttamusiikkitiedostot. Jos poistumismääre on kenttänumero eikä toissijainen poistumisreitti eli secondary exit, Mario astuu uuteen kenttään sen pääsisääntulossa. Kentät rakennetaan Lunar Magicilla, joten se on keskeisin ohjelmisto pelin muokkaamisessa. Lyhyenä esimerkkinä lisäämme tässä pätkän tuttua laulua sekä karttaettä kenttämusiikiksi HuFlungDu’s Addmusicia käyttäen. Super Mario Worldista on liikkeellä erilaisia kuvatiedostoja, kuten englanninja japaninkielinen versio, mutta käytännössä kaikki ips-tiedostot pohjautuvat kuvatiedostoon nimeltä Super Mario World (U) [!].smc . Kartan editointi Overworld Editorissa on oma taiteenlajinsa, jota varten on käytännössä pakko tutustua syvällisempiin oppaisiin. Laajennus tapahtuu Lunar Magicin valikosta File > Expand ROM . Perusnäkymässä on kolme varsinaista muokkaustilaa: Layer 1, Layer 2 ja Sprite. Kopioi oheinen listaus ja tallenna se tekstitiedostona levelja ow-hakemistoiFloating IPS -työkalulla yhdistetään romhackin muutokset alkuperäiseen smc-tiedostoon. Ips-tiedostoja käyttämällä vältytään Super Mario Worldin itsensä laittomalta jakamiselta. Kentästä toiseen vievät ovet ja putket toimivat screen exit -määreellä. Sprite-kerros sisältää luonnollisesti spritet. Lunar Magic avaa ja tallentaa kentät suoraan smc-tiedostoon. Add Sprites -ikkunassa on lueteltuna spritejä, joihin lukeutuu vihollisten ja esineiden lisäksi komentoja, kuten automaattisen skrollauksen ohjaimet. Spritet ja objektit lisätään kenttään valitsemalla ne luettelosta ja painamalla hiiren kakkosnapilla kenttää pääikkunassa. Takemoto: Yuujin/Kaizou Mario (2007) on hyvä vaihtoehto, jos haluaa kirota myöhään yöhön epäreilulle suunnittelulle – tämä nimittäin on kertaluokkaa vaikeampi kuin alkuperäinen peli.. Lunar Magicillä alkuun Lunar Magic on edistyksellisin editori Super Mario Worldiin
Työkalut kehittyvät, ja monet ovat avoimia lähdekoodiltaan, joten niiden kehittämiseen voi osallistua itsekin. Kun lisäät dataa Super Mario Worldiin, muista pitää smc-tiedostosta varmuuskopiota. Erillinen AM4 Player -ohjelma toistaa musiikkia suoraan tekstitiedostosta. Ei muuta kuin vanhat ruutuvihot auki ja päästämään sisäinen kenttäsuunnittelija valloilleen!. Addmusic on komentoriviohjelma, joten siirry komentorivillä smc-tiedoston hakemistoon ja aja ohjelma näin: > [addmusicin sijainti]\AddMusic.exe romhack.smc -i AddMusic.ini Mikäli musiikin lisääminen onnistuu, kappaleen voi valita kenttään Lunar Magicin Bypass Music and Time Limit Setting -ikkunassa ja karttaan Change Submap Music Selection -ikkunassa. Pintaa syvemmälle. Tiedoston nimi voi olla esimerkiksi kappale.txt . Layer 1 Layer 2 Sprite Add Objects Add Sprites Overworld Editor Add/Modify/Delete Screen Exits Modify Secondary Entrances Bypass Music and Time Limit Setting Musiikkilistaus #0 @1 w255 y11 t40 #1 @8 y7 #0 o4 g8 / > c4 < g8^16 a16 b4 e8^16 e16 a4 g8^16 f16 g4 c8^16 c16 d4 d8^16 e16 f4 f8^16 g16 a4 b8^16 > c16 d4^8 < g8; #1 o2 r8 / c4 c4 e4 e4 f4 f4 e4 e4 d4 d4 c4 c4 c8 > c8 < b8 a8 g4 > g8 < g8; Mario-hakkerin tärkeimmät linkit Lunar Magic: http://fusoya.eludevisibility.org/ SMW Central: http://www.smwcentral.net/ SMWiki: http://www.smwiki.net/wiki/Main_Page ZSNES: http://www.zsnes.com/. 65 hin. YY-CHR on suosittu työkalu grafiikan muokkaamiseen. Sillä voi myös piirtää omaa grafiikkaa, jota voi lisätä peliin Lunar Magicilla. Blocktoolin ja Spritetoolin mukana tulevan xkas ristiassemblerin avulla voi myös koodata omia. Näihin ja moniin muihin työkaluihin saa haettua lisää resursseja SMW Central -sivustolta. Tämän vuoksi jotkut muokkaustoimenpiteet voivat tuntua työläiltä ja epäintuitiivisilta. Blocktool Super Deluxe on suositeltu työkalu uusien palikoiden lisäämiseen. Kaikki on kuitenkin mahdollista, minkä todistavat SMW Centralista ladattavat lukuisat mieltäräjäyttävät romhackit. Kappaletta voi siis myös kuunnella lisäämättä sitä peliin. Spritetoolin ja Tesseran mukana tulee valmiiksi suuri valikoima lisättäviä spritejä. Super Mario Worldin muokkaamisessa täytyy muistaa, että kaikki työkalut ovat harrastajahakkereiden valmistamia, eikä peliä ole suunniteltu muokattavaksi ja laajennettavaksi. Romhakkerointi on yhteisöllinen harrastus, ja uudet tekijät otetaan ilomielin vastaan. Super Mario World -romhackin tekijälle paras työkalu on monipuolinen Lunar Magic 2.20. Avaa AddMusic.ini ja lisää kappaleen tiedostonimi [overworld] ja [level] -osuuksien mihin tahansa kenttään. Virheellisen tai toisille työkaluille tarkoitetun datan lisääminen saattaa hajottaa koko tiedoston. Romi’s Spritetool ja Tessera ovat suositellut työkalut spritejen lisäämiseen
Tietyssä mielessä samanlaisia menetelmiä käytetään myös Division Cellin palapelien ratkomiseen.. Neliöiden lisäksi mukaan testattiin ja hyväksyttiin kolmiot ja piirakat. Muutaman hetken peliä testattuani löysin Evgenin Twitter-tilin (@gabumba) ja lähetin hänelle seuraavan viestin: ”@gabumba If you need any help with future porting efforts of Tupsu I’d be happy to help you in any way :). Teksti: Visa-Valtteri Pimiä T ätä tekstiä kirjoittaessani Division Cellin julkaisupäivä lähestyy. Valitsimme lopulta värit Flat UI -paletista, jossa on erityisesti korostettu käyttöliittymäelementtien kontrastia sekä pastellivärejä pelkistettyjen tyylien tarpeisiin. Alussa oli tviitti. Ensimmäinen pelaamani versio oli yksinkertaisen näköinen mutta viehättävä. Awesome game t: visy from Ardites” @notyourusualcup 10:25 AM 23 Feb 13 Tästä kaikki alkoi, mutta aloitimme keskustelut Tupsun porttauksen sijaan mahdollisista uusista peliprojekteista. Kevätkuukausien saatteessa peruspelin rakenne alkoi hahmottua. Oman kaupallisen pelin valmistaminen ja julkaisu muuttui vuoden urakalla unelmasta todellisuudeksi. Varhaista kehitystä Projekti lähti JavaScript-sivusta, jolla oli kolme neliötä, joiden reunoilla oli pisteitä. Teimme myös Endless Moden, jossa kenttien välissä kerrotaan joka kerta erilainen tarina. Näin pelin ei juurikaan tarvitse siirtää tietoa verkon yli. Linkissä mukana olevat tiedot riittävät kertomaan, kuka tason on jakanut, millä tuloksella ja millaiset numerot tuottavat juuri sen muotoisen ja värisen kuvion. Päätimme yhdessä peruspelimoodiksi Puzzle Moden, jossa olisi Angry Birdsistä ja monesta muusta mobiilipelistä tuttu kolmen tähden läpäisymalli. Lähdimme tutkimaan, voisiko peliin generoida pseudosatunnaisia tasoja. Huomasimme satunnaisluotuja tasoja testatessamme, että myös ohjelmallisesti luotu värivalikoima sopisi hyvin pelin käyttöliittymään. Proseduraalisten algoritmien piti myös tarkistaa, että luotu taso on läpäistävissä ja visuaalisesti miellyttävä. Onpa joku myös verrannut peliä myös sudokuun ja sen numeroiden tasapainotukseen perustuvaan pelistrategiaan. Tärkeä yksityiskohta, jonka huomioimme jo varhaisessa vaiheessa kehitystä, oli pelin tasojen jakaminen muiden pelaajien kanssa. Tärkeimpänä vaikuttimena tähän oli oivallus pelitilanteen tallentamisesta pieneen määrään tietoa. Pian Evgeni esittelikin kehittämänsä pelin prototyyppiä. Pelin kehittäjä kertoo rakkaan lapsensa syntytarinan. 66 2013.4 Litteän maailman kehityksestä Näin syntyi Division Cell Androidille, iOS:lle ja selaimille kehitetyn Division Cellin puzzlemekaniikka on kenties uniikki. Huomasin alkukeväästä 2013, että entinen työkaverini, Evgeni Gordejev, oli tehnyt pelin Googlen Android-käyttöjärjestelmälle. Välillä kului viikkojakin muiden projektien parissa, mutta sitten palasimme jälleen Evgenin kanssa juttusille mahdollisista peliin liittyvistä konsepteista. Tilatehokkuus ja tasojen muodostamat kuvioasetelmat tuovat mielleyhtymiä digitaalitaiteen pseudosatunnaisuuteen ja tilakoodaukseen ja toisaalta myös itämaisiin taidemuodon ja palapelin yhdistelmiin: origamiin ja tangramiin. Syntyi Time Attack, jossa kilpaillaan kelloa vastaan ja jossa hyvin suoritetuista kentistä tippuu lisäaikaa. Loppu on vain satunnaislukugeneraattorien iteroimista erilaisille tarkistuksille tason sisällön oikeellisuudesta, läpipelattavuudesta ja symmetrisyydestä. Kun näin Play Storen etusivulla Tupsu-nimisen pelin, muistui mieleeni tämä kekseliäs tamperelainen ohjelmoija vuosien takaa. Yksi suhteellisen lyhyt ja linkkiin mahtuva numerosarja riittää kertomaan tasogeneraattorille, luodaanko taso kolmioista, neliöistä vai piirakkamuodoista ja millainen tason muoto on. Hetken tällä protolla leikittyäni alkoi satunnainen molemminpuolinen ajatustenvaihto. Opiskeluaikanani olimme Evgenin kanssa yhdessä töissä Arditesnimisellä ohjelmistoalan yrityksellä. Alkoi työ kahden muun pelimoodin parissa, joissa hyödynnettäisiin automaattisesti luotuja tasoja. Mutta miten tähän pisteeseen päästiin
Julkaisu Applen ja Googlen alustoilla tapahtuu alustakohtaisten maksullisten ohjelmakauppojen kautta. Itse julkaisemisessa hermoja raastavinta on Applen tarkastuksen läpäisy. Grafiikka on renderöity käyttäen OpenGL ES -kirjaston näytönohjaimen kiihdytystä. Pistelistat ja pelin sisäisten saavutusten seuranta piti toteuttaa kahdella eri tavalla: iOS:lla Game Centerillä ja Androidilla Google Play -palvelulla. Toiminnallisuus näissä kahdessa palvelussa on kuitenkin lähes identtinen, joten pystyimme vaivattomasti toteuttamaan kaikki ominaisuudet molemmilla isoilla mobiilialustoilla. Tavoitteena on saada kuvioiden kaikista osista samankokoisia.. Tarkasteluun lähetetty ohjelma saatetaan hylätä puutteellisena tai ohjelman tietojen virheellisyyden takia. Prosessin tekee kehittäjän kannalta hankalaksi sen ”musta laatikko” -tyylinen luonne. Julkaisemisen ilosta livahtaa Applelle 99 taalaa vuodessa ja Googlelle 25 taalan kertamaksu. Ideasta kuvaksi Division Cellissä on pääasiallisesti vektorigrafiikkaa. Teknisten valintojen ansiosta voimme julkaista pelin kaikilla kolmella alustalla samanaikaisesti. Pelin perusmuotoja ovat neliöt, kolmiot ja ympyrät. Kun muotoa hipaisee, kaikki sivut, joilla on valkoinen ympyrä, laajenevat. Mustasivuiset reunat taas supistuvat. Suurin osa kohdelaitteista Ensimmäinen prototyyppi ei vielä ollut kovin hiotun näköinen, mutta viehättävä yksinkertaisuus vetosi. Pelkistetty ulkoasu sopii esitettäväksi enimmäkseen skaalautuvilla elementeillä kuten kolmioilla, neliöillä ja fonteilla. Tarkastuksesta ei saa monen päivän odottelun jälkeen kuin hyväksytyn tai hylätyn tuloksen. Nettisuunnittelijoille tuttu Font Awesome tulikin erittäin hyvään tarpeeseen nappeja ja ikoneita suunnitellessa, koska se sisältää suurimman osan tarvittavista käyttöliittymän symboleista. Se käännettiin Apachen Maven-työkalun ja Monotouchin avulla iOS:lle, Androidille ja HTML5-renderöijää käyttävälle JavaScriptille. 67 Tekniikasta ja julkaisusta Käytämme pelissä PlayN-kirjastoa (https://code.google.com/p/playn/), jonka avulla kaikki pelilogiikka tarvitsi kirjoittaa Java-ohjelmointikielellä vain kerran. Se tekee pelistä keskivertopuzzlepeliä raskaamman, mutta mahdollistaa sulavat animaatiot ja kauniin pehmeäreunaiset geometriset kuviot myös iPadin valtavalla Retina Display -resoluutiolla
Tietoa pelistä jaetaan Facebookissa, Twitterissä ja muissa sosiaalisissa medioissa. Ohjeeksi sävellystyöhön he saivat vain löyhän heiton: ”Philip Glass kohtaa Giorgio Moroderin”. Se luo pelaajalle tunnekokemuksia ja antaa pelille oman persoonallisen leimansa. Julkaisuversioon The Audio Grill nauhoitti osan äänistä uudelleen, jotta ne sopisivat paremmin musiikkiin. Pelin Story Teller -niminen maskottihahmo animoitiin Flumpin avulla (http:// threerings.github.io/flump/). Näin voimme julkaista pelin juuri siten kuin tahdomme, eikä sen sisältöön tarvitse tehdä kyseenalaisia rahanahneita kompromisseja. Division Cell on hitaasti aukeava origami ja muodon eleganttia harmoniaa. Äänitehosteiden ensimmäiset versiot kaivettiin ilmaisista lähteistä ja osittain myös luotiin itse GoldWave-äänieditorissa. Äänisuunnittelu mobiilipeleihin on omalla tavallaan kiittämätön työ. Mainontapalveluina käytämme aluksi Google Adwordsia ja lisäksi kokeilemme varmasti myös muita reittejä tuoda peliä ihmisten tietoisuuteen. 68 2013.4 on onneksi riittävän tehokkaita grafiikkasuorittimiltaan, joten peli toimii vähintäänkin tyydyttävästi, eikä pelaamisen ilo pilaannu karvalakkimallien omistajiltakaan. Monet pelaavat pelejä puhelimellaan tai tabletillaan julkisilla paikoilla, ja siten äänien päälläolo voidaan kokea häiritseväksi ja kiusalliseksi. Sen satunnaisgeneroituihin kenttiin perustuvat pelimuodot tarjoavat potentiaalisesti rajattoman uudelleenpeluuarvon kertaostoksella. Oma peli puhelimessa kauniina ja pelikelpoisena. Pelin kotisivut ja traileri löytyvät osoitteesta http://cell.hyperspaceyard.com .. Lopussa kiitos seisoo. Oma vauva on kaunein Pimiä toimitti meille myös lyhyen kuvailevan tekstin itse pelistä. Emme lähteneet rahastusjunaan. Flump mahdollistaa monimutkaisten hahmoanimaatioiden purkamisen pala-animaatioiksi. Vielä hetki julkaisuun, mutta kannatti tehdä. Ottakaa itse selvää, onko se turhaa kehua vai vaatimatonta vähättelyä: ”Division Cell on pelkistetysti esitetty palapeli. Skrollissakin vaikuttanut Jari ”Jaffa” Jaanto – yksi IRC-Gallerian ja Ninchatin perustajista – lähti pelin viimeisinä kehityskuukausina perustajajäseneksi ja kokeneeksi neuvojaksi mukaan uuteen Hyperspace Yard -studioomme. Käytimme Philippa N:n ääninäyttelijän lahjoja myös pelin trailerivideossa. Sovimme, että he säveltävät peliin syntetisaattoreiden sävyttämän, tunneskaalaltaan miellyttävästä painostavaan etenevän ääniraidan. Julkaisua miettiessä ja suunnitellessa tulee pakostakin tietoiseksi, miten helposti tälläkin pelillä olisi voinut rahastaa Freemium-mallin puitteissa. Monet vaivalla tehdyt kappaleet ja muut äänet jäävät kokonaan useilta pelaajilta kokematta. Hän teki kaikki nauhoitukset The Audio Grillin studiolla Miken ohjaamana. Verkossa pelattavat ja helposti jaettavat kentät mahtuvat kokonaisuudessaan yhteen internetlinkkiin, joka on helppo jakaa esimerkiksi tekstiviestillä sekä ircin tai muiden pikaviestimien välityksellä. Pelissä voisi myydä vinkkikolikoita ratkaisua varten tai lisää tasopaketteja, jotka peli voisi jo nytkin luoda muutaman rivin koodilla. Sen musiikissa kohtaavat FM-synteesin muisto ja elektropopin hyökkäävät äänimaisemat. Luotamme siihen, että pelaajat ovat valmiita maksamaan laadukkaasta pelistä, jos se on markkinoitu oikein. Olemme myös ottaneet huomioon pelin sisäiset tavat levittää sanaa. Tämä on pelin ainoa osa-alue, jossa ei pyritty kokotehokkuuteen tai minimalismiin vaan annettiin täysin vapaat kädet musiikin luojille. Näin säästyy tilaa, kun animaation jokaista kuvaa ei tarvitse erikseen tallentaa kuvatiedostoksi – pelkkä palojen tallentaminen riittää. Korvauksena The Audio Grill saisi 10 prosenttia pelin ensimmäisen neljän kuukauden myynneistä. Kössi Kengurun tai South Parkin tyyliin koodi asettelee palat päällekkäin ja liikuttelee niitä animaatiodatan määrittämässä tahdissa. Kukaan ei kuitenkaan osoittanut kiinnostusta, joten päätimme perustaa oman osakeyhtiön ja pelistudion. Ääni kommentoi valikoissa liikkumista, pelisuoritusta tasojen väleissä sekä Time Attack -tilan pelitapahtumia. Musiikki muodostaa jopa 70 prosenttia koko pelipaketin koosta. Kukin voi pelin musiikista toki itse päätellä, vastaako lopputulos toivetta. Itsenäinen peli – oma hinnoittelupolitiikka Tarjosimme peliämme aluksi monelle taholle, esimerkiksi Roviolle. Tämä tekee pelikokemuksen jakamisesta äärimmäisen helppoa. Uskomme, että pelimme on puolentoista euron arvoinen molemmilla mobiilikäyttöjärjestelmillä. Johtava ajatus peliä tehdessä oli, että sen pitää olla sellainen, jota haluamme itsekin pelata julkaisun jälkeen ja jossa ei voi ostaa tietään voittoon. Tämä ei ole puolueeton peliarvostelu, vaan kehittäjän oma näkemys. Äänimaisema on äärimmäisen tärkeä vaikutin osana pelikokemusta. Division Cell on tarina kuvioista. Tärkeänä viimeisenä silauksena Division Cellin äänimaisemaan toimii Announceriksi nimetty naisääni. Se voisi myös toimia alustana myöhemmin tuleville peleille ja niiden kehitykselle. Se on jotain niin yksinkertaista ja siltikin kätkee sisäänsä loputtoman monimutkaisen paljon niin vähässä.”. Sopii toivoa, että Division Cellin pelaajat rukkaavat äänenvoimakkuuden ylös. Äänien maisema Pelin musiikin on säveltänyt englantilainen kaksikko The Audio Grill, jonka jäsenet David ja Mike innostuivat välittömästi pelistä nähtyään loppukesästä pelin demoversion
Tikku-ukkojen sijaan ruudulla seikkaili animaattori Don Bluthin upeasti piirtämä sankari, joka pelasti prinsessaa linnasta. Leluyritys Hasbro lähti mukaan rahoittamaan hanketta. Night Trap ja Sewer Shark siirrettiinkin VHS:ltä CD-levylle, ja varsinkin ensin mainittu myi kohtalaisesti. Uusia innovaatioita esiteltiin nopeaan tahtiin. Niiden rinnalla Dragon’s Lair vuodelta 1983 näytti uskomattoman hienolta. Sellaisenaankin pelit kelpasivat monille, mutta niiden tekijät halusivat enemmän: elokuvatasoista kuvaa, jota voisi pelata. Mustavalkoisia hahmoja väritettiin ensin kalvoilla, joita liimattiin näyttöön. Mega-CD:n ja aikalaistensa lisäksi videota katseltiin paljon myös kotitietokoneiden CD-ROM-peleissä. Teksti: Mikko Heinonen Kuva: Ville-Veikko Heinonen P eliautomaattien eläessä 80-luvun alussa kultakauttaan käytiin kovaa kamppailua pelaajien kolikoista. LaserDiscin sijaan silmäkarkkia tuottaa nyt äärirajoillaan toimiva grafiikkasuoritin, mutta älä anna sen hämätä: samasta asiasta tässä on kyse... Reaktiotestit melkein unohtuivat, kunnes Yu Suzuki esitteli Quick Time Eventiksi (QTE) kutsumansa pelimekaniikan osana mainiota Shenmue-seikkailupeliä. Menneiden aikojen haamut Vuosituhannen loppua kohti pelikoneiden teho kasvoi eikä erillisiä videojaksoja enää tarvittu. Control Visionin ajatus oli, että VHS sisältäisi sekä ohjelmadatan että videomateriaalin. Miten tämä oli edes mahdollista. Myynti selittyy pelin tyttölapsilla ja niiden herättämällä kohulla. Sujauttamalla kolikon koneeseen sai ikään kuin pelata piirroselokuvan. Konsolin peruuntumisesta huolimatta ostava yleisö ei välttynyt näiltä taideteoksilta. Jossain vaiheessa VHS-tekniikan rajat kuitenkin tulivat vastaan ja Control Vision kuivui kokoon. Ainakin tavallaan. Niiden mukaan piti osata ohjata oikeaan suuntaan tai painaa nappia oikealla hetkellä. 69 Ei näin! Paina nappia, katso videota Alussa maa oli autio ja tyhjä, ja videopelien grafiikka koostui legoukoista. Dragon’s Lair koostui LaserDisckuvalevystä, johon koko animaatio oli tallennettu pätkinä. Muita vastaavia seurasi pian, ja nappulan painelu seuraavan videopätkän näkemiseksi eli ja voi hyvin. Kun vuonna 2013 käynnistät vaikkapa uuden Infinity Blade -pelin iPadillasi, saat nähdä upeaa grafiikkaa, jota täppärisi pystyy hädin tuskin edes tuottamaan. QTE tarkoitti pelin keskelle upotettua toimintakohtausta, jossa pelaajan piti suorittaa tietty tapahtumasarja painamalla oikeaa nappulaa oikeaan aikaan. Muuten teknisesti melko vaatimaton laite oli kuin tehty näitä ”full motion video” -pelejä varten. Sille ehdittiin kuvata kaksi kokonaista peliä: Night Trap, jossa suojeltiin teinityttöjä pahiksilta, ja Sewer Shark, jossa lenneltiin ennalta määritettyä reittiä videokuvan päällä ja ammuskeltiin. Sitten saatiin jo värigrafiikkaakin. Ostava yleisökin kyllästyi suttuisiin ja huonosti näyteltyihin mukaelokuviin. Pelit. Lipunkantaja oli Control Vision -nimellä kulkenut pelikonsoli, jonka pelit tallennettiin VHSkaseteille. Tauti leviää koteihin Videoreaktiotestit eivät kuitenkaan malttaneet jatkaa vain pelihallien riemuna, vaan 80-luvun lopulla ne valmistelivat esiinmarssia koteihinkin. ” Pelaaja ohjasi sitä, toistettiinko tarinalle jatkoa vai näyttävä kuolema. Se kertoi osaltaan siitä, että tarkoitus oli vain lisätä videokuvaan yksinkertainen pisteidenlasku. Useimmiten jälkimmäinen, sillä peli oli vain reagoimista ruudulla välähtäviin esineisiin. Prototyypin pelimekaniikasta vastasi muutaman vuoden ikäinen ColecoVision-konsoli. Pelaaja ohjasi käytännössä sitä, toistettiinko seuraavaksi tarinalle jatkoa vai jokin näyttävä kuolema. Peleinä tämäntyyppiset LaserDisc-automaatit olivat tietenkin köykäisiä kokemuksia. Kaunis grafiikka kuitenkin houkutteli pelaajia kuin rihkama variksia, ja LaserDisc-pelejä ilmestyi muitakin. Tämä uusvanha keksintö levisi pelisuunnittelijoiden keskuuteen kuin ruohikkopalo. Sega nimittäin esitteli 90-luvun alussa MegaDrive-konsoliinsa CD-aseman, joka pystyi toistamaan videokuvaa suoraan levyltä. Pelaajan osa on piirrellä sormella erilaisia kuvioita ruutuun ja käynnistää ennalta määritettyjä iskusarjoja. Suzuki oli tarkoittanut QTE:n elävöittämään hidastempoista seikkailuaan, mutta pian kokonaisia pelejä tehtiin sen ympärille. No, eihän se oikeasti ollutkaan. Hieman mielekkäämpiä niistä olivat sellaiset, joissa kuvalevy sisälsi vain näyttävää taustagrafiikkaa. Molemmat oli toteutettu oikeilla näyttelijöillä, joiden suorituksia saattoi verrata lähinnä B-elokuviin. Käytännössä se oli kuin LaserDisc-peliä pelimoottorilla toteutettuna. Oikean painallusten järjestyksen sai opeteltua, kunhan jaksoi syytää riittävästi rahaa koneeseen. Edelleen ruudulla kuitenkin vilisi yksinkertaisia hahmoja, koska laitteisto ei muuta osannut tuottaa
Katkeileva pursottimen signaali aiheutti reikäisyyttä, joka johti hapertumiseen. 3D-tulostimen nopeus ja tarkempi toiminta selvisi vasta, kun Helsinki Hacklab rakensi Torstin eli Prusa Mendel -mallisen, osittain kierrätysmateriaalista kootun tulostimen. Lähtökohtana on ollut tarve ja ratkaisuna 3D-tulostaminen eikä toisinpäin. Ruuveille tarkoitetut reiät turposivat umpeen, ja niitä piti suurentaa jälkeenpäin poralla. Mallia piti muuttaa siten, että reikä oli isompi eikä kasaan painuminen haitannut.” ” Hartsitulostinta käytettäessä painovoima ehtii vetää esinettä hieman kasaan ennen kuin käytetty muovi jäähtyy ja jähmettyy.” Mallin vikaa Kokemuksia 3D-tulostamisesta 3D-tulostimet ovat monipuolinen työkalu, jolla voi valmiiden mallien monistamisen lisäksi räätälöidä juuri omiin tarpeisiinsa sopivia välineitä. PLA-muovia tulostavaa hartsitulostinta käytettäessä painovoima ehtii vetää esinettä hieman kasaan ennen kuin käytetty muovi jäähtyy ja jähmettyy. Poraamisen seurauksena osa kuitenkin lohkesi kulmasta. Muut hacklabilaiset olivat tulostaneet Torstilla lähinnä valmiita objekteja, mikä ei ollut minusta erityisen kiinnostavaa. Myöhemmin selvisi, että yksi tulostuspään lattakaapelin johdoista oli poikki. Ultimakerin ohjeet olivat epämääräiset. 70 2013.4 R isto Mäki-Petäys: ”Oli vuosi 2008, ja kuluttajakäyttöisiä 3D-tulostimia alkoi hiljalleen näkyä yhä enemmän Suomessa. Hapertunut osa oli onneksi ainoa, jonka pystyi valmistamaan myös puusta, kun taas muiden osien tulostamatta jääminen olisi kaatanut koko projektin. Kaikki ideat esineisiin ovat syntyneet käytännön tarpeesta. Syy tosin selvisi vasta jälkikäteen: tulostuspäässä oli tukos. Ensimmäinen tarve, jonka ratkaisin 3D-tulostamalla, oli polkupyörän ohjaustankoon kiinnitettävä kännykkäteline.” Navigaattori pyörään ”Halusin pyörääni telineen, johon voisin kiinnittää kännykän siten, että voisin käyttää sen navigaattorisovellusta ajaessani. Tällä tavoin hukkamateriaalia syntyisi vähemmän, jos tulostettu osa osoittautuisikin vääränlaiseksi. Olen itse aina tulostanut sellaisia esineitä, joita ei saa valmiina eikä voi tehdä muulla tavalla. 3D-tulostukseen ryhtyvälle tällaiset yllätykset voivat tulla hyvin tutuiksi! Tulostimen haluttomuus yhteystyöhön ei ollut ainoa ongelma. Torsti tulosti ensimmäiset kaksi osaa mallikkaasti, mutta kolmas osa hapertui jo tulostuksensa alkuvaiheessa. Alternative Partyillä oli esillä eräs yksilö, mutta sitä ei ollut saatu silloin vielä toimintakuntoon. Aivan mutkatonta uuden teknologian käyttö ei kuitenkaan ole. Ensikosketukseni 3D-tulostamiseen jätti minut janoamaan lisää tietoa. Aluksi hapertumisen syyksi epäiltiin, että asetuksissa ja ohjelmistoissa on tulostuskoneen vaihdon jäljiltä oltava jotain pielessä. Sen käyttöönotto oli yhtä salatiedettä, eivätkä odotukseni sitä kohtaan olleet kovin korkeat. Myytävät mallit oli joko tarkoitettu autoille tai väärän mallisille matkapuhelimille, joten itse tekeminen oli luonteva vaihtoehto. Teksti: Annika Piiroinen Kuvat: Risto Mäki-Petäys, Flickr-käyttäjä edans. Tulostusjälki ei ollut yhtenäistä eikä tarttunut pintaan. Koska teline oli kookas, suunnittelin sen rakentuvan kolmesta osasta, jotka kiinnittyisivät ruuveilla yhteen
2. Esine kannattaa tulostaa asennossa, jossa reiät ovat kohtisuoraan tulostusalustaa vasten. Se tekee mallin muuttamisesta ja skaalaamisesta paljon helpompaa. Ohjaustangon tulppa 3d-mallina ja tulostettuna lopullisessa kohteessaan.. Painumista voi jonkin verran vähentää säätämällä tulostusohjelma rakentamaan tukirakennetta tulosteen alle. Korjaa mallia testitulosten perusteella. 8. Koko satula olisi pitänyt irrottaa, jotta lukon saisi pois ja takaisin. Tällöin voi helposti vaihtaa esimerkiksi ruuvikoon suuremmaksi. Samasta syystä reiät painuvat kasaan, jos niiden akseli on vaakasuora. Tulostimen säädöt eivät ole aina täydellisesti kunnossa, minkä takia kappaletta voi joutua korjaamaan jälkeenpäin esimerkiksi viilaamalla tai mattoveitsellä. 5. Pikku vikoja… Ajan nykyään ilman lukkotelinettä.” Parempi kuin uusi ”Aina ei tarvitse suunnitella esinettä tyhjästä, vaan joskus voi käyttää olemassa olevaa esinettä mallina. Tällöin virheitä sattuu lähinnä tulostustekniikkaan liittyvissä asioissa, kuten kasaan painumisten ja valumisten vuoksi. 10. Tulostaminen meni ensimmäisellä kerralla nappiin, ja teline kiinnittyi satulatolppaan juuri oikealla tavalla. Jos taas on mallinnuskokemusta eikä pelkää skriptaamista, voi OpenSCADillakin lähteä suoraan leikkimään. 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 osumatta satulaan tai renkaaseen. Mieti haluamasi tarkkuus (onko puolen millimetrin heitto ongelma) ja ota se huomioon suunnittelussa. Varaudu siihen, että tulostimella on huono päivä. 3. Jos esineessä on useampia reikiä eikä kaikkia saa tulostuksessa pystyasentoon, kannattaa harkita esineen tulostamista useammassa osassa. Suorat pinnat kannattaa tulostaa pystysuoraan tai tulostusalustaa vasten. On myös muistettava, että tulostimen tarkkuus on rajallinen. 4. 9. OpenSCADissa 3D-malli rakennetaan pelkästään ohjelmointikielen avulla eikä esimerkiksi piirtämällä. Tulpan suunnittelu oli hyvä esimerkki siitä, mitä 3D-tulostaminen voi parhaimmillaan olla: pääsee itse parantelemaan esineen muotoilua käytännössä. Jos tulostettavan pinnan alla on tyhjää, pinta painuu jonkin verran koveraksi. Aloittelevalle 3D-printtaajalle suosittelen Trimble SketchUpia, joka on helpompi käyttää. 6. Suunnittele malli huolellisesti, ota huomioon kaikki tarvittava ja varaudu yllätyksiin. Alkuperäisessä mallissa oli jousimekanismi, jota ei pystynyt 3D-tulostamaan, joten jouduin suunnittelemaan lukkotelineen kokonaan itse. ” Onnistunut käyttöesine on sellainen, jota ei tarvitse ajatella.” Onnistunut käyttöesine on sellainen, jonka olemassaoloa ei juuri kukaan huomaa tai jota ei tarvitse ajatella. Yli muutaman sentin pituiset, tyhjän päällä makaavat ”siltarakenteet” eivät sovellu tulostamiseen. Oli vain yksi pieni ongelma: itse lukon asettaminen telineeseen oli mahdotonta. Tein myös telineestä riittävän paksun, jotta ruuvinreikien laajentaminen poralla ei aiheuttaisi lohkeamia muoviin. Kännykkätelineen 3d-malli, jossa väritettynä eri värillä kukin kolmessa osassa tulostuva osa sekä pyörän stemmi. 71 3D-mallista 3D-esineeksi ”3D-mallintaminen oli minulle tuttua jo demoskenestä ja graafikon hommista. Se osoittautui niin hyväksi, että se pysyi irtoamatta ja ehjänä, kunnes ajoin kolarin joitakin vuosia myöhemmin. Pyöräni ohjaustangon päässä olevat tulpat irtosivat jatkuvasti, joten päätin tulostaa itse pidempivartisen mallin. Se ei siis ole WYSIWYG-tyyppinen työkalu. ” OpenSCADissa 3D-malli rakennetaan pelkästään ohjelmointikielen avulla.” OpenSCADilla voi tehdä myös moduuleja, esimerkiksi standardikokoisia ruuvinreikiä, joita voi sitten lisätä omiin malleihinsa tarvitsematta keksiä reikää joka kerta uudestaan. Lukkokin mahtui telineeseen eikä osunut satulaan. Tulostuspää saattaa vaikka tarttua kiinni tulostettavaan esineeseen ja eksyä koordinaateista. Sen käyttäminen ei vaatinut minulta muita uusia taitoja kuin ohjelmiston oman skriptikielen opettelemisen. Moni ei enää suosittele OpenSCADia, mutta itse en ole löytänyt toista ohjelmaa, joka olisi niin näppärä ja tekisi sen, mitä haluan.” Suunnittelija mokaa ”Kesällä 2011 polkupyöräni lukkoteline hajosi ajaessani katukiveykseen, ja uusikin teline hajosi samoissa olosuhteissa pian käyttöönoton jälkeen. On hieno tunne, kun on onnistunut suunnittelemaan jotain paremmin kuin henkilö, joka tekee sitä työkseen.” Muistilista PLA-muovin tulostajalle [yksinkertaiset mustavalkoiset kuvat valumisjuttuihin?] 1. Ota selvää tulostimen rajoituksista, esimerkiksi tulostetun esineen maksimimitoista. 7. Helsinki Hacklabilta minulle vinkattiin OpenSCAD-ohjelmisto, jolla voi suunnitella skriptattuja 3D-malleja. Siinä voi määrittää, mitkä mitat riippuvat toisista mitoista, joten kun yhtä mittaa päivittää, päivittyvät kaikki siitä riippuvat mitat automaattisesti. Valmistajan malli ei selvästikään kestänyt katuajoa. Se toimii niin täydellisesti
Silloin paikalla ollut tietokirjailija ja tietotekniikka-asiantuntija Petteri Järvinen tuli tiirailemaan olkani yli projektiani eikä tahtonut millään uskoa, että 3D-tulostamisessa on mitään järkeä. Vuokralainen ei ole valittanut tähänkään mennessä uunista, joten uskoisin, että ongelmia ei ole ollut. Ilmeisesti metalliosat eivät johtaneet lämpöä liikaa läpi. Periaatteessa hissin ovea ei pitäisi saada auki siinä tilanteessa lainkaan, mutta se ei tietenkään estänyt kokeilemasta. Olin eräänä yönä nukkumassa, kun naapurini soitti ovikelloa. Lukon avaamiseen tarkoitettu työkalu on turvallisuussyistä lähinnä hissimekaanikkojen saatavilla, joten päätin kokeilla oman tulostamista. 72 2013.4 Selvää säästöä ”Olin myös käyttämässä Suomen ensimmäistä sarjavalmistettua 3D-tulostinta, MiniFactorya, kun sellainen saatiin MikroBitin tiloihin testattavaksi. Älä kokeile tätä kotona. Projektit 2011-2013 (X: ei päätynyt tuotantoon) Projekti Tulos Kännykkäteline polkupyörään :) Polkupyörän lukkoteline :I IDE64:n kotelo X Polkupyörän ohjaustangon tulppa :D Elektroniikkapelin paristokotelon kansi :) Pistorasian kansi :D Hissiavain :( Lasten älypelilelun osa X Hellan kahvan kannatin :D Oman sekvensserin adapterin palasia :I USB-reiän suojatulppa :D Polkupyörän vaihteiston kansi X Kitaran hihnan tappi keytariin :D Tasoskannerilla otetut mittakuvat alkuperäisestä osasta. Samalla tavalla rahaa säästyi, kun tuttuni vuokraaman asunnon vanhasta uunista murtui luukun kahvan bakeliittinen kannatin. Hänen klaustrofobinen ystävänsä oli juuttunut hissiin, ja hän oli saanut jostain päähänsä, että minä olisin oikea ihminen auttamaan. Onkaloiden syvyyden mittaamiseen käytin työntömittaa. Kerrostaloni hissiin nimittäin juuttuu jatkuvasti ihmisiä. Hissikuiluun voi pudota, jos oven avaa korin ollessa kerrosten välissä. Turhaa askarteluahan tämä 3D-tulostaminen siis on.” Kuumat paikat ”Uunin luukun kahvan kannattimen korvaaminen oli moneltakin kannalta mielenkiintoinen projekti. Hissimekaanikko oli hälytetty, mutta häntä ei kuulunut. Osasin myös antaa esimerkkejä tulostusprojekteista, jotka säästivät rahaa. Vanhat, likaiset ja haljenneet palat ennen operaatiota.. Hän epäili, että kallis tulostin maksaisi harvoin itseään takaisin ja että tuotteen ostaminen kaupasta olisi paljon järkevämpää. Hän ei ole sen koommin käyttänyt talomme hissiä ja halaa aina onnellisesti, kun satumme törmäämään. Kun lakkautettua mallia oleva vanha pistorasiakotelo hajosi makuuhuoneestani, vaihtoehtona olisi ollut pulittaa sadoista tuhanteen euroa sähkömiehelle pistorasioiden uusimisesta. Kannattimeen meni uunin luukun läpi metallisia pultteja, joten kuumuus piti ottaa huomioon. Koko projektiin meni kolme iltaa, mutta kun esineen kaarevuus oli saatu säädettyä testipalojen avulla kohdalleen, kokonainen esine toimi lopulta ensi yrittämällä.” Klaustrofoobikot hississä ”Olen toteuttanut useita projekteja vuosien varrella, mutta en aio käydä niitä kaikkia tässä läpi. Yhteiskäyttöiset tulostimet kirjastoissa ja hackerspaceissa saivat kuitenkin hänen mielensä muuttumaan suopeammaksi. Toinen kahvan kannatin oli ehjä, ja sain siitä tavallisen tasoskannerin ja piirto-ohjelman avulla laskettua kaltevuuskulmat ja tangon ääriviivat. Kyseinen tapaus ei suinkaan ollut ainut kerta, kun joku jumittui hissiimme – sitä tapahtui vuosittain. Hississä jumissa ollut mies jo hyperventiloi paniikista ja takoi ovea. Testasin kuitenkin tulostamani osan kestävyyttä lämmittämällä uunia täydellä teholla puoli tuntia, eikä pehmenemistä ilmennyt. Kuusiokoloavaimella lukon sörkkiminen ei pidemmän päälle tee lukolle hyvää, joten tarvittiin pysyvämpi ratkaisu. Olisi pitänyt hankkia kokonaan uusi uuni, mikäli mitoiltaan sopivaa mallia olisi edes löytynyt. Haluan kuitenkin kertoa vielä eräästä projektista, joka ei vielä ole onnistunut mutta jonka taustalla on aito tarve. Puu olisi ollut luonteva materiaalivaihtoehto, mutta osa oli sen mallinen, että sitä on mahdotonta työstää puusta. Ahdistunut mutta huojentunut pettäneen tekniikan uhri kömpi ulos hissistä. ” Vuokralainen ei ole valittanut tähänkään mennessä uunista.” Kannattimen mallintaminen ei ollut helppoa, koska sen sisällä oli neliskulmaisia, hyvin täsmällisiä muotoja, viistoja tasoja sekä onkaloita. Hacklabin Ultimaker tulosti vain PLAmuovia, joka pehmenee liian alhaisessa lämpötilassa eikä sovi yhteen uunin kuumuuden kanssa. Uusi, siisti 3d-tulostettu pala lopullisessa kohteessaan. Onnistuin lopulta kikkailemaan lukon auki kuusiokoloavaimella. Siinä oli myös epämääräisesti kaartuvia linjoja, jotka piti hienosäätää kohdilleen muutaman testitulostuksen avulla
Vaikka olettaisi mallin kirjoittamisen olevan työlästä skriptikielellä, voi OpenGL-esikatselun avulla kuitenkin nopeasti hahmottaa kappaleessa tapahtuvat muutokset. Lisäksi joillakin näytönohjaimilla ilmenee piirrossa puutteita. Sintrauslaitteet taas sulattavat pientä muovitai metallijauhetta yhteen kerros kerrokselta. Yliopistojen laboratorioissa voi olla jopa miljoonien eurojen ultraviolettifemtosekuntilasertulostimia tai muita villejä viritelmiä. Esine kasvaa hitaasti alustasta. 73 Minustako 3D-tulostajaksi. Sula muovinauha työntyy ulos tulostuspään ohuesta kärjestä ja jähmettyy paikalleen. Niissä muovifilamenttia syötetään kuumaan tulostuspäähän. PLA-muovi on kestävä maissipohjainen, kierrätettävä ja biohajoava muovi. Luovutin toistaiseksi.” Hae mallit netistä Projekteja varten laaditut 3D-mallit ja apuvälinemoduulit löytyvät Skrollin sivuilta, osoitteesta http://skrolli.fi/2013.4 . Sivustoilta kuten Thingverse (http://www. ABS-muovia tulostettaessa tarvitaan esilämmitettävää alustaa, joka on hankittava erikseen moneen tulostimeen. Rakennussarjana monet tulostinmallit saa edullisemmin. Mallin eri osia voi havainnollistamisen vuoksi pinnoittaa haluamillaan väreillä tai säätää läpikuultaviksi. Filamenttitulostimet käyttävät yleensä PLAtai ABS-muovia. OpenSCAD on näppärä pieni ohjelma, joka on helppo ottaa käyttöön. Laajaa valikoimaa jauhemaisia materiaaleja voidaan kovettaa myös nestemäisillä sidosaineilla, joita tulostetaan jauhekerroksen päälle. Tämä mahdollistaa muun muassa aiemmin suunniteltujen osien helpon ja tehokkaan jälleenkäytön, mallien parametrisoinnin sekä toistuvien toimenpiteitten näppärän automatisoinnin. Muovifilamenttitulostinta pääsee kokeilemaan esimerkiksi eri paikkakuntien hackerspaceissa ja pääkaupunkiseudulla myös Tapiolan kirjastossa, Lasipalatsin Kohtaamispaikassa ja Aalto FabLabin tiloissa. Monia muitakin tulostintyyppejä on olemassa. ABS:ää käytetään muun muassa Legoissa. Perustulostin, jossa on yksi tulostuspää, maksaa hieman alle tuhannesta kolmeen tuhanteen euroa. Jauhetulostusmenetelmä on kuluttajan käytettävissä erilaisten palveluiden kuten Shapewaysin kautta. Joissakin tapauksissa monimutkaisemmalla boolen algebralla rakentuvissa esineissä saattaa esikatselun piirrossa ilmetä bugeja. Mitä isompia määriä tulostaa, sitä halvemmaksi esineen kappalehinta tulee. Suurin osa muihin tulostustekniikoihin pystyvistä laitteista on toistaiseksi vähintään kymmenien tuhansien eurojen hintaisia. Se ei sisällä graafisia työkaluja esineen mallintamiseen ja muokkaamiseen, vaan mallit luodaan skriptikielellä. Kerroksen valmistuttua pää siirtyy hieman ylös ja uusi siivu tulostetaan. Moduuleihin sisältyy muun muassa Mstandardikokoisten pulttien, mutterien sekä vastaavat reikien moduulit ja viivoitinmoduuli, jonka avulla heikompikin matikkapää voi tarkistaa mittaukset. Mallit voidaan luoda kasaamalla erilaisia primitiivejä (kuutio, sylinteri, pallo) yhteen, vähentämällä niitä toisistaan boolen algebralla tai vaihtoehtoisesti luomalla ne useammasta monikulmiosta. Yleisimmät ja edullisimmat tulostimet perustuvat fused deposition modelling -tekniikkaan. Palveluun ladataan 3D-malli ja valitaan haluttu materiaali, ja tulostettu esine saapuu postissa muutaman päivän kuluttua. Kaksisuuttimiset mallit ovat kalliimpia, ja niillä voi käyttää kahta eri väriä tai materiaalia samassa kappaleessa. • 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/Finland OpenSCAD Risto Mäki-Petäys OpenSCAD on CGAL-kirjastoon pohjautuva vapaa ohjelmisto kiinteitten kolmiulotteisten CAD-mallien suunnittelemiseen. Tulostuspää ja -alusta liikkuvat kolmella akselilla toistensa suhteen piirtäen langalla kappaleen muodon alhaalta ylöspäin, yksi kerros kerrallaan. http://www.openscad.org/ Lukon muoto oli kuitenkin niin epäsäännöllinen, ja avaimeen olisi tarvinnut niin ohuita kohtia, ettei yksikään koekappale onnistunut. Myös ohjelman ulkopuolelta tuotuja, DXF-formaatissa olevia malleja voidaan hyödyntää. Tällä tavalla esineiden tekeminen on kuitenkin hitaampaa ja kalliimpaa kuin esimerkiksi yleisessä käytössä olevilla muovifilamenttitulostimilla. Vapaaehtoisesti kehitetyssä ohjelmassa saattaa mennä pidemmänkin aikaa reagointiin, ellei itse kyllästy ja päätä korjata lähdekoodia. Stereolitografiassa kovetetaan nestemäisiä fotopolymeerejä valolle altistamalla. thingiverse.com/ ) löytyy muiden tekemiä valmiita malleja, joiden tulostaminen voi olla helpoin tapa aloittaa 3D-tulostuskokeilut.?
74 2013.4
75
76 2013.4
77
78 2013.4
79
80 2013.4
81
82 2013.4 Säätämisentäyteistä joulua kaikille Skrollin lukijoille! T. Kapsi Internet-käyttäjät ry
Sitten hänet kruunataan Tribunovin temppelissä auringonseisauksen aikaan. Viestinviejiä tarvitaan yksi jokaista kaupunkien välistä päivämatkaa kohden, mutta Algorilla on vain sata viestinviejää. Kuningas Algor on juuri astunut valtaan. Algor määrää, että yksikään kaupunki ei saa olla yli kymmenen päivämatkan päässä tukikohdasta. 83 Pähkinänurkka Tällä palstalla ilmestyy ohjelmointiin ja matematiikkaan liittyviä tehtäviä. Auta häntä selviämään Undigraa koettelevista uhkista! 1.?Arboricissa on kapina! Algorin täytyy päästä joukkoineen pääkaupunki Elfigistä Arboriciin mahdollisimman nopeasti ennen kuin kapina leviää. Algor päättää perustaa kaksi tukikohtaa, joista sotilaat pääsevät nopeammin kaupunkien avuksi. 3.?Algor ehtii viime hetkellä kotiin ja kukistaa salaliiton. Kartta löytyy koneluettavassa muodossa osoitteesta http://skrolli.fi/2013.4/pahkina/. 3 7 7 5 6 3 5 6 2 5 7 8 7 4 10 7 7 6 5 5 3 5 4 3 3 4 2 5 3 4 6 3 6 5 7 17 20 3 9 7 5 4 Arboric Bucolid Cardige Domenif El?g Fungulah Geheni Herbinaj Injek Junkel Kolem Lumian Minarko Nepotip Ompaq Quorus Resort Tribunov Utvanow Vowex Waxey Yozzia Parquer Subteru Xalyphiz Undigra. 6.?Peikot on lopulta saatu aisoihin ja valtakunnassa on taas rauha. Mikä reitti Algorin kannattaa nyt valita. Luvut ovat etappien matka-aikoja päivissä mitattuna. Minne tukikohdat pitää perustaa, jotta kaukaisimpaankin kaupunkiin olisi mahdollisimman lyhyt matka jommastakummasta tukikohdasta. Undigrassa on tapana, että kuningas vannoo jokaisessa kaupungissa suojelevansa sen asukkaita. 4.?Nyt valtakunnan riesana ovat peikot, jotka tekevät tuhojaan syrjäseuduilla ennen kuin apu ehtii Elfigistä paikalle. Onneksi velho pystyy yhden kerran luomaan portin, joka siirtää Algorin välittömästi yhden etapin ylitse. Mikä reitti hänen kannattaa valita. Auringonseisaukseen on enää 123 päivää! Kuinka Algor ehtii Elfigistä Tribunoviin ajoissa. Hän päättää olla jatkossa paremmin perillä valtakunnan asioista ja perustaa postiverkon tuomaan raportteja kaikista kaupungeista. Kuinka monta tukikohtaa vähintään tarvitaan, jotta tämä onnistuisi. Salaliitto Elfigissä yrittää kaapata vallan! Algorin täytyy palata nopeasti takaisin. Minkä kaupunkien välille täytyy perustaa postilinjat, jotta verkosto ulottuisi sadalla viestinviejällä kaikkiin kaupunkeihin. 5.?Tukikohdista on apua, mutta peikot ehtivät yhä mellastaa liian pitkään. 2.?Kapinaa johtanut velho saatiin vangittua, mutta kapina oli vain harhautus. Kuningas Algorin kruunajaiset lähestyvät. Maa on hajanainen, maasto on vaihtelevaa ja kaupungista toiseen on monen päivän matka. Kaikki tehtävät on mahdollista ratkaista nopeasti sopivalla algoritmilla — ja osa ilman tietokonetta! Lauri Alanko U ndigran valtakunnassa on levotonta
Se on normaalia lyhyempi ja saanut pelaajien suosion ympäri maailman. Se on suunniteltu tarkkaan pelaamiseen ja siinä on 8 täysin ohjelmoitavaa näppäintä. Niiden äänimaailma on suunniteltu pelaamiseen, joten saat selvän edun pelaamiseen PC:llä tai konsolilla. Se tarjoaa tukevan rakenteen, lasermerkityt näppäinhatut sekä mattapintaisen viimeistelyn. 79,90 € CM Storm Ceres 500 Headsetin isot kuulokkeet ovat pehmeät ja poistavat häiritsevää taustaääntä. CM Storm Havoc CM Storm Havoc on 8200DPI Avago 9800 sensorilla varustettu pelihiiri. alv24% CM Storm QuickFire TK, Cherry MX Red QuickFire TK on taustavalaistu mekaaninen pelinäppäimistö punaisilla kytkimillä. 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 | NVIDIA GeForce GTX 760, 2Gt GDDR5 -näytönohjain | 8Gt (2x4Gt) DDR3 1600MHz, CL9 -keskusmuisti | 120Gt, 2.5”, Sata III -SSD asema | Cooler Master Silencio 550 Jimm’s Edition -kotelo | Windows 7 Home Premium 64-bit 1069 € Kunnon työvälineet pelaamiseen Cooler Master CM Storm QuickFire XT, Cherry MX Blue QuickFire XT on mekaaninen pelinäppäimistö sinisillä kytkimillä. 49,90 € 64,90 € Skrolli_4-2013.indd 1 19.11.2013 9:43:16 Maukkaat epäonnistujat. Asiakaspalvelu +358 29 70 70700 asiakaspalvelu@jimms.fi Jimm’siltä löytyy nettitilauksiin aina toimituskuluton vaihtoehto! Noutopalvelumyymälä Turku Lukkosepänkatu 7 20320 Turku Hinnat €/kpl, sis. 89,90 € Jimm’s Pop Gamer Jimm’s Pop Gamer on yleisön suosikki