Materiaalit on lisensoitu Creative Commons BY-NC-SA-lisenssillä, eli materiaalin levittäminen ja muokkaaminen on sallittu, kunhan tekijöiden nimet säilyvät mukana ja jatkoversiot julkaistaan samalla lisenssillä. Kaupallinen käyttö kielletty.

Alkuperäinen tekijä (2014): Matti Tahvanainen


Takaisin: Syksy 2014

Vierityspeli (Scroller Game)

Pelin toiminta Tarkoituksena tehdä peli, missä tausta liikkuu (scrollaa) pelaajan alla. Tällä tavalla saamme luotua illuusion jatkuvasta liikkeestä, vaikka todellisuudessa pelaajamme ei liiku kuin yhdellä akselilla (esimerkissä x-akselilla). Esimerkkipeli on avaruusräiskintäpeli, mutta ideaa voi soveltaa erilaisiin taustan vierityspeleihin (Side Scroller Game).
Vaikeustaso Pelin vaikeustasoa voi säätää esimerkiksi muuttamalla vihollisten nopeutta ja luontiaikaa. Esimerkkipelissä on esitelty yksi vihollinen, joka liikkuu pelkästään alaspäin. Vastaavalla tavalla pystyy tekemään erilaisia vihollisia.
Oppimistavoitteita -Vierityspelien (Side Scroller Game) idea
-Edistyneempi muuttujien käyttö
-Liikkeiden rajoitus
-Kloonaaminen
-Samanaikaisten tapahtumien hallinta
Toimiva versio Vierityspelipohja Scratchin sivuilla
Variaatioita toteutuksessa Vierityspelejä (Side Scroller Game) on satoja erilaisia, kuten esimerkiksi Super Mariot. Tämän materiaalin tarkoituksena on antaa idea vierityspelien tekoon ja ideaa soveltamalla voi tehdä erilaisia saman tyylin pelejä.

Kuvia mallipelistä:

Työvaiheet:

Väriselite:

Oppimistavoite
Tarkennus tekotapaan
  1. Vierivä tausta
    Opitaan tekemään vierivä tausta (scrolling backround).
    1. Taustan teko
    2. Luomme peliin taustan hahmona. Kannattaa käyttää täyttötyökalua. Katso mallia esimerkkipelistä.
    3. Vierityspelien idea
    4. Ideana vierityspeleissä on, että taustakuvamme liikkuu. Monesti tämä toteutetaan kahdella tai useammalla kuvalla liikuttamalla kuvia samalla nopeudella toistensa perässä. Scratchissä tämän tekeminen on hieman kömpelöä, koska hahmojen liikkeet ovat rajoitettu tietylle alueelle ja hahmot eivät voi karata kokonaan alueen ulkopuolelle.
    5. Taustan liikuttaminen alaspäin
    6. Luomme taustalle Vieritysnopeus-muuttujan. Koska vieritysnopeus liittyy pelimme kaikkiin taustoihin (esimerkkipelissä kaksi), laitamme sen kaikille hahmoille. Alustetaan vieritysnopeus sopivaan arvoon käyttämällä liukupalkkia.
    7. Taustan siirto takaisin ylös
    8. Asetetaan taustan y-koordinaatti arvoon 345, jos sen y-koordinaatti menee alle -344.

  2. Pelihahmon liikuttelu
    1. Pelihahmo liikkuu nuolilla
    2. Älä käytä "kun painetaan näppäin"-palikoita, ne eivät toimi halutusti jos painetaan useita nuolinäppäimiä yhtä aikaa. Toteuta ennemmin rakenne, jossa ikuisesti kysellään vuorotellen kaikilta näppäimiltä ovatko ne painettuna.
    3. Pelihahmon liikkeen rajoittaminen
    4. Haluamme estää pelaajaa liikkumasta seinien sisään. Tämän voi tehdä monella eri tavalla. Esimerkissä tarkistamme liikkumisen jälkeen, olemmeko päätyneet seinän sisään. Jos näin on, siirrämme pelihahmoa takaisinpäin yhtä monta askelta kuin liikuimme (ns. push back -menetelmä).

  3. Edistyneempi muuttujien käyttö pelihahmossa
    Pyritään eroon "kovakoodaamisesta". Tutustutaan liukupalkin käyttöön.
    1. Nopeus-muuttujan alustus
    2. Toteutamme pelihahmolle muuttujan nopeus. Koska muuttuja liittyy vain pelihahmoon (pelihahmon nopeus), laitamme muuttujan vain tälle hahmolle.
    3. Pelihahmo liikkuu nopeus-askelta
    4. Haluamme pelaajan liikkuvan nopeus-askelta, jolloin laitamme pelaajan liikkumisen yhteyteen nopeus-muuttujan.
    5. Liukupalkin käyttö nopeuden säätämiseen
    6. Asetamme halutun nopeuden säätämällä liukupalkkia ja testaamalla.

  4. Ammusten lisäys
    Kloonaus ja edistynyt muuttujan käyttö
    1. Ammus pelihahmon luonti
    2. Ammukset piiloon ja osoittamaan ylöspäin
    3. Pelaaja luo ammuskloonin nappia painettaessa
    4. Ammuksen näyttäminen ja liikuttaminen
    5. Asetamme ammuskloonit pelaajan päälle. Tämän jälkeen voimme näyttää ne ja liikuttaa niin pitkään kunnes törmäämme reunaan.
    6. Edistynyt muuttujien käyttö ammuksessa
    7. Teemme ammukselle muuttujan nopeus. Nopeus on ammuksen nopeus, eli luomme sen vain ammushahmolle.
    8. Pelaajalle tulinopeus
    9. Luomme pelaajalle tulinopeus-muuttujan (vain tämä hahmo). Ammusten kloonaamisen yhteydessä odotamme tulinopeus askelta. Tätä on hankala testailla liukupalkkia käyttämällä, joten sitä pitää testailla säätämällä muuttujan arvoa pelaajan skripteissä.

  5. Vihollisten lisäys
      Kloonauksen ja muuttujien käytön kertausta
    1. Vihollisaluksen teko
    2. Alkuperäisen hahmon piilotus
    3. Vihollisten kloonaus aikavälein
    4. Viholliset liikkumaan
    5. Laitamme viholliset liikkumaan alaspäin kunnes ne alittavat sopivan kohdan y-akselilla. Tästäkin arvosta voi tehdä muuttujan, jos kokee sen tarpeelliseksi.
    6. Aikaväli ja nopeusmuuttujat
    7. Laitetaan vihollinen liikkumaan jollain nopeudella. Scratchin liukupalkkia ei pysty säätämään kunnolla negatiiviseksi arvoksi, jonka takia muutamme vihollisen y:n arvoa nopeus * -1 :llä. Säädämme vihollisaika- ja nopeus -muuttujat sopiviksi käyttämällä liukupalkkia.

  6. Ammus tuhoaa vihollisen
      Scratchin yksi ongelmista on suoritettavien komentojen järjestys. Emme voi olla varmoja, milloin tietty komento suoritetaan, joka aiheuttaa tässä tapauksessa pieniä ongelmia. Jos ammus koskettaa vihollista, poistamme sen. Nyt vihollinen ei enää voi tietää, että ammus on koskenut siihen, eikä osaa siten poistua.
      Samanaikaiset tapahtumat
    1. Vihollinen koskettaa ammusta
    2. Ammus koskettaa vihollista
    3. Molempien tuhoamisen varmistus
    4. Haluamme varmistaa molempien tuhoamisen, eli että ammus tunnistaa vihollisen kosketuksen ja vihollinen tunnistaa ammuksen kosketuksen. Lisäämme molemmille hahmoille kosketuksen yhteyteen odota 0,01 sekuntia. 0,01 sekuntia on ihmiselle pieni aika, mutta tietokone ehtii tuossa ajassa suorittaa tuhansia komentoja.