Huoneet

Pelit toimivat huoneissa. Jokaisella huoneella on oma indeksi, jota ilmaisee huoneen nimi. Nykyisen huoneen indeksiä säilytetään muuttujassa room. Et voi olettaa, että huoneet on numeroitu järjestyksessä. Älä siis koskaan lisää tai vähennä lukuja room-muuttujasta, vaan sen sijaan käytä alla kuvailtuja funktioita ja muuttujia. Tyypillinen käytetty koodi on siis seuraavanlainen:

{
  if (room != room_last)
  {
    room_goto_next();
  }
  else
  {
    game_end();
  }
}

Seuraavat muuttujat ja funktiot käsittelevät huoneita.

room Nykyisen huoneen indeksi; voidaan vaihtaa toiseen huoneeseen siirtymiseksi, mutta olisi parasta, että käyttäisit myöhemmin mainittuja keinoja.
room_first* Pelin ensimmäisen huoneen indeksi.
room_last* Pelin viimeisen huoneen indeksi.
room_goto(numb) Siirtyy huoneeseen numb.
room_goto_previous() Siirtyy edelliseen huoneeseen.
room_goto_next() Siirtyy seuraavaan huoneeseen.
room_restart() Aloittaa nykyisen huoneen uudelleen.
room_previous(numb) Palauttaa edellisen huoneen indeksin (-1 = ei edellistä huonetta), mutta ei siirrä sinne.
room_next(numb) Palauttaa seuraavan huoneen indeksin (-1 = ei seuraavaa huonetta).
game_end() Lopettaa pelin.
game_restart() Aloittaa pelin alusta.

Ylläolevia funktioita kutsuttaessa vaihtamaan huonetta, lopettamaan peli tai aloittamaan peli alusta, huomaa, että siirtyminen ei tapahdu tarkalleen sillä hetkellä, vaan sitten, kun toiminto on suoritettu loppuun. Skriptin loppuosa ja mahdolliset kyseisen skriptin kutsuneet skriptit suoritetaan siis ensin loppuun.

Huoneilla on useita lisäominaisuuksia:

room_width* Huoneen leveys pikseleinä.
room_height* Huoneen korkeus pikseleinä.
room_caption Ikkunan otsikkorivillä näytettävä huoneen otsikkomerkkijono.
room_persistent Ilmoittaa, onko nykyinen huone pysyvä (persistent).

Monet pelit tarjoavat mahdollisuuden tallentaa ja ladata peli. Game Makerissa nämä toimet tapahtuu automaattisesti, kun pelaaja painaa näppäimiä <F5> (tallentaminen) ja <F6> (lataaminen). Voit myös tallentaa ja ladata pelejä koodipätkästä (huomaa, että lataaminen tapahtuu vasta kyseisen askeleen lopussa).

game_save(string) Tallentaa pelin tiedostoon string.
game_load(string) Lataa pelin tiedostosta string.

Huomaa, että vain pelin perustieto tallennetaan. Jos esimerkiksi soitat tiettyä musiikkipätkää, toiston tarkkaa sijaintia ei tallenneta. Myöskään tietorakenteita, partikkeleita ja verkkopeliasetuksia ei tallenneta.

Siirtymät

Kun siirryt huoneesta toiseen, voit valita siirtymän. Seuraavalle askeleelle käytettävän siirtymän voit määrittää asettamalla muuttujaan transition_kind jonkin arvon. Jos asetat nollaa suuremman arvon, sitä vastaavaa siirtymää käytetään seuraavana huonesiirtymänä. Se vaikuttaa vain seuraavaan siirtymään, jonka jälkeen se muutetaan takaisin nollaksi, joka tarkoittaa, että siirtymää ei käytetä.

transition_kind Ilmoittaa seuraavan huonesiirtymän. Voit käyttää seuraavia sisäänrakennettuja arvoja

0 = no effect
1 = Luo vasemmalta
2 = Luo oikealta
3 = Luo ylhäältä
4 = Luo alhaalta
5 = Luo keskeltä
6 = Siirrä vasemmalta
7 = Siirrä oikealta
8 = Siirrä ylhäältä
9 = Siirrä alhaalta
10 = Limitä vasemmalta
11 = Limitä oikealta
12 = Limitä ylhäältä
13 = Limitä alhaalta
14 = Työnnä vasemmalta
15 = Työnnä oikealta
16 = Työnnä ylhäältä
17 = Työnnä alhaalta
18 = Kierrä vasemmalle
19 = Kierrä oikealle
20 = Sekoita huoneet
21 = Häivytä ulos ja sisään
transition_steps Ilmoittaa siirtymän askelmäärän. Mitä enemmän askeleita, sitä enemmän siirtymä kestää. Oletusarvo on 80.
transition_define(kind,name) Voit itse asiassa luoda omia siirtymiäsi. Tähän sinun tulee käyttää skriptiä (mahdollisesti laajennuspaketissa sijaitsevaa) siirtymän tekemiseen. Tällä funktiolla voit sitten lisätä siirtymän siirtymäjärjestelmään. kind on siirtymän indeksi (joko uusi tai olemassa oleva). name on skriptin nimi. Huomaa, että skriptin nimi on merkkijono! Sen ympärille pitää siis laittaa lainausmerkit. Huomaa, että tämä on todella edistynyttä ohjelmoimista. Skriptin tulee ottaa viisi argumenttia: piirtopinta, jossa on edellisen huoneen kuva, piirtopinta, jossa on seuraavan huoneen kuva, piirtopintojen leveys, piirtopintojen korkeus ja siirtymän murto-osa (väliltä 0 ja 1). Sen tulee sitten piirtää kuva käyttämällä näitä kahta annettua piirtopintaa.
transition_exists(kind) Ilmoittaa, onko siirtymä, jonka indeksi on kind, olemassa.

Huomaa, että siirtymät eivät toimi oikein 3D-grafiikoita käytettäessä. Huonesiirtymät eivät lisäksi toimi yleisesti ottaen toimi, kun huoneiden koot (tai tarkemmin ottaen piirtoalueet) eivät ole samankokoisia.