Posted by Octia Nuraeni | Posted in Pengantar Teknologi Game , Tugas Softskill , Tulisan Softskill
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: