Minggu, 23 Agustus 2015

Membuat Babak atau Level Game Engine

Membuat beberapa babak atau biasa disebut level di game engine


Selamat pagi semuanya, salam sukses dan salam sejahterah selalu...ini adalah artikel terakhir yang membahas tentang game engine yang ogut buat sendiri. Beberapa artikel sebelumnya ogut mengulas tuntas game engine GEEmas7, untuk melihat daftar artikel lengkap tentang game engine ini harap klik disini. Di dalam daftar tersebut rekan-rekan bisa membaca setiap artikel yang ogut tulis tentang game engine ini secara lengkap dan berurutan.


Artikel kali ini akan membahas cara untuk membuat babak atau level di game engine ini. Masih sama dengan cara sebelumnya rekan-rekan hanya butuh meng-edit MainProgram.cpp untuk menambahkan level di game bertipe shoot them up ini.

Pada game engine ini level bisa Anda buat dengan memakai trik sederhana.

#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;
}

GameOpenGL.DisplayLoading();

//////////////////////////
//Loading data level-1
//////////////////////////
if (!GameObject.geLoadBGTexture
("BmpData/BG1.bmp"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

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

if (!GameObject.geLoadEnemyTexture(
"Enemy1/gkiri.bmp",
"Enemy1/tengah.bmp",
"Enemy1/gkanan.bmp"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadEnemyList
("Level_1/enemy_LV1.txt"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadBonusTexture(
"Bonus1/gkiri.bmp",
"Bonus1/tengah.bmp",
"Bonus1/gkanan.bmp"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadBonusList
("Level_1/Bonus_LV1.txt"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }


if (!GameObject.geLoadBigBossTexture(
"BigBoss1/gkiri.bmp",
"BigBoss1/tengah.bmp",
"BigBoss1/gkanan.bmp"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadBigBoss
("Level_1/BigBoss_LV1.txt"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }


GameObject.gePlayRandomSoundBG();
GameObject.geSetGameLoop();

//////////////////////////
//while untuk level-1
//////////////////////////
while (GameOpenGL.OpenGLMainLoop && 
GameObject.geGameLoop)
    {
GameOpenGL.MessageHandle();

//////////////////////////
//render
//////////////////////////
GameObject.geDisplayBG();

GameObject.geDisplayEnemy();

GameObject.geDisplayBigBoss();

GameObject.geDisplayJackFighter();

GameObject.geDisplayEffect();

//////////////////////////

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

GameObject.geTimerGEEmas7(GAME_DELAY);
}

//////////////////////////
//untuk mendeteksi
//game terus berlanjut
//ke level berikutnya
//atau tidak
//////////////////////////
if (GameObject.geContinue)
{ //////////////////////////
//Loading data level-2
//////////////////////////

GameOpenGL.DisplayLoading();

if (!GameObject.geLoadBGTexture
("BmpData/BG2.bmp"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadEnemyTexture(
"Enemy2/gkiri.bmp",
"Enemy2/tengah.bmp",
"Enemy2/gkanan.bmp"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadEnemyList
("Level_2/enemy_LV2.txt"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadBonusTexture(
"Bonus2/gkiri.bmp",
"Bonus2/tengah.bmp",
"Bonus2/gkanan.bmp"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadBonusList
("Level_2/Bonus_LV2.txt"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadBigBossTexture(
"BigBoss2/gkiri.bmp",
"BigBoss2/tengah.bmp",
"BigBoss2/gkanan.bmp"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

if (!GameObject.geLoadBigBoss
("Level_2/BigBoss_LV2.txt"))
{ GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0; }

}
else
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

GameObject.geSetGameLoop();

//////////////////////////
//while untuk level-2
//////////////////////////
while (GameOpenGL.OpenGLMainLoop && 
GameObject.geGameLoop)
    {
GameOpenGL.MessageHandle();

//////////////////////////
//render
//////////////////////////
GameObject.geDisplayBG();

GameObject.geDisplayEnemy();

GameObject.geDisplayBigBoss();

GameObject.geDisplayJackFighter();

GameObject.geDisplayEffect();

GameObject.gePlayRandomSoundBG();
//////////////////////////

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

GameObject.geTimerGEEmas7(GAME_DELAY);
}

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Pada listing program di atas terdapat dua buah pengulangan while, yang pertama digunakan untuk level pertama, dan yang kedua dipakai untuk level berikutnya.

Listing program di atas tidak berbeda jauh dengan program-program yang telah ogut terangkan sebelumnya, hanya pada saat setelah pengulangan while pertama terdapat kondisi if untuk mendeteksi apakah game masih bisa berlanjut ke level berikutnya atau game sudah selesai karena Jack Fighter telah dikalahkan musuh.

Dengan menggunakan kondisi if seperti di atas maka game bisa dibuat menjadi beberapa level. Musuh, bonus dan Big Boss di load untuk setiap level-nya sehingga masing-masing level mempunyai musuh, bonus dan Bis Boss dengan karakter yang berbeda-beda. Untuk lebih jelas tentang proses load ini harap klik link musuh dan bonus serta link Big Boss.

Tampilan level pertama


tampilan level berikutnya.


Demikian rekan-rekan artikel tentang game engine ini, proses pembuatan game shoot them up dengan game engine ini sudah ogut bahas semua, sampai jumpa di artikel yang lain.

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