perjantai 13. toukokuuta 2016

Loppuraportti

Loppuraportti

Tuntikirjanpito


Blogin PDF-tuloste


Prototyyppi: GuavaMania

Viikot 18 ja 19: Projektin viimeistely

Projektin viimeiset viikot ovat sujuneet haikeissa merkeissä. Takana on erittäin mielenkiintoinen projekti ja monta kuukautta työskentelyä yhdessä mahtavan tiimin kanssa. Viimeisiin viikkoihin on kuitenkin sisältynyt vielä blogin viimeistelyä sekä loppuraportin suunnittelua ja toteuttamista.

Väliraportin palauttamisen jälkeen huomasimme, että projektissamme on tehty todella paljon tärkeitä asioita, jotka eivät kuitenkaan juuri näy raporteissamme. Tämän vuoksi keksimme, että voisimme tehdä blogiimme postauksia siitä, mitä kaikkea olemme tehneet kulissien takana. Kulissien takana -sarjaamme kuuluvat postaukset käsittelevät syvemmin pelimme kehitysprosessia, toimintapisteiden taustalla olevaa data-analyysiä, peligrafiikoita ja käyttöliittymää sekä soundtrackiä.

Tapamme mukaisesti olemme tehneet myös loppuraporttia kasvokkain yhteisvoimin. Koko tiimimme on ollut mukana kirjoitusprosessissa, ja olemme pyrkineet kuvaamaan ryhmämme taivalta mahdollisimman monipuolisesti. Kuten muissakin raporteissa, myös loppuraportissa tuli sivumäärä vastaan, mutta selvisimme siitäkin järkevien sivumäärien sisällä.


Tällä kertaa olimme vaihtaneet Maarin vakiohuoneemme "päälafkan" Hubiin.


Projektin aikana kahvin, teen ja energiajuomien kulutus oli suurta.

Odotamme innolla demotilaisuuttamme Avoin.Systemsin toimistolla. Tarkoituksena on päästä demoamaan GuavaManiaa ja esittelemään projektimme kulkua. Vaikka itse projekti loppuukin tähän, Avoin.Systemsillä odotetaan innolla kertomustamme sekä ideoitamme, joita emme tämän kurssin puitteissa ehtineet toteuttamaan. Toivommekin, että tämän projektin tuloksista, sen aikana syntyneistä ideoista ja demostamme on iloa ja hyötyä Avoin.Systemsille, jolta saimme tämän mahtavan projektiaiheen tehtäväksemme.

Kulissien takana: Peligrafiikat ja käyttöliittymä

Pelin ilmeen ideointi

Tiimimme ensimmäinen konkreettinen peli-ideointisessio oli maaliskuun alussa. Ideoiden syntyessä mielessäni alkoi pian muototumaan kuva siitä, millaiselta pelimme näyttäisi ja minkälaisista näkymistä se koostuisi.

Jo ensimmäisissä luonnoksissa näkyy samaa ideaa kuin mitä lopulliseen peliinkin päätyi. Peli koostuu kahdesta päänäkymästä. Ensimmäinen on suuri karttanäkymä, joka kattaa koko pelimaailman (kuvan sininen kartta). Tässä kartassa on mahdollista nähdä, missä päin työkaverit liikkuvat ja missä itse sillä hetkellä sijaitsee.

Toinen näkymä eli pelin sisempi karttanäkymä vaihtelee riippuen siitä, missäpäin pelimaailmaa pelaaja kullakin hetkellä on (oranssi kartta ja verkko). Kartalla eri solmut olisivat kytköksissä toisiinsa polkujen välitysellä. Solmuja on kahdenlaisia: tyhjiä liikkumissolmuja sekä tapahtumasolmuja, jonka tapahtumat voivat vaihdella aarteen tai esineen löytämisestä minipeleihin.


Pelimme ilme lähti liikkeelle yksinkertaisista luonnoksista.

Kuten pelin demoversiosta huomaa, meille kehittyi jo melko aikaisessa vaiheessa selkeä käsitys siitä, mitä peli tulisi kattotasolla sisältämään, ja siten myös visuaalisen ilmeen ja grafiikoiden suunnittelu lähti luontevasti käyntiin.

Peligrafiikoiden tekeminen

Ensimmäinen hackathon

