Sumbangan / Donate

Donate (Libery Reserve)


U5041526

Sabtu, 31 Desember 2011

Tutorial Game Maker Bagi Pemula [Part 4]

Sekarang kita akan membahas tentang Logika.
Saya yakin bahwa semua bahasa pemprograman aplikasi mempunyai metode logika dalam scriptnya.

Contoh logika:
Jika saya memakan kue ini, maka saya akan kenyang. Tapi kalau saya tidak makan kue ini, maka saya tidak akan kenyang, dan kue ini jadi mubazir.

Dalam script, logika diatas bisa ditulis seperti ini:

if kue = 0 //nol artinya habis
{ //maka.. ini berarti pembukaan pada Maka, jadi harus ada penutupnya
saya = 1 //atau bisa menggunakan saya = 'kenyang', ya tergantung suasana lah :P
} //inilah penutup untuk Maka
else //tapi, jika tidak
{ //maka
saya = 0 //atau saya not = 1, atau saya != 1, atau saya not = 'kenyang', atau saya = 'lapar'
kue = 'mubazir'
} //penutup Maka

Script itu tentunya bisa berbeda, tergantung dari variable yang digunakan. Variable adalah tempat untuk menampung nilai.
Variable yang digunakan dalam script diatas adalah saya dan kue.

If... Then
If artinya JIKA, Then artinya MAKA. Dalam konsep bahasa Indonesia, kalimat yang menggunakan kata jika dan maka sangat mudah untuk dirangakai. Sama seperti script, hanya saja script menggunakan bahasa yang lebih singkat, atau lebih panjang dari kalimat bahasa Indonesianya. Jika kamu menguasai If Then, maka kamu sudah bisa membuat sebuah game.

Contoh penggunaan If... Then
Buatlah Create event, dan isi kode ini:

tekan = 0

Pada event Key Press Spasi, isi kode ini:

tekan += 1 //artinya, setiap spasi ditekan, maka tekan bertambah sebanyak 1

Pada step event, isi kode ini:

if tekan = 1
{
show_message('Tekan sama dengan 1')
tekan = 0
}

Jalankan gamenya, lalu tekan spasi 1x, maka akan keluar pesan Tekan sama dengan 1.

Keterangan:
tekan adalah variable, nilai awalnya yaitu nol.
tekan += 1 itu sama artinya dengan tekan = tekan + 1.
show_message artinya menampilkan pesan.
tekan = 0 berarti membuat nilai tekan menjadi 0, hal ini dilakukan agar game tidak terjadi error. Jika tekan = 0 tidak disertakan dalam kodenya, maka pesan tidak akan berhenti keluar. Karena nilai tekan selalu 1 dan jika nilai tekan = 1 maka akan keluar pesan.

Kira-kira begitulah cara kerja If... Then.

Perlu diingat, script pada GML tidak menggunakan huruf kapital. If, then, else, return, break, or, and, with, dan fungsi lainnya tidak menggunakan huruf kapital, semuanya huruf kecil.


If... Then... Else
Penggunaan ini sama saja dengan penggunakan tadi, tapi ini menggunakan fungsi tambahan,. Langsung saja kita kecontohnya.

Tidak perlu menghapus semua script tadi, cukup scrip Key Press Spasi dan Step yang diubah.
Pada Key Press Spasi, ubah menjadi:

tekan = choose(0,1,2) //memilik angka secara bebas dari ketiga angka tsb.

Pada Step event, ubah menjadi:

if tekan = 1
{
show_message('Tekan sama dengan 1')
tekan = 0
}
else if tekan = 2
{
show_message('Tekan tidak sama dengan 1')
tekan = 0
}

Sekarang jalankan gamenya. Coba lah untuk menekan spasi beberapa kali, maka pesan akan muncul ketika tekan = 1 atau 2, dan pesan tidak akan muncul jika tekan = 0.
Jika pesan = 1, maka teks pada pesan adalah Tekan sama dengan 1, tapi jika tekan = 2, teks pada pesan adalah Tekan tidak sama dengan 1.

