FPS atau First Person Shooter adalah game yang memfokuskan tampilan game pada pandangan karakter utama atau dengan kata lain tampilan atau pengambilan kamera gambar dalam game membuat kita seakan - akan menjadi karakter tersebut, karna penglihatan dari orang pertama atau karakter utama.Nah, sekarang kita akan Membuat Game FPS Sederhana Dengan Game Maker. Tutorial kali ini sedikit lebih rumit dan panjang jadi perhatikan baik - baik step - stepnya.
A. Sprites
Sekarang pertama - tama kita harus menyiapkan sprites yang di perlukan untuk membuat game FPS kita.
- Sprites
1. spr_wall_hor
2. spr_wall_ver
3. spr_player
4. spr_barrel
7. spr_monster
8. spr_monster_dead
9. spr_shotgun
2. spr_wall_ver
3. spr_player
4. spr_barrel
5. spr_barrel_exp
6. spr_plant
8. spr_monster_dead
9. spr_shotgun
- Textures
- Background
Anda juga dapan mengunduh resourcenya di sini : download
Dan anda cukup menginportnya dengan cara klik File > Import Resources.
B. Objek
Sekarang kita akan membuat objek yang akan muncul dalam game.1. obj_wall_basic
Buatlah sebuah objek dengan nama obj_wall_basic centang pada bagian Visible dan Solid, kemudian tambahkan sebuah event.
Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
/* x1=panjang dimulai y1=lebar dimulai x2=panjang akhir y2=lebar akhir z1=tinggi dimulai z2=tinggi akhir tex=tekstur dinding (dari background 'texture_wall') */ { d3d_draw_wall(x1,y1,z1,x2,y2,z2,tex,1,1); }
2. obj_wall_hor
untuk tampilan tembok horizontal buatlah sebuah objek dengan nama obj_wall_hor dengan sprites spr_wall_hor dan setting Parentnya obj_wall_basic kemudian tambahkan sebuah event.Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ x1 = x-16; x2 = x+16; y1 = y; y2 = y; z1 = 32; z2 = 0; tex = background_get_texture(texture_wall); }
3. obj_wall_ver
untuk tampilan tembok vertikal buatlah sebuah objek dengan nama obj_wall_ver dengan sprites spr_wall_ver dan setting Parentnya obj_wall_basic kemudian tambahkan sebuah event.Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ x1 = x; x2 = x; y1 = y-16; y2 = y+16; z1 = 32; z2 = 0; tex = background_get_texture(texture_wall); }
4. obj_player
Sekarang kita membuat objek dengan nama obj_player pilih spritesnya spr_player setting depthnya menjadi 100, objek inilah yang akan menjadi player kita dalam objek ini kita akan menambahkan beberapa event jadi perhatikan dengan baik - baik.Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ global.camx = x; global.camy = y; global.camsin = sin(direction*pi/180); global.camcos = cos(direction*pi/180); friction = 0.2; // initialize 3D d3d_start(); d3d_set_hidden(true); d3d_set_lighting(false); d3d_set_culling(false); d3d_set_fog(true,c_black,10,300); // interpolate textures texture_set_interpolation(true); //set health health=100; }
Klik Add Event > Step > Step > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ global.camx = x; global.camy = y; global.camsin = sin(direction*pi/180); global.camcos = cos(direction*pi/180); }
Klik Add Event > Collison > obj_wall_basic > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ x = xprevious; y = yprevious; if (abs(hspeed) >= abs(vspeed) && not place_meeting(x+hspeed,y,obj_wall_basic)) { x += hspeed; exit;} if (abs(vspeed) >= abs(hspeed) && not place_meeting(x,y+vspeed,obj_wall_basic)) { y += vspeed; exit;} speed = 0; }
Klik Add Event > Keyboard > Left > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ direction += 3; }
Klik Add Event > Keyboard > Rigt > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ direction -= 3; }
{ var maxspeed; if keyboard_check(vk_shift) maxspeed = 3 else maxspeed = 1.5; if (speed < maxspeed ) speed = min(maxspeed ,speed+0.4); }
Klik Add Event > Keyboard > Down > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ var maxspeed; if keyboard_check(vk_shift) maxspeed = 3 else maxspeed = 1.5; if (speed > -maxspeed) speed = max(-maxspeed,speed-0.4); }
{ var xn,yn; xn = x + sin(direction*pi/180); yn = y + cos(direction*pi/180); if not place_meeting(xn,yn,obj_wall_basic) { x = xn; y = yn; } }
Klik Add Event > Keyboard > Z-Key > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ var xn,yn; xn = x - sin(direction*pi/180); yn = y - cos(direction*pi/180); if not place_meeting(xn,yn,obj_wall_basic) { x = xn; y = yn; } }
Klik Add Event > Other > No More Health > Pada tab kanan pilih Main 2 > Display Message > Isi denggan pesan "You Are Dead !!!"
tambahkan lagi event baru di bawahnya Pada tab kanan pilih Main 2 > Restart Game
Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ // set the projection d3d_set_projection(x,y,10, x+cos(direction*pi/180),y-sin(direction*pi/180),10, 0,0,1); // set color and transparency draw_set_alpha(1); draw_set_color(c_white); // draw floor and ceiling d3d_draw_floor(0,0,0,room_width,room_height,0, background_get_texture(texture_floor),32,32); d3d_draw_floor(0,0,32,room_width,room_height,32, background_get_texture(texture_ceiling),24,24); }
5. obj_plant
Sekarang untuk pohonnya buat objek baru dengan nama obj_plant pilih spritesnya spr_plant setting parentnya menjadi obj_wall_basic kemudian tambahkan event.Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ if (point_distance(x,y,global.camx,global.camy) > 240) exit; var tex; tex = sprite_get_texture(tex_plant,0); d3d_draw_wall(x-7*global.camsin,y-7*global.camcos,24, x+7*global.camsin,y+7*global.camcos,0,tex,1,1); }
6. obj_barrel
Sekarang untuk objek drum dalam game buat sebuah objek baru dengan nama obj_barrel pilih spritesnya spr_barrel setting parentnya menjadi obj_wall_basic selanjutnya ubah depthnya menjadi -10 kemudian tambahkan event.Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ Image_speed=0.1; }
{ if (point_distance(x,y,global.camx,global.camy) > 240) exit; var tex; tex = sprite_get_texture(tex_barrel,image_index); d3d_draw_wall(x-6*global.camsin,y-6*global.camcos,12, x+6*global.camsin,y+6*global.camcos,0,tex,1,1); }
Klik Add Event > Destroy > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
Klik Add Event > Step > Step > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
Klik Add Event > Keyboard > Space > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
*Notes
- Hijau tua adalah objek Pohon
- Merah adalah drum
- Biru muda adalah monster
- Biru tua adalah pemain
Kemudian coba jalankan game anda dengan tekan pada keyboard F5. atau klik RUN > Run Normaly.
Sekarang game FPS anda sudah selesai, anda dapat mengembangkannya menjadi sekeren game - game FPS lain seperti COD atau yang lain.
*Notes game ini di buat dan di coba dengan menggunakan Game Maker 8.0 Full Version
{ instance_create(x,y,obj_barrel_exp); }
7. obj_barrel_exp
Sekarang untuk objek drum menghilang dalam game buat sebuah objek baru dengan nama obj_barrel_xp pilih spritesnya spr_barrel_xp selanjutnya ubah depthnya menjadi -10 kemudian tambahkan event.
Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ image_speed=0.2; }
{ if (point_distance(x,y,global.camx,global.camy) > 240) exit; var tex; tex = sprite_get_texture(tex_barrel_exp,image_index); draw_set_alpha(1-0.1*image_index); d3d_draw_wall(x-12*global.camsin,y-12*global.camcos,24, x+12*global.camsin,y+12*global.camcos,0,tex,1,1); draw_set_alpha(1); }
Klik Add Event > Other > Animation End > Pada tab kanan pilih Main 1 > Destroy Instance
8. obj_monster
Sekaran untuk musuhnya buat sebuah objek dengan nama obj_monster pilih spritesnya spr_monster selanjutnya ubah depthnya menjadi -10 kemudian tambahkan event.
Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ image_speed=0.3; image_index=floor(random(4)); }
{ if (point_distance(x,y,global.camx,global.camy) > 240) exit; var tex; tex = sprite_get_texture(tex_monster,image_index); d3d_draw_wall(x-8*global.camsin,y-8*global.camcos,19, x+8*global.camsin,y+8*global.camcos,3,tex,1,1); }
Klik Add Event > Destroy > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ instance_create(x,y,obj_monster_dead); }
{ if (point_distance(x,y,global.camx,global.camy) > 200) { speed = 0; exit; } if (collision_line(x,y,global.camx,global.camy,obj_wall_basic,false,false)) { speed = 0; exit; } if (point_distance(x,y,global.camx,global.camy) < 12) { speed = 0; health -= 2; exit; } move_towards_point(global.camx,global.camy,1.4); }
9. obj_monster_dead
Sekarang untuk objek monster menghilang dalam game buat sebuah objek baru dengan nama obj_monster_dead pilih spritesnya spr_monster_dead selanjutnya ubah depthnya menjadi -10 kemudian tambahkan event.
Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ image_speed=0.2; }
{ if (point_distance(x,y,global.camx,global.camy) > 240) exit; var tex; tex = sprite_get_texture(tex_monster_dead,image_index); draw_set_alpha(1-0.1*image_index); d3d_draw_wall(x-12*global.camsin,y-12*global.camcos,24, x+12*global.camsin,y+12*global.camcos,0,tex,1,1); draw_set_alpha(1); }
Klik Add Event > Other > Animation End > Pada tab kanan pilih Main 1 > Destroy Instance
10. obj_gun
Sekarang untuk senjata pemain buatlah sebuah objek baru dengan nama obj_gun pilih spritesnya spr_shotgun selanjutnya ubah depthnya menjadi -100 kemudian tambahkan event.
Klik Add Event > Create > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ image_speed = 0; image_index = 0; can_shoot = true; }
{ d3d_set_projection_ortho(0,0,640,480,0); d3d_set_hidden(false); draw_sprite_ext(spr_shotgun,-1,0,480-256,2,2,0,c_white,1); draw_set_alpha(0.4); draw_healthbar(5,460,100,475,health,c_black,c_red,c_lime,0,true,true); draw_set_alpha(1); d3d_set_hidden(true); }
Klik Add Event > Other > Animation End > Pada tab kanan pilih Main 1 > Destroy Instance
Klik Add Event > Keyboard > Space > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{ // check whether you can shoot if (not can_shoot) exit; can_shoot = false; // show the animation and play the sound image_speed = 0.4; image_index = 0; // determine what you hit var xx, yy, ii; xx = global.camx; yy = global.camy; repeat (50) { xx += 4*global.camcos; yy -= 4*global.camsin; ii = instance_position(xx,yy,obj_wall_basic); if (ii == noone) { ii = instance_position(xx,yy,obj_monster); if (ii == noone) continue; with (ii) instance_destroy(); break; } if object_is_ancestor(ii.object_index,obj_plant) continue; if (ii.object_index == obj_barrel) with (ii) instance_destroy(); break; } }
C. Rooms
Buatlah sebuah room baru dengan nama rm_main kemudian ubah snap_x = 16 dan snap_y = 16 kemudian buatlah room anda.*Notes
- Hijau tua adalah objek Pohon
- Merah adalah drum
- Biru muda adalah monster
- Biru tua adalah pemain
Kemudian coba jalankan game anda dengan tekan pada keyboard F5. atau klik RUN > Run Normaly.
Sekarang game FPS anda sudah selesai, anda dapat mengembangkannya menjadi sekeren game - game FPS lain seperti COD atau yang lain.
*Notes game ini di buat dan di coba dengan menggunakan Game Maker 8.0 Full Version
Tutorial yang bagus gan,,,
ReplyDeletesankyu,,,
5. obj_plant
ReplyDeleteSekarang untuk pohonnya buat objek baru dengan nama obj_plant pilih spritesnya spr_plant setting parentnya menjadi obj_wall_basic kemudian tambahkan event.
Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut
{
if (point_distance(x,y,global.camx,global.camy) > 240) exit;
var tex;
tex = sprite_get_texture(tex_plant,0);
d3d_draw_wall(x-7*global.camsin,y-7*global.camcos,24,
x+7*global.camsin,y+7*global.camcos,0,tex,1,1);
}
ane gak bisa di bagian
tex = sprite_get_texture(tex_plant,0);
Pake game maker brp gan ?
ReplyDeletefull version g ?
:-?
Bagaimana ya caranya agar setelah menembak senjata tidak hilang ?
ReplyDeleteKarena ada event Animation End, Destroy the instance, Self pada obj_gun setelah menembak jadi hilang senjatanya.
Mohon pencerahannya, terima kasih.
gimana caranya memasukkan texture
ReplyDeleteBagaimana ya caranya agar setelah menembak senjata tidak hilang ?
ReplyDeleteKarena ada event Animation End, Destroy the instance, Self pada obj_gun setelah menembak jadi hilang senjatanya.
Mohon pencerahannya, terima kasih.
Thanks gan :)
ReplyDeleteGan Gimana Sih Caranya Supaya Pas Kita Menembak Senjataya Itu Ga Ilang?? Tolong bantuannya.. ga sabar pengen main nih heehe..
ReplyDeleteOm Jin :-) Izin Copas
ReplyDeleteoh iya om jin ijin koreksi
Untuk agan agan yang habis nembak senjatanya hilang coba tambahkan Dengan
obj_gun > Animation End > Create instance of random object Isi Object dengan obj_gun semua.
Ditunggu Kunbalnya Gan adityampc.tk
gan untuk memasukan gambar textur gimana yah?
Deletebisa sih bisa.., cuma game maker gw yg lite :-d jadi ada beberapa yg gak bisa :v 8-)
ReplyDeleteijin copas ye :-)
ReplyDelete