Het ontwerpen van spellen met Game Maker
Advanced settings
Er zijn nog 2 aspecten in het tabblad settings die we nog niet hebben besproken. Op de eerste plaats is er een keuzeveld Persistent. Normaal gesproken is het zo dat als je een room verlaat en er in een later stadium weer terug komt, de oorspronkelijke instellingen van die room zijn te zien. Dit is aardig als je meerdere levels hebt, maar niet echt handig als je een RPG hebt gemaakt. In dat soort spellen is het te doen gebruikelijk dat je de room weer aantreft zoals je hem een tijd geleden hebt verlaten. Als je nu een vinkje plaatst in de box Persistent gebeurt dat ook. De roomstatus wordt in het geheugen opgeslagen waardoor de room er exact hetzelfde uitziet als je er weer terugkomt. Alleen bij het herstarten van het spel worden de oorspronkelijke instellingen geladen. Er bestaat echter een uitzondering hierop. Indien je sommige objecten persistent hebt gemaakt, zullen de instanties ervan niet in de room achterblijven maar met de hoofdpersoon meegaan naar een volgende room.Vervolgens is er ook nog een knop Creation code. Die geeft je de mogelijkheid om in een veld een stuk scriptcode in GML (zie deel 4) in te typen dat bij het onstaan van de room wordt uitgevoerd. Dit kan nuttig zijn om enkele roomvariabelen in te vullen, bepaalde instanties te laten ontstaan, etc. Het is belangrijk dat je begrijpt wat er precies gebeurt als je in een bepaalde ruimte van het spel komt.
- Allereerst krijgen de instanties in de huidige room (als die bestaat) een zogenaamde room-end event. Vervolgens worden de niet-persistente instanties verwijderd (er wordt geen destroy event gegenereerd!).
- Daarna worden de persistente instyanties uit de vorige room aan de nieuwe room toegevoegd.
- Alle nieuwe instanties worden gecreëerd en hun creation events worden uitgevoerd (als de room niet persitent is of nog niet van te voren is bezocht).
- Als het gaat om de eerste room wordt voor alle instanties de game-start event gegenereerd.
- Daarna wordt de room creation code uitgevoerd.
- Tenslotte krijgen alle instanties een room-start event.
Op die manier, bijvoorbeeld, kan door de room-start events variabelen gebruikt worden die in de room creation code zijn geplaatst en je kunt in de creation code ook verwijzen naar instanties (zowel nieuwe als persistente) in de room.
Verder is er nog een optie. In het pop-up menu, als je met je rechtermuisknop klikt op een instantie terwijl je de <Ctrl> toets hebt ingedrukt, kun je een creation code opgeven voor een bepaalde instantie. Deze code wordt uitgevoerd als de room start, net vóórdat de creation event van die instantie wordt uitgevoerd. Dit is erg handig omdat je op die manier speciale parameters aan een bepaalde instantie kunt meegeven, terwijl andere die niet hebben.