perjantai 13. joulukuuta 2013

Seitsemäs tunti: Tasohyppelypelin täydentäminen

Pareton-periaatteen mukaan ensimmäinen 80 % työstä saadaan tehdyksi 20 %:ssa ajasta. Viimeistelyyn, eli viimeiseen 20 %:in, kuluu 80 % työajasta. Tämä on suurinpiirtein totta myös tässä pelissä. Hahmon liikuttelun ja perustoimintojen tekemiseen ei mene paljoakaan aikaa, mutta visuaalinen hiominen on erittäin hidasta homma.

Tässä käyn läpi muutaman esimerkkinä tekemäni idean. Oppilailla oli vapaat kädet tehdä mitä halusivat  ja suurin osa tunnistani kuluikin visioiden suunnitteluapuna tai vikojen syiden etsimiseen. Hour of Code-sivustolta löysin hyvän periaatteen. Kohdatessaan koodiin liittyvän ongelman he kysyvät ensin kolmelta oppilastoveriltaan ja vasta sen jälkeen opettajalta. Tällä tavoin oppilaat joutuvat myös tulkkaamaan kavereidensa tekemiä koodeja, joka on yllättävän haastavaa isolle osalle. Ilmeisesti oman skriptin logiikka on itsestään selvä, koska sen on itse päätellyt ja tehnyt, mutta hivenen toisenlainen logiikka ei meinaa heti aueta ja nopea turhautuminen vie innon auttamiselta. Tämä tapa olisi pitänyt ottaa käyttöön heti aluksi.

Sitten esimerkkeihin.

Teen neljänteen kenttään kaksi liekkiä, joihin osuessaan kissa palaa ja siirtyy aloituskohtaan. Animoin liekit siten, että ne suurenevat ja pienenevät tasaisin väliajoin.

Kun esiintymislava vaihtuu neljänneksi, skripti lähettää "neljäs kenttä"-viestin. Viestin avulla piilotetaan edellisen postin lopussa liikkuneet palkit ja aloitetaan liekkien skriptit.


Teen uuden hahmon. Piirrän liekin, kopioin sen ja muutan sitä hivenen. Nämä kaksi ovat nyt pienen liekin animoitu versio. Kopioin liekin taas ja piirrän siitä reilusti suuremman version

Tarkoituksena on, että liekki roihuaa pienenä ja välillä leimahtaa isommaksi. Kissa voi hypätä liekin yli vain silloin, kun liekki on pieni.




Koska liekki on hahmo, sitä ohjataan sen omilla skripteillä. Haluan liekkien näkyvän vasta neljännessä kentässä, joten ne varmuuden vuoksi piilotetaan vihreää lippua painettaessa. Kun kenttä vaihtuu neljänneksi, esiintymislava lähettää viestin "neljäs kenttä". Tämä aloittaa liekkien animointiskriptin. Ensiksi liekki muutetaan näkyväksi. Isoa ja pientä liekkiä on kaksi erilaista. Pieni liekki vaihtaa asua viisi kertaa, jonka jälkeen iso liekki vaihtaa asua kaksi kertaa. Pieni liekki on siis näkyvissä kaksi ja puoli kertaa niin kauan kuin iso liekki.


Haluan kissan kupsahtavan vähän eri tavoin liekistä. Haluan sen muuttuvan mustaksi ja pomppaavan korkealle. Ensin teen kopion kissasta ja maalaan sen oranssit kohdat mustiksi.

Teen uuden skriptin liekkikuolemaa varten. Olen käyttänyt punaista väriä vain liekissä, joten käytän sitä aloittamaan tämän skriptin. Tuohon voisi laittaa myös "Koskettaako hahmoa X tai koskettaako hahmoa Y", jolloin X ja Y olisivat liekkihahmojen nimet.

Kun hahmo koskettaa punaista väriä se vaihtaa asua mustaksi kissaksi ja pomppaa ylöspäin. Lisäsin perään sekunnin odotuksen, jottei hahmo pysty ohjaamaan lennon aikana. Tämän jälkeen hahmo siirretään aloituskohtaan ja asuste vaihdetaan takaisin kissan asuksi.

Seuraavaksi tehdään laskuri kissan elämille. Alussa kissalla on viisi elämää, jotka vähenevät yhdellä jokaisen kuoleman jälkeen. Teen uuden hahmon, joka toimii laskurina. Piirrän sille kuusi asua, jotka ovat jäljellä olevien elämien määrä tukkimiehen kirjoituksella ja viimeisenä "Peli loppui"-teksti.

Joka kerta, kun kissa osuu liekkiin tai putoaa alas, skripti lähettää viestin "Kuolema".


Jäljellä olevien elämien skripti alkaa "Kuolema"-signaalista. Kun "Kuolema" vastaanotetaan, laskuri vaihtaa seuraavan asusteen. Ohjelma pysäyttää kaiken, kun saavutetaan kuudes asu eli "Peli loppui".


Oppilaat lisäsivät kenttiinsä kolikoita ja rinnakkaisia bonuskenttiä. Pienet ES-tölkit kasvattivat kissaa tai kasvattivat sen nopeutta. Hauskin hahmo oli Scratch-kissa, joka oli puettu Super Marion vaatteisiin ja viiksiin. Aika oli rajoittavana tekijänä, sillä kenttiä tarvittaisiin reilusti yli kymmenen, jotta peli pysyisi mielenkiintoisena. Nyt nopeimmat saivat aikaiseksi vähän yli kymmenen kenttää, jotka pelaa läpi parissa minuutissa. Idea kävi kuitenkin kaikille selväksi ja tekeminen oli hauskaa. Ohjelmointiin tuli kerrankin paljon toistoa, kun samoja hahmoja pystyi käyttämään useissa eri kentissä ja vain niiden ohjaus ja sijoitus vaihtelivat kentän mukaan.

Jälkikäteen ajateltuna tämä olisi ollut tehokkaampi harjoitus esim. neljän hengen ryhmien ryhmätyöskentelynä. Kaikki olisivat ensin yhdessä suunnitelleet juonen, sitten massatuottaneet kenttiä ja vihollisia itsenäisesti. Tällöin valmiin tuotoksen pelattavuus olisi ollut huomattavasti parempi. No, ehkäpä ensi kerralla sitten.

1 kommentti:

  1. Mahtava blogi... olen Scratchia aloittelemassa oppilaiden kanssa, kiitos.

    VastaaPoista