GameMaker Language (GML)

Ini lanjutan dari tutorial GameMaker yang pertama

GameMaker Language (GML)  adalah bahasa pemrograman yang digunakan di dalam GameMaker. Walaupun model interface drag-drop sangat memudahkan, tapi saat game semakin rumit biasanya diperlukan code tambahan dan penggunaan code semakin mempermudah pemeliharaan (menghilangkan duplikasi dan lebih readable).

Code dalam GameMaker disimpan dalam event dan script.  Seperti biasa, project pertama adalah membuat “hello world” terlebih dulu. Gunakan project pada tutorial sebelumnya atau buat project baru, tambahkan objek, dan pada objek properties tambahkan event “create” (gambar bawah).

ScreenHunter_148 Dec. 11 14.08

Lalu dibagian action, pilih tab “Control” dan drag “Execute Code” (gambar bawah). Artinya saat object dicreate, code ini akan dipanggil.

ScreenHunter_149 Dec. 11 14.10

Lalu ketikan code berikut, dan tekan check hijau di kiri atas.

ScreenHunter_150 Dec. 11 14.12

Jalankan program, maka sebelum objek di create, akan muncul window “Hello World”. Perhatikan standard penamaan fungsi yang digunakan GML adalah menggunakan underscore.

Syntax GML

Sebelum kita melanjutkan, kita akan bahas sekilas tentang syntax dari GML. Diasumsikan pembaca telah mengetahui dasar-dasar pemrograman. Syntax GML mirip dengan C dan variannya seperti Java dan PHP.

Variabel

Ada tiga jenis variabel pada GML: instance, local, dan global. Variabel instance berlaku pada objek, dapat langsung ditulis untuk seperti ini:

xx = 5;
nama = "Yudi";

Variabel lokal berlaku pada satu script atau block, harus diklarasikan dengan var, contohnya

var x = 5;
var nama = "Yudi";

Variabel lokal ini akan dihapus setelah script atau block berakhir sehingga lebih menghemat memori, berbeda dengan variabel instance yang tetap ada selama objek ada.

Variabel global, berlaku untuk semua objek, dideklrasikan dengan keyword global.  Sebagai contoh:

global.xx = 5;
global.nama = "Yudi";

Variabel global akan selalu ada dan tidak pernah didestroy selama program berjalan.

Array
Untuk variabel array, contohnya seperti ini

mobil[0] = 5;
orang[10,10] = 2;//dua dimensi

Fungsi-fungsi terkait array:

is_array
array_length_1d 
array_length_1d
array_height_2d

Statement if-else

Contoh:

xx=10;
if (xx==5) {
   show_message("sama dengan lima");
} else if (xx<5) {
   show_message("lebih kecil dari lima");
} else {
   show_message("lebih besar dari lima");
}

Statement loop
Ada beberapa jenis loop di GML, berikut contoh-contohnya

For loop:

xx = 0;
for (i=0;i<15;i++) {
    xx = xx + 1;
}
show_message(xx);

Repeat loop:

xx=0
repeat(15) {  
  xx = xx+1;
}
show_message(xx);

While loop:

xx=0;
i=0;
while (i<15) {
  xx = xx+1;
  i  = i+1;
}
show_message(xx);

GML juga mensupport break

Fungsi
Pemanggilan fungsi di GML adalah sebagai berikut

nama_fungsi(arg1, arg2, arg3);

Untuk membuat fungsi buatan sendiri, kita dapat menggunakan script.

Script

Di GML, script adalah fungsi buatan sendiri. Dengan script kita dapat menghilangkan duplikasi dan me-reuse code. Untuk menambahkan script, coba lihat di tree resources, klik kanan script dan create (gambar bawah)

ScreenHunter_151 Dec. 11 14.29

Kita akan membuat script (atau fungsi) yang menerima dua argumen numerik dan menambahkannya. Beri nama script “tambah” (gambar bawah)

ScreenHunter_152 Dec. 11 14.30

Selanjutnya, masukan kode berikut, perhatikan penggunaan var dalam deklarasi variabel.

var n1 = argument0; //parameter 1
var n2 = argument1; //parameter 2
var hasil = n1+n2;
return hasil;

Lalu, di event create objek (ingat program hello world sebelumnya), tambahkan code berikut:

hasil = tambah(10,5); //script atau fungsi dipanggil
show_message(hasil);

Tip: show_message(“hasil=”+hasil) tidak akan berfungsi, harus menggunakan show_message(“hasil=”+ string(hasil))

Tutorial 2: menggerakan objek dengan code

Setelah sekilas mengetahui dasar-dasar syntax GML, sekarang kita coba menghasilkan seperti tutorial pertama tetapi dengan code.

Seperti pada tutorial pertama, buat sprite, lalu objek, lalu room, letakan objek di room. Selanjutnya tambahan event “Step” untuk objek (gambar bawah). Step adalah langkah dalam animasi atau game, jika frame rate 30 frame per detik, maka step akan dipanggil 30 kali setiap satu detik. Pilih tab control di action, tambah code.

ScreenHunter_153 Dec. 11 14.43

Kemudian isi code berikut. Pada setiap step, program akan mengecek apakah ada tombol panah yang ditekan dan menyesuaikan posisi.

if (keyboard_check(vk_left)) {
    x = x - 8;
}
if (keyboard_check(vk_right)) {
    x = x +8
} 
if (keyboard_check(vk_up)) {
    y = y - 8;
}
if (keyboard_check(vk_down)) {
   y  = y + 8;
}

Perhatikan penggunaan x dan y. Secara otomatis, dua variabel itu sudah ada di dalam code (variabel instance) dan terhubung dengan posisi objek.

Built In Variabel
Selain variabel x, y seperti dalam contoh sebelumnya, ada beberapa variabel terdefinisi yang dapat dimanfaatkan. Hati-hati memilih nama variabel yang dapat bentrok dengan built in variable  ini. Variabel berjenis ini dapat dilihat dari warna (gambar bawah). Variabel built in (y) berwarna merah sedangkan variabel user (yy) berwarna putih.

ScreenHunter_154 Dec. 11 14.46

Variabel yang lain built in diantaranya:

  • room_width: lebar room
  • room_height: tinggi room
  • sprite_index: sprite yang digunakan objek. Dapat digunakan untuk mengganti sprite.
  • image_number: frame sprite
  • sprite_width: lebar sprite
  • sprite_height: tinggi sprite
  • image_speed: kecepatan animasi sprite (default 1)
  • image_angle: sudut sprite
  • image_xscale: skala sprite (lebar)
  • image_yscale: skala sprite (tinggi)
  • xprevious: posisi x pada step sebelumnya.
  • yprevious: posisi y pada step sebelumnya.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.