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
7. spr_monster
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
Tidak ada komentar:
Posting Komentar