Tuomas Koodaa - Java instinct – pelivaiston varassa

Vanhan viidakon viisauden mukaan, jos pakissa ei ole muuta työkalua kuin vasara, kaikki ongelmat näyttävät nauloilta. Voiko pelkkä aloittelevan pelintekijän intuitio riittää taktisen zombipelin tasapainottamiseen?

Akateeminen pelitutkimus etsii vastauksia sellaisiin kysymyksiin kuten, mikä tekee peleistä hauskoja ja mikä erottaa hyvän pelisuunnittelun huonosta. Vasta-alkajan on kovin helppoa langeta ajattelemaan, että ainoa vastaus jota pelisuunnittelussa tarvitsee, on oma intuitio ja pitkä kokemus peliharrastajana.

Helsingin yliopiston loppukesästä järjestämä pelisuunnittelukurssi havahdutti minut vääristä uskomuksistani hereille. Kurssin tavoitteena oli paitsi suunnitella oma peli, myös soveltaa siihen hyvän pelisuunnittelun ja -tasapainotuksen periaatteita.

Harkitsin aluksi, että olisin ujuttanut Pelit-lehden kolumneista tutun Ultima-kloonini kurssityökseni, mutta luovuin pian ideasta. Kuukausi olisi liian lyhyt aika toteuttaa havaittavaa muutosta keskeneräisen ropeni pelitasapainoon, projektin viimeistelystä nyt puhumattakaan. Kuukausi oli toisaalta kovin lyhyt aika nyhjäistä uusi peli tyhjästä, joten päätin hyödyntää Ultima-kloonin koodia niiltä osin kuin se oli mahdollista ja rakentaa vanhan päälle ihan jotain muuta.

Olin jo ennen kurssia testannut vale-Ultimani taistelusysteemissä XCOM-tyylisiä toimintapisteitä. Entä jos kulkisin tämän tien loppuun ja muovaisin taistelusysteemin pohjalta taktisen taistelupelin? Innostuin ideasta niin paljon, että väänsin toteutuskelpoisuuden osoittavan prototyypin kasaan vielä saman viikonlopun aikana.

Ultima, sinusta on kasvaa vielä XCOM!

night1

Bensaa lenkkareissani

Vuoropohjaisesti etenevässä XCOMissa taistellaan maapallolle soluttautuneita avaruusmuukalaisia vastaan. Vaikka ufot ja paranormaalit ilmiöt ovat lähellä sydäntäni, päätin turvautua aiheista helpoimpaan eli zombeihin. Minulla oli jo nimikin valmiina: Night of the Living – elävien yö.

Zombipeli oli konseptoitu yhdessä illassa. Kuten jo etukäteen ounastelin, zombit sopivat XCOM-formaattia noudattavaan taktiseen taisteluun sellaisenaan. Pelitasapainon kannalta kipupisteeksi muodostuisi pelaajan käytössä olevien ampumatarvikkeiden rajallisuus ja zombien loputon generointi taistelukentälle.

Koska aikaa oli vain nelisen viikkoa, päätin keskittyä yhteen ainoaan skenaarioon (tehtävään) ilman sen kummempia kampanjarakenteita. Ainoana myönnytyksenä hahmonkehityksen suuntaan pelaajahahmojen on mahdollista parannella aseistustaan kentältä löytyvillä yleisluontoisilla lisävarusteilla.

Pelin ainoassa tehtävässä zombiepidemiaa pakeneva eloonjääneiden ryhmä yrittää hakeutua hallituksen kontrolloimalle turva-alueelle. Ryhmä taittaa matkaa helikopterilla vain huomatakseen, että polttoaine loppuu kesken satoja kilometrejä ennen määränpäätä. Seutu on pahinta epidemia-aluetta, eikä eloonjääneillä ei ole muuta vaihtoehtoa kuin jalkautua läheiseen pikkukaupunkiin etsimään bensakanistereita.

Night of the Livingin voittoehdot voi poimia suoraan juonikuvauksesta. Eloonjääneet tarvitsevat bensakanistereita (vähintään neljä) ja heidän on pidettävä ainoa lentäjänsä hengissä. Jos lentäjä saa surmansa, eloonjääneiden ainoaksi toivoksi jää lentomanuaalin etsiminen. Sellainen generoidaan peliin satunnaisesti.

