Senin, 13 Juni 2011

Tugas Softskill (Game Engine)

Game Engine

Kali ini saya mendapat tugas untuk membuat tulisan mengenai game engine, sebelum membahas salah satu game engine saya mau menjelaskan apa ituh game engine . Dari search sana search sini diketahui Game Engine adalah sebuah perangkat lunak sistem yang dirancang untuk penciptaan dan pengembangan video game juga disebut juga perangkat lunak yang digunakan untuk menciptakan perangkat lunak lain, dalam hal ini, game. Kita bisa menyebutnya game authoring software, game creator tool, software pembuat game, dan sebagainya.. Ada banyak mesin permainan yang dirancang untuk bekerja pada konsol permainan video dan sistem operasi desktop, seperti Microsoft Windows, Linux, dan Mac OS X. Fungsionalitas inti biasanya disediakan oleh mesin permainan mencakup mesin render ( “renderer”) untuk 2D atau 3D grafis, sebuah mesin fisika atau tabrakan (dan tanggapan tabrakan), suara, script, animasi, kecerdasan buatan, jaringan, streaming, manajemen memori, threading, lokalisasi dukungan, dan sebuah adegan grafik.
Kemudian tipe-tipe dari game engine ituh sendiri yakni :

1. Roll-your-own game engine yakni game engine yang menggunakan API seperti XNA, DirectX atau OpenGL untuk membuat game engine mereka sendiri. Disisi lain, mereka kadang menggunakan libraries komersil atau malah open source. game engine tipe ini lebih disukai karena selain kemungkinan besar tersedia gratis, juga memperbolehkan mereka, para developer, lebih fleksibel dalam mengintegrasikan komponen yang diinginkan untuk dibentuk sebagai game engine mereka sendiri. Kelemahannya, banyak engine yang dibuat dengan cara semacam ini malah menyerang balik developernya.

2. Mostly-ready game engines yakni game engine yang menyediakan semuanya begitu diberikan pada developer / programmer. Semuanya termasuk contoh GUI, physiscs, libraries model dan texture, dan segalanya. Banyak dari mereka yang sudah benar benar matang, sehingga dapat langsung digunakan untuk scripting sejak hari pertama.
Biasanya game engine semacam ini memiliki batasan batasan, terutama jika dibandingkan dengan game engine sebelumnya yang benar benar terbuka lebar. Hal ini ditujukan agar tidak terjadi terlalu banyak error yang mungkin terjadi setelah sebuah game yang menggunakan engine ini dirilis, dan masih memungkinkan game engine nya itu sendiri untuk mengoptimalkan kinerja game nya.

3. Point-and-click engines yakni game engine yang sangat amat dibatasi, tapi dibuat sangat user friendly. User bahkan bisa mulai membuat game sendiri menggunakan engine seperti GameMaker, Torque Game Builder dan Unity3D. Dengan sedikit memanfaatkan coding user bisa merilis game point-and-click yang kamu banget.Kekurangannya terletak pada terbatasnya jenis interaksi yang bisa dilakukan, dan biasanya hal ini mencakup semuanya, mulai dari grafis, hingga tata suara. Tapi bukan berarti game engine jenis ini nggak berguna, bagi developer cerdas dan berdaya kreativitas tinggi, game engine bapuk seperti ini bisa dirubah menjadi sebuah game menyenangkan, seperti Flow.

Beberapa contoh jenis game engine :

1. Freeware game engine/open source game engine
Blender
Golden T Game Engine (GTGE)
DXFramework
Ogre
Aleph One
Axiom Engine
Allegro Library
Box2D
Build Engine
Cube
Cube 2
DarkPlaces
jMonkeyEngine (jME)
Panda3D
Sphere

2. Commercial engines/game engine berbayar (komersial)
Alamo
A.L.I.V.E
BigWorld
DXStudio
Dunia Engine
Euphoria
GameStudio
Jade Engine
Jedi
Medusa
RPG Maker VX
RPG Maker XP
RPG Maker 2003
RPG Maker 95
Vision Engine



OGRE

Setelah mengetahui macam-macam game engine maka saya akan menjelaskan 1 game engine yang saya dapatkan selama praktikum Grafik Komputer dan berbasis open source yaitu OGRE.
OGRE (Object-Oriented Graphics Rendering Engine) adalah 3D rendering engine open source yang dikembangkan oleh tim kecil yang dipimpin oleh Steve Streeting. OGRE seringkali digunakan untuk membuat game dan simulasi dengan C++ sebagai bahasa utamanya. OGRE (Object Oriented Graphics Rendering Engine) adalah engine yang flexible dan object oriented 3D rendering pada game engine yang ditulis dalam bahasa C++ serta di desain untuk mampu men-developer dengan intuitif dan mudah kepada aplikasi produksi dengan menggunakan utility hardware-accelerated 3D graphic. Gambaran abstraknya OGRE menggunakan system library seperti direct 3D dan openGL, serta menyediakan sebuah dasar interface di dunia objek dan class object yang lebih tinggi.
Salah satu komuniti aktif yang ada sejak 2005 pada OGRE adalah sourceforge.net. Game yang sudah di publish secara komersial antara lain Ankh, Azathoth, dan Pasific Strom. Umumnya OGRE hanya graphic rendering, dengan kata lain fitur pada OGRE hanya menangani vector dan matrix classes, dan memory handling.
Kemampuan utama OGRE adalah graphics engine yang bisa memberikan para developer sebuah kebebasan untuk menggunakan physics apapun, input, audio, & library lainnya. OGRE dapat mensuport OIS, SDL, dan CEGUI libraries.

Fitur-fitur pada OGRE :
Desain yang object oriented dengan menggunakan plugin untuk mempermudah memasukkan fitur lainnya.
Engine berbasis scane graph dengan bantuan untuk sebuah varietas yang luas, octree, BSP, & Paging Landscape scene manager.
Multi-platform dengan dukungan OpenGL & Direct3D. Bisa merender konten yang sama di beda platform tanpa harus mempunyai content creator. Dapat diakses pada platform Linux, Mac OS X, dan semua versi Windows.
OGRE mendukung program Vertex dan Fragment selama ditulis dengan GLSH, HLSL, Cg, assembler, dsb.

Contoh Program Sederhana Ogre

#include "ExampleApplication.h"

class BelajarOgre : public ExampleApplication {
public:
BelajarOgre(){
}
~BelajarOgre(){
}
protected:
void createScene(void){
mSceneMgr->setAmbientLight(ColourValue(1,0,1));
Entity *ent1 = mSceneMgr->createEntity("Robot","robot.mesh");
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("RobotNode");
node1->attachObject(ent1);
}
};

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



*Script diatas menjelaskan pemanggilan objek robot.mesh pada tampilan OGRE dimana objek yang dipanggil berada pada drive_penyimpanan_ogre/OgreSDK/media/models

Macam-macam manipulasi terhadap objek Ogre
Pewarnaan
Setelah mengenal cara pembuatan objek sederhana pada OGRE maka selanjutnya memasuki cara menggunakan pewarnaan pada objek OGRE yaitu dengan cara :
Pewarnaan pada OGRE dilakukan dengan memanggil fungsi ColourValue. Model warna yang digunakan adalah RGB. Pewarnaan biasa dilakukan pada saat pengaturan atau pembuatan cahaya. Contoh:

Light *light = mSceneMgr->createLight("Lampu");
light->setType(Light::LT_POINT);
light->setPosition(Vector3(0,150,250));
light->setDiffuseColour(ColourValue(0.25,0.25,0));
light->setSpecularColour(ColourVa
lue(0.25,0.25,0));


Kemudian pemakaian Scene Graph yakni grafis yang akan dipakai yaitu Scene Manager adalah pengatur semua objek pada OGRE. Fungsi scene manager meliputi penciptaan, perubahan, dan penghapusan objek seperti Scene Node, Entity, Lights, dan objek lainnya yang ada pada OGRE.
Contoh skrip definisi Scene Manager:

SceneManager* sceneMgr = root->createSceneManager(ST_GENERIC, "MySceneManager");

Entity pada OGRE adalah segala sesuatu yang direpresentasikan pada model 3D. Scene Node adalah titik dimana entity diletakkan dalam suatu scene. Suatu entity harus diletakkan pada scene node agar dapat dirender.
Contoh Program sederhana penggunnaan pewarnaan :



Posisioning dan Transformasi
OGRE menggunakan koordinat Euclidan dalam penempatan lokasi objek. Posisi objek digambarkan dalam notasi (x,y,z).

Translasi
Translasi adalah perpindahan objek dari posisi satu ke posisi lainnya.
Ada dua fungsi yang dapat digunakan untuk melakukan translasi, yaitu setPosition()dan translate().

Rotasi
Rotasi adalah perpindahan objek pada jalur melingkar terhadap suatu sumbu.
Ada 3 jenis rotasi pada OGRE yaitu yaw, roll, dan pitch.

Penskalaan
Penskalaan adalah pengubahan ukuran (menjadi lebih besar atau menjadi lebih kecil) suatu objek.Ada dua fungsi untuk melakukan penskalaan yaitu setScale() dan scale().

Camera
Camera adalah objek yang digunakan untuk melihat scene.Camera juga merupakan movable object.
Membuat Camera:

virtual void createCamera(void)
{
mCamera = mSceneMgr->createCamera("PlayerCam");
mCamera->setPosition(Vector3(0,200,300));
mCamera->lookAt(Vector3(0,30,0));
mCamera->setNearClipDistance(5);
}


Fungsi setPosition() digunakan untuk menempatkan Camera. Fungsi lookAt() digunakan untuk mengarahkan Camera ke arah tertentu. Fungsi setNearClipDistance() digunakan untuk mengatur jarak clipping terdekat.

Viewport
Viewport adalah permukaan 2D yang digunakan untuk melakukan rendering. Membuat Viewport:

virtual void createViewports(void)
{
Viewport* vp = mWindow->addViewport(mCamera);
vp->setBackgroundColour(ColourValue(0,0,0));
mCamera->setAspectRatio(Real(vp->getActualWidth()) / Real(vp->getActualHeight()));
}