Lopullisten grafiikoiden toteutus aloitettiin ensimmäisen hackathon-viikonloppumme aikana. Tällöin Mikko 3D-mallinsi maailmamme suurta karttaa. Alkuperäisten suunnitelmiemme mukaan maailma säilyi jättimäisenä saarena. Saari jakautuu eri tyyppisiin alueisiin, jotka antavat luonnollista vaihtelua myös yksityiskohtaisemmille pikkukartoille, joissa tehtäviä suoritetaan.


Ensimmäinen versio pelimaailmastamme.

Toinen hackathon

Grafiikoiden työstäminen jatkui toisessa hackathonissa niin maailman kuin hahmojen osalta. Näihin aikoihin myös logomme guava sai lopullisen muotonsa. Muut grafiikat on toteutettu kaksiuloitteisesti joko vektori- tai pikseligrafiikkana. Ensimmäisenä vuorossa oli ensimmäisen pelihahmon tekeminen ja hahmon liikeratojen suunnittelu. Hain hahmojen muotoa useiden eri luonnoksien kautta, ja lopulta päädyin yksinkertaiseen ja nukkemaiseen muotoon. Hahmolla on kuitenkin selkeästi erottuvat raajat ja hiukset, mikä luo mahdollisuuksia kehittää hahmoista myöhemmin helpommin personoituja (esim. erilaiset ja eriväriset hiukset ja vaatteet).


Käyttäjämme Pekan hahmo ja hänen eri asentonsa mallinnettuna. Toteutettu vektorigrafiikkana.

Pelaajan valmistumisen jälkeen seuraava askel oli ensimmäinen yksityiskohtaisempi karttanäkymämme. Päädyin valitsemaan ensimmäisen kartan alueeksi vihreän ja vehreän alueen maailmankartalta. Suunnittelin näkymästä metsäisen, ja pelihahmomme pääsee kulkemaan siellä olevien polkujen kautta erilaisiin kiinnostaviin solmukohtiin. Jo alussa ryhmämme keskuudessa ilmeni kiinnostusta kuusikulmioihin, ja tämän vuoksi päädyin tekemään solmuistamme kuusikulmion muotosia.


Ensimmäinen pelinäkymämme.

Toiseen hackathoniin mahtui vielä pelimme ensimmäisen vihollisen tekeminen. Kävimme värikästä keskutelua mahdollisista vihollisista. Tajusimme kuitenkin jossain vaiheessa, että guava-hedelmän arkkiviholliseksi sopii parhaiten mikäpä muukaan kuin hedelmälepakko.


Guava-hedelmän ja siten kaikkien pelaajien arkkiviholliseksi sopi pelottava hedelmälepakko.

Lisäksi viikonlopun aikana pelimaailman kartta sai lopullisen muotonsa. Lopulliseen karttaan lisättiin "toon shade" eli kolmiuloitteinen malli muutettiin ulkoasultaan hieman lähemmäksi kaksiuloitteista tyyliä, jotta grafiikat sointuivat mukavasti yhteen.


Pelimme lopullisesta maailmankartasta tuli tyyliltään kaksiuloitteisempi, vaikka toteutus olikin kolmiuloitteinen.

Grafiikoiden jatkaminen

Myöhemmin peliin tarvittiin myös toinen pelaaja yhteistyöominaisuuksien demoamiseksi. Pekan kaveriksi tehtiin Matti, joka erottui Pekasta hiusten ja vaatteiden värin avulla.


GuavaManian toinen pelaaja, Matti.

Suunnittelimme GuavaManiaan myös minipelejä, joista ensimmäisestä valmistui myös demoversio. Minipelissä pelaaja pakenee pelin hirviötä, hedelmälepakkoa, ja yrittää samalla napata itselleen voimaguavan. Guavasta pelaaja saa voimaa voittaa hedelmälepakko. Tällä taistelutantereelle piti myös toteuttaa pelikenttä. Pelikenttä on karu hedelmälepakon asuinpaikka, jota reunustavat kalliot.


Minipelin pelikenttä. Kenttää reunustavien vuorien joukosta löytyy vuori,
jossa hurjan hedelmälepakon luola sijaitsee (kts. oikea ylänurkka).

Käyttöliittymän suunnittelu

GuavaManiassa oli pitkään kehitysvaiheessa käytössä väliaikainen käyttöliittymä, joka oli väritykseltään synkkä. Siinä löytyi kaikki oleellinen materiaali, mutta se ei vielä näyttänyt GuavaManialta.



Ensimmäinen versio käyttöliittymästä.

Lopullisen käyttöliittymän ensimmäiset luonnokset tein perinteisesti tusseja ja paperia käyttäen. Yksinkertainen käyttöliittymä oli meidän kohdallamme järkevin ratkaisu, koska se jättäisi enemmän tilaa itse pelille ja siihen tutustumiselle.


Pelin lopullisen käyttöliittymän luonnokset (yllä perusnäkymä, alla navigointi auki).

Lopullisesta käyttöliittymästä tulikin yksinkertainen ja kevyt. Navigointi ei vie yhtään tilaa näytöllä normaalisti, mutta sen saa auki näytön oikeassa ylänurkassa olevaa M-painiketta klikkaamalla. Myös väriskaala muuttui lähemmäksi Gamifying Guavasille muodostunutta ilmettä. Valkoinen tausta auttaa käyttäjää keskittämään huomion itse pelinäkymään, ja pinkki tehosteväri kiinnittää katseen sopivasti käyttöliittymän oleellisiin kohtiin eli navigoinnin painikkeeseen ja pelin nimeen.



Lopullinen käyttöliittymä, joka noudattaa Gamifying Guavasin ilmettä.

Kaikki tiimimme jäsenet ovat aktiivisia mobiililaitteiden käyttäjiä. Lisäksi mobiililaitteiden käyttö on tavallista ohjelmistoalan työntekijöiden keskuudessa. Tämän vuoksi meille oli tärkeää, että GuavaMania toimii myös mobiililaitteilla, ja sekä käyttöliittymä että koko peli on suunniteltu toimivaksi myös mobiililaitteilla ja kosketusnäytöillä.


GuavaManiaa voi käyttää myös mobiililaitteilla.

Helinä Hakala,
Gamifying Guavas

Kulissien takana: Musiikki ja soundtrack

Helmikuun loppupuolella jossakin tapaamisessa pohtiessamme peliimme toteutettavia ominaisuuksia, tuli puheen aiheeksi myös pelin soundtrack. Prioriteetiltaan vähäinen, mutta mukava lisä peliin, lienee osuva kuva tehtävästä, joka lankesi minulle luonnollisesti musiikkitaustani vuoksi. Vaikka mielestäni tehtävän prioriteetti tosiaan oli pieni, olin asiasta innoissani, sillä en ole ennen säveltänyt pelimusiikkia. Aluksi ideoitiin tiimiläisten kanssa vähän minkä luonteinen soundtrack voisi olla, mutta koska selkeää visiota pelistä tai pelimaailmasta ja sen ulkonäöstä ei vielä ollut, sovittiin, että kokeilen tehdä jotakin, josta katsotaan palautteen kautta mihin suuntaan sitten mennään.

Lähdin toteuttamaan ensimmäistä kokeilua todella yksinkertaisesta ideasta, jonka sain päähäni miettiessäni mahdollista pelin taustamusiikkia pelimaailmalle, jossa liikutaan ruutu kerrallaan kaikessa rauhassa. Sanottakoon idean yksinkertaisuudesta vielä, että vuorottelin siinä A:ta ja E:tä pizzicatomaisella soundilla eli siitä mistä kappale alkaakin. Siitä se sitten lähti. Kirjoittelin vähän jousia, melodiaa ja lisää jousia ja kun kappale oli vähän kasvanut ja teema hyvin esitelty rauhoittui se pelkkiin jousiin ja melodiaan, joka oli suunniteltu aloittamaan kappale uudestaan loppuun tultaessa. Lopulta juuri tämä kappale päätyikin pelimme pääsoundtrackiksi.


Melodioiden kehittelyä


Toinen ideani oli vähän toiminnantäyteisempään tilanteeseen tarkoitettu. Lähdin sawtooth-nimisellä soundilla toteutettavasta bassomelodiasta liikkelle tällä kertaa. Tähän hiukan uhkaavan oloiseen bassoon vastaa yksinäinen torvisoitin. Tämän jälkeen alkoi tunteen kasvattaminen ja eräänä tehokeinona käytin trancen puolelta tutumpaa jousen käyttöä. Alusta tuttu melodia jatkaa kehitystään sawtoothin kanssa ja rauhoittuu taas jousiin, jotka tosin ovat dramaantäyteisemmät kuin ensimmäisessä kappaleessa. Tämänkin kappaleen lopun suunnittelin siten, että se voi alkaa suoraan alusta. Tämä kappale taas valikoitu minipelimme musiikiksi.