With
With artinya dengan. Dengan ini kita bisa melakukan sesuatu dengan object lain. Misalnya menghancurkan object musuh.

Contohnya:
Buat sebuah object lagi, dan beri nama obj_musuh. Lalu set sprite untuk object ini.

Lalu pada obj_test, hapus kode dalam event Key Press Spasi menjadi:

with (obj_musuh) instance_destroy()

Sekarang taruh obj_musuh pada room, dan play. Sekarang tekan spasi, maka obj_musuh akan menghilang / musnah.

Or
Or artinya Atau. Dengan fungsi ini, kita dapat memanggil aksi jika Masalah1 yang terjadi, atau Masalah2 yang terjadi (atau salah satu dari Masalah nya)
Contoh:

Ubah script pada Step event menjadi ini:

if tekan = 1 or tekan = 2
{
show_message('Tekan sama dengan 1')
tekan = 0
}

Pada event Key Press Spasi, ubah menjadi:

tekan = choose(0,1,2)

Sekarang jalankan gamenya, maka akan keluar pesan Tekan sama dengan 1 apabila tekan = 1 ataupun tekan = 2.

And

And artinya dan. Object ini hampir sama dengan Or, hanya saja, and akan melakukan tugasnya apabila Masalah1 dan Masalah2 terjadi dalam 1 waktu, atau bersamaan.
And biasa disingkat dengan &&.
Contoh dalam kehidupan sehari-hari:

Jika ibu pergi ke pasar pada jam 10 dan ayah pergi ke kantor pada jam 10, maka mereka akan bertemu perempatan jalan.

Dari contoh diatas, kita dapat mengetahui bahwa salah satu dari mereka tidak pergi jam 10, maka mereka tidak akan bertemu di perempatan jalan.

Not
Not artinya tidak. Fungsi ini menyatakan sesuai yang tidak. Biasanya fungsi ini disingkat dengan ! (tanda seru).

Contoh:
If tekan not = 1 or tekan not = 2
{
tekan = 0
}

Sungguh jelaskan?
Jika tekan bukan 1, dan tekan bukan 2, maka tekan adalah 3.

For
Fungsi ini digunakan untuk suatu pengulangan. For disusun seperti ini:

for ( (statement1; expression ;statement2) statement3)

Pertama, Statement1 dieksekusi / disingkirkan. Kemudian Expression dievaluasi/dinilai. Jika true /benar, maka statement 3 di eksekusi; kemudian statement 2 dan expression di evaluasi lagi, ini akan berlanjut sampai expression bernilai false / salah.

Contoh:
Program berikut menginisialisasi array panjang 10 dengan nilai 1 - 10.

for (i=10; i<=9; i+=1) list[i] = i+1

Repeat
Fungsi ini akan mengulang fungsi yang akan dilakukan.
Contohnya:

repeat(5) instance_create(x,y,obj_musuh)

Ini berarti obj_musuh akan diciptakan sebanyak 5x di koordinat x,y.

While
While artinya saat. Fungsi ini akan memprediksi sesuatu dan melakukan tugasnya.
Contoh:

while (place_free(x,y))
{
instance_create(x,y,obj_musuh)
}

Artinya, saat koordinat x,y kosong / tidak ada object lain, maka akan diciptakan obj_musuh di koordinat x,y.

Do... Until
Artinya Lakukan... Sampai.
Contohnya:

do
{
instance_create(x,y,obj_musuh)
}
until (!place_free(x,y))

Artinya, obj_musuh akan terus diciptakan sampai di koordinat x,y tidak kosong / ada object.

Switch
Sama dengan saklar, jadi kita bisa merubah-rubah keadaan.
Dalam sejumlah situasi kita ingin membiarkan tindakan kita tergantung pada nilai tertentu. Kita dapat melakukannya dengan menggunakan sejumlah If tapi lebih mudah untuk menggunakan switch.

Contoh:

switch (keyboard_key)
{
case vk_left:
x -= 4; break;
case vk_right:
x += 4; break;
case vk_up:
y -= 4; break;
case vk_down:
y += 4; break;
}

