Game Maker Language
Šablona:Infobox Software Game maker language je programovací jazyk, který vytvořil Mark Overmars. K tomuto skriptovací programovacímu jazyku je potřeba vývojové prostředí Game Maker. Toto IDE se stará i překlad do spustitelného souboru. Má syntaxi podobnou C s možností použití i syntaxe Pascalu.
Příklady kódu
Následují příklady kódu.
Úsek kódu Hello world zobrazující text ve vyskakovacím okně:
show_message("Hello World!");
Stejný příklad jako minulý, avšak text vypisuje do herního okna na počátek souřadnic. Většinou je nutné tento kód psát do draw eventu.
draw_text(0, 0, "Hello World!");
Komentovaná ukázka z kódu hry napsaná v GML.
// Toto je komentar.
/* Toto je blokovy komentar. */
/* Deklarace lokalnich promennych, ktere budou uvolneny na konci skriptu.
Vsimnete si, ze deklarace neobsahuje typy promennych */
var xx, yy, nn;
// Podminka. Muze byt zkracena na "if (can_shoot)".
if (can_shoot = true) // "=" a "==" muze oboji byt pouzito v podminkach jako zapis porovnani.
{ // Zacatek bloku kodu. Je mozno taky pouzit "begin" jako v Pascalu.
/* Nastaveni promenne na false. Muze byt taky napsano takto: "can_shoot = 0;",
protoze GML nerozlisuje mezi typy boolean a integer. */
can_shoot = false;
/* Zde se nastavi nulty alarm na pet. Promenna alarm bude automaticky snizovana.
Kdyz bude dosazena nula bude vyvolan alarm0 event. */
alarm[0] = 5;
/* Zde lokalni promenna xx definovana jako cele cislo (integer)
a funkce lengthdir_x je pouzita. */
xx = x + lengthdir_x(14, direction);
yy = y + lengthdir_y(14, direction);
// Toto vytvori obj_bullet a nasledne vrati jeji instance id do nn.
nn = instance_create(xx, yy, obj_bullet);
/* Klicové slovo with zpristupnuje clenske promenne objektu primo,
bez nutnosti zapisovat vyrazy jako nn.speed nebo nn.direction. */
with (nn)
{
speed = obj_tank.speed + 3;
direction = obj_tank.direction;
}
}
GML podporuje vice typu syntaxe. Jako příklad může být přepsaní předchozího příkladu v syntaxi podobné Pascalu:
var xx, yy, nn;
if can_shoot = true then begin
can_shoot := false
alarm[0] := 5
xx := x + lengthdir_x(14, direction)
yy := y + lengthdir_y(14, direction)
nn := instance_create(xx, yy, obj_bullet)
with nn begin
speed := obj_tank.speed + 3
direction := obj_tank.direction
end
end
Toto je příklad jednoduchého pohybu ovládaného klávesnicí. Funkce motion_set
má dva parametry: směr ve stupních a rychost v pixelech za krok programu. Její volání nastaví vestavěné lokání proměnné "speed" and "direction" , které Game Maker používá automatickou změnu pozice instance. Tato změna nastává v každém kroku. Pozice instance může být změněná i přímo pomocí nastavení vestavěných proměnných "x" a "y".
if (keyboard_check(vk_left)) motion_set(180,4);
if (keyboard_check(vk_up)) motion_set(90,4);
if (keyboard_check(vk_right)) motion_set(0,4);
if (keyboard_check(vk_down)) motion_set(270,4);
if (keyboard_check(vk_nokey)) motion_set(0,0);
Zde je uvedena komplexnější alternativa volání motion_set(180, 4)
, která kontroluje zda je místo ve směru posunu.
if (!place_free(x-4,y))
{
if (place_free(x-4,y-4))
{
x-=4;
y-=4;
}
else if (place_free(x-3,y-5))
{
x-=3;
y-=5;
}
else if (place_free(x-2,y-6))
{
x-=2;
y-=6;
}
}
else
x-=4;
Ukázka volání OpenGL procedury.
d3d_draw_floor(0,0,0,500,600,1,background_get_texture(background1),.01,.01);
V tomto článku byl použit překlad textu z článku Game Maker Language na anglické Wikipedii.