Ryhmässä on Ultima-kloonin perintönä kuusi jäsentä: lentäjä, sotilas, sairaanhoitaja, survivalisti, nörtti ja potilas. Varsinaisten hahmostatistiikkojen sijaan päätin yksilöidä ryhmän jäsenet ominaispiirteiden ja varusteiden mukaan. Esimerkiksi sotilaan ominaispiirteitä ovat sotilaskoulutus (iso bonus osumatarkkuuteen), kovakuntoisuus (liikkuminen kuluttaa vähemmän toimintapisteitä) ja alttius paniikkiin. Potilas on vastaavasti raihnainen (liikkuminen maksaa enemmän) ja kovahermoinen (ei panikoi), sairaanhoitaja taas luontainen johtaja, jonka läsnäolo nostaa muiden hahmojen taistelumoraalia (eli vähentää paniikkia).

Eloonjääneiden aseistus vaihtelee sotilaan rynnäkkökivääristä ja kertasingosta sairaanhoitajan vaatimattomaan pistooliin. Survivalisti erottuu joukosta jalkajousellaan, jolla voi surmata zombeja äänettömästi.

Vastassaan eloonjääneillä oli kahta lajia zombeja: muutamalla osumalla pysähtyviä peruszombeja ja kovaa lyöviä paksukaiszombeja, joita peli generoi etenkin bensakanisterien läheisyyteen.

Eloonjääneitä on moneen lähtöön. Taistelijana ylivertaista sotilasta oli pelitasapainon nimissä pakko heikentää jotenkin, joten lisäsin hänelle taipumuksen paniikkiin.

Kolme ohjelmointihaastetta

Ultima-kloonista sain zombipeliini melkein kaikki tarvitsemani rakennuspalikat. Esimerkiksi eloonjääneiden erikoistaidoissa sovelsin häikäilemättömästi Ultimaan toteuttamiani taikoja. Esimerkiksi haavoja sitova sairaanhoitaja heittää koodin kulissien takana parannusloitsuja, hätäraketeillaan yötaivasta valaiseva potilas taas heittää valotaikoja. Nörtin tiirikointivälineisiin en tarvinnut edes taikuutta, riitti kun rajasin JIMMY LOCK –komennon muiden hahmojen ulottumattomiin.

Vanha koodi ei silti sellaisenaan taipunut unelmieni taktiseksi taistelupeliksi. Night of the Livingin koodista puuttui kolme keskeistä elementtiä. Ensinnäkin halusin kasvattaa taistelualuetta Ultiman 11 x 11 ruudun kokoisista pikkuareenoista noin 50 kertaa suuremmaksi urbaaniksi ympäristöksi. Toiseksi peli kaipasi räjähteitä ja XCOM-tyylisesti tuhoutuvaa ympäristöä. Kolmanneksi halusin edes kokeilla, olisiko pelialue mahdollista generoida satunnaisesti, jotta pikkukaupungin kartta olisi jokaisella pelikerralla uusi.

Taistelualueen kasvattaminen oli oikeastaan aika triviaali ongelma, sillä Ultima-kloonissani oli jo valmiiksi varsin laajoja ympäristöjä, kuten kaupunkeja ja maaseutua – niitä ei vain käsitelty taistelutilanteina. Käytännössä sain yhdessä illassa runnottua taistelusysteemin osaksi normaalia kaupungissa liikkumista.

Räjähdyksiin otin lähtökohdaksi Ultiman tulipalloloitsun. Tulipallot sytyttivät jo valmiiksi maastopaloja, käytännössä markkeeraten ruohikkoblokkeja ensin liekkimereksi ja sen jälkeen poltetuksi maaksi. Heureka-hetkeni koitti, kun oivalsin, että samanlaista metodia voisi soveltaa ruohikon lisäksi myös kiinteisiin rakenteisiin.

Kyse ei ollut edes mistään isosta muokkauksesta: räjähdyksen vaikutuspiirissä olevat seinät mitätöidään kiviraunioiksi ja ovet ja huonekalut puusäpäleiksi. Kun tuhoalueen päälle generoi vielä muutamassa vuorossa hälvenevän tomupilven, lopputulos näytti suorastaan yllättävän hyvältä. Mitä siitä, että peli ei piittaa tuon taivaallista lujuuslaskelmista, rakennukset eivät romahda, ne vain raunioituvat blokki blokilta olemattomiin.