Artinya, Switch (tombol keyboard)
case tombol kiri, maka x -= 4
case tmbol kanan, maka x += 4
case tombol atas, maka y -= 4
case tombol bawah, maka y += 4

Setiap susunan pada fungsi ini memang dibuat begitu.

Break
Jika digunakan dalam fungsi seperti ini:
for-loop, while-loop, switch, with, itu akan menghentikan fungsi ini, atau menhentikan loop nya. Namun jika Break ditaruh diluar dari bagian itu, maka programnya akan berhenti (bukan gamenya).

Continue
Jika digunakan dalam for-loop, repaet-loop, while-loop, with, maka continue akan melanjutkan nilai / value selanjutnya untuk bagian loop dan with.

Exit
Fungsi ini untuk menghentikan fungsi lainnya dalam script.

Return
Dengan ini kita bisa mengembalikan nilai / value dalam script sehingga script dapat digunakan dalam expression.

Contoh:
return (argument0+argument1)


Sekian tutorial part 4 ini. Mungkin ada beberapa fungsi yang kurang jelas, itu bisa kamu cari di google dan pelajari sendiri. Karena untuk newbie belum harus menggunakan keseluruhan fungsi itu. Tapi saya yakin itu semua dapat dimengerti :)

Tips dari saya:
*Perbanyaklah bertanya di forum-forum Game Maker dan belajar lah dari apa yang kamu lihat.
*Dan jangan ragu mendownload file *.gmk dan mempelajari setiap scriptnya.

Bergabunglah ke grup Game Maker Indonesia di Facebook :)
http://www.facebook.com/groups/ind.gamemaker/

Semoga tulisan-tulisan diatas bisa bermanfaat untuk kita :)

Tutorial Game Maker Bagi Pemula [Part 3]

Di part 3 ini, kita akan membahas tentang fungsi-fungsi pada D&D atau DnD atau Drag and Drop (artinya: seret dan letakan)
Inilah yang dimaksud dengan D&D:



Untuk merubah D&D Menjadi script, bisa menggunakan software The Ultimate D&D to GML Converter, download DISINI.

Disebut D&D karena ikon-ikon tsb bisa kita klik dan seret / drag dan kita taruh / drop di kolom Action.
Maka jangan heran dan bingung ketika kamu melihat tulisan D&D pada forum Game Maker Community.

Sekarang kita akan sedikit membahas tentang D&D, jadi bukalah file yang kemarin disave, atau jika tidak disave, maka buatlah sebuah sprite dengan ukuran 32x32, berbentuk persegi dan berwarna hitam.
Lalu buat sebuah object dengan nama obj_test, lalu gunakanlah sprite tadi sebagai sprite objectnya. Langsung membuat sebuah room, dan taruh obj_test didalamnya.

Pada obj_test. Buat sebuah event Key Press, dan pilih yang Spasi.
Lalu seret dan letakan fungsi Display Message (ada di Tab main2)



Isikan kata Pause. Lalu Ok, dan jalankan gamenya.
Ketika kamu menekan tombol spasi, maka akan keluar pesan yang bertuliskan Pause atau sesuai dengan kata yang kita tulis tadi.

Sekarang hapus fungsi Display Message tadi, dan ganti dengan Execute Code (ada di Tab Control), dan ketik kode ini:

show_message('Pause')

Lalu jalankan gamenya. Hasilnya sama saja dengan D&D, tapi ini menggunakan script. Jadi sekarang kita mengetahui bahwa fungsi D&D Display message sama dengan show_message()
Tapi perlu diingat, bahwa kode show_message() memiliki syarat, yaitu pada string harus memiliki tanda kutip untuk menandakan bahwa teks tsb adalah string. Contohnya:

testing, tulis show_message('testing') atau show_message("testing")
Jadi, kita boleh menggunakan kutip satu ataupun kutip dua, asal jangan menggunakan kutip satu pada awal dan kutip dua pada akhir, seperti ini:

show_message('testing") //ini contoh kode yang salah !

Tapi kamu boleh menggunakan ini juga:

show_message('testing kutip1'+"testing kutip2")

Tanda + menandakan adanya tambahan string baru, jadi intinya kita dapat menambahkan string dengan tanda + tsb. Tapi jika kita menyertakan string dalam bentuk variable juga.
Artinya jika begini show_message('testing kutip1'+"testing kutip2"), kita tidak perlu menggunakan string tambahan, cukup menggunakan satu bagian saja. Kecuali jika bentuknya seperti ini:

show_message('testing kutip1'+string(testing)+"testing kutip2")

Ada kata string(testing) pada kode, itu berarti suatu sebuah variable yang dijadikan string.
Contoh: (silakan diikuti)

Pada Create event, isi kode ini pada execute code:

testing1 = "testing satu"
testing2 = 2

Pada event Key Press Spasi tadi, ubah scriptnya jadi begini:

show_message("Testing "+string(testing1)+' '+string(testing2)+"#testing 123") //tanda # merupakan Enter pada kode ini

Maka pesan akan menampilkan pesan ini:

Testing testing satu 2
testing 123

note:
testing 123 ada dibawah karena adanya Enter / tanda #

Bukankah itu sesuai dengan apa yang kita ketik tadi?

Saya rasa untuk fungsi itu sudah cukup. Untuk mempelajarinya lebih lanjut tentang membuat tampilan pesan, bisa KESINI.

Sekarang kita akan merubah event Key Press Spasi menjadi kode.
Pada Step event, ketik kode ini pada execute code:

if keyboard_check_pressed(vk_space)
then show_message("Testing "+string(testing1)+' '+string(testing2)+"#testing 123") //tanda # merupakan Enter pada kode ini

*Jika terdapat kode lain pada Step event, maka ketik kode ini dibagian paling bawah, atau paling atas. Atau bisa membuat sebuah execute kode lagi untuk kode ini.

Lalu jalankan game, ketika kamu menekan tombol spasi, maka teks yang sama akan muncul. Jadi kita tidak perlu menggunakan eventnya jika dianggap tidak perlu :P

Untuk tombol spasi, control, alternatif, enter, dll, bisa menggunakan kode vk_

contohnya: enter = vk_enter, spasi = vk_space

Tapi untuk huruf, bukan menggunakan vk_, melainkan ord(' '),
contoh: ord('A'), ord("K")

Hurufnya harus huruf kapital.
Contoh dalam kode: keyboard_check_pressed(ord('K'))

Jangan takut untuk menggunakan banyak tanda kurung atau () dan tanda {} dalam membuat script.

Untuk kode script lainnya bisa kamu pelajari menggunakan software yang ada diatas. Cobalah untuk mengconvert semua D&D dan mempelajarinya.
Ingat, semua fungsi dalam D&D ada dalam script, hanya pengalaman dan percobaan yang akan membuatmu menemukan hal baru :)

Sekian dulu part 3 ini, di part 4 kita akan membahas tentang logika. Bersiaplah :D

Kamis, 29 Desember 2011

Tutorial Game Maker Bagi Pemula [Part 2]

Sekarang kita lanjut lagi. Jika file kemarin sempat di save, buka file kemarin. Jika tidak disave, maka buatlah sebuah sprite (ukuran 32x32, persegi 4 dengan warna terserah).
Lalu buat sebuah object, beri nama obj_test. Untuk event nya tidak perlu dibuat lagi, kita langsung ke event selanjutnya. Dan jangan lupa menaruh obj_test dalam room.



Di part1 tadi sudah sampai Collision, sekarang Event Keyboard.
Event keyboard ada 3, bisa dilihat pada pada gambar diatas. Terdapat Keyboard, Key Press, dan Key Release.

Keyboard
Coba buat sebuah event Keyboard. Lalu pilih . Dan isi kode ini:

x+= 5

Masih ingatkan cara mengisi kode? Atau sudah tau kan caranya?
Jika lupa atau tidak tau, saya akan ulang lagi.



Cukup meng-klik dan menyeret Icon Execute File ke kolom Action, dan ketik kodenya.

Dan jalankan gamenya.
Object akan bergerak kekanan ketika kita menekan tombol Kanan.
Ok, sekarang close gamenya, dan kita ke event Key Press.

Key Press

