# GameMaker Language

GameMaker Language (GML) is de ingebouwde programmeertaal van GameMaker Studio, uitgegeven door YoYo Games. Deze taal breidt de functionaliteit van het programma GameMaker Studio uit, waar normaal gesproken met een slepen en neerzetten (drag and drop) interface wordt gewerkt.
Doordat GML veel overzichtelijker en flexibeler is dan de drag and drop methode wordt GML vrijwel altijd in grote en complexe GameMaker spellen gebruikt.

## Oorsprong

De taal is gebaseerd op de welbekende C familie, andere vormen hierin zijn C++, Objective C, Java, Javascript, C# en PHP, echter kan in veel gevallen ook BASIC-syntaxis worden gebruikt. Doordat GML nauwe banden heeft met deze bovenstaande programmeertalen, is de overstap van GML naar een andere programmeertaal vrij gemakkelijk. De laatste tijd staat GML in hoog aanzien bij sommige softwarebedrijven omdat het de mogelijkheid geeft om een project te exporteren naar verschillende platforms. Hiervoor is echter de nodige kennis qua informatica nodig, aangezien alles in GML moet zijn geschreven en er per platform wel verschillende standaarden en aanpassingen nodig zijn.

## Mogelijkheden

In GameMaker kan een beginner zijn eerste spel maken op basis van slepen en neerzetten. Dit betekent dat men een actie voor een voorwerp selecteert en deze laat uitvoeren op een bepaald moment, door een pictogram naar een event te slepen. Enkele veelgebruikte events zijn het Create Event (wordt eenmalig aangeroepen), het Step Event (wordt iedere keer aangeroepen) en het Draw Event (hierin wordt alles getekend). De programmeertaal GML bevat echter veel meer functionaliteit, en zodoende stappen veel ontwikkelaars snel over naar GML. Deze overstap is sinds de komst van GameMaker Studio 2 in 2017 nog eenvoudiger geworden, omdat men door op één knop te klikken direct kan wisselen tussen beide representaties.
Naast de eenvoudige en flexibele programmeertaal is GameMaker gericht op het makkelijk creëren van plaatjes, animaties en icoontjes met de sprite editor. Ook kan de spelwereld worden gemaakt met de room editor, waarin objecten en paden kunnen worden geplaatst. Voor beide editors is meestal geen code nodig, en wordt puur op basis van slepen en neerzetten uitgevoerd.
Het invoegen en gebruiken van externe bestanden in GameMaker Studio die geschreven zijn in programmeertalen als Java of C++ is eenvoudiger geworden sinds de introductie van de GameMaker: Marketplace in 2014. Zodoende is de programmeertaal niet meer beperkt door aanpassingen van YoYo Games, maar kan de gebruiker zelf nieuwe scripts programmeren en verbindingen realiseren met bekende aanbieders als Facebook, Google en Apple.

## Syntaxis

De syntaxis die wordt gebruikt in GML is erg flexibel en staat gebruikers die vertrouwd zijn met andere programmeertalen toe makkelijk te schakelen tussen GML en een andere taal. Er is geen verplichte statement terminator (een karakter die tussen twee statements in moet staan), maar de puntkomma kan daar wel voor gebruikt worden. In versie 8.x en eerder was deze wel verplicht om tijdelijke variabele te definiëren. Daarnaast is er geen verplichte indentation. Wel is het verplicht, als men een tutorial wilt plaatsen op het officiële forum, dat er statement terminators en overzichtelijke inspringing worden gebruikt.
Als voorbeeld van de losse syntaxis zijn hieronder een aantal representaties van een if-else-statement weergegeven:
Alle bovenstaande stukjes code geven hetzelfde resultaat: ze zijn allen correct GML mits de variabelen a en b bestaan. Als a gelijk is aan b zal c na het uitvoeren van de code dezelfde waarde bevatten als a en b. Als a niet gelijk is aan b zal c niet aangepast worden.

### Hello World

De GameMaker Language heeft twee manieren waarop het programma Hello world uitgebeeld kan worden. Als eerste is er de mogelijkheid om de tekst te tekenen naar het scherm:
Daarnaast is het mogelijk om een in GameMaker Studio ingebouwde popup te gebruiken. In GML ziet dat er zo uit: