GAME ENGINE
Game
Game atau dalam
bahasa Indonesia disebut sebagai permainan mengandung arti “kelincahan
intelektual” (intellectual playability). Game juga bisa diartikan sebagai arena
keputusan dari aksi pemainnya karena ada target-target yang ingin dicapai,
kelincahan intelektual pada tingkat tertentu juga merupakan ukuran sejauh mana
game itu menarik untuk dimainkan secara maksimal. Pada era globalisasi saat
ini, para pengelola industry game berlomba-lomba untuk menciptakan game yang
lebih nyata dan menarik untuk para pemainnya. Hal inilah yang membuat
perkembangan game di computer sangat cepat. Sehingga game bukan hanya sekedar
permainan untuk mengisi waktu luang atau sekedar hobi, melainkan sebuah cara
untuk meningkatkan kreatifitas dan tingkat intelektual para penggunanya bahkan
sebagai sebuah lapangan pekerjaan.
Game Engine
Game Engine
dalam bahasa Indonesia diartikan sebagai mesin permainan, adalah sebuah system software
yang dirancang untuk pembuatan dan pengembangan suatu video game. Terdapat
banyak sekali game engine yang dirancang untuk bekerja pada beberapa konsol
video game dan sistem operasi desktop seperti Microsoft Windows, Linux, dan Mac
OS X. fungsi utama yang secara khusus disediakan oleh game engine meliputi
mesin render (renderer) untuk grafik dua dimensi atau tiga dimensi, mesin
fisika, deteksi tabrakan (dan tanggapan tabrakan), suara, script, animasi,
kecerdasan buatan, jaringan, streaming, manajemen memori, threading, dukungan
lokalisasi dan layar grafik. Banyak sekali game engine yang ada sekarang ini,
mulai dari yang gratis sampai yang berbayar. Berikut masing-masing 10 contoh
game engine yang gratis dan berbayar.
Pada pembahasan game engine ini, saya akan
mencoba untuk menjelaskan fitur-fitur serta teknologi game engine yang ada pada
OGRE. Mengapa memilih OGRE? saya memilih OGRE dikarenakan game engine tersebut merupakan
salah satu game engine yang pernah saya pelajari dan saya coba. Baiklah
sebelum itu, kita harus mengetahui apa sih OGRE itu?
OGRE
Ogre (Object Oriented
Graphics Rendering Engine) merupakan open source rendering engine grfik
yang ditulis dan dimaintain oleh tim inti kecil. Awal mula tahun 1999 kemudian
baru dikenal pada tahun 2000 oleh suatu komunitas source forge.
Berikut ini adalah file-file yg dibutuhkan untuk membuat
aplikasi 3D dengan library OGRE3D (Object Oriented Graphics Rendering Engine)
antara lain :
•
Eclipse-CPP ganymede sebagai IDE C++
•
MinGW toolbox sebagai GCC opensource
compiler
•
MYSYS sebagai GNU Terminal
environment
• OGRE3D SDK sebagai rendering engine
di OGRE SDK for Code::Blocks + MinGW C++ Toolbox , perlu diperhatikan bahwa kita menggunakan MinGW sebagai
c++ compilernya
OGRE hanyalah rendering engine.
Seperti pada engine lainnya, hanya saja OGRE pada umumnya hanya sebagai graphic
rendering. Dengan kata lain fitur OGRE hanya khusus menangani vector &
matrix classes, memory handling, dan lain-lain. Ini bukanlah salah satu dari
semua solusi dalam istilah game development / simulasi, OGRE tidak menyediakan
audio / physics support.
Walaupun penjelasan diatas bisa
dikatakan sebagai kelemahan dari ogre itu sendiri, akan tatapi itu semua
sebanding dengan kemampuan grafis yang ada pada game engine tersebut. Kelebihan
yang paling menonjol pada ogre adalah graphics engine yang bisa memberikan para
developer sebuah kebebasan untuk menggunakan physics apapun, input, audio,
& library lainnya. OGRE memberikan para tim development untuk fokus pada
graphics daripada beberapa sistem-sistem yang ada dalam game development. OGRE
dapat mensuport OIS, SDL, dan CEGUI libraries. Sekarang ini OGRE adalah publish
dibawah dua lisensi, yaitu LGPL & OUL. Maka sekarang ini para publish
tersebut membuka OGRE sebagai free / open-source software.
Contoh OGRE 3D Game Engine
Game
Menjatuhkan Dadu dengan Bola
Karakter pada
Game Menjatuhkan Dadu dengan Bola
Dalam game
“Menjatuhkan Dadu dengan Bola” ini terdapat dua objek yang utama, yaitu dadu
dan bola. Di sini terdapat satu bola yang berwarna merah yang bertugas untuk
menjatuhkan dadu dengan tepat sasaran. Diharapkan untuk sekali lemparan bola
dapat menjatuhkan semua dadu. Sedangkan objek utama yang kedua ialah dadu. Dadu
yang yang berbentuk kotak dan bertuliskan nilai “10” ini ada enam buah dalam
permainan ini. Keenam dadu tersebut tersusun secara rapih dan teratur membentuk
sebuah piramida dia atas sebuah alas menyerupai meja.
Software yang Digunakan
Mengenai
software-software yang digunakan dalam pembuatan game “Menjatuhkan Dadu dengan
Bola” satu persatu. Software yang digunakan tersebut diantaranya adalah
·
OGRE
3D Game Engine,
·
3DS
Max,
·
OgreSceneMaxExporter,
·
Visual
C++,
·
Ogre
SDK, dan
·
Direct
X SDK.
3Ds Max 3D
Studio Max
(kadangkala disebut 3ds Max atau hanya MAX) adalah sebuah perangkat lunak
grafik vektor tiga dimensi dan animasi, ditulis oleh Autodesk Media &
Entertainment (dulunya dikenal sebagai Discreet and Kinetix). Perangkat lunak
ini dikembangkan dari pendahulunya 3D Studio for DOS, tetapi untuk platform
Win32. Kinetix kemudian bergabung dengan akuisisi terakhir Autodesk, Discreet
Logic. Versi terbaru 3Ds Max pada Juli 2005 adalah 7. 3Ds Max versi terbaru
sampai tahun ini adalah 3Ds Max Autodesk versi 8. Interface pada 3Ds Max dibagi
menjadi beberapa bagian, yaitu Title Bar, Menu Bar, Tool Bar, empat buah
Viewport, Control Panel, Time Slider, Viewport Configuration Control.
Title Bar
Title Bar adalah
Judul atau halaman yang sedang aktif atau yang sedang digunakan.
Menu Bar
Manu Bar
berisikan tool-tool seperti move, rotate, scale, array, rendering dan tool
lainnya yang umum dan sering digunakan. Diatasnya terdapat property toolbar
seperti menu file, edit, tools, dan lainnya, dari sini And adapt mengantar dan
memilih seluruh fasilitas-fasilitas yang ada di dalman 3ds max.
Viewport
Viewport adalah
area anda untuk bekerja seperti pengeditan dan pembentukan obyek.
- Viewport Top. Digunakan untuk melihat tampilan dari atas
- Viewport Left. Digunakan untuk melihat tampilan dari samping kiri
- Viewport Front. Digunakan untuk melihat tampilan dari depan
- Viewport Perspective. Digunakan untuk melihat tampilan secara perspective
Time Slider
Time slider
berfungsi untuk menunjukkan atau membaca frame yang sedang berlangsung. Tool
ini digunakan utnuk memproses animasi.
Command Panel
Berisikan
perintah-perintah yang terdapat di dalam 3d max secara langsung, misalnya
membuat objek, pengeditan objek, display, utility dan perintah lainnya.
Object Categories
Fasilitas ini
terdapat dalam Tab Create yang berfungsi untuk membuat berbagai macam objek.
Objek-objec yang ada merupakan objek yang umum dan sering dilihat disekitar
kita dan juga terdapat perintah-perintah yang mendukung untuk proses pemodelan.
Time Control
Sama seperti
aplikasi animasi lainnya, 3d max terdapat time control untuk mengatur proses
animasi anda.
Viewport Navigation Control
Berisikan
fitur-fitur yang berfungsi untuk melakukan pengaturan terhadap viewport Anda
seperti menggeser Viewport, Zoom All, Zoom Extens All, dan fungsi lainnya.
Ogre Scene Max Exporter
Pada umumnya
objek yang dibuat pada 3Ds Max merupakan file dengan ekstensi .3ds. Sedangkan
Ogre hanya bisa memproses objek dengan ekstensi file .mesh. Oleh karena itu
dibutuhkan software tambahan yang dapat digunakan untuk mengkonversi objek
dengan ekstensi file .3ds ke .mesh. Di sini software yang dapat digunakan
adalah Ogre Max Exporter.
Visual C++
Visual C++
adalah sebuah produk Integrated Development Environment (IDE) untuk bahasa
pemrograman C dan C++ yang dikembangkan Microsoft. Visual C++ merupakan salah
satu bagian dari paket Microsoft Visual Studio. Visual C++ dapat berjalan lebih
cepat pada windows karena hanya memerlukan memori yang kecil. Dalam hal ini,
Ms. Visual C++ lebih unggul jika dibandingkan dengan Ms. Visual Basic. Ini
menjadi salah satu alasan Ms. Visual C++ lebih dipilih programmer untuk membuat
berbagai aplikasi dekstop maupun antivirus.
OGRE SDK
SDK (Ogre
Software Development Kit) sendiri merupakan alat untuk pengembangan piranti
lunak. Dalam kata lain, Ogre SDK merupakan alat untuk pengembangan software
pada game engine itu sendiri, yaitu Ogre.
Direct X SDK
DirectX (atau
bisa disebut Direct3D) adalah kumpulan API untuk menangani berbagai tugas dalam
pemrograman multimedia khususnya permainan komputer dalam sistem operasi
Microsoft Windows. DirectX sendiri merupakan gabungan dari Direct3D,
DirectDraw, DirectMusic, DirectPlay, dan DirectSound. DirectX SDK dapat
diperoleh secara cuma-cuma dari Microsoft.
Contoh Kasus
Di sini akan
dijelaskan cara membuat permainan atau game dengan menggunakan Ogre 3D engine.
Ogre 3D hanya sebagai perender hasilnya. Sedangkan untuk coding dan memetakan
objeknya dibutuhkan bantuan dari aplikasi lain seperti Visual C++, 3D Max dan
converter objeknya. Permainan yang dibuat di sini adalah “Game Menjatuhkan Dadu
dengan Bola”.
Berikut akan dijelaskan langkah-langkah dalam pembuatannya.
1.
Pertama-tama
lakukan instalasi pada software 3D max terlebih dahulu, versi yang digunakan di
sini adalah 3D Max 2008. Kemudian install Converter 3D to mesh, yaitu
OgreMaxSceneExporter. Software ini digunakan untuk merubah objek berekstensi
.max, .3ds, dan lain-lain menjadi file berekstensi .mesh.
2.
Kemudian
membuat objek yang nantinya akan digunakan, yaitu sebuah bola dan enam buah
dadu menggunakan 3Ds Max. Kemudian simpan ketujuh objek tersebut. Konversi
objek yang telah dibuat ini dengan cara klik File – Eksport, setelah itu pilih
format berekstensi .mesh agar objek yang dibuat ini dapat dibuka pada
Ogre3D.
3.
Berikutnya
lakukan instalasi pada beberapa software pendukung yang dibutuhkan seperti
Visual C++, Ogre SDK, dan Direct X SDK. Setelah itu masukan objek yang sudah
dikonversi berekstensi .mesh tadi ke Ogre SDK yang telah diinstal. Pada
umumnya, Ogre SDK ini terdapat pada direktori C dan cari folder Ogre SDK. Pilih
media – model, lalu tempatkan objek yang dibuat ke tempat itu.
4.
Buka
visual studio 2008 – create new project – Visual C++ win32 console application,
berikan nama pada project yaitu gameKu.cpp dan klik OK, kemudian next. Pada
bagian Application type pilih Windows Application dan pada bagian Additional
options pilih empty project. Selanjutnya akan dibuat item pada project yang
telah dibuat sebelumnya, pada menu Project –add new item – C++ File (.cpp) –
beri nama main – klik Add. Maka secara otomatis akan muncul editor tempat
menulis script cpp. Berikut adalah link untuk script yang digunakan.
http://dikitdoang.blogspot.com/2010/05/membuat-game-dengan-ogre-3d.html
5.
Buat
item baru kembali untuk Header File (.h) dan masukkan script dari link ini
kembali.
6.
Copy
folder Media dan folder bin pada Ogre SDK di default path installation tempat
menginstal Ogre ke folder workspace tempat project yang dibuat berada. Kemudian
konfigurasikan path pada file resources.cfg pada folder debug dan resources.cfg
pada folder release. Ganti bagian ../../ .. dengan path tempat default path
installation tadi. Setelah konfigurasi ini selesai, berikutnya lakukan
konfigurasi pada properties project. Pada jendela solution explorer, klik kanan
nama project lalu pilih menu properties. Lakukan konfigurasi seperti ketentuan
di bawah ini.
7.
Pada
debug active :
Debugging : Working Directory =
..\bin\Debug
Linker : General : Output File = ..\bin\Debug\hello.exe
Linker : Input : Additional Dependencies
+= OgreMain_d.lib
Linker : Input : Additional Dependencies
+= OIS_d.lib
Linker : General : Additional Library
Directories = $(OGRE_HOME)\lib
C/C++ : General : Additional Include
Directories =
..\include;$(OGRE_HOME)\include;$(OGRE_HOME)\samples\include
8. Lakukan
juga pengaturan untuk folder Release, tetapi ganti bagian OgreMain_d.lib dan
OIS_d.lib di atas menjadi OgreMain.lib dan OIS.lib.
9. Konfigurasi
selesai dilakukan. Lakukan running program dengan menekan tombol F5 pada
keyboard. Maka akan muncul tampilan “OGRE Engine Rendering Setup”. Pilih Direct
3d9 Rendering Subsystem, maka hasil gambar berupa windows application akan
tampil seperti berikut ini.
Contoh Lain Project Ogre
#include "ExampleApplication.h"
class test : public ExampleApplication {
public:
test(){
}
~test(){
}
protected:
virtual void createCamera(void){
mCamera = mSceneMgr->createCamera("PlayerCam");
mCamera->setPosition(Vector3(-100,500,-200));
mCamera->lookAt(Vector3(0,250,0));
mCamera->setNearClipDistance(5);
}
virtual void createViewports(void)
{
Viewport* vp
= mWindow->addViewport(mCamera);
vp->setBackgroundColour(ColourValue(1,1,1));
mCamera->setAspectRatio(Real(vp->getActualWidth())
/
Real(vp->getActualHeight()));
}
void chooseSceneManager(void) {
mSceneMgr = mRoot->createSceneManager(ST_EXTERIOR_CLOSE);
}
void createScene(void)
{
mSceneMgr->setAmbientLight(ColourValue(1,1,1));
Entity
*ent1 = mSceneMgr->createEntity("Ogrehead","ogrehead.mesh");
SceneNode
*node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode ("OgreheadNode");
node1->attachObject(ent1);
node1->translate(700,500,2000);
node1->setScale(7,7,7);
node1->yaw(Degree(-180));
node1->pitch(Degree(60));
Entity
*ent2 = mSceneMgr->createEntity("Robot","robot.mesh");
SceneNode
*node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode ("RobotNode");
node2->attachObject(ent2);
node2->translate(500,100,500);
node2->yaw(Degree(-180));
node2->setScale(4,4,4);
Entity
*ent3 = mSceneMgr->createEntity("Razor1","razor.mesh");
SceneNode
*node3 = mSceneMgr->getRootSceneNode()->createChildSceneNode ("Razor1Node");
node3->attachObject(ent3);
node3->translate(1500,800,2000);
node3->setScale(7,7,7);
node3->yaw(Degree(-130));
Entity
*ent4 = mSceneMgr->createEntity("Ninja","ninja.mesh");
SceneNode
*node4 = mSceneMgr->getRootSceneNode()->createChildSceneNode ("NinjaNode");
node4->attachObject(ent4);
node4->translate(500,50,800);
node4->setScale(2,2,2);
node4->yaw(Degree(90));
mSceneMgr->setSkyBox(true, "Examples/CloudyNoonSkyBox");
mSceneMgr->setWorldGeometry("terrain.cfg");
}
};
#if
OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define
WIN32_LEAN_AND_MEAN
#include "windows.h"
INT
WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
#else
int main(int argc, char
**argv)
#endif
{
test
app;
try {
app.go();
} catch (Exception e)
{
#if
OGRE_PLATFORM == OGRE_PLATFORM_WIN32
MessageBox(NULL,e.what(),"Terjadi
Error!",MB_OK | MB_ICONERROR
|MB_TASKMODAL);
#else
fprintf(stderr,"Terjadi Error = %s\n",e.what());
#endif
}
return 0;
}
Hasil Output