Pistin nämä kaksi luonnosta midi tiedostoina muun ryhmän saataville, joskin tiedostomuoto oli pieni virhe, sillä kaikki  eivät päässeet sen takia kuuntelemaan niitä. Projekti oli vielä varsin aikaisessa vaiheessa niin musiikin suhteen ei vieläkään ollut kovin selkeää kuvaa – itse olin vain tahtonut aloittaa jo tekemisen, sillä olisin varmaan muutenkin jotain musiikkia väsäillyt.
Seuraavan kerran musiikki tuli puheeksi ennen tapaamista asiakkaamme, Tuomon kanssa. Olimme Helinän kanssa luennolla vähän keskustelleet asiasta ja sopineet, että katsomme vähän missä mennään. Tuomon kanssa keskustellessamme kävi ilmi, että avainsanoja hänen makunsa mukaiseen pelimusiikkiin voisivat olla mahtipontinen, sinfoninen ja elokuvamusiikki, esimerkkinä Taru Sormusten Herrasta. Tämä yhdistettynä Helinän ehdotukseen luoda jokin teema, jota voisi helposti varioida, ja paria variaatota aloitti inspiraatiollisen ajatustyön, joka johti kolmanteen luomukseen.

Muutaman päivän elokuvamusiikin kuuntelun jälkeen soittaessani pianoa se iski. No mikä? Se teema. Sovitettuna jousille se kuulosti kuin tehdyltä johonkin eeppiseen elokuvaan. Sävellettyä lisää melodioita ja taustoja ja pari variaatota aloin ymmärtämään, että tämä eepos on varsin suuritöinen verrattuna kahteen aikaisempaan. Varsinkin kun sen sävellystyö ei ollut niin sanotusti puhdasta vaan vaati hieman fraasien tai sointujen hiomista. Taisin pistää tämänkin muiden kuultaville, joskin keskeneräisenä ja lopulta tästä yritelmästä luovuttiin.


Soundit kuntoon!

Tämän jälkeen ei enää sävellystyötä tapahtunut, mutta ennen grande finalea tuli taas musiikki puheeksi ja oli aika saada se vihdoin valmiiksi. Siinä iltaa ennen grande finalea Pro Tools -ohjelmaan viemäni midi-tiedostot kaipasivat soundeja, joten muu tiimi raatina säädin soundit puitteiden puitteissa jokseenkin kohdilleen. Kauheasti aikaa ei ollut niitä hioa ja pari tärkeää kohtaa jäikin varjoon, mainittakoon esimerkkinä toisen kappaleen loppuosan jousista löytyvä pieni tärkeä lisäsävel. Valmiit versiot jäivät leijumaan versionhallintaan, sillä en ehtinyt niitä peliin pistää. Onneksi seuraavana aamuna kävi ilmi, että kaiken muun lomassa Miika oli ehtinyt lisäämään ne peliin ja näin kaikki pääsivät nauttimaan GuavaManian äänimaailmasta.

Musiikkikappaleisiin voi tutustua täältä:
FRUITBAT
GuavaSong


Otso Ollikainen,
Gamifying Guavas

Kulissien takana: Katsaus toimintapisteisiin

Tässä blogipostaus liittyen pelin ”toimintapisteiden” luomiseen sekä työtuntidatan analyysiin. Ensimmäinen ja pisimmälle kehitetty toimintapistemalli on luonteeltaan sellainen, että se antaa pelaajalle toimintapisteet vain kerran päivässä kyseisen päivän aikana kirjattujen tapahtumien perusteella. Esittelen myös tämän blogipostauksen lopuksi pohjan vaihtoehtoiselle mallille, joka mahdollistaa reaaliaikaisen toimintapisteiden antamisen pelaajalle mielenkiintoisella tavalla.

Ensimmäinen malli


Pääasiallisena ajatuksessa ensimmäisessä mallissa on, että toimintapisteet eli action pointit (AP), koostuvat muutamasta eri lähteestä tulevista bonuksista, jotka tiettyyn kaavaan sijoitettuna muodostavat koko päivän AP tuoton:

  AP_gain = Project_coeff*(AP_base + Task_bonus + Rand_bonus) (1)

Kaavan (1) muut kertoimet lasketaan pelkistettynä seuraavasti (oikea toteutus hieman monimutkaisempi)

AP_base:
  AP_base = 0.5*hours_worked
AP_base = soft_cap + sqrt(AP_base - soft_cap), kun AP_base > soft_cap
AP_base = hard_cap + sqrt(ap - hard_cap)/5, kun AP_base > hard_cap

