perjantai 13. toukokuuta 2016

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

Ei kommentteja :

Lähetä kommentti