Sekarang klik kanan pada Event Keyboard , dan pilih Change Event.


dan ganti dengan Event Key Press, pilih , lalu jalankan lagi gamenya.
Coba tekan tombol Kanan, object akan bergeser kekanan. Sudah jelas kan bedanya event Keyboard dan event Key Press.
Event Keyboard: Tekan dan tahan, object akan terus bergeser
Event Key Press: Tekan 1x object bergeser 1x, tekan 2x object bergeser 2x, dan seterusnya :P

Key Release
Event ini berfungsi ketika tombol dilepas, artinya kebalikan dari Key Press. Jika Key Press, saat kita tekan tombolnya, maka object akan bergeser, tapi jika Key Release, ketika kita tekan tombolnya, object tidak bergeser, dan ketika kita lepas tombolnya, object akan bergeser.
Kamu bisa mencobanya sendiri, caranya sama dengan mengganti event Key Press tadi.

Kembali lagi ke event yang tadi di skip.

Mouse
Terdapat banyak fungsi dalam event ini:



Saya akan membahas Mouse bagian left saja, untuk right dan middle sama saja dengan yang left :)
Teorinya seperti ketiga Event Keyboard tadi

Left Button, sama dengan Event Keyboard. Tekan dan tahan mouse, maka object akan terus bergeser.
Left Pressed, sama dengan Even Key Press. Tekan mouse 1x, object bergerak 1x.
Left Release, sama dengan Event Key Release. Saat mouse dilepas, maka object akan bergeser.

Jika Mouse Whell Up, ketika scroll mouse di scroll keatas, maka object bergeser. Sedangkan Mouse Wheel Down adalah kebalikannya, yaitu jika scroll mouse di scroll kebawah, maka object bergeser.

Global Mouse berarti mouse diklik di sembarang tempat. Artinta tidak harus diklik pada object yang memilik Event ini.

Untuk Joystick kita tidak akan membahasnya, karena saya tidak punya joystick :P
Jadi saya gak pernah menggunakan event itu, namun teorinya sama saja dengan yang lainnya.

Other


Other artinya lainnya. Jadi fungsinya berbeda-beda.
Untuk Outside Room, biasanya digunakan apabila ada kemungkinan object keluar dari room. Maka untuk aksi tambahan, digunakanlah event ini.

Misalnya: jika obj_peluru keluar ruangan, maka obj_peluru hancur.
Untuk kodenya bisa gunakan kode ini untuk menghancurkan object.

instance_destroy()

Intersect Boundary artinya perpotongan batas. Event ini bekerja saat ada object memotong batas room, atau terletak sebagian diluar room. (masih kurang mengerti dengan event ini :P)

View, ini sama dengan Outside room, tapi ini khusus untuk outside view.
Jika room ukurannya 1000x1000, namun viewnya berukuran 640x480, maka ketika object keluar dari view (lebih dari 640x480), maka fungsi ini akan aktif.
View mempunyai banyak ID, sama seperti Alarm, jika sudah menggunakan alarm[0], maka selanjutnya harus menggunakan alarm[1] (kecuali untuk aksi tertentu), dst.

Game Start, fungsi ini akan aktif ketika game dimulai. Berbeda dengan event create yg hanya berfungsi jika event itu ada atau baru terbentuk. Namun event ini akan selalu begini apa adanya :P

Misalnya: Ketika game dimulai, maka load game. Ini untuk membuat game di load secara otomatis.
Scriptnya: game_load(filename)
Ini akan dibahas di part selanjutnya.

Jika Game End ya ketika game selesai / di close, maka fungsi ini akan melakukan sesuai sebelum game benar-benar close. Misalnya: ketika game end, maka game_save(filename).

Room Start, sedikit berbeda dengan Game Start. Bedanya, jika game start hanya terjadi 1x yaitu pada saat game dimulai. Sedangkan room start, akan terjadi setiap pergantian room, juga terjadi saat game dimulai.
Room end ya tau sendiri lah :D
Yaitu ketika berpindah room, maka sebelum meninggalkan room fungsi ini akan aktif.