Task_bonus:
Task_bonus = scaling_factor*(sum(task_points) + n_tasks_done)

Project_coeff:
Project_coeff = 1 + sqrt(5*project_hours)/100
        Project_coeff = coeff_cap + (Project_coeff - coeff_cap)/5, kun Project_coeff > coeff_cap

Rand_bonus:
  Generoi vain satunnainen luku välillä [0, 1], tätä ei käytetty testeissä

Kaavoissa hours_worked on kirjatut työtunnit päivän päätteeksi, soft_cap ja hard_cap ovat rajoja, joidenka jälkeen AP:ta alkaa kertymään hitaammin, scaling_factor on vain määriteltävä skaalauskerroin Task_bonukselle, task_points on lista tänään suoritetuista taskeista saaduista pisteistä, n_tasks_done on suoritettujen taskien lukumäärä ja coeff_cap on raja, jonka jälkeen Project_coeff alkaa kasvaa hitaammin. Kaavan kertoimet perustuvat ideaan, että AP_base:ssa 8 työtuntia vastaa 4:ää AP:ta ilman muita bonuksia. Muut bonukset taas palkitsevat työntekijöitä monipuolisemmin ja lisäävät vaihtelua pisteiden kertymiselle. Liian yksinkertainen AP malli olisi tylsä pidemmän päälle, jonka takia esimerkiksi kaavassa (1) projektit vaikuttavat saatavaan AP määrään kertoimena. Nykyistä mallia voitaisiin myös vielä parantaa entisestään ottamalla esim. pelimenestyksen yhteistyötapahtumissa huomioon tai ottamalla huomioon jotain muuta pelin ulkopuolista tai pelin sisäistä dataa. Kuvaus kaavan (1) tuottamasta AP määrästä pohjautuen asiakasyrityksemme dataan yhdelle päivälle satunnaisesti luoduilla task- ja projektisuorituksilla näkyy seuraavassa kuvassa:


Kuva: Tehdyt työtunnit asiakasyrityksemme 12 eri käyttäjälle ja datan pohjalta määritety action pointit ottaen huomioon vielä satunnaisesti generoidut projektikirjaukset sekä suoritetut taskit


Vaihtoehtoinen malli


Vaihtoehtoisen AP mallin ideana on, että tietyt tapahtumat, kuten projektien valmistuminen ja taskien suorittaminen, kasvattavat heti pelaajan omaa ”AP kerrointa”, eli kerrointa, joka kertoo työtuntikirjauksen tai tehtävän suorittamisen yhteydessä annettavan pohja AP määrän yksinkertaisesti:

  AP_gain = AP_coeff * hours_worked (5)

AP_coeff kuitenkin vähenee ajan kuluessa tietyn kaavan mukaan, hyvä vaihtoehto tätä varten voisi olla esimerksi jonkinlainen funktio, joka vähenee suurimmalla kertoimella kaikista nopeiten, kuitenkin kertoimen pienentyessä kerroin alkaisi vähentyä vähemmän. Esim 1/x kaltaisesta funktiosta saisi positiivisessa alueessa jonkinlaisen yhteyden tätä varten aikaiseksi. Tämä vaihtoehtoinen kaava mahdollistaisi reaaliaikaiset muutokset AP:seen yksinkertaisesti ja pelaajalle voisi myös näyttää hänen nykyisen AP kertoimensa reaaliajassa. Kertoimen hiipumisen voisi myös yhdistää peliin käytettyyn aikamäärään: tämä saisi pelaajia ehkä pelaamaan useammin, jotta AP kerroin pysyisi korkealla, mutta ei liian usein, jotta sen nopea hiipuminen ei tapahtuisi. Aikaa tämän idean kehittämiselle tätä pidemmälle ei kuitenkaan ollut, joten se täytyi jättää tähän vaiheeseen.

Jesper Ilves,
Gamifying Guavas

Kulissien takana: Prototyypin kehitysaskeleet

Projektimme tarkoituksena oli pelillistää työelämää ja etenkin ohjelmistokehitykseen liittyviä työtehtäviä. Osana projektiamme toteutimme prototyypin pelistä, joka integroituisi osaksi työpäivää, innostaisi ja motivoisi työntekijöitä, lisäisi tavoitteellisuutta ja tervettä kilpailuhenkeä työtehtävissä, parantaisi työyhteisön henkeä ja täten yleisesti parantaisi työhyvinvointia ja kenties samalla tehokkuuttakin.

