Question: What is the GameMaker programming language?


GameMaker Studio, developed by YoYo Games, is a popular engine for creating 2D games. Its built-in programming language is known as GameMaker Language (GML). GML is designed to be accessible for beginners but also provides enough complexity and flexibility for more experienced developers.

Basic Syntax:

GML has a syntax similar to languages like JavaScript or C++. It uses semicolons to end statements, curly braces for blocks of code, and double slashes for single-line comments:

// This is a comment in GML var health = 100; if (health > 0) { // Player is alive } else { // Player is dead }

Variables and Data Types:

GML includes dynamic typing, meaning variables do not need a specified data type and can change types as needed. Basic data types include strings, numbers, arrays, and more.

var name = "Player One"; // String var score = 5000; // Number var powerUps = [true, false, true]; // Array

Functions and Control Structures:

GML provides a range of functions that can be used for various tasks such as manipulating sprites, handling user input, and managing game states. Control structures include if-else statements, switch cases, loops, and more.

for (var i = 0; i < 10; i++) { if (i == 5) continue; // Skip the rest of this iteration if i is 5 show_debug_message(i); } switch (playerState) { case "idle": // Handle idle state break; case "running": // Handle running state break; // ... other cases ... }


In GameMaker, objects have events such as Create, Step, Draw, and Destroy, which are triggered during the game's lifecycle. You write GML within these events to define an object's behavior:

// Inside the Step event of an object if (keyboard_check(vk_left)) { x -= speed; // Move left }

Resources and Objects:

GML interacts with GameMaker's resource system, which includes Sprites, Sounds, Objects, Rooms, and more. The programming language ties the logic to these resources for gameplay functionality.

Advanced Features:

For the more advanced users, GML supports scripts (reusable functions), data structures, surfaces, shaders, and DLL extension functions for added capabilities.

// Example of a script function dealDamage(enemy, damage) { -= damage; if ( <= 0) { enemy.isDead = true; } }

Understanding GML requires learning its syntax, functions, and how it integrates with GameMaker's event-driven model. It's a powerful tool, enabling a wide range of game development possibilities.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book

Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.