Light
Ada tiga tipe Lights pada OGRE:
Point(LT_POINT), merupakan cahaya yang berasal dari satu titik. Cahaya tersebut memancar ke segala arah.
Spotlight(LT_SPOTLIGHT), cahaya seperti yang dihasilkan oleh lampu senter.
Directional(LT_DIRECTIONAL), merupakan pencahayaan yang hanya memiliki satu arah dan warna.

Shadow
Ada tiga tipe Shadows pada OGRE:
Modulative Texture (SHADOWTYPE_TEXTURE_MODULATIVE);
Modulative Stencil (SHADOWTYPE_STENCIL_MODULATIVE)
Additive Stencil (SHADOWTYPE_STENCIL_ADDITIVE)

Terrain
Terrain digunakan untuk mendefinisikan sebuah dataran pada OGRE 3D. Terrain ini dapat dipanggil melalui setWorldGeometry dengan menggunakan parameter nama file terrain tersebut.




Contoh hasil Terrain



SKY
Ogre menyediakan tiga jenis langit: SkyBoxes, SkyDomes, dan SkyPlanes :

SkyBox pada dasarnya adalah sebuah kubus raksasa yang mengelilingi semua objek dalam scene.
SkyDomes sangat mirip dengan SkyBoxes.
SkyPlanes sangat berbeda dari SkyBoxes dan SkyDomes.



Contoh hasil Sky



Fog
Pada Ogre, setFog adalah jenis kabut (dalam kasus ini, linear). Parameter kedua untuk setFog adalah warna kabut yang kita gunakan (dalam hal ini yang sangat sangat ringan abu-abu atau "WhiteSmoke" untuk C #). Parameter ketiga tidak digunakan dalam linear kabut. Keempat dan kelima parameter menentukan rentang di mana mendapatkan kabut tebal.



Contoh hasil Fog



Material
Materials mendefinisikan bagaimana objek mencerminkan cahaya, tetapi tidak bagaimana cahaya yang dipantulkan berinteraksi dengan objek lainnya dalam scene. Dengan kata lain, objek yang kita buat tidak menjadi sumber cahaya tambahan dalam scene ketika objek tersebut merefleksikan dan/atau memancarkan cahaya.



Pemakaian objek material didapatkan pada C:\OgreSDK\media\materials\scripts\Example.material

Particle
Particle merupakan pondasi dari sebagian besar spesial efek visual dalam aplikasi 3D. Ketika kita tidak membutuhkan sebuah particle system untuk menarik bagian efek visual tertentu, mereka membuat hidup lebih mudah ketika kita membutuhkan sebuah efek.



Pemakaian objek particle didapatkan dari C:\OgreSDK\media\particle\Example.particle

Sumber
http://ruroken20.blogspot.com/2011/05/game-engine.html
http://putrikero.wordpress.com/2010/03/17/game-engine/
http://ikhsan-ai.it-kosongsatu.com/2011/03/what-is-game-engine/
Setelah mengikuti 7 pertemuan praktikum Grafkom 2 Teknik Informatika Univ. Gunadarma

Teori Biometrika

Biometrika merupakan pengembangan dari metode dasar identifikasi dengan menggunakan karakteristik alami manusia sebagai basisnya. Sebelum menggunakan teknologi biometrika, pengenalan identitas dilakukan dengan menggunakan metode konvensional. Metode ini memiliki beberapa kelemahan seperti hilang dan dapat dicuri, bahkan lupa password.
Berbagai kelemahan ini menjadi pemicu berkembangnya teknologi biometrika. Dengan menggunakan sistem biometrika digunakan bagian tubuh dan perilaku pada seseorang. Pada biometrika mencakup karakteristik fisiologis dan perilaku. Contohnya seperti sidik jari dan tanda tangan. Biometrika berasal dari kata bio artinya sesuatu yang hidup dan metrics yang artinya mengukur. Biometrika berarti mengukur karakteristik pembeda (distinguish traits) pada tubuh atau perilaku seseorang yang digunakan untuk melakukan pengenalan secara otomatis terhadap identitas orang tersebut, dengan membandingkannya dengan karakteristik yang sebelumnya telah disimpan pada suatu database.
Sidik jari merupakan karakteristik biometrika yang memiliki tingkat keandalan (reliability)
paling tinggi di antara karakteristik-karakteristik biometrika yang lain. Karakteristik biometrika
pada sidik jari didasarkan pada pola alur dari bukit (ridge) dan lembah (valley) pada ujung jari, alur bukit dan lembah pada sidik jari menunjukkan ciri yang unik pada tiap ujung jari. Meskipun belum dapat dibuktikan secara ilmiah, sidik jari seseorang dipercaya berbeda antara satu orang
dengan orang yang lain dan berbeda dengan sidik jari pada jari yang yang lain pada tangan orang
yang sama. Kembar identik yang secara DNA sama persis dapat dipastikan memiliki sidik jari
yang berbeda.

Sumber : http://eprints.undip.ac.id/25259/1/ML2F004504.pdf