Scripts
Game Maker heeft een ingebouwde programmeertaal. Zodra je wat meer weet van Game Maker en het optimaal wilt gebruiken, is het raadzaam om te beginnen met het leren van deze taal. Er zijn twee manieren om de taal te gebruiken. Ten eerste kunnen je scripts maken. Dit zijn stukken code die je een naam geeft. Zij worden getoond in de resource tree en kunnen behalve opgeslagen worden in een bestand ook geladen worden uit een bestand. Zij kunnen worden gebruikt om een bibliotheek te vormen die de mogelijkheden van Game Makeruitbreidt. Daarnaast kun je een code actie toevoegen aan één of andere gebeurtenis en een stuk code daar intypen. Het toevoegen van code acties werkt op de precies zelfde manier als het toevoegen van scripts op twee verschillen na. De code acties hebben geen naam en kunnen geen argumenten gebruiken. Voor de rest voer je code op precies dezelfde manier in als bij scripts. We concentreren ons verder in dit hoofdstuk op scripts.
Zoals al eerder aangegeven, wordt een script in GML-code (de ingebouwde programmeertaal)geschreven en is bedoeld om een bepaalde taak uit te voeren. Een script kan gebruik maken van input-variabelen die we argumenten noemen (soms ook parameters). Om een script van één of andere event uit te voeren, kan je de script actie gebruiken of code. In deze script actie geef je aan welk script je wilt uitvoeren, samen met de maximaal 5 argumenten. Als je een script gebruikt met een stuk code erin, werkt het op dezelfde manier alsof je een GM-functie gebruikt. In dat geval kun je maximaal 16 argumenten gebruiken. Scripts kunnen één waarde teruggeven. Dit wordt vaak gebruikt om rekenmodellen of wiskundige modellen te maken. Daarvoor wordt het returnsleutelwoord gebruikt. Geen enkele code na het return sleutelwoord wordt uitgevoerd! Als een script een returnwaarde aangeeft kun je dit ook gebruiken als een functie als je returnwaardes gebruikt in andere acties.
Om een script aan je spel toe te voegen moet je de optie Add Script uit het Addmenu kiezen. Er verschijnt dan het volgende venster in beeld (in dit voorbeeld is al een klein script toegevoegd dat het product van 2 argumenten uitrekent).
(In feite is dit een ingebouwde script editor. In de instellingen kun je ook aangeven dat je gebruik wilt maken van een externe editor.) Bovenaan rechts kun je de naam van het script aangeven. Er is een klein veld waarin je de code kunt intypen. Merk op dat onderaan het venster een lijst beschikbaar is met alle functies, ingebouwde variabelen en constantes. Hierin vind je alles wat je nodig hebt. Door erop te dubbelklikken kun je het item aan de code toevoegen (of gebruik <Ctrl>P). Je kunt er ook voor kiezen om deze lijst niet te laten zien. Je kunt dat in de voorkeursinstellingen aangeven. De editor heeft een aantal nuttige eigenschappen, waarvan een aantal door middel van knoppen zijn weergegeven (klik op de rechtermuisknop om nog een aantal extra commando's te laten zien):
- Meervoudig ongedaan maken of herhalen ofwel door middel van het indrukken van een toets of in groepen (kan ingesteld worden in de voorkeursinstellingen)
- Intelligent van zelf inspringen waardoor uitlijning met de vorige regel optreedt (kan ingesteld worden in de voorkeursinstellingen)
- Intelligente tabinstelling waardoor een tabsprong optreedt tot het eerste karakter uit de vorige lijn (kan ingesteld worden in de voorkeursinstellingen)
- Gebruik <Ctrl>I om geselecteerde regels te laten inspringen en <Shift> <Ctrl>I om geselecteerde regels te laten terugspringen
- Kopiëren en Plakken
- Zoeken en Vervangen
- Gebruik <Ctrl> + up, down, page-up, of page-down om te scrollen zonder dat de cursorpositie verandert
- Gebruik F4 om het script of de resource op wiens naam de cursor staat te openen (werkt niet in de code actie; alleen maar in scripts)
- Het opslaan en laden van een script als tekstfile
Er is ook een knop aanwezig waarmee je kunt testen of een script correct is of niet. Niet alle aspecten van het script kunnen in dit stadium worden getest, maar het is wel mogelijk om de syntax en het gebruik van de aanwezige functies te testen.
Zoals je opgemerkt zult hebben, zijn delen van het script gekleurd. De editor is van bestaande objecten, ingebouwde variabelen en functies, enz. op de hoogte. Kleurcodering is een hulp bij het vermijden van fouten. In het bijzonder zie je onmiddellijk of je schrijffouten hebt gemaakt of een sleutelwoord als variabele hebt gebruikt. Het gebruik van kleurcodering maakt het echter wel langzaam. In de voorkeursinstellingen in het Filemenu kun je kleurcodering aan- en uitschakelen. Hier kan je de kleur voor de verschillende componenten van de programma's ook veranderen. (Als er iets mis gaat met de kleurcodering kun je tweemaal op F12 klikken, om het uit en daarna weer aan te schakelen.) Ook kan je de font veranderen die in scripts en code wordt gebruikt.
De scripts zijn uiterst nuttig om de mogelijkheden van Game Maker uit te breiden. Dit vereist echter dat je je scripts zorgvuldig moet ontwerpen. De scripts kunnen in libraries worden opgeslagen die aan je spel kunnen worden toegevoegd. Om een library te importeren, gebruik je Import scripts uit het File menu. Om je scripts in de vorm van een library op te slaan gebruik je Export scripts. De script libraries zijn eenvoudige tekstbestanden (hoewel zij de extensie .gml hebben). Bij voorkeur niet direct editen omdat zij een speciale structuur hebben. Sommige libraries met nuttige scripts zijn in het programma opgeslagen. (Om onnodig werk te vermijden bij het laden van het spel kun je het beste, na het importeren van een library, scripts schrappen die je niet gebruikt.)
Als je scripts schrijft, kun je nogal snel fouten maken. In Game Maker bestaat de mogelijkheid om je scripts te testen. Daarvoor is een knop aanwezig. Als er een fout in het script zit zal deze, nadat het script is uitgevoerd, worden weergegeven. Daarbij wordt het type fout aangegeven en ook de plaats waar zich de fout in het script bevindt. Het zal zelden voorkomen dat je een pop-up venster tegenkomt waarop staat: "Unexpected error occurred during the game". Deze foutmelding houdt in dat er een of ander probleem met Windows of de hardware is opgetreden. Vaak ligt hier een eindeloze herhaling (recursie) aan ten grondslag, of een gebrek aan geheugen of dat het systeem niet voldoet aan de minimale hardware eisen, onjuiste drivers of firmware. In het algemeen kun je aannemen dat deze problemen buiten Game Makerliggen. Als je bepaalde dingen nauwkeuriger wilt testen, bestaat de mogelijkheid het spel in de debug-mode te draaien. Dan verschijnt er een venster waarin je veel aspecten van je spel kunt bekijken en testen.
In het Run menu heb je de mogelijkheid om het spel te laten stoppen op een punt (pauze), het stap voor stap af te spelen en het eventueel te herstarten. In het Watch menu kun je de waarden bekijken van bepaalde expresies. Gebruik Add om een expressie in te typen waarvan de waarde in elke stap van het spel wordt weergegeven. Op deze manier kun je bekijken of de dingen in het spel verlopen zoals ze zouden moeten verlopen. Je kunt een groot aantal expressies op die manier bekijken. Je kunt ze opslaan voor later gebruik (bijvoorbeeld nadat je een correctie hebt aangebracht in het spel). In het Tools menu vind je items waarmee je zelfs nog meer informatie kunt zien. Je kunt een complete lijst met instanties van het spel zien, alle globale variabelen (nou, in ieder geval de belangrijkste) en de locale variabelen van een instantie (gebruik of de objectnaam of het id van de instantie). Je kunt ook berichten bekijken die door je code zijn verzonden door gebruik te maken van de functie show_debug_message(str). Tenslotte kun je het spel opdrachten geven en de snelheid van het spel aanpassen. Als je erg ingewikkelde spellen gaat maken is het zeker de moeite waard om te leren omgaan met de debug opties.