Skriptit

Game Makerissa on sisäänrakennettu ohjelmointikieli. Kun Game Makerin käyttö alkaa olla sinulle tuttua ja haluat käyttää sitä mahdollisimman laajasti, on suositeltavaa alkaa sen opettelu. Sen käyttöön on kaksi tapaa. Ensinnäkin, voit luoda skriptejä. Nämä ovat koodipätkiä, joille tulee antaa nimi. Ne näkyvät resurssipuussa ja niitä voidaan tallentaa tiedostoon tai ladata tiedostosta. Niillä voi luoda ikään kuin kirjaston, joka laajentaa Game Makerin mahdollisuuksia. Toinen tapa on laittaa kooditoiminto johonkin objektin tapahtumaan ja sitten kirjoittaa koodi sinne. Kooditoiminnot ja skriptit toimivat kahta eroa lukuunottamatta samalla tavalla: kooditoiminnoilla ei ole nimiä eivätkä ne voi käyttää argumentteja, ja niillä on oma vaikutusobjektinsa, johon koodin tulee kohdistua. Muuten kooditoimintoon laitettava koodi toimii samalla tavalla kuin skripteissä. Tässä luvussa keskitymme siis skripteihin.

Kuten jo aiemmin mainittiin, skripti kirjoitetaan GML (jo mainittu sisäänrakennettu ohjelmointikieli) -koodina ja se tekee tietyn tehtävän. Skriptit ottavat vastaan annettuja muuttujia, joita kutsutaan argumenteiksi (joskus myös parametreiksi). Kun haluat käyttää skriptiä, voit missä tahansa tapahtumassa käyttää joko skriptitoimintoa tai käyttää koodia. Skriptitoiminnossa tulee määritellä suoritettava skripti ja maksimissaan viiden ensimmäisen argumentin arvot. Jos taas käytät skriptiä koodipätkässä, se toimii täysin samalla tavalla kuin Game Makerin funktiot. Tällöin voit määrittää jopa kuusitoista argumenttia. Skriptit voivat myös palauttaa yhden arvon. Tätä tapaa käytetään yleensä laskemiseen liittyvien skriptien kanssa. Tähän tarkoitukseen käytetään avainsanaa return. Huomioi, että mitään sen jälkeistä koodia ei suoriteta! Kun skripti palauttaa arvon, voit myös käyttää sitä funktiona silloin, kun annat toiminnoille arvoja.

Kun haluat luoda peliisi skriptin, valitse Create Script (Luo skripti) Resources (Resurssit) -valikosta. Seuraavanlainen ikkuna tulee esiin (tässä esimerkissä ikkunaan on jo lisätty pieni skripti, joka laskee kahden tekijän tulokset).

(Tämä on itse asiassa sisäänrakennettu skriptieditori. Asetuksista voit myös valita jonkin muun ulkoisen editorin.) Yläoikealla voit ilmoittaa skriptin nimen. Sen alla on pieni editori, johon voit kirjoittaa skriptin sisällön. Huomaa, että ikkunan alareunassa näytetään lista kaikista funktioista, sisäänrakennetuista muuttujista ja vakioista, jotka sopivat viimeksi kirjoitetun sanan jatkoksi. Tällä tavoin löydät helpommin tarvitsemasi niiden joukosta. Voit lisätä minkä tahansa niistä kaksoisnapsauttamalla sitä (tai painamalla <Ctrl>P). Voit piilottaa tämän listan asetuksista. Editorissa on monia hyödyllisiä ominaisuuksia, jotka ovat saatavilla näppäinten kautta (paina oikealla näppäimellä saadaksesi lisäkomentoja):

Myös koodin toimivuuden tarkistamiseksi on oma näppäimensä. Kaikkia koodin toimivuuteen vaikuttavia tekijöitä ei voida tarkistaa, mutta skriptin syntaksi ja käytettyjen funktioiden olemassaolo tarkistetaan.

Olet ehkä huomannut, että jotkin koodin osat on värjätty. Editori tuntee kaikki olemassa olevat resurssit, sisäänrakennetut muuttujat ja funktiot jne. Värikoodaus auttaa virheiden välttämisessä. Näet esimerkiksi heti, jos olet tehnyt kirjoitusvirheen tai käyttänyt avainsanaa muuttujana. Se on kuitenkin myös hiukan hidas. Tiedosto (File) -valikon asetuksista (Preferences) värikoodauksen voi kytkeä päälle tai pois, tai muuttaa eri koodin osien värejä. (Jos värikoodaus ei toimi oikein, paina F12 kahdesti, jolloin se laitetaan ensin pois päältä ja sitten takaisin päälle.) Voit myös vaihtaa skripteissä ja koodissa käytettävää fonttia.

Skriptit ovat erittäin hyödyllisiä Game Makerin laajentamiseen. Se vaatii kuitenkin, että suunnittelet skriptisi huolella. Skriptejä voi säilöä kirjastoihin, joita voi lisätä peleihin. Jos haluat tuoda kirjaston peliin, käytä Import scripts (Tuo skriptejä) -vaihtoehtoa File (Tiedosto) -valikosta. Niiden tallentamiseen käytetään taas Export scripts (vie skriptejä) -valintaa. Skriptikirjastot ovat yksinkertaisia tekstitiedostoja (vaikka niillä on .gml -pääte). Älä mielellään muokkaa niitä suoraan, koska niillä on erityinen rakenne. Mukana tulee joitain kirjastoja, joissa on hyödyllisiä skriptejä. (Säästääksesi työtä pelin latausvaiheessa, poista ne skriptit, joita et käytä, kirjaston tuomisen jälkeen.)

Skriptejä luodessa voit helposti tehdä virheitä. Testaa aina skriptiesi toimivuus testausnäppäimellä. Kun skriptin aikana tapahtuu virhe, siitä ilmoitetaan ja kerrotaan virheen tyyppi ja sijainti koodissa. Harvoissa tapauksissa näet ilmoituksen, jossa on teksti "Unexpected error occurred during the game". Tämä ilmoitus tarkoittaa, että Windowsissa tai laitteistossa on sattunut virhe. Usein tähän on syynä loputon koodin rekursio, muistin puute tai puutteellinen laitteisto, ajurikanta tai ohjelmisto. Yleisesti ottaen näillä virheillä ei siis ole mitään tekemistä GM-ympäristön kanssa. Jos sinun tarvitsee tarkastella pelin toimintaa tarkemmin, voit ajaa pelin debug-tilassa. Tällöin erillinen ikkuna, jossa voit tarkkailla todella suurta määrää pelisi tiedoista, ilmestyy.

Run (Ajo) -valikon kautta voit tauottaa pelin kulun, suorittaa sitä askel askeleelta ja jopa käynnistää sen uudelleen. Watch (Tarkkaile) -valikosta voit tarkkailla lausekkeiden arvoja. Käytä Add (Lisää) -valintaa kirjoittaaksesi lausekkeen, jonka arvo näytetään joka pelin askeleella. Tällä tavalla voit nähdä, tekeekö peli kaiken, mitä sen pitää. Voit tarkkailla montaa lauseketta yhtäaikaisesti. Ne voi myös tallentaa myöhempää käyttöä varten (esim. sitä varten, kun tarvittavat korjaukset on tehty). Tools (Työkalut) -valikon alta löytyy vielä enemmän tietoa antavia vaihtoehtoja. Sieltä voi nähdä listan kaikista pelin instansseista, tarkkailla kaikkia globaaleja muuttujia (tärkeimpiä) ja instanssien paikallisia muuttujia (käytä joko objektien nimiä tai instanssien id-arvoja). Voit myös tarkkailla viestejä, joita lähetetään koodista funktiolla show_debug_message(str). Tämän kaiken lisäksi voit antaa pelille komentoja ja muuttaa sen nopeutta. Jos teet monimutkaisia pelejä, sinun tulisi tuntea nämä debug-toiminnot.