Het ontwerpen van spellen met Game Maker
Data structuren
Deze functies zijn alleen beschikbaar in de geregistreerde versie van Game Maker.In spellen moet je vaak informatie opslaan. Je moet bijvoorbeeld lijsten van voorwerpen opslaan die een persoon draagt of je wilt plaatsen die nog moeten worden bezocht opslaan. Je kunt de series voor dit gebruiken. Maar als je ingewikkeldere verrichtingen wilt doen, zoals het sorteren van de gegevens of het zoeken naar een bepaald voorwerp, moet je grote stukken van GML code schrijven die langzaam kunnen zijn om uit te voeren.
Om dit te verhelpen, heeft Game Maker een aantal ingebouwde gegevensstructuren die door functies kunnen worden betreden. Op het ogenblik zijn er zes verschillende types van beschikbare gegevensstructuur: de stapels (stacks), rijen (queues), lijsten (lists), mappen (maps), prioritaire rijen (priority queues), en rasters (grids). Elk van deze gegevensstructuren is bestemd voor een bepaald type van gebruik (zie verder).
Alle gegevensstructuren werken globaal op dezelfde manier. Je kunt een gegevensstructuur met een functie maken die een id voor de structuren teruggeeft. Je gebruikt deze id om handelingen op de gegevensstructuren uit te voeren. Zodra je dat gedaan hebt vernietigt je opnieuw de gegevensstructuur om opslagruimte te besparen. Je kunt zo veel van deze structuren op hetzelfde ogenblik gebruiken als je wilt. Alle structuren kunnen zowel tekenreeks als echte waarden opslaan.
Gelieve op te merken dat de gegevensstructuren en hun inhoud niet worden bewaard met de acties of de functies wanneer je het spel opslaat. Als je gegevensstructuren gebruikt en wilt toestaan voor het opslaan ervan moet je jouw eigen mechanisme voor dit tot stand brengen.
Wanneer er waarden worden vergeleken, bijvoorbeeld bij het zoeken in een map of het sorteren van een lijst (list), moet Game Maker besluiten wanneer twee waarden gelijk zijn. Voor tekenreeks en getal waarden is dit duidelijk maar voor echte aantallen, wegens afrondingsfouten, kunnen gelijke aantal gemakkelijk ongelijk worden. Bijvoorbeeld (5/3)*3 zal niet gelijk aan 5 zijn. Om dit te vermijden, wordt een precisie gebruikt. Wanneer het verschil tussen twee aantallen kleiner is dan deze precisie worden zij beschouwd als gelijk. In Game Maker heb je een precisie van 0.0000001 . Je kunt deze precisie veranderen met behulp van de volgende functies:
ds_set_precision(prec) Plaatst de precisie die voor vergelijkingen wordt gebruikt.
Deze precisie wordt gebruikt in alle gegevensstructuren maar niet in andere vergelijkingen in GML!
De informatie over gegevensstructuren kan in de volgende pagina's worden gevonden:
Stapels (stacks)
Rijen (queues)
Lijsten (lists)
Mappen (maps)
Prioritaire rijen (priority queues)
Rasters (grids)