Pelimekaniikat

Prototyypin kehitys alkoi miettimällä millaiset pelimekaniikat sopisivat peliimme ja projektin tavoitteisiin. Pelin pitäisi integroitua työpäivään, innostaa työntekijöitä, mutta ei viedä merkittävästi työaikaa. Pidimme pelimekaniikkoihin liittyen koko ryhmän voimin useammankin aivoriihen, joiden tuloksena päädyimme pelimekaniikoiden suhteen seuraavanlaiseen kokonaisuuteen:

Hahmo

Työntekijällä on pelissämme hahmo, jonka voi kustomoida oman näköisekseen. Tehdyistä työtunneista ja suoritetuista työtehtävistä pelaaja saa toimintapisteitä, joilla hän kykenee liikkumaan pelimaailmassa sekä suorittamaan pelissä erilaisia toimintoja. Samalla pelaajalle kertyy kokemuspisteitä, joilla hän voi kehittää hahmoaan ja hahmon taitoja.

Pelimaailma

Pelimaailma koostuu yhdestä isosta kartasta, joka on jaettu pienempiin alueisiin. Nämä pienemmät alueet koostuvat reiteistä, joita pitkin pelaaja voi kerryttämillään toimintapisteillä liikkua. Matkan varrella pelaaja voi törmätä erilaisiin tapahtumiin, kuten löytää jonkin esineen tai törmätä viholliseen, joka täytyy voittaa ennen matkan jatkumista. Tapahtumiin voidaan liittää erilaisia minipelejä.

Yhteistyö

Pelimaailmassa olisi myös erilaisia yhteystyöelementtejä. Pelaaja pystyisi esimerkiksi liikkumaan pienemmällä määrällä toimintapisteitä, jos hänellä on työkaveri seurassaan. Lisäksi jotkin pelin tapahtumat vaativat useamman pelaajan osallistumisen.
Muuta
Lisäksi kaavailimme monia muita mahdollisia pelimekaanikoita. Näihin kuuluivat mm. kauppa, josta pelaaja voisi pelin sisäisellä virtuaalivaluutalla ostaa esineitä, jonkinlainen “uhkapeli” elementti ja kenties jonkinlaisen aktiivisuusrannekkeen tai hyvinvointikyselyn integroiminen peliin.

Teknologiat

Pelimekaaniikoiden lisäksi prototyypin kehitykseen liittyi käytettävien teknologioiden miettiminen. Heti alkuun päätimme tehdä pelistä selainpohjaisen. Selainpohjaisena peliä voi pelata millä tahansa selaimella tai mobiililla ilman että käyttöjön tarvitsee asennelle mitään ylimääräistä. Pidimme tapaamisen, jossa pohdimme eri teknologiavaihtoehtoja. Kovin paljoa kokemusta selainapplikaatioiden kehityksestä kellään meistä ei ollut. Ehdotuksia ja vaihtoehtoja löytyi useita. Etenkin Otson ehdottama ja hänen aimmallakin kurssilla käyttämänsä, verrattain uusi framework nimeltä Meteor vaikutti lupaavalta ja lyhyen tutkimustyön jälkeen siihen myös päädyimme. Meteorin ominaisuuksiin kuuluu integroitu Mongo-tietokanta, Reaktiiviset muuttujat ja paketinhallinta, josta löytyy kattava määrä kirjastoja. Niin palvelimella kuin asiakkaan laitteella suoritetaan samaa javascript-koodia, jolloin applikaatiosta saa helposti tehtyä erittäin responsiivisen. Esimerkiksi tietokantakyselyt simuloidaan jo asiakkaan laitteella, eikä vastausta tarvitse odotella palvelimelta, vaan asiakas saa vastauksen antamaansa syötteeseen välittömästi.
Versionhallinnan osalta päädyimme Bitbuckettiin hostattuun Git-repositorioon. Bitbucket, toisin kuin esimerkiksi Github, tarjosi ilmaisen ja yksityisen versionhallinnan ja hyvät tiimityöskentelyominaisuudet.

Ominaisuudet ja priorisointi

Ennen varsinaista kehitystyön aloittamista täytyi meidän vielä päättää prototyyppiin mukaan otettavat ominaisuudet ja niiden priorisointi. Oli kuitenkin selvää ettei kaikkea suunnittelemaamme keretä toteuttamaan. Pidimme yhden tapaamisen myös prototyypin ominaisuuksista ja päädyimme karsittuun listaan, jossa oli ne muutamat ominaisuudet, jotka ehdottomasti halusimme prototyyppiin mukaan ja yleisölle siteltäviksi. Näihin tärkeimpinä lukeutuivat esimerkiksi yksinkertainen käyttöliittymä, pieni pelikartta, pelihahmon liikuttelu ja jokin yhteistyöelementti.

Kehitys

Käytännössä itse kehitystyön aloitin itsekseni, sillä tehtävän jakaminen pienempiin osiin oli tässävaiheessa vielä hankalaa. Kuitenkin pian prototyypin pohja alkoi löytää muotoaan ja kun koodia oli kasassa jonkin verran, prototyyppiä voitiin alkaa työstämään jo useamman henkilön voimin. Pidimme ensimmäisen kaksipäiväisen prototyypin kehityssessiomme Pe 8.4. - La 9.4. Koko ryhmämme ei päässyt paikalle, mutta prototyyppiä työstettiin kuitenkin kolmen hengen voimin. Otso ja minä keskityimme pelimme koodipuoleen ja Mikko työsti grafiikoita. Vielä perjantaina ei näkyvää kehitystä juurikaan tapahtunut, sillä aikaa kului paljon uuden teknologian ja tiimissä kehityksen opetteluun. Sen sijaan Lauantaina kehitystyö alkoi jo sujumaan ja saimme peliimme useita ominaisuuksia valmiiksi. Tässä vaiheessa valmiina oli mm. Pelihahmo ja sen liikkuminen kartan pisteissä, toimintapisteet, yksinkertainen layout ja yksi esimerkkiminipeli. Pelin kartta ja hahmot olivat kuvattuna tietokantaan. Lisäksi meillä oli Mikon tekemä alustava versio isommasta “maailmankartasta”.
Session jälkeen meillä oli jo selkeä kuva työskentelytavoista ja prototyyppiin työstettävistä ominaisuuksista sekä niiden tärkeysjärjestyksestä ja näin kehitystyötä voitiin jatkaa itsenäisesti. Seuraavaan prototyypin kehityssessioomme mennessä prototyyppimme olikin taas askelta lähempänä valmista. Matkaa oli kuitenkin vielä paljon jäljellä.
Toisen pidemmän kehityssessiomme pidimme Pe 15.4 - La 16.4. Tällöin paikalle pääsi myös Helinä ja Jesper. Otso ja minä jatkoimme koodaamista Helinän ja Mikon työskennellessä grafiikoiden parissa. Saimme hyvän vauhdin päälle ja uusia ominaisuuksia valmistui kuin liukuhihnalta. Lauantain päätteeksi prototyypissämme oli valmiina kartta yksityiskohtineen, esineen löytäminen, hahmoanimaatiot, toinen pelaaja ja paljon uutta grafiikkaa.

Grafiikat

Grafiikat muodostavat suuren osan pelistä ja sen viehätyksestä. Käytimme prototyypissämme pitkään placeholder -grafiikoita, joita emme tietenkään halunneet valmiiseen prototyyppiin jättää. Lopullisen prototyyppimme visuaalisen ilmeen loivat graafikkomme Helinä ja Mikko - saimmekin korvattua kaiken placeholder -grafiikan omilla tuotoksillamme ja uskommekin visuaalisuuden olevan yksi tuotteemme houkuttelevista tekijöistä.

Viimeistely

Kovasta panoksestamme huolimatta huomasimme Grand Finalen lähestyessä prototyyppimme olevan huomattavan puutteellinen. Jouduimme vielä suorittamaan osaamisemme uudelleenallokointia - jättäydyin itse pois jo osittain harjoittelemastani esityksestä ja keskityin Grand Finalea edeltävän viikon ajan prototyypin loppuun saattamiseen. Töitä tehtiin vielä viimeisenä iltana pikkutunneille asti. Vaikka tapahtuma-aamuna hieman väsyttikin, oli palkitsevaa nähdä prototyyppimme kaikkine toivomimme ominaisuuksineen toimivan moitteetta. Erityisen hienoa oli nähdä peliin kehittämämme yhteystyöelementin toiminta käytännössä.

Miika Piiroinen,
Gamifying Guavas

keskiviikko 4. toukokuuta 2016

Viikko 17: Grande Finale

Oman ständin rakentaminen

