Gamemaker Studio 2 Gml Guide

You have the syntax. Now you need the knowledge library.

GML is GameMaker’s native scripting language designed specifically for 2D game development. It mixes C-like syntax with engine-specific functions and built-in variables, allowing rapid iteration on gameplay, physics, UI, and more. GML is lightweight but expressive, making it well suited for prototypes and full commercial projects alike.

| Problem | Solution | |---------|----------| | Object not moving | Check if Step event exists and speed vars are applied | | Collisions jittery | Use place_meeting() + move_contact_all() | | Memory leaks | Destroy instances with instance_destroy(); remove data structures with ds_map_destroy() etc. | | Slow game | Avoid draw_text every step; use surfaces or culling | gamemaker studio 2 gml


Create Event

move_speed = 4;
sprite_idle = spr_player_idle;
sprite_walk = spr_player_walk;

Step Event

// Get input
var left = keyboard_check(vk_left);
var right = keyboard_check(vk_right);
var up = keyboard_check(vk_up);
var down = keyboard_check(vk_down);

// Calculate direction var h_move = right - left; var v_move = down - up;

// Normalize diagonal movement if (h_move != 0 or v_move != 0) var len = point_distance(0, 0, h_move, v_move); h_move /= len; v_move /= len; You have the syntax

// Apply movement x += h_move * move_speed; y += v_move * move_speed;

// Swap sprite & animation if (h_move != 0 or v_move != 0) sprite_index = spr_walk; image_speed = 0.2; else sprite_index = spr_idle; image_speed = 0; image_index = 0; Create Event move_speed = 4; sprite_idle = spr_player_idle;

// Flip sprite based on horizontal movement if (h_move != 0) image_xscale = sign(h_move);