// 1D Array inventory = ["sword", "shield", "potion"]; // 2D Array (Grid) map = [ [1, 1, 0], [1, 0, 1], [0, 0, 1] ];
// Create Event enum states { IDLE, WALK, JUMP, ATTACK } state = states.IDLE; // Step Event switch (state) { case states.IDLE: scr_idle(); break; case states.WALK: scr_walk(); break; case states.JUMP: scr_jump(); break; } Can you publish a game using only Drag and Drop? Yes. Hyper Light Drifter used DnD? No. Undertale ? No.
// Make every enemy in the room explode with (obj_enemy) { instance_destroy(); effect_create_above(ef_explosion, x, y); } // Make all enemies run toward the player with (obj_enemy) { move_towards_point(obj_player.x, obj_player.y, 2); } gamemaker studio 2 gml
Never use obj_enemy.x to get a single value if there are multiple enemies (which one?). Use with or instance_nearest() instead. Part 4: Data Structures & Arrays (Post 2.3 Update) The 2.3 update modernized GML significantly. Gone are the clunky legacy functions ( ds_list_add ). We now have real arrays and structs. Arrays Arrays can be mixed-type and nested.
By moving from Drag and Drop to GML, you are not just learning a scripting language; you are learning how to think like a programmer. Objects, events, loops, and structs are universal concepts. Mastering GML gives you a transferable skill set while allowing you to focus on what matters most: // 1D Array inventory = ["sword", "shield", "potion"];
So, open GameMaker, create a new Object, open the Create Event, and type:
// Bad global.hp = 10; global.mp = 5; global.gold = 100; // Good global.game = { hp: 10, mp: 5, gold: 100 }; Macros ( #macro ) are processed before compilation. Use them for game balance values. // Make every enemy in the room explode
// If statement if (keyboard_check(vk_space) && jumps > 0) { vspeed = -10; jumps--; } // Switch statement (Great for state machines) switch (state) { case "idle": sprite_index = spr_idle; break; case "run": sprite_index = spr_run; break; }