Perjantaina 29.4., grande finalen aamuna, suuntasimme koko tiimin voimin heti aamusta Otakaari 1:een. Osa tiimistä kävi hakemassa guavaboolin tarvikkeet sekä muut välineet Helinän luota samalla, kun loput tarvikkeet valmisteltiin päivää varten. Viimeiset koodirivit oli puserrettu aamuyön pikkutunneilla, ja myös grafiikat olivat saaneet viimeisen silauksensa samoihin aikoihin. Myös viimeiset toimintatestaukset eri laitetyypeillä suoritettiin yön aikana, ja saimmekin tuotua demotilaisuuteen sekä läppärin että tabletin testattavaksi.

Saavuttuamme messupaikalle aloimme kokoamaan ständiämme. Halusimme kävijöiden ständikokemuksen olevan mahdollisimman yhtenäinen, joten olimme panostaneet brändiimme sekä yleisilmeeseen. Kokonaisuus lähti liikkeelle tiimimme pinkeistä paidoista, jotka oli koristeltu logomme guavalla, ja päätyi sointuvan posterin ja demottavan prototyyppimme kautta jaossa olleisiin guavatarroihin.


Ständin pystyttäminen alkoi paperimukien koristelemisella guava-tarroja käyttäen.



Ständin kasaaminen sujui mukavasti, ja saimme sekä posterimme että logomme hyville paikoille.

Pitch

Ständien kokoamiseen oli varattu aikaa aamulla klo 10.30 asti. Melko pian tämän jälkeen, klo 11, alkoivat pitchit. Meidän ryhmämme esiintyi jo klo 11.20.

Useamman viikon suunnittelu ja harjoittelu palkittiin tilaisuudessa. Pitch meni erittäin hyvin, ja koko tiimimme oli täysillä mukana esityksessä. Kolme minuuttia eteni napakasti, eikä "demoefektejäkään" sattunut. Myös esityksen diat ja sisältö oli suunniteltu saumattomasti osaksi projektimme esitettyä kokonaisuutta.


Esityksemme diat olivat yhtenäinen osa luomaamme ilmettä.

Messutapahtuma

Myös varsinainen messutilaisuus sujui erinomaisesti. Ständillämme oli jatkuvasti paljon väkeä, ja kävijät innostuivat niin prototyyppimme kokeilemisesta että guavaboolistamme. Pelin idea herätti mielenkiintoa, ja sai positiivista palautetta monilta teknologiaopiskelijoilta, jotka pysähtyivät sitä kokeilemaan sekä keskustelemaan kanssamme projektistamme.



Koko messutapahtuman ajan ständimme kuhisi innokkaita tulevaisuuden käyttäjiä.

Pöydällä meillä oli kaksi konetta, tietokone ja tabletti, joilla oli mahdollista kokeilla peliä. Koska yhteistyö on tärkeä ja ratkaiseva tekijä pelissämme GuavaManiassa, molemmilla koneilla oli eri käyttäjä pelattavissa. Pelaajien oli mahdollista suorittaa yhteistyötehtäviä myös demotilaisuudessa, mikä loi tärkeää todellisuudentuntua demoomme.



Ständillämme oli mahdollista kokeilla GuavaManian prototyyppiä yksin tai yhdessä jonkun kanssa.

Iloksemme myös asiakkaamme Avoin.Systemsin edustaja Tuomo Aura pääsi paikalle katsomaan esitystämme ja ständiämme. Hän vaikutti innostuneelta projektimme tilasta ja siitä, miten pitkälle saimme toteutettua konseptoimaamme työelämäpeliä. Olimme jo aiemmin puhuneet siitä, että tiimimme voisi tulla esittelemään ideoita ja prototyyppiä Avoin.Systemsin toimistolle, ja tämä nousi uudelleen puheeksi ständillämme. Sovimme, että tulemme vielä loppukevään aikana kertomaan projektista ja GuavaManiasta.

Grande Finale oli kaikin puolin erinomaisesti onnistunut tilaisuus meidän tiimimme näkökulmasta. Ständistämme tuli juuri toiveidemme mukainen, esitys sujui hyvin ja lisäksi ihmisillä riitti kiinnostusta ja innostusta sekä tuotettamme GuavaManiaa että yleisesti projektiamme kohtaan. Kokemus oli inspiroiva myös meille tiiminä, ja loi erinomaisen finaalin tuotteemme suunnittelu- ja toteutusprosessille.


Tarjolla oli myös guavaboolia guava-mukeista.