Game it now

Ohjelmoinnin perusteet 2

Ennen oman peliprojektin aloittamista on hyvä varmistaa, että ohjelmointitaidot ovat riittävällä tasolla. Tällä sivulla jatketaan Scratch- ja GDevelop-taitojen syventämistä.

Scratch

Yksi kaikkien aikojen klassikkopeleistä on matopeli, joka löytyi jopa ensimmäisistä Nokian kännyköistä. Kokeile alla olevaa Scratch-matopeliä, niin hoksaat sen toiminnan. Pääset kohta ohjelmoimaan oman matopelisi. Ohjaa matoa nuolinäppäimillä, väistele mustaa vihollista ja syö vihreitä pikkumatoja.

Pelissä madot ovat pelkkiä liikkuvia ympyröitä. Ympyrä on ohjelmoitu jättämään jälkeensä kopio itsestään (klooni) aina tietyn ajan välein. Madon vartalo muodostuu näistä klooneista ja madon pituus riippuu siitä, kuinka pitkän aikaa kloonit on ohjelmoitu pysymään näkyvissä.

Alla olevalla videolla näytetään, kuinka matopelin voi ohjelmoida itse.

Jos sait matopelin toimimaan, sinulla on jo varmasti melko hyvä käsitys Scratchin käytöstä. Alla olevat harjoitukset ovat lisätehtäviä, joilla voi harjoitella tietyn tyyppisten pelien rakentamista. Yritä ohjelmoida puolivalmis peliaihio valmiiksi ohjeen perusteella. Näissä harjoituksissa ei ole video-ohjeita, ainoastaan kuvat. Jos et onnistu, voit katsoa mallia valmiista mallipeleistä.

Harjoitus 1 – Ampumispeli

Jos olet ajatellut että omassa peliprojektissasi voisi olla ampumista, kannattaa kokeilla tätä harjoitusta ja opetella samalla skriptit, joilla Scratch-hahmon saa ampumaan. Harjoituksessa hyödynnetään osittain samoja elementtejä kuin matopelissä. Kokeile ensin valmiiksi tehtyä ampumispeliä. Ohjaa ampiaista oikealle ja vasemmalle nuolinäppäimillä ja ammu kukkia välilyönnillä.

Avaa ampumispelin puolivalmis aihio täältä. Kokeile ohjelmoida hahmoja alla olevan mallin mukaan.

Jos et onnistu, voit katsoa mallia valmiista ampumispelistä.

Harjoitus 2 — Laskettelupeli

Jos haluat oppia ohjelmoimaan pelin, jossa ohjataan hahmoa liikkuvassa taustassa, kannattaa tehdä laskettelupeliharjoitus. Peli perustuu perinteiseen Ski or Die -peliin, joka oli menestys 90-luvulla. Kokeile Scratch-laskettelupeliä. Voit ohjata hahmoa oikealle ja vasemmalle nuolinäppäimillä.

Pelissä on vahva liikkeen tuntu, mutta jos tutkit sitä tarkkaan, huomaat, että laskettelijahahmo pysyy paikoillaan. Vain rinteen reunat, puut sekä laskettelijan perään piirtyvä latu liikkuvat hitaasti alhaalta ylöspäin. Liikuttamalla hahmoja ja niiden klooneja esiintymislavalla saadaan aikaan illuusio liikkeestä.

Avaa puolivalmis laskettelupelin aihio ja ohjelmoi siitä valmis laskettelupeli. Samalla opit, miten liike saadaan aikaan. Käytössä ovat jälleen kerran kloonit. Ohjelmoi alla olevan ohjeen mukaan.

Jos et onnistu, voit etsiä apua valmiista mallista.

Harjoitus 3 — Tasohyppelypeli

Tasohyppely eli platformer on yksi suosittu pelityyppi Scratchissa. Tunnettuja tasohyppelypelien muunnelmia ovat mm. Geometry Dash ja Super Mario Bros. Erilaisia tasohyppelyitä löytyy paljon Scratchin kirjastosta. Kokeile tätä mahdollisimman yksinkertaista tasohyppelyä. Liiku nuolinäppäimillä ja hyppää välilyönnillä. Varo punaista laavaa ja yritä päästä keltaiseen portaaliin.

Tasohyppelyn tekeminen ei ole aivan helppo harjoitus. Se, että saa hahmon hyppäämään sujuvan näköisesti ja liikkumaan siten, ettei se mene esteiden sisään, vaatii monta tarkasti säädettyä koodiriviä. Peruslogiikka toimii siten, että nelikulmaisen hahmon sivuilla olevat värit ohjelmoimaan reagoimaan esteiden mustan värin kanssa. Punainen on kutsuu Game Over-hahmon ja keltainen vaihtaa seuraavan taustan. Kun pelimekaniikan saa toimimaan, peliin on helppo piirtää lisää tasoja Scratchin piirrosohjelmalla.

Pelissä on mukana muuttuja: painovoima. Se ei tässä tarkoita aivan samaa kuin painovoima oikeassa elämässä, mutta ohjaa silti hahmon putoamisnopeutta. Kun painovoima on positiivinen (esim. 20), hahmo nousee ylöspäin ja kun se on negatiivinen, hahmo laskeutuu alaspäin.

Avaa puoliksi tehty tasohyppelypelin aihio. Ohjelmoi aihiota seuraavan ohjeen mukaan.

Peli vaatii varmasti paljon säätöä, että saat sen toimimaan. Jos haluat piirtää siihen oman pelihahmon, suosittelen vahvasti neliön muotoista hahmoa. Muut muodot on vaikea saada toimimaan. Jos tarvitset apua, katso valmiista mallista.

Muistilista pelin koodeista

Kun Scratchin perusteet ovat hallussa osallistujilla, voit halutessasi jakaa heille oheisen muistilistan, josta voi tarkistaa yksinkertaisten koodien muodostumisen. Tiedosto pdf-muodossa.

GDevelop

Edellisessä osiossa käytiin läpi eri toimintojen tekemistä Gdevelopiin. Gdevelopilla on mahdollista tehdä monenlaisia eri pelejä. Online-versiossa käytössä ovat seuraavien pelityyppien mallipohjat:

  • tasohyppely
  • ammunta
  • geometria
  • isometrinen
  • urheilu
  • muisti

Näiden mallipohjien avulla on helppo lähteä tutkimaan, miten eri tyyppiset pelit ovat rakentuneet. Näiden pelien tekemiseen löytyy myös tutoriaalit ohjelmasta. Alla on esitelty lyhyesti muutaman eri pelityypin tekemisen tärkeimmät vaiheet. Lisäksi löytyy linkki englanninkieliseen tutoriaaliin.

Loputon juoksupeli

Tässä tasohyppelypelissä juostaan loputonta rataa pitkin ja pyritään keräämään mahdollisimman paljon pisteitä. Tarkan tutoriaalin löydät täältä.

Tasohyppelypelin luomisen vaiheet ovat seuraavat:

  • Luo uusi projekti ja skene
  • Luo uusi pelihahmo objekti-valikosta ja lisää objektille ominaisuudet (Behavior), valitse “Platform character”. Älä salli oletuskontrolleja (ota rasti pois kohdasta “Default controls”).
  • Luo kenttä, lisäämällä uusi objekti tyypiltään Tiled sprite ja lisää obektille ominaisuudet (tyypiltään “Platform”).
  • Raahaa pelihahmo ja kenttäpala pelinäkymään. Luo useita kenttäpaloja. Lisää uusi objekti taustakuvaksi (sprite). Laita taustakuvan z-order -arvoksi -1, tätä säädetään vasemman reunan properties -valikosta, kun klikkaat objektia.
  • Peli tehdään toimivaksi lisäämällä tapahtumia (events). Peli tarvitsee toimiakseen vähintään seuraavat tapahtumat:
    • Pelihahmo hyppää ylöspäin nuolesta (“add a condition” –> etsi “key pressed” ja valitse painikkeeksi nuoli ylöspäin, seuraavaksi “add an action”, valitse “platform behaviour –> control –> simulate jump keypress”).
    • Pelikentän tulee liikkua (“add an action”, valitse seuraavat “Common actions for all objects”–> “Movement” –> Add a force (Angle). Valitse kenttäpala objektiksi ja laita kulmaksi 180 ja nopeudeksi 250.

Peli on nyt siinä pisteessä, että hahmo voi hypätä ja kenttä liikkuu. Paljon on kuitenkin vielä tehtävää jäljellä, kokeile keksitkö ratkaisut seuraaviin ongelmiin (katso apuja tarvittaessa tutoriaalista):

  • Kenttäpalat työntävät hahmoa osuessaan niihin, näin ei pitäisi olla. (Vinkki lisää uusi Condition, joka tarkistaa onko hahmo lattialla ja lisää action, jonka force on 0.)
  • Pelin pitäisi olla loputon. (Vinkki, luo looppi, joka siirtää palikat vasemmasta reunasta takaisin oikeaan.)
  • Pelin tilat puuttuvat eli tarvitaan muuttuja, joka säilöö tiedon pelin tilasta (ennen peliä, pelissä, pelin jälkeen). Pelin tulisi käynnistyä ensimmäisestä näppäimen painalluksesta ja käynnistyä uudestaan häviön jälkeen.
  • Pistelasku puuttuu. Tarvitaan muuttuja, joka säilöö pisteet.

Nyt pelisi on jo hyvässä vaiheessa ja voit kokeilla omia taitojasi muokata pelejä. Peli voi esimerkiksi nopeutua pisteiden lisääntyessä tai tausta voi muuttua pelin edetessä.

%d