Jumat, 14 Agustus 2015

Membuat Pesawat Tokoh Jagoan Program Game Engine

Membuat pesawat jagoan atau tokoh utama di game engine


Selamat pagi, jumpa kembali dengan ogut melalui tulisan ini, pada artikel kali ini ogut akan meneruskan cerita tentang game engine yang telah ogut bahas di beberapa artikel sebelumnya (lihat Daftar Isi di bagian Game Engine). Dan kali ini pembahasan kita akan fokus pada pembuatan tokoh game atau pesawat jagoan.


Untuk membuat pesawat jagoan sangat mudah sekali rekan-rekan, hanya tinggal menambahkan beberapa kode program dan... sang jagoan game akan muncul dengan seketika.

Tokoh utama ogut beri nama Jack Fighter, tokoh ini berbentuk pesawat tempur dan bisa bergerak ke delapan arah penjuru angin di layar monitor, Anda dapat menggunakan tombol “J”, “K”, “L” dan “I” untuk menggerakkan Jack dan “F” untuk menembak.

geDisplayJackFighter
Fungsi yang dipakai untuk menampilkan tokoh Jack ke layar monitor adalah geDisplayJackFighter, sama seperti menampilkan gambar latar belakang, fungsi menampilkan tokoh Jack harus berada di dalam while, dan posisi fungsi geDisplayJackFighter harus berada setelah fungsi geDisplayBG.

#include"My7OpenGL.h"
#include"GEEmas7.h"

HWND MainHWND = NULL;

My7OpenGL GameOpenGL;
GEEmas7 GameObject;

