Blogger Tips and TricksLatest Tips For BloggersBlogger Tricks

Pengenalan Game Engine

1

Posted by Octia Nuraeni | Posted in , ,


Pada tulisan yang lalu saya pernah membahas mengenai bagian-bagian yang berperan dalam pengembangan suatu game yaitu Game Designer. Pada kesempatan kali ini saya akan membahas lebih detail mengenai Mesin Game atau biasa disebut juga Game Engine.

Pengertian Game Engine (Mesin Game)

Engine bukanlah executable program, artinya engine tidak bisa dijalankan sebagai program yang berdiri sendiri. Diperlukan sebuah program utama sebagai entry point atau titik awal jalannya program. Pada C++, entry point-nya adalah fungsi ‘main().’ Biasanya program utama ini relatif pendek, jadi game engine adalah program yang ‘memotori’ jalannya suatu program game. Kalau game diilustrasikan sebagai ‘musik’ yang keluar dari mp3 player, maka engine adalah ‘mp3 player’ dan program utama adalah ‘data mp3’ yang dimasukkan ke dalam mp3 player tersebut.  
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.
Di dalam game engine, terdapat fungsi-fungsi atau modul-modul, antara lain :
·         Rendering engine
·         Physical engine (collision detection)
·         Sound script
·         Animation
·         Artificial intelegenct
·         Network
·         Streaming
·         Memory management
·         Scene graph


Sejarah Game Engine

Dalam istilah bidang komputer, game engine adalah sebuah software inti yang digunakan sebagai komponen utama dalam pembuatan video game. Umumnya sebuah game engine dibuat untuk menangani rendering dan beberapa teknologi penting lainnya, namun game engine juga dapat menangani tugas seperti game AI, collision detection antara game object, sound dan lainnya. Beberapa engine game pada umumnya menyediakan fasilitas graphics rendering( 2D atau 3D ). Engine yang menyediakan fasilitas real time 3D rendering biasanya dinamakan engine 3D.
Asal muasal game engine muncul pada pertengahan tahun 1990, kata ini erat kaitannya dengan game 3 dimensi misalnya First Person Shooter ( FPS ). Setelah game game 3 dimensi Quake dan Doom ( id software ) keluar, para developer cenderung untuk menglisensi game engine dan memfokuskan ke pembuatan grafik, suara, gameplay, dan design game, dibandingkan harus memulainya dari nol lagi. Game – game generasi berikutnya seperti misalnya Quake 3 dan Unreal Tournament, sejak awal didesain, game ini memisahkan antara code game dengan asset
game ( gambar, suara, model 3 dimensi ) dengan tujuan agar developer developer game lainnya dapat membuat game sebanyak mungkin dengan hanya mengganti – ganti asset tanpa harus mengubah struktur dasar engine tersebut sehingga produktivitas akan lebih meningkat, mengurangi biaya untuk operasional dan sangat membantu untuk mendukung kemajuan industri game.

Tujuan Penggunaan Game Engine

Tujuan penggunaan game engine untuk menyediakan fasilitas yang memudahkan pengembangan, seperti grafik, suara, fisika dan fungsi AI. Mesin permainan biasanya menyediakan abstraksi platform, yang memungkinkan permainan yang sama untuk dijalankan pada berbagai platform termasuk game konsol dan komputer pribadi dengan sedikit, jika ada, perubahan yang dibuat ke kode sumber permainan. Seringkali, mesin permainan dirancang dengan arsitektur berbasis komponen yang memungkinkan sistem tertentu dalam mesin yang akan diganti atau diperpanjang dengan lebih khusus (dan sering kali lebih mahal) komponen middleware game seperti Havok untuk fisika, Miles Sound System untuk suara, atau Bink untuk Video.
Beberapa mesin permainan hanya menyediakan 3D real-time rendering kemampuan bukan berbagai fungsi yang dibutuhkan oleh game. Mesin ini mengandalkan pengembang game untuk melaksanakan seluruh fungsi ini atau merakit dari komponen middleware permainan lainnya. Jenis mesin umumnya disebut sebagai “mesin grafis,” “mesin render,” atau “mesin 3D” bukan meliputi lebih istilah “mesin permainan.” Terminologi ini tidak konsisten banyak digunakan sebagai fitur lengkap mesin permainan 3D disebut hanya sebagai “mesin 3D.” Beberapa contoh mesin grafis adalah: Crystal Space, Genesis3D, Irrlicht, JMonkey Engine, OGRE, RealmForge, Truevision3D, dan Visi Engine. Modern permainan atau mesin grafis umumnya memberikan grafik adegan, yang merupakan representasi berorientasi objek dari dunia permainan 3D yang sering menyederhanakan desain game dan dapat digunakan untuk rendering yang lebih efisien dari dunia maya yang luas.

Tipe Game Engine

Game engine biasanya datang dengan berbagai macam jenis dan ditujukan untuk berbagai kemampuan pemrograman. Ada 3 tipe game engine yang ada saat ini, diantaranya :

1. Roll-your-own game engine

Banyak perusahaan game kecil seperti publisher indie biasanya menggunakan engine-nya sendiri. Mereka menggunakan API seperti XNA, DirectX atau OpenGL untuk membuat game engine mereka sendiri. Di sisi lain, mereka kadang menggunakan library komersil atau yang open source. Biasanya game engine tipe ini lebih disukai karena selain kemungkinan besar diberikan secara 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

