Game Maker Language

Rozšírenia

Game Maker podporuje od verzie 7.0 "mechanizmus rozšírení". Rozšírenia je možné vytvárať (v jazyku GML) a zdieľať s ostatnými používateľmi na oficiálnych stránkach autora, alebo si ich tam zdarma stiahnuť. Často to bývajú rozšírenia nejakého miesta, pre určitý typ hier, napr. hra viac hráčov, vykresľovanie zložitých útvarov atď. Každá akcia/funkcia je skript v jazyku GML, ktorý môže užívateľ použiť vo vytváranej hre. Game Maker obshauje predvolený súbor knižníc (vstavaných rozšírení) obsahujúcich bežne používané akcie, ako napr. funkcie pre vykresľovanie, matematiku, prácu so súbormi a i.
Pre vytvorenie rozšírenia je možné použiť Extension Maker.

Syntax

GML má syntax veľmi podobnú ostatným jazykom (C) a tak je jednoduché si na ňu zvyknúť. Pre zoznam knižníc, ktoré Game Maker obsahuje, stačí stlačiť F1 a zobrazí sa pomocné okno.
Nerozkazuje ani v použití { a } či ;.
if x = 1 x -= 1
je to isté ako
if (x = 1){
  x -= 1;}
tiež ako
if x = 1
  x -= 1

Operátory

GML používa všetky bežné logické aj matematické operátory. Používa napríklad xor, or, ale pochopí aj &&.
x = x + 1;
je to isté ako
x += 1;
je v edícií Game Makera Studio to isté ako
x++;

Premenné

Game Maker automaticky alokuje pamäť pre všetky premenné, ktoré sú použité/deklarované. Nie je potrebné ich ani deklarovať, stačí im rovno priradiť hodnotu. Inicializácia na určitú hodnotu pri deklarovaní sa dá nastaviť vrámci programu, pôvodná hodnota je 0. Používa typy Integer (aj keď má rozsah reálneho čísla), String a n-rozmerné polia. Vo forme objektov je možné používať aj vysoko-objektové typy ako mapy, zoznamy, ... Obsahuje aj vstavané konštanty, ako napr. pi (3.14). Každý objekt má tiež istú sadu premenných, ako napr. x (koordináty objektu v sústave x) atď.
var x;i = 0;j = 15;k = i + j; // k = 15
Premenné môžu byť globálne (použiteľné v celom programe), alebo lokálne (len v danom objekte).
global.globalnapremenna = 1;lokalnapremenna = 1;
Použitie mriežky:
if global.PocetNabojov[Samopal] < 10{
  draw_set_color(c_red);
  draw_text(360,53,"Ostava len" + string(global.PocetNabojov[Samopal]));}

Cykly

GML má vstavanú väčšinu bežných cyklov. Obsahuje aj jedinečný cyklus repeat. Chýba mu však často používaný for each. For each však ako dodatočný skript vytvoril jeden z používateľov a je možné ho stiahnuť na fórach YoYo Games.
// repeat (počet opakovaní)i = 0;repeat 5{
  i += 1;} 
// i = 5
Použitie vetvenia with. Ako objekt sa môže použiť all, self, noone, meno objektu atď.:
//with (objekt)with (podlaha){  
  if (player.x > podlaha[x] && player.x < podlaha[x] + 32)  
  {
    player.z = player.z + 8;
  }}
Použitie vetvenia switch:
switch druhjablk{
  case 1: draw_sprite_stretched(spr_1,-1,320,20,50,50); druhjablk_text = "Jonagold"; break;
  case 2: draw_sprite_stretched(spr_2,-1,320,20,50,50); druhjablk_text = "Sungold"; break;
  case 3: draw_sprite_stretched(spr_3,-1,320,20,50,50); druhjablk_text = "Golden Delicious"; break;
  case 4: draw_sprite_stretched(spr_4,-1,320,20,50,50); druhjablk_text = "Silver Delicious"; break;
  case 5: draw_sprite_stretched(spr_5,-1,320,20,50,50); druhjablk_text = "Tehla"; break;}

Príklady kódu

Gravitačný systém v 3D hre:
if padam = 1{
  if zspeed < rychlost rychlost = zspeed
  else if zspeed = 0
  {
    padam = 0;
    if ((rychlost < -7) and (rychlost >= -9))
    {
      obj_player.health += rychlost;
    }
    else if ((rychlost < -9) and (rychlost >= -10))
    {
      obj_player.health += 2 * rychlost;
    }
    else if ((rychlost < -10) and (rychlost >= -13))
    {
      obj_player.health += 3 * rychlost;
    }
    else game_end(); 
    rychlost = 0;
  }   
}
Klasický pohybový systém v 3D hre:
if keyboard_check(ord('W')) or keyboard_check(vk_up)motion_add(yaw    ,1)if keyboard_check(ord('A')) or keyboard_check(vk_left)motion_add(yaw+90 ,1)if keyboard_check(ord('S')) or keyboard_check(vk_down)motion_add(yaw+180,1)if keyboard_check(ord('D')) or keyboard_check(vk_right)motion_add(yaw+270,1)speed*=.75
Skript na náhodnú farbu:
return choose(c_black,c_red,c_navy,c_lime,c_yellow,c_dkgray,c_purple,c_gray,c_white);
Skript na demoverziu hry:
if global.demoverzia = 1{
  registry_set_root(0);
  if registry_exists_ext('\Software\removethis','removethis')
  {
    show_message("This is only a demo version. To continue playing please download the full version.");
    game_end();
  }
  instance_create(0,0,obj_limitatorfunkcii);}
*Od verzie GameMaker Studio nie je možné pracovať s registrami a inými prvkami Windows, keďže nepodporujú multiplatformové ambície tvorcov.