int WINAPI WinMain(HINSTANCE HInstanceP, 
HINSTANCE HPrevinstanceP, 
LPSTR LpcmdLineP, int NShowcmdP)
{
GameOpenGL.SetHInstance(HInstanceP);
if (!GameOpenGL.CreateOpenGLWindow(MainHWND))
return 0;

if (!GameObject.geInisialisasi(MainHWND))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

/////////////////////////////
//Status loading ditampilkan
/////////////////////////////
GameOpenGL.DisplayLoading();
/////////////////////////////
//set nilai awal variabel
/////////////////////////////
GameObject.geSetGameLoop();

while (GameOpenGL.OpenGLMainLoop)
{
GameOpenGL.MessageHandle();

/////////////////////////////
//Render objek game, 
//di bawah ini
/////////////////////////////

GameObject.geDisplayBG();

/////////////////////////////
//Tokoh Utama / Jack Fighter
/////////////////////////////
GameObject.geDisplayJackFighter();


/////////////////////////////
GameOpenGL.OpenGLSwapBuffer();
GameOpenGL.BreakProgram();

/////////////////////////////
//memperlambat kecepatan game
/////////////////////////////
GameObject.geTimerGEEmas7(GAME_DELAY);
}

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Jika program di atas dijalankan maka akan tampil tokoh Jack Fighter di layar monitor, seperti gambar di atas.

Tombol Kontrol
Tombol yang dipakai untuk mengontrol gerakan Jack Fighter bisa Anda ganti sesuai kebutuhan, cara mengganti tombol untuk game ini sangat mudah, Anda tinggal menggantinya di file header GEEmas7.h.
...
...
...
////////KEYBOARD
#define TOMBOLKIRI 'J'
#define TOMBOLKANAN 'L'
#define TOMBOLATAS 'I'
#define TOMBOLBAWAH 'K'
#define TOMBOLTEMBAK 'F'
...
...
...

Untuk tombol kontrol Jack Fighter sebaiknya Anda tidak menggunakan tombol panah kiri, kanan, atas, dan bawah, sebab jika Anda menekan tombol sebanyak tiga buah atau lebih secara bersamaan, maka tombol-tombol panah ini tidak terdeteksi, padahal untuk game jenis ini kombinasi tombol yang ditekan pada saat bersamaan bisa mencapai empat tombol.

Masa Hidup Tokoh Utama
Masa hidup tokoh Jack bisa Anda tentukan sesuai dengan kebutuhan, masa hidup atau biasa dikenal dengan istilah power dapat Anda ubah besar nilainya pada file header GEEmas7.h
...
...
...
//////POWER and DESTRUCT
#define POWERJF 5000
...
...
...

Nilai power tokoh Jack ogut tentukan sebesar 5000, nilai tersebut dapat Anda ubah, tetapi jangan mengubah nilai ini menjadi terlalu besar karena akan membuat Jack menjadi sangat sakti sehingga sangat sulit dikalahkan musuh.


Pada gambar di atas dapat Anda lihat di sudut kiri atas layar monitor tampil angka 10000/10000. Angka tersebut berarti nilai power Jack pada saat ini dan nilai awal power Jack pada saat game dimulai. Nilai power yang tampil di atas adalah nilai setelah ogut mengubah nilai power Jack menjadi 10000.

Mengganti Tekstur Jack Fighter
Tokoh utama bisa diganti teksturnya dengan menggunakan fungsi geLoadJFTexture. Fungsi ini mempunyai lima parameter yang harus diperhatikan supaya tampilan tokoh Jack menjadi sempurna.

#include"My7OpenGL.h"
#include"GEEmas7.h"

HWND MainHWND = NULL;

My7OpenGL GameOpenGL;
GEEmas7 GameObject;

int WINAPI WinMain(HINSTANCE HInstanceP,
HINSTANCE HPrevinstanceP,
LPSTR LpcmdLineP, int NShowcmdP)
{
GameOpenGL.SetHInstance(HInstanceP);
if (!GameOpenGL.CreateOpenGLWindow(MainHWND))
return 0;

if (!GameObject.geInisialisasi(MainHWND))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

/////////////////////////////
//Status loading ditampilkan
/////////////////////////////
GameOpenGL.DisplayLoading();

/////////////////////////////
//Load tekstur tokoh utama
/////////////////////////////
if (!GameObject.geLoadJFTexture(
"JF/kiri.bmp",
"JF/kanan.bmp",
"JF/gkiri.bmp",
"JF/tengah.bmp",
"JF/gkanan.bmp"))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}


/////////////////////////////
//set nilai awal variabel
/////////////////////////////
GameObject.geSetGameLoop();

while (GameOpenGL.OpenGLMainLoop)
{
GameOpenGL.MessageHandle();

/////////////////////////////
//Render objek game,
//di bawah ini
/////////////////////////////

GameObject.geDisplayBG();

/////////////////////////////
//Tokoh Utama / Jack Fighter
/////////////////////////////
GameObject.geDisplayJackFighter();


/////////////////////////////
GameOpenGL.OpenGLSwapBuffer();
GameOpenGL.BreakProgram();

/////////////////////////////
//memperlambat kecepatan game
/////////////////////////////
GameObject.geTimerGEEmas7(GAME_DELAY);
}

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Coba Anda perhatikan ke lima parameter yang ada pada fungsi geLoadJFTexture, semuanya adalah file bitmap, dan ke lima file tersebut harus ditempatkan dengan urutan yang benar.

Posisi Kiri

Posisi Kanan

Posisi Goyang Kiri

Posisi Tengah

Posisi Goyang Kanan

Jika rekan-rekan menjalankan program di atas, maka hasil dari program adalah tokoh Jack Fighter yang telah berubah bentuk.


Membuat Tekstur Jack Fighter
Anda dapat membuat sendiri tekstur untuk tokoh Jack dan dapat menggunakannya untuk program game engine ini.

Aturan pembuatan tekstur untuk tokoh Jack tidak berbeda dengan aturan yang telah ogut bahas sebelumnya. Memakai file bitmap 24 bit, ukuran tekstur sebaiknya bilangan pangkat dua, dan dua hal tambahan yang harus Anda ingat adalah warna latar belakang harus berwarna hitam sempurna, serta posisi ekor Jack disebelah kanan dan posisi hidung pesawat Jack di sebelah kiri, jangan terbalik.


Batas Deteksi Tabrakan
Tabrakan akan terjadi pada saat peluru musuh mendekati tokoh Jack Fighter atau pesawat musuh berusaha menabrak Jack.

Jika tabrakan terjadi maka power  dari Jack akan berkurang. Ogut menyediakan fungsi yang bisa rekan-rekan pakai untuk mengaktifkan garis merah agar daerah pada tubuh Jack yang dihitung untuk proses tabrakan ditampilkan, fungsi tersebut adalah geDisplayPolygonJackFighter.

#include"My7OpenGL.h"
#include"GEEmas7.h"

HWND MainHWND = NULL;

My7OpenGL GameOpenGL;
GEEmas7 GameObject;

int WINAPI WinMain(HINSTANCE HInstanceP, 
HINSTANCE HPrevinstanceP, 
LPSTR LpcmdLineP, int NShowcmdP)
{
GameOpenGL.SetHInstance(HInstanceP);
if (!GameOpenGL.CreateOpenGLWindow(MainHWND))
return 0;

if (!GameObject.geInisialisasi(MainHWND))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

/////////////////////////////
//Status loading ditampilkan
/////////////////////////////
GameOpenGL.DisplayLoading();

/////////////////////////////
//Load tekstur tokoh utama 
/////////////////////////////
if (!GameObject.geLoadJFTexture(
"JF/kiri.bmp",
"JF/kanan.bmp",
"JF/gkiri.bmp",
"JF/tengah.bmp",
"JF/gkanan.bmp"))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

/////////////////////////////
//Garis untuk deteksi tabrakan 
/////////////////////////////
GameObject.geDisplayPolygonJackFighter();

/////////////////////////////
//set nilai awal variabel
/////////////////////////////
GameObject.geSetGameLoop();

while (GameOpenGL.OpenGLMainLoop)
{
GameOpenGL.MessageHandle();

/////////////////////////////
//Render objek game, 
//di bawah ini
/////////////////////////////

GameObject.geDisplayBG();

/////////////////////////////
//Tokoh Utama / Jack Fighter
/////////////////////////////
GameObject.geDisplayJackFighter();


/////////////////////////////
GameOpenGL.OpenGLSwapBuffer();
GameOpenGL.BreakProgram();

/////////////////////////////
//memperlambat kecepatan game
/////////////////////////////
GameObject.geTimerGEEmas7(GAME_DELAY);
}

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Jika program di atas dijalankan maka akan terlihat garis-garis merah yang mengelilingi tokoh Jack Fighter.


Musuh atau peluru  yang berada di dalam daerah yang bergaris merah akan dihitung tabrakan dengan Jack Fighter. Garis-garis merah ini akan sangat membantu pada saat rekan-rekan membuat musuh (membuat musuh akan dibahas di artikel yang lain).

Sekian dulu ya rekan-rekan, nanti ogut sambung lagi di artikel berikutnya, pada pembahasan berikutnya ogut akan menjelaskan cara memasang suara pada game engine ini.

Salam Game Engine


Heriady
heriady.yoh@gmail.com




Artikel terkait

Panduan Lengkap Membuat Game Perang Shoot Them Up

Panduan Lengkap Membuat Game Perang Dengan Game Engine