Peleissä tarvitsee usein säilöä tietoa. Tästä esimerkkinä voisi olla lista henkilön kantamista esineistä tai paikoista, joissa on vielä käytävä. Tähän voit toki käyttää taulukoita. Jos kuitenkin haluat tehdä monimutkaisempia operaatioita, kuten järjestää tiedot tai etsiä tiettyä listan kohtaa, sinun tarvitsisi kirjoittaa pitkiä pätkiä GML-koodia, jonka suorittaminen olisi hidasta.
Tämän korjaamiseksi Game Makerissa on muutama sisäänrakennettu tietorakenne, joihin päästään käsiksi funktioiden avulla. Tällä hetkellä tietorakenteita on kuutta eri tyyppiä: pinoja, jonoja, listoja, karttoja, prioriteettijonoja ja ruudukoita. Kaikki nämä rakenteet on säädetty tietynlaiseen käyttöön. (tästä myöhemmin lisää).
Kaikki tietorakenteet toimivat yleisesti samalla tavalla. Voit luoda funktiolla tietorakenteen, jolloin tietorakenteen id palautetaan. Tätä id-arvoa käyttämällä voit sitten suorittaa operaatioita tietorakenteilla. Kun et enää tarvitse tietorakenteita, voit poistaa niitä säästääksesi muistia. Voit käyttää niin paljon tietorakenteita kuin haluat samanaikaisesti. Kaikki rakenteet voivat käsitellä sekä merkkijonoja että reaalilukuja.
Huomaa, että tietorakenteita tai niiden sisältöä ei tallenneta, kun tallennat pelin käyttämällä tähän tarkoitettuja toimintoja tai funktioita. Jos käytät tietorakenteita ja haluat kuitenkin, että pelin voi tallentaa, sinun tarvitsee luoda tätä varten oma mekanismisi.
Arvoja vertaillessa, esimerkiksi kartalta etsiessä tai listaa järjestäessä, Game Makerin pitää päättää, milloin arvot ovat samanarvoiset. Merkkijonojen ja kokonaislukujn kanssa tämä on selvää, mutta reaalilukujen kanssa samanarvoisista luvuista voi pyöristysvirheiden takia tulla eriarvoisia. Esimerkiksi (5/3)*3 ei tule olemaan yhtä kuin 5. Tämän välttämiseksi käytetään tiettyä tarkkuutta. Kun kahden arvon välinen ero on pienempi kuin tämä tarkkuus, ne käsitetään samanarvoisiksi. Oletustarkkuutena käytetään arvoa 0.0000001. Voit muuttaa tätä tarkkuutta seuraavan funktion avulla:
ds_set_precision(prec) Asettaa vertailuissa käytettävän tarkkuuden.
Tätä tarkkuutta käytetään kaikissa tietorakenteissa, mutta ei muissa GML:n vertailuissa!
Seuraavilta sivuilta löytyy lisää tietoa tietorakenteista:
Pinot
Jonot
Listat
Hakurakenteet
Prioriteettijonot
Ruudukot