No more lives dan No more health hanya bisa digunakan jika kita menggunakan action ini:



Yaitu action pada Live dan Health.
Tanpa itu juga bisa, dengan cara menggunakan variable lives sebagai pengganti aksi Lives, dan variable health sebagai pengganti aksi Health.

Contohnya (silakan diikuti)
Buat Create event, jika sudah ada, maka tinggal tambahkan Execute Code, lalu masukan code ini:

lives = 3
health = 100
score = 0 // ini untuk tambahan

Ingat, jika ada tanda // (dua garis miring), dan warna teks nya berwarna hijau, maka itu disebut komentar. Komentar tidak akan berpengaruh ke scriptnya.

Ok, variable diatas akan kita gunakan nanti.

Animation End, fungsi ini akan aktif jika animasi dalam sprite itu sudah mencapai gambar terakhir, atau animasinya selesai. Umumnya, ketika animasi selesai, animasi akan kembali keawal dan membuat gambar animasi seakan-akan tidak berhanti bergerak.
Dengan fungsi ini, kita dapat menghentikan animasinya ketika animasi selesai. Caranya tambahkan kode ini pada Event ini:
image_speed = 0
image_index = **ini diisi dengan gambar keberapa pada animasi**

Untuk image_index, untuk mengetahui gambar keberapa bisa dilihat di spritenya, tinggal edit sprite dan lihat nomornya. Tidak perlu dihitung, karena tidak gambar sudah ada nomornya. Yaitu image 0 sampai image terakhir. Gambar selalu dimulai dari 0, bukan 1, jadi jika ada 10 gambar, maka gambar terakhir bernomor 9.

End of Path, sama dengan Animation end, namun ini untuk Path.

Close button, saat tombol close di tekan, maka fungsi ini yang akan bekerja, seperti misalnya bertanya, "Apakah anda yakin ingin keluar?".

User defined, hampir sama dengan alarm, jadi fungsi ini kita panggil melalui script ev_user0 untuk memanggil event user defined 0. Jadi user defined tidak akan pernah muncul sampai kita sendiri yang memanggil nya.

Draw
Draw menjadi bagian yang penting dalam game, tanpa draw game kita akan tidak akan menarik. Fungsi draw untuk menampilkan text, gambar, partikel, dll.
Sekarang buat event Draw, dan ketik kode ini:

draw_text(10,10,'Nyawa: '+string(lives)+"#Darah: "+string(health)+"#Skor: "+string(score))

10,10 merupakan letak koordinat. Biasanya koordinat dimulai dengan x terlebih dahulu. Maka 10,10 berarti x = 10, y = 10.
Untuk str / string, harus menggunakan tanda " (kutip), dan harus menutupnya lagi dengan tanda kutip. Boleh kutip 1 boleh juga kutip 2. Jika diawal menggunakan kutip 1, maka penutupnya harus menggunakan kutip 1 juga. Perhatikan scriptnya.
Jika menggunkana string(value), maka tidak perlu ditambahkan tanda kutip. Cukup menambahkan tanda + untuk menambahkan string(), dan tambahkan tanda + lagi untuk menambahkan string. Tanda # berarti Enter.

Sekarang jalankan gamenya, kamu akan melihat ada teks di pojok kiri atas.
Ok, close gamenya, sekarang tambahkan kode ini diatas kode tadi (tinggal tekan enter agar tercipta garis baru, tapi kode yg tadi ditaruh dibawah.)
draw_sprite(sprite_index,image_index,x,y) //agar sprite objectnya terlihat
draw_set_color(c_red) //hapus red dan ganti dengan warna lain. Ketika kamu hapus red nya, otomatis GM akan menampilkan daftar warna yang bisa dipakai.

Kode ini akan membuat teks nya berwarna merah.

Untuk Trigger kita tidak membahasnya :P
Setelah tidak menjadi newbie, silakan pelajari hal-hal yang tidak dibahas.

Dan satu hal lagi, bagian yang tidak saya bahas memang tidak perlu dibahas untuk newbie :)

Silakan di save gamenya, di part 3 kita akan lanjut lagi.

Selamat mencoba :D