Tapahtumat (Events)

Game Maker käyttää tapahtumapainotteista lähestymistapaa. Tämä toimii seuraavalla tavalla: kun pelissä tapahtuu jotain, objektien instanssit saavat tapahtumia (eräänlaisia viestejä, jotka kertovat, että jotain on tapahtunut). Instanssit voivat sitten reagoida näihin viesteihin suorittamalla tiettyjä toimintoja. Jokaiselle objektille on määriteltävä, mihin tapahtumiin se vastaa ja mitä toimintoja sen tulisi suorittaa niissä tapauksissa. Tämä voi kuulostaa monimutkaiselta, mutta on itse asiassa todella helppoa. Ensinnäkin, useimmissa tapahtumissa objektin ei tarvitse tehdä yhtään mitään. Tapahtumissa, joissa jotain tulee tapahtua, voit käyttää yksinkertaista vedä ja pudota -menetelmää asettaaksesi tapahtumat.

Objektin ominaisuusikkunan keskiosassa on lista tapahtumista, joihin objektin tulee reagoida. Aluksi se on tyhjä. Voit lisätä tapahtumia painamalla Add Event (Lisää tapahtuma) -painiketta. Se avaa valintaikkunan, josta löytyy kaikki erityyppiset tapahtumat. Valitse tästä tapahtuma, jonka haluat lisätä. Joissain tapauksissa aukeaa pudotusvalikko, jossa on lisävalintamahdollisuuksia. Esimerkiksi näppäimistötapahtumalle on valittava vielä näppäin. Alapuolelta löytyy täydellinen lista eri tapahtumista sekä niiden kuvaukset. Listasta valitaan yksi tapahtuma. Tämä on tapahtuma, jota muutamme. Voit muuttaa valittua tapahtumaa klikkaamalla sitä. Oikealla ovat kaikki toiminnot kuvattuna pieninä kuvakkeina. Ne on ryhmitetty useisiin välilehtiin. Seuraavassa kappaleessa käydään läpi kaikki toiminnot ja mitä ne tekevät. Tapahtumien ja toimintojen välissä on toimintolista. Tämä lista sisältää toiminnot, jotka tulee suorittaa kyseisessä tapahtumassa. Lisätäksesi toimintoja listaan, vedä ne hiirellä oikealta listaan. Ne asettuvat allekkain lyhyen kuvauksen kanssa. Jokaiselle toiminnolle kysytään muutamia parametreja. Myös nämä käydään läpi seuraavassa kappaleessa. Lisättyäsi muutamia toimintoja, tilanne voi siis näyttää seuraavalta:

Nyt voit alkaa lisätä toimintoja johonkin toiseen tapahtumaan. Klikkaa oikeaa tapahtumaa vasemmalla hiiren painikkeella valitaksesi sen ja vedä sitten toimintoja listaan.

Voit muuttaa toimintojen järjestystä listassa vetämällä ja pudottamalla. Jos pidät alhaalla <Alt>-näppäintä vetäessäsi, toiminto kopioituu. Voit jopa vetää ja pudottaa toimintoja eri objektien välillä. Kun klikkaat oikealla hiiren painikkeella toimintoa, aukeaa valikko, jonka kautta voit poistaa valitun toiminnon (käy myös käyttäen <Delete>-näppäintä) tai kopioida ja liittää toimintoja. (Voit valita useampia toimintoja leikattavaksi, kopioitavaksi tai poistettavaksi pitämällä alhaalla <Shift>- tai <Ctrl>-näppäintä. Paina <Ctrl><A> valitaksesi kaikki toiminnot.) Kun pidät hiiren osoitinta toiminnon yläpuolella, toiminnosta näytetään pidempi kuvaus. Katso seuraavasta kappaleesta lisätietoa toiminnoista.

Poistaaksesi valitun tapahtuman ja kaikki siihen asetetut toiminnot, paina Delete-painiketta. (Tapahtumat, joissa ei ole yhtään toimintoa poistetaan automaattisesti, kun suljet objektin ikkunan, joten niitä ei tarvitse poistaa käsin.) Jos haluat siirtää toiminnot johonkin toiseen tapahtumaan (esimerkiksi jos päätät käyttää eri näppäintä niille) paina Change-painiketta ja valitse uusi tapahtuma. (Tapahtuma ei saa olla jo määritetty!) Käyttämällä oikean hiiren painikkeen valikkoa tapahtumalistassa voit myös monistaa tapahtuman, joka tarkoittaa uutta tapahtumaa samoilla toiminnoilla.

Kuten edellä on mainittu, lisätäksesi tapahtuman, paina Add Event-painiketta. Seuraavanlainen ikkuna ponnahtaa esiin:

Tässä valitset tapahtumat, jotka haluat lisätä. Joidenkin tapahtumien kohdalla aukeaa valikko, jossa on lisävalintoja. Tässä on kuvaus eri tapahtumista. (Pidä edelleen mielessä, että tavallisesti käytät vain muutamia niistä.)

