Make your dream to be programer is happen

Membuat Game FPS Sederhana Dengan Game Maker

game FPS dengan game maker

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

Sprites Tembok Horizontal


2. spr_wall_ver

Sprites Tembok Vertikal



3. spr_player

Sprites Player


4. spr_barrel

Sprites barell
5. spr_barrel_exp

Sprites barell exp
6. spr_plant

Sprites Pohon

7. spr_monster

Sprites Monster


8. spr_monster_dead

Sprites Monster Dead


9. spr_shotgun
Sprites Senjata

- Textures

1. tex_barrel

texture barrel



2. tex_barrel_exp

texture barrel exp




3. tex_plant

texture pohon








4. tex_monster

texture monster




5. tex_monster_dead

texture monster dead


- Background

1. texture_wall

texture wall








2. texture_floor

texture floor








3. texture_ceiling

texture ceiling








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 

/*
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;
}

Klik Add Event > Keyboard > Up > 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 = 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);
}

Klik Add Event > Keyboard > X-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 > 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;
}

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_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

{
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

{
image_speed=0.2;
}

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_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

{
image_speed=0.3;
image_index=floor(random(4));
}


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_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);
}

Klik Add Event > Step > Step > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut

{
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

{
image_speed=0.2;
}

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_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

{
image_speed = 0;
image_index = 0;
can_shoot = true;
}

Klik Add Event > Draw > Draw > Pada tab kanan pilih Control > Execute Code > Isi dengan script berikut

{
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.

Room FPS Game

*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
Share:

Tidak ada komentar:

Posting Komentar

Cari Blog Ini

Diberdayakan oleh Blogger.

Statemen Kendali / Kondisional If di C#

Statemen Kendali / Kondisional If di C#  -  C# mempunyai statemen kendali yang hampir sama dengan bahasa - bahasa pemrograman lainnya. Ter...

Label

Recent Posts

Unordered List

  • Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
  • Aliquam tincidunt mauris eu risus.
  • Vestibulum auctor dapibus neque.

Label Cloud

AJAX (3) Blogging (4) C (13) C# (15) Codeigniter (5) CSS (18) Game Maker (12) Google Maps (21) HTML (46) Instaling (2) Java (12) Java Script (40) JQUERY (16) PHP (12)

Sample Text

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation test link ullamco laboris nisi ut aliquip ex ea commodo consequat.

Pages

Theme Support

Need our help to upload or customize this blogger template? Contact me with details about the theme customization you need.