Engine ini biasanya sudah menyediakan semuanya begitu diberikan pada developer/programer. Semuanya termasuk contoh GUI, physiscs, libraries model, texture dan lain-lain. Banyak dari mereka yang sudah benar-benar matang, sehingga dapat langsung digunakan untuk scripting sejak hari pertama. Game engine semacam ini memiliki beberapa batasan, terutama jika dibandingkan dengan game engine sebelumnya yang benar-benar terbuka lebar. Hal ini ditujukan agar tidak terjadi banyak error yang mungkin terjadi setelah sebuah game yang menggunakan engine ini dirilis dan masih memungkinkan game engine-nya tersebut untuk mengoptimalkan kinerja game-nya. Contoh tipe game engine seperti ini adalah Unreal Engine, Source Engine, id Tech Engine dan sebagainya yang sudah sangat optimal dibandingkan jika harus membuat dari awal. Dengan hal ini dapat menyingkat menghemat waktu dan biaya dari para developer game.

3. Point-and-click engines

Engine ini merupakan engine yang sangat dibatasi, tapi dibuat dengan sangat user friendly. Anda bahkan bisa mulai membuat game sendiri menggunakan engine seperti GameMaker, Torque Game Builder dan Unity3D. Dengan sedikit memanfaatkan coding, kamu sudah 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 tidak berguna, bagi developer cerdas dan memiliki kreativitas tinggi, game engine seperti ini bisa dirubah menjadi sebuah game menyenangkan, seperti Flow. Game engine ini memang ditujukan bagi developer yang ingin menyingkat waktu pemrogramman dan merilis game-game mereka secepatnya.

Beberapa Contoh Game Engine Open Source :



- 3Dgame Studio
- Delta 3D
- UnrealEngine
- Panda3D
- Torque
- Quake Engine

Beberapa elemen yang ada di dalam game engine adalah :

a. Tools/Data
Dalam pengembangan game, dibutuhkan data yang tidak semudah menuliskan text files. Dalam pengembangan game, paling tidak dibutuhkan beberapa tools seperti 3d model editor, level editor dan graphics programs.

b. System
System adalah bagian dari game engine yang berfungsi untuk melakukan komunikasi dengan hardware yang berada di dalam mesin. Jika game engine sudah dibuat dengan baik maka system ini adalah satu-satunya bagian yang membutuhkan perubahan yang cukup banyak apabila dilakukan implementasi pada platform yang berbeda. Di dalam system sendiri terdapat beberapa sub system yaitu graphics, input, sound, timer, configuration. System sendiri bertanggung jawab untuk melakukan inisialisasi, update dan mematikan sub system yang terdapat di dalamnya.

c. Console
Dengan menambahkan console, kita dapat merubah setting game dan setting game engine di dalam game tanpa perlu melakukan restart pada game tersebut. Console sendiri lebih sering digunakan dalam proses debugging. Apabila game engine tersebut mengalami error kita tinggal mengoutputkan error message tersebut ke dalam console tanpa harus melakukan restart. Console dapat dihidupkan dan dimatikan sesuai keinginan.

d. Support
Support adalah bagian yang paling sering digunakan oleh system di dalam game engine. Support sendiri berisi rumus-rumus matematika yang biasa digunakan, vector, matrix, memory manager, file loader. Merupakan dasar dari game engine dan hampir digunakan semua projek game engine.

e. Renderer/Engine Core
Pada game engine, engine core / renderer terdiri dari beberapa sub yaitu visibility, Collision Detection dan Response, Camera, Static Geometry, Dynamic Geometry, Particle Systems, Billboarding, Meshes, Skybox, Lighting, Fogging, Vertex Shading, dan Output.

f. Game Interface
Game interface sendiri merupakan layer diantara game engine dan game itu sendiri. Berfungsi sebagai control yang bertujuan untuk memberikan interface apabila di dalam game engine tersebut terdapat fungsi fungsi yang bersifat dinamis sehingga memudahkan untuk mengembangkan game tersebut.

g. The Game
Merupakan inti dari penggunaan game engine sendiri, sehingga terserah kita bagaimana mengembangkan game tersebut.


Game Development Tools
Game development tools adalah software yang mempunyai spesialisasi yang membantu atau memfasilitasi pembuatan computer atau video game. Beberapa tugas dapat ditangani oleh game development tools termasuk konversi beberapa kelengkapan dari video game seperti 3D model dan texture ke dalam format yang diperlukan oleh game, level editing serta script compilation.
Pada saat pengembangannya. Game development seringkali menemui kendala. Hal berikut ini adalah beberapa alasan kenapa game development tools dibilang gagal :

a. Game development yang di design seiring waktu berjalan
b. System model dari design game development game tersebut
c. Menerapkan teknologi yang salah untuk menekan biaya
d. Interface yang terlalu kompleks
e. Terlalu banyak fitur-fitur tambahan
f. Merancang untuk user yang sudah advance

Beberapa contoh game development tools :

a. RAD Game tools
b. Java Game Development Tools
c. Garage games game development tools

Sumber Referensi: