GML: Cross-Platform videogames maken in GameMaker Studio

0

Als je het nog niet weet, GameMaker Studio 2 is een fantastische kleine engine die de nadruk legt op cross-platform ontwikkeling en spelen. Als je geïnteresseerd bent in alles wat je moet weten over GameMaker, bekijk dan onze diepgaande review, inclusief tutorials.

Inhoudsopgave:
Welke programmeertaal gebruikt GameMaker?
Geloof het of niet, maar GameMaker engine heeft zijn eigen programmeertaal, genaamd GameMaker Language, of ‘GML’. Met GML kan de gebruiker de verschillende aspecten van het gewenste eindproduct, idealiter een spel met een geweldige programmering, nauwkeurig afstemmen.

Met GameMaker Language kunnen gebruikers verder gaan dan de eenvoudige drag-and-drop functies waaruit de basis engine bestaat. Dit maakt een uitgebreid, meerfasig proces mogelijk waarin zowel beginners als experts geweldige games kunnen maken in GameMaker Studio.

Laten we wat dieper graven om te zien wat je nodig hebt om met GML te beginnen en hoe je vertrouwd raakt met de grondbeginselen van programmeren en een GML tutorial.

Kennismaking met GameMaker Studio 2
Overzicht GameMaker Studio 2
Hoe maak je een spel op Studio Maker 2?
Eerst moet u kiezen welk type spel u wilt maken. Met GameMaker zijn de mogelijkheden legio, en het is van cruciaal belang vast te stellen wat je wilt maken. Ik raad aan vertrouwd te raken met de referentiepagina’s van de officiële Gamemaker Studio 2 en GML sites om u vertrouwd te maken met waar u vele uren mee zult werken bij het ontwikkelen van spellen.

Maar maak je geen zorgen, dit is een geweldige kans om de basis onder de knie te krijgen. En als je meer vertrouwd bent met coderen, zou dit al een makkie moeten zijn. Struin forums, FAQ’s en helppagina’s af, en maak jezelf vertrouwd met de gebruikersinterface om je beter te kunnen oriënteren op GameMaker Studio 2.

Gebruikt GameMaker Python?
Nee. Hoewel GameMaker Studio 2 behoorlijk geavanceerd is, is Python niet de moedertaal.

Aangezien GameMaker Studio 2 zijn eigen taal heeft, GML, zou het technisch gezien Python kunnen bevatten, maar het staat niet toe om Python exclusief te gebruiken in de IDE, of geïntegreerde ontwikkelingsomgeving. Je zou misschien een plugin kunnen vinden waarin je Python in bepaalde aspecten zou kunnen gebruiken, maar over het algemeen is GML hier koning.

Welke programmeertaal gebruikt GameMaker Studio?
GameMaker Studio gebruikt de kenmerkende GameMaker Language als programmeertaal. Het bevat aspecten van JavaScript en talen als C++ en C#. In feite gebruikt het C++ in zijn runtime systeem, waar je alle commando’s uitvoert die je hebt ingetypt.

Als je enige ervaring hebt met deze talen, kan het heel goed zijn dat de GameMaker Taal een makkelijker stuk programmering is om op te pikken op je reis naar het maken van spellen.

Wat is GameMaker Taal?
GameMaker Language is de moedertaal van GameMaker Studio 2. Het is een interessante mashup van verschillende programmeertalen en -stijlen om een unieke programmeerervaring te creëren die bedoeld is om beginners op weg te helpen en veteraan coders te helpen het hoogste niveau van hun potentieel te bereiken.

Wat is GML?
‘GML’ is GameMaker Language, de eigen programmeertaal voor de GameMaker Studio game engine.

Hoe leer ik de GameMaker Taal?
Er zijn talloze tutorials en forums die je enorm helpen bij het leren van de ins en outs van GML. Je moet echter naar de officiële GML Reference pagina gaan voor de meest diepgaande FAQ’s en walkthroughs om de basis en meer geavanceerde concepten van GML te leren.

Waar staat GML voor?
GML staat toepasselijk voor GameMaker-taal.

Waar is GML op gebaseerd?
GML is gebaseerd op de talen JavaScript, C++ en C# en combineert ze op specifieke manieren.

Waar lijkt GML op?
GML heeft zijn wortels in JavaScript en de C talen, wat een voordeel geeft aan degenen die ervaring hebben met die talen. GML gebruikt C++ in het runtime-systeem en C# in de geïntegreerde ontwikkelomgeving.

Is GML gemakkelijk te leren?
Dat hangt af van een paar factoren. Als u een beginnende programmeur bent die nog nooit een script heeft geopend, is GML misschien niet de gemakkelijkste programmeertaal om te leren. Niet dat het onmogelijk is! GML is aanzienlijk gemakkelijker te leren en te gebruiken dan veel andere talen.

Maar als u vertrouwd bent met meer ingewikkelde talen, is GML waarschijnlijk een koud kunstje om te leren en te implementeren. De leercurve voor GML is gelukkig niet al te steil.

Is GML vergelijkbaar met C++?
Ja. Het deelt soortgelijke aspecten met C++, inclusief het feit dat het deel uitmaakt van de belangrijkste systemen van GML.

Denkt u dat GML een goede programmeertaal is voor beginners?
Absoluut. Samen met programmeertalen als Python heeft GML aspecten van verschillende talen die zorgen voor een gemakkelijkere, meer naadloze programmeerervaring. Het programma is zeer vergevingsgezind als het gaat om variabelen en dergelijke, dus het geeft beginnende programmeurs een beetje ademruimte.

In het algemeen is het leren van GML niet alleen nuttig voor het gebruik in de game engine, maar het kan je als beginnende programmeur ook helpen om vertrouwd te raken met de belangrijkste en meest elementaire aspecten van het coderen voor spellen.

GML handleiding
De programmeertaal van GML
Nu we de basisfeiten en meer uit de weg hebben, laten we eens kijken naar het daadwerkelijke gebruik van GameMaker Studio 2.

Aan de slag
Om je beter vertrouwd te maken met enkele programmeer grondbeginselen, gaan we snel door verschillende pijlers van GML’s programmeertaal.

Functies
Functies zijn in feite de commando’s die je invoert om dingen te laten werken. Zo typ je bijvoorbeeld een functie voor het openen en sluiten van een deur in het spel. Deze functies vormen het geraamte van je spel en hoe het werkt.

Functies in GML werken vrijwel hetzelfde als functies elders. Hier is een voorbeeld van een basisopzet van een functie in GML:

<functie>(<arg0>, <arg1> ,… <arg15>);

Je moet de eigenlijke functie zetten, gevolgd door argumenten geflankeerd door haakjes, gescheiden door komma’s.

Er zijn twee verschillende soorten functies: functies die waarden teruggeven, en functies die opdrachten uitvoeren, zoals “openen”. Functies zijn al ingebouwd in GML, en een gebruiker kan zijn werk verder uitbreiden door scripts te gebruiken samen met functies om nuance en ingewikkelde kaders toe te voegen om je spel te laten opvallen.

Variabelen
Variabelen behoren tot de belangrijkste aspecten van computerprogrammering. Variabelen kunnen bijna alles zijn, en bevatten meestal informatie die programmeurs helpt flexibeler te programmeren.

Eenvoudiger gezegd, zijn variabelen symbolen of namen die zijn toegewezen aan een bepaalde waarde. Het zijn de basiseenheden van GML. Het correct en gemakkelijk labelen van variabelen is de sleutel tot een soepel spelverloop.

Variabelen werken perfect om iets complexer te labelen. Een gangbaar voorbeeld van een variabele is die voor het getal pi. Als het een tijdje geleden is dat je een cursus wiskunde hebt gevolgd, dan is pi 3,14159265359, zich herhalend en herhalend.

Zou het niet veel gemakkelijker zijn om iets in te typen in plaats van 3,14159265359? Nou, met variabelen kun je 3,14159265359 toewijzen aan een variabele die ‘pi’ heet. Op die manier weet het programma automatisch dat je het over 3,14159265359 hebt.

Ik kan persoonlijk getuigen, als iemand die uitgebreide statistische programma’s heeft gebruikt, dat het nauwkeurig labelen van variabelen je een wereld aan complicaties en hoofdpijn kan besparen. Met variabelen kun je de waarde van de variabele veranderen zonder al het moeilijke en drukke werk om handmatig elk dingetje te veranderen.

Variabelen in GML hebben een maximale tekenlengte van 64 tekens, en kunnen alleen letters, cijfers en een onderstrepingsteken bevatten.

In GML worden vier verschillende categorieën variabelen gebruikt om je het leven gemakkelijker te maken. Deze zijn:

Instantie: Dit zijn de meest voorkomende variabelen binnen een instantie van een object. Deze variabelen zijn extreem aanpasbaar en vloeiend, waardoor het maken van spellen in GameMaker een fluitje van een cent wordt.
Lokaal: Lokale variabelen zijn wat eenvoudiger, omdat ze na één keer gebruiken gemakkelijk kunnen worden weggegooid. Als een variabele bijvoorbeeld wordt gebruikt om een eenmalige explosie te maken, dan gooi je die weg nadat de gebeurtenis in kwestie, de explosie, heeft plaatsgevonden. Het gebruik van lokale variabelen helpt het computergeheugen te sparen, en als je een variabele maar voor één actie gebruikt, neem je onnodig ruimte in die beter gebruikt kan worden voor bijvoorbeeld variabelen. Een prima manier om schoon schip te maken, zogezegd. GML is bijgewerkt om dit proces nog meer te stroomlijnen. Eerst moest je een variabele declareren en de waarde ervan toekennen. GML is echter bijgewerkt en laat de programmeur toe om tegelijkertijd te creëren en toe te wijzen.
Globaal: Globale variabelen zijn variabelen die gedurende de hele run in het geheugen van de computer en het spel aanwezig blijven. Waar lokale variabelen na gebruik worden gewist, blijven globale variabelen nog lang nadat gebeurtenissen en dergelijke zijn afgelopen. Globale variabelen maken verbazingwekkende hoeveelheden maatwerk en flexibiliteit mogelijk. Ze worden gebruikt voor dingen als hoeveel van een bepaald voorwerp een speler heeft of andere aspecten van het spel. Globale variabelen doen hun naam eer aan, omdat ze altijd en overal te vinden en te gebruiken zijn.
GML zelf bevat een paar globale variabelen die je meteen kunt uitproberen. Variabelen zoals score; (om de score van het spel bij te houden), gezondheid; (om de gezondheid van een speler bij te houden, levens; (om bij te houden hoeveel levens een speler heeft) en async_load; die asynchrone gebeurtenissen bijhoudt.
En ingebouwde variabelen: Dit zijn variabelen die nooit lokaal kunnen zijn. Ze zijn, letterlijk, ingebouwd in objecten. Dit zijn de meest statische en onveranderlijke variabelen waartoe je toegang hebt.
Verklaringen
Een statement in programmeren en GML zijn syntactische eenheden binnen de GameMaker Taal die acties vastleggen die in het programma moeten worden uitgevoerd.

Als/Else
If/Else statements in programmering en GML worden uitgevoerd als een bepaalde voorwaarde waar is. Bijvoorbeeld, een if statement als ‘als de gezondheid van de speler nul is’ dan ‘gaan ze dood’. Het gaat natuurlijk veel dieper dan dat, maar ik denk dat een opsplitsing van de details ons helpt het beter te begrijpen.

Een voorbeeld van een ‘if’-statement: if (<uitdrukking>) <statement>
Een voorbeeld van een ‘if/else’-statement: if (<expression>) <statement> else <statement>

Herhalen
Een herhaalverklaring is als volgt: herhaal (<uitdrukking>) <statement>

Een herhaalverklaring in programmeren zorgt ervoor dat het programmeerblok wordt herhaald, je raadt het al, herhaald. De voorwaarden binnen het programmeerblok worden herhaald totdat aan een bepaalde voorwaarde is voldaan. Dit is vooral nuttig voor aspecten van het spel die gedurende een bepaalde tijd statisch moeten blijven.

Doe
Het ‘do’ statement wijst de programmeur een object toe om iets te ‘doen’ totdat een ander aspect van een opdracht is voltooid. Zo ziet het do statement eruit:

do <statement> until (<uitdrukking>)

Zoals je ziet staat er ‘doen tot’. Onthoud dit, want als je het niet goed invoert, kan een object in je programmering voor eeuwig worden herhaald. Zorg ervoor dat je ‘tot’ opschrijft!

Voor
Het for statement is uiterst nuttig voor herhaling in het programmeren. Het is zo opgebouwd dat uitdrukkingen en verklaringen doorgaan totdat ze onwaar blijken te zijn. Het for statement kan er ongeveer zo uitzien

for (<statement1> ; <expressie> ;<statement2>) <statement3>

Break
De break-instructie wordt gebruikt om een van de gerelateerde statements zoals for, do, with, enz. voortijdig af te breken. De break-instructie is nuttig bij afgebroken statements. Zo ziet het er hier uit:

break;

Afsluiten
De Exit-instructie ziet er als volgt uit:

Exit;

Ja, dat is het. Het exit statement is misschien wel het eenvoudigste van allemaal. Het beëindigt het huidige script of de gebeurtenis die wordt verwerkt.

Met
De ‘With expressie’ is als volgt:

with (<expressie>) <statement>

Met de With-expressie kan de programmeur veel objecten met dezelfde waarde tegelijk verplaatsen. Zonder het with statement kan dit een verwarrende en frustrerende klus zijn. Maar het with statement heeft je gedekt.

Door in te voeren wat je wilt verplaatsen in combinatie met, zal alles gekoppeld aan het with statement in tandem werken. Dit stroomlijnt alles en maakt het leven gemakkelijker.

Scripts
Zoals we al eerder kort hebben besproken, zijn scripts het gereedschap waarmee je je spel met GML kunt bouwen. In scripts voert de programmeur een variabele waarde in, meestal argumenten genoemd, en worden ze uitgevoerd door het computerprogramma in plaats van door de computerprocessor.

Scripts in GML zorgen ervoor dat alles samenkomt en plaatsvindt. Door argumenten in te voeren worden acties uitgevoerd en ontvouwt het spel zich voor je ogen. Wil je dat je personage een stoel verplaatst? Of hem erin laten zitten? Het gebruik van scripts is de beste manier om deze acties uit te voeren.

Opmerkingen in code
Als je een van de leden bent van een kundig en gretig team van spelontwikkelaars, zitten jullie misschien niet allemaal op dezelfde golflengte wat betreft programmeertaken. In feite weet ik zeker dat het bijzonder frustrerend kan zijn voor programmeurs en ontwikkelaars om geen goed communicatienetwerk te hebben binnen het programma dat ze gebruiken.

Gelukkig heeft GML een functie voor commentaar in code om verschillende programmeurs op de hoogte te brengen van andermans acties en scripts.

Hier volgt een voorbeeld uit GML van hoe commentaar in code eigenlijk wordt gecodeerd:

/*

gebruik:

diff = angle_difference(angle1,angle2);

hoek1 eerste richting in graden, reëel

hoek2 tweede richting in graden, reëel

geeft terug: verschil van de opgegeven hoeken in graden, -180 tot 180

GMLscripts.com

*/

{

return ((((argument0 – argument1) mod 360) + 540) mod 360) – 180;

}

Deze zijn eenvoudig, maar uiterst nuttig, vooral in gigantische teams van mensen die verschillende uren werken. Merk je dat je code fundamenteel veranderd is? Controleer het commentaar!

Evaluatievolgorde
Evaluatievolgorde is uiterst belangrijk. Aangezien GameMaker Studio 2 en GML zelf gemaakt zijn om platformoverschrijdend te zijn, kunnen aspecten van de code veranderen op basis van het platform waarop je codeert.

Dit betekent dat je je codering op orde moet hebben, en ervoor moet zorgen dat je hebt wat je nodig hebt in de exacte volgorde waarin je het nodig hebt. Het laatste wat je nodig hebt is een hoop waardevolle regels code die verloren gaan door een overgang tussen besturingssystemen.

De evaluatievolgorde helpt de programmeur voorkomen dat de mogelijke catastrofale cascade van links naar rechts oriënteren helemaal scheef en verwarrend wordt. Met het voorbeeld van hoe de evaluatievolgorde het best kan worden georganiseerd, bekijk dit uit GML:

var val[0] = buffer_read(buff, buffer_s8);
var val[1] = buffer_read(buff, buffer_s16);
var val[2] = buffer_read(buff, buffer_s16);
scr_buffer_get_info(val[0], val[1], val[2]);

Dit zorgt ervoor dat je code niet helemaal in de war raakt en urenlange verwarring veroorzaakt waar die in eerste instantie niet had moeten bestaan.

Conclusie
We hopen dat deze gids je helpt een beter beeld te krijgen van het gebruik van GameMaker Language. Tenslotte is het leren van GML de enige manier om een indrukwekkend spel te maken met GameMaker Studio 2.

Bekijk ook onze andere artikelen over GameMaker Studio 2 en de GameMaker Studio 2 en GML Reference pagina’s voor meer informatie en coderingsvoorbeelden. Deze voorbeelden zijn fantastisch, omdat ze je precies geven wat je moet doen om te slagen in programmeren in het algemeen en meer specifiek in GML.

Hoe dan ook, je hebt nu een beter idee en hopelijk wat meer vertrouwen in GameMaker Studio 2 en de programmeertaal GML. Ga aan de slag met coderen en we hopen je spel snel op de markt te zien!

LEAVE A REPLY

Please enter your comment!
Please enter your name here