Luomistapahtuma (Create)
Tämä tapahtuma tapahtuu, kun objektin instanssi luodaan. Sitä käytetään tavallisesti instanssin asettamiseksi liikkeeseen ja/tai joidenkin muuttujien asettamiseksi instanssille.

Tuhoutumistapahtuma (Destroy)
Tämä tapahtuma tapahtuu, kun instanssi tuhotaan. Tarkalleen ottaen se tapahtuu juuri ennen tuhoutumista, joten instanssi on vielä olemassa, kun tämä tapahtuma suoritetaan! Suurimman osan ajasta tämä tapahtuma on käyttämättömänä, mutta voit käyttää sitä esimerkiksi pistemäärän muuttamiseen tai jonkun toisen objektin luomiseen.

Ajastintapahtumat (Alarm)
Jokaisella instanssilla on 12 ajastinta. Voit asettaa näiden ajastinten arvon käyttäen tiettyjä toimintoja (ks. seuraava kappale). Ajastimen arvo laskee sitten alaspäin, kunnes se on 0, jolloin ajastintapahtuma suoritetaan. Määrittääksesi toimintoja jollekin ajastintapahtumalle, sinun on ensin valittava se listasta. Ajastimet ovat erittäin hyödyllisiä. Voit käyttää niitä asettaaksesi tiettyjä asioita tapahtumaan tiettyyn aikaan. Esimerkiksi hirviö voi muuttaa liikkeensä suuntaa joka 20. askeleella. (Tällaisissa tapauksissa yhden tapahtuman toiminnoista täytyy asettaa ajastin uudestaan.)

Askeltapahtumat (Step)
Askeltapahtuma tapahtuu joka pelin askeleella. Tähän voit laittaa toimintoja, joiden tulee tapahtua jatkuvasti. Jos esimerkiksi jonkin objektin tulee seurata toista, tähän voit asettaa liikkeen suunnan kohti seurattavaa objektia. Ole kuitenkin varovainen tämän tapahtuman kanssa. Älä laita liikaa monimutkaisia toimintoja objektien, joilla on monta instanssia, askeltapahtumiin. Tämä saattaa hidastaa peliä. Tarkkaan ottaen on olemassa kolme eri askeltapahtumaa. Tavallisesti tarvitset vain oletustapahtumaa. Valikon kautta voit kuitenkin valita askeleen alkutapahtuman (Begin Step) ja askeleen loppumistapahtuman (End Step). Askeleen alkutapahtuma suoritetaan jokaisen askeleen alussa ennen mitään muita tapahtumia. Tavallinen askeltapahtuma suoritetaan juuri ennen kuin instanssit asetetaan uusiin sijainteihinsa. Askeleen lopputapahtuma suoritetaan jokaisen askeleen lopussa juuri ennen piirtämistä. Tätä käytetään tavallisesti kuvan muuttamiseen suunnasta riippuen.

Törmäystapahtumat (Collision)
Kun kaksi instanssia törmäävät (eli kun niiden kuvat menevät päällekkäin), tapahtuu törmäystapahtuma. Tarkalleen ottaen tapahtuu kaksi törmäystapahtumaa; yksi kummallekin instanssille. Instanssi voi reagoida tähän törmäystapahtumaan. Valitse tämän aikaansaamiseksi valikosta objekti, jonka kanssa haluat määrittää törmäystapahtuman. Seuraavaksi voit sijoittaa toimintoja tapahtumaan.

Sillä, mitä tapahtuu, kun instanssi törmää kiinteän objektin tai ei-kiinteän objektin kanssa, on eroa. Ensinnäkin, kun törmäystapahtumassa ei ole yhtäkään tapahtumaa, mitään ei tapahdu. Instanssi vain jatkaa matkaa, vaikka toinen objekti olisi kiinteä. Kun törmäystapahtumassa on toimintoja, tapahtuu seuraavaa:

Kun toinen objekti on kiinteä, instanssi sijoitetaan takaisin edelliseen sijaintiinsa (ennen kuin törmäys tapahtuu). Sitten tapahtuma suoritetaan. Lopuksi instanssi siirretään uuteen sijaintiinsa. Jos tapahtuma siis esimerkiksi kääntää liikkeen suunnan, instanssi kimpoaa seinästä pysähtymättä. Jos instanssi on vieläkin yhteentörmäyksessä, instanssi pysyy edellisessä paikassaan. Se siis pysähtyy tehokkaasti.

Kun toinen objekti ei ole kiinteä, instanssia ei laiteta takaisin. Tapahtuma yksinkertaisesti suoritetaan instanssin senhetkisessä sijainnissa. Lisäksi yhteentörmäystä ei tarkisteta toista kertaa. Jos ajattelet asiaa, näin tulisi loogisestikin tapahtua. Koska objekti ei ole kiinteä, voimme yksinkertaisesti kulkea sen yli. Tapahtuma ilmoittaa, että näin on tapahtumassa.

Törmäystapahtumalle on paljon käyttöä. Instanssit voivat käyttää sitä kimmotakseen seinistä. Voit käyttää sitä tuhotaksesi objekteja, esimerkiksi kun niihin osuu luoti.

Näppäimistötapahtumat (Keyboard)
Kun pelaaja painaa näppäintä, näppäimistötapahtuma tapahtuu kaikkien objektien kaikille instansseille. Jokaiselle näppäimelle on oma tapahtuma. Valikosta voit valita näppäimen, jolle haluat määrittää näppäimistötapahtuman, ja vetää sitten sinne toimintoja. On ilmeistä, että vain muutamat objektit tarvitsevat tapahtumia vain muutamille näppäimille. Saat tapahtuman joka askeleella niin kauan, kun pelaaja pitää näppäintä painettuna. On olemassa kaksi erityistä näppäimistötapahtumaa. Ensimmäinen on <No key> (ei näppäintä). Tämä tapahtuma tapahtuu jokaisella askeleella, kun yksikään näppäin ei ole painettuna. Toinen on <Any key> (mikä tahansa näppäin) ja se tapahtuu, kun mikä tahansa näppäin on painettuna. Kun pelaaja painaa useampaa näppäintä, kaikkien painettujen näppäinten tapahtumat suoritetaan. Huomaa, että numeronäppäimistön näppäimet aiheuttavat vastaavat tapahtumat vain, kun <Num Lock> on päällä.

Hiiritapahtumat (Mouse)
Hiiritapahtuma tapahtuu esimerkiksi aina, kun hiiren osoitin on instanssia edustavan kuvan päällä. Riippuen siitä, mitkä näppäimet ovat painettuna, saat no button (ei näppäintä), left button (vasen painike), right button (oikea painike) tai middle button (keskimmäinen painike) -tapahtuman. Hiiren painiketapahtumat suoritetaan joka askeleella niin kauan, kun pelaaja pitää hiiren painiketta painettuna. Painikkeen painamistapahtumat (Press) suoritetaan vain kerran silloin, kun painike painetaan alas. Painikkeen vapauttamistapahtumat (Release) suoritetaan vain, kun painike vapautetaan. Huomaa, että nämä tapahtumat tapahtuvat, kun hiiri on instanssin päällä. Jos haluat reagoida hiiren painikkeen painamiseen tai vapauttamiseen omavaltaisessa paikassa, käytä globaali hiiri -tapahtumia (Global mouse), jotka löytyvät alivalikosta. On olemassa kaksi erityistä hiiritapahtumaa. Hiiren tulemistapahtuma (Mouse enter) tapahtuu, kun hiiri menee instanssin päälle. Hiiren lähtemistapahtuma (Mouse leave) taas tapahtuu, kun hiiri lähtee pois instanssin päältä. Näitä tapahtumia käytetään tavallisesti kuvan muuttamiseen tai jonkin äänen soittamiseen. Hiiren rullaus ylös (Mouse wheel up) ja alas (Mouse wheel down) -tapahtumat tapahtuvat, kun käyttäjä liikuttaa hiiren rullapainiketta. Lisäksi on olemassa useita joystickiin liittyviä tapahtumia. Voit määrittää toimintoja neljälle joystickin pääsuunnalle (kulmittaisessa suunnassa molemmat tapahtumat suoritetaan). Lisäksi voit määrittää toimintoja jopa 8:lle joystickin painikkeelle. Voit tehdä tämän sekä ensisijaiselle joystickille että toissijaiselle joystickille.

Muut tapahtumat (Other)
On olemassa useita muita tapahtumia, jotka voivat olla hyödyllisiä joissain peleissä. Ne löytyvät tästä valikosta. Sieltä löytyvät seuraavat tapahtumat:

Piirtotapahtuma (Draw)
Instanssit piirtävät kuvansa joka askeleella ruudulle, kun ne ovat näkyviä. Kun määrität toimintoja piirtotapahtumaan, instanssin kuvaa ei piirretä, mutta nämä toiminnot suoritetaan sen sijaan. Tätä voidaan käyttää jonkin muun kuin instanssin kuvan piirtämiseen, tai kuvan parametrien muuttamiseen. On olemassa useita piirtotoimintoja, jotka on erityisesti tarkoitettu käytettäväksi piirtotapahtumassa. Huomaa, että piirtotapahtuma suoritetaan vain, kun objekti on näkyvä. Huomaa myös, että huolimatta siitä mitä piirrät, törmäystapahtumat perustuvat kuvaan, joka on liitetty instanssiin.

Näppäimen painamistapahtumat (Key press)
Tämä tapahtuma on samanlainen kuin näppäimistötapahtuma, mutta tämä tapahtuu vain kerran, kun näppäintä painetaan, eikä jatkuvasti. Tämä on hyödyllistä, kun haluat toiminnon tapahtuvan vain kerran.

Näppäimen vapauttamistapahtumat (Key release)
Tämä tapahtuma on samanlainen kuin näppäimistötapahtuma, mutta tämä tapahtuu vain kerran, kun näppäin vapautetaan, eikä jatkuvasti.

Joissain tilanteissa on tärkeää ymmärtää järjestys, jossa Game Maker käsittelee tapahtumia. Se on seuraava:

Luomis- ja tuhoutumistapahtumat sekä muut tapahtumat suoritetaan, kun niitä vastaavat asiat tapahtuvat.