Pelialueen satunnaisgeneroinnissa päädyin rajoitettuun malliin. Kartta on pääpiirteissään aina sama, mutta kartalle merkattujen näkymättömien tonttien sisältö arvotaan rakennuksia, lampia ja puistoalueita käsittävästi tietokannasta. XCOM taisi hyödyntää melko samanlaista systeemiä taistelukartoissaan.

Viimeinen rutistus bensakanistereiden kanssa kohti pakohelikopteria . Poltetun maan taktiikka toimii niin kauan kuin survivalistilla riittää molotovin cocktaileja.

Reitinhaku tökkii

Siinä missä etukäteen ennakoimani tekniset haasteet ratkesivat melkein kuin itsestään, työn edistyessä kohtasin koko joukon ennakoimattomia ongelmia. Niistä vakavin oli pelimoottorin suorituskyvyn romahtaminen. Hidastumisen jäljet johtivat vihollisten reitinhakurutiiniin ja dynaamiseen valaistukseen.

Valaistusongelma paljastui aloittelijan mokaksi, sillä pelimoottorini laski valaistusta täysin ylimitoitetulla tavalla. Sen sijaan, että jokaisen valonlähteen vaikutusalue laskettaisiin paikallisesti eli tarvittavan etäisyyden päähän, olin ulottanut laskelmani peliympäristön laidasta laitaan. Korjattuani kömmähdykseni vaikutus oli jokseenkin dramaattinen: pelin käynnistysaika putosi varttitunnista (!) alle puoleen minuuttiin.

Reitinhaku osoittautui kinkkisemmäksi tapaukseksi. Ultima-kloonista peritty reitinhakurutiini oli sinänsä toimiva, mutta mitoitettu reilulle kymmenelle tekoälyhahmolle. Yli sata samanaikaista zombia etsimässä laillista reittiä kohti pelaajahahmoja hyydytti pelin täysin.

Muutin reitinhaun kaksivaiheiseksi. Zombit käyttävät aitoa reitinhakua ainoastaan silloin, kun ne pääsevät lähietäisyydelle. Kauempana olevat zombit yrittävät vain kulkea suorinta tietä kohti, mahdollisista esteistä piittaamatta. Enää en ihmettele, miksi zombit ovat niin suosittuja vihollisia nykypeleissä. Tekoälyn hölmöilyt – kuten nurkkien takana jumittaminen – olisi melkein minkä tahansa muun vihollistyypin kohdalla häiritsevää. Zombeille aivoton käytös on kuitenkin täysin normaalia lajinomaista käyttäytymistä.

Kirjasto on nähnyt parempia päiviä. Räjähdyksissä vaurioituva ympäristö on Night of the Livingin ylpeys. Huomaa myös kuvan alareunaan lisätty minikartta.

Hitaat hahmot, nopeat nopat

Pääsin pelintestauksen makuun jo varhain, sillä Night of the Living oli pelattavassa kunnossa käytännöllisesti katsoen alusta asti. Hyvä niin, sillä taistelusysteemin tasapainottaminen osoittautui loputtomaksi suoksi.

Jälkeenpäin tasapainoponnisteluissani on havaittavissa kaksi selkeää trendiä: iteraatio iteraatiolta liike pelissä lisääntyi ja satunnaiselementin osuus säännöissä väheni.

Liikkumisen hinta oli oikeastaan enemmän kuin pelitasapainokysymys, sillä se vaikutti myös suoraan pelaamisen sujuvuuteen. Kun pelissä ohjattiin kuutta hahmoa, jotka liikkuivat enimmillään kolme ruutua kerrallaan, kartan tutkiminen oli turhauttavan hidasta. Loppujen lopuksi implementoin eloonjääneille juoksemismekaniikan, joka salli staminan kustannuksella jopa kuuden ruudun pyrähdykset. Pelitasapainon nimissä zombit saivat samassa yhteydessä yhden toiminnon (hyökkäys tai liikkuminen) lisää per vuoro.

Ultima-kloonini perintönä satunnaisuus oli pesiytynyt syvälle Night of the Livingin taistelusysteemiin. Zombien syntypaikat olivat satunnaisia. Osumatodennäköisyydet olivat satunnaisia. Aseiden tekemä vahinko oli aseen suoritusarvon puitteissa satunnaista. Kaiken huipuksi omien ja vihollisten kyky mitätöidä vahinkoa panssariinsa perustui satunnaisuuteen.

Yksinään nämä satunnaistekijät olivat vaikutukseltaan melko maltillisia, mutta yhdessä ne kasaantuivat pelitilanteiksi, joissa taistelun kulusta puuttui kaikki ennakoitavuus. Samalla aseella saattoi ampua yhtenä hetkenä pelkkiä huteja tai nollavahinkoa, toisena hämmästyttäviä ”one-shot-one-killejä”.

Vaikka tuloksissa ei olisi tilastollisessa mielessä mitään vikaa – eihän kuusi nopanheittoakaan takaa automaattisesti kuutosta – liian näkyvästi korostuva satunnaisuus sotii luontaista intuitiotamme vastaan. Muutenhan intuitiomme kertoo, että olemme aina vain yhden nopanheiton päässä seuraavasta voitosta.

Pelikurssilla luennoinut Zachary Laster viittasi hauskasti uhkapelaajan harhaan eli siihen, kuinka surkeita me ihmiset olemme todennäköisyyksien hahmottamisessa. "Heitin juuri kolme kertaa silmäluvun yksi, seuraava heitto ei mitenkään voi olla ykkönen!" Edelliset nopanheitot eivät kuitenkaan missään määrin vaikuta seuraavan silmäluvun todennäköisyyteen, ykkösen todennäköisyys on ja pysyy 1/6:ssa. Paitsi jos…

Game Developers Conferencessa vuonna 2010 esiintynyt Sid Meier kertoi hämmästyttävän tarinan Civilizationin pelintestauksesta. Pelaajat arvioivat omat kykynsä ja yksiköiden voimasuhteet järjestään väärin. "Jos hyökkääjällä on kymmenen pistettä enemmän voimaa kuin puolustajalla, niin hyökkääjä ei voi hävitä", Meier kuvaili pelaajien ajatusmallia. "Jos taisteluiden tulokset tuntuivat pelaajista vääriltä, pelaajan huomio kiinnittyy siihen ja hänen suspension of disbelief rikkoontuu."

Meier reagoi pelaajien tuntoihin peukaloimalla taistelulaskelmia huomioimaan edellisten taisteluiden tulokset. Tappioita kärsineen pelaajan yksiköt saavat vaivihkaa pientä bonusta taisteluarvoihinsa. Jos tekoäly saisi samanlaisen edun, se tuntuisi silkalta huijaamiselta.

Matemaattiseen silmänkääntötemppuun liittyy eettinen ulottuvuus, sillä manipuloidessaan taistelutuloksia pelaajan eduksi Civilization ruokkii ihmisten harhakäsityksiä tilastollisista todennäköisyyksistä.

Tältä näyttää Ultima-klooni, jonka päälle Night of the Living on rakennettu.

Kun paniikki iskee

Opin läksyni kantapään kautta, sillä ratkaisu Night of the Livingin sattumanvaraiseen taistelumekaniikkaan oli kuin suoraan oppikirjan sivuilta. Parhaaseen lopputulokseen pääsin minimoimalla satunnaisuuden ja tekemällä taistelun numeroista ja nopanheitoista mahdollisimman läpinäkyviä pelaajalle.

Oppikirjan suosittelemat lääkkeet myös tepsivät. Muuttamalla aseiden vahinkoarvot kiinteiksi ja näyttämällä jokaisesta laukauksesta osumatodennäköisyyden ja sitä vastaan tehdyn osumaheiton, taistelumekaniikka tuntui heti paljon reilummalta ja intuitiivisemmalta. Night of the Living muuttui arpapelistä taktiikkapeliksi.

Projektin tiukan aikarajan takia en harmikseni kyennyt tekemään koko pelisysteemistä yhtä läpinäkyvää. Esimerkiksi taistelumoraalia ja paniikkia koskevat mekanismit perustuvat pohjimmiltaan pelkkään vähennyslaskuun, jossa näkökentässä olevien eloonjääneiden lukumäärää verrataan näkökentässä olevien zombien lukumäärään. Kun eloonjääneellä on ympärillään liikaa zombeja ja liian vähän kavereita, seurauksena on paniikki. Näitä simppeleitä mekanismeja ei visualisoida mitenkään, pelaajan on vain sielunsa silmin pääteltävä, että tuo kaveri taitaa olla liian kaukana nostaakseen tuon toisen mielialaa.

Vielä hämärämmäksi mennään, kun huomioidaan ryhmän sisäiset jännitteet. Survivalisti ja nörtti kavahtavat kapinasieluisuuttaan pilotin ja sotilaan edustamia ”auktoriteetteja”. Ellei näiden tyyppien välillä ole riittävästi välimatkaa, seurauksena on staminaa kuluttavaa stressiä. Tämäkin tapahtuu pelaajan kannalta jokseenkin näkymättömästi.

Paniikin haittavaikutukset ovat sentään selkeät. Paniikki ei tee kenestäkään toimintakyvytöntä, vaan ainoastaan pudottaa osumatarkkuutta ja estää hallitut laukaukset (aimed shot). Paniikissa ainoa tulimoodi on tuli vapaa, mikä usein poikii ylimääräisiä osumia. Haittapuolena vapaa tulitus syö ammusvarannot nopeasti loppuun.

night9_epic_win

Excelin makuista pelisuunnittelua

Osuvampi nimi Night of the Livingille olisi ollut Night of the Feature-Creep, pelisuunnitelmaan vähitellen hiipivien loputtomien lisäominaisuuksien yö. Vielä viikkoa ennen deadlinea näpertelin mukaan palavaa metsää, seiniin jääviä luodinreikiä ja muuta silmäkarkkia, vaikka samaan aikaan pelini toimintalogiikassa oli vielä ammottavia aukkoja. Koodasin pelimaailmaan arvottavat bensakanisterit ja eloonjääneiden pakohelikopterin mukaan viimeisellä mahdollisella hetkellä.

Saatuani ammuskelumekaniikan suunnilleen kuntoon, jouduin silti kamppailemaan Night of the Livingin yleisen pelitasapainon kanssa loppuun asti. Säädin pelikokemuksen kannalta keskeisiä muuttujia – kuten aseiden tekemää vahinkos, eloonjääneiden ammusvarantojaja rakennuksista löytyvien tarvikkeiden yleisyyttä – edestakaisin oikeastaan projektin loppuun asti. Niihin oli mahdoton löytää ”oikeita” arvoja.

Hienosäätämistä ei helpottanut, että satunnaisuuden elementti oli äärimmäisen vahva, kun peliä tarkasteli strategisessa mittakaavassa. Paitsi että karttapohja muuttui pelikerrasta toiseen, pelaajalla ei ollut koskaan takeita siitä miten edullisesti tai epäedullisesti peli generoi zombeja lähiympäristöön. Toisinaan eloonjääneet joutuvat täydellisesti zombien sumputtamaksi. Taistelu johtaa helposti noidankierteeseen, jossa taistelun äänet ja zombien keskuudessa leviävä ”raivo” houkuttelevat paikalle enemmän vihollisia kuin eloonjääneet ehtivät tappamaan.

Muuttujiin perustuvia pelitasapaino-ongelmia voisi lähestyä myös matemaattisesta näkökulmasta, äärimmillään pelisäännöt ja nopanheitot voisi pelkistää jopa Excel-taulukoksi. Tällainen taulukko olisi erityisen hyödyllinen yli- ja alitehoisten aseiden tunnistamisessa.

Skenaarion ailahtelevasta vaikeustasosta huolimatta Night of the Living Dead valmistui aikataulussaan ja suunnilleen sellaisena kuin olin sen suunnitellut. Jatkokehittelymahdollisuuksia olisi vaikka mihin, jos peliin liittäisi hahmonkehitystä ja useita skenaarioita toisiinsa kytkevän kampanjan. Villeimmissä unelmissani eloonjääneiden matka halki zombiepidemian riivaaman maan voisi kasvaa kokonaiseksi postapokalyptiseksi roolipeliksi.

Aikuisten oikeasti minun pitäisi palauttaa Night of the Livingin opit Ultima-klooniini ja jatkaa sen parissa, mutta vereni vetää jo kohti seuraavaa ideaani: Battletech-henkistä scifi-ropea. Näen sen jo sieluni silmin: Ultima-kloonini tiiligrafiikkamaailma yhdistettynä Night of the Livingin tuhoutuviin ympäristöihin on kuin luotu jättiläisrobottien näyttämöksi!

 

Tuomas Honkala