Penulisan Keempat - Arsitektur Perangkat Lunak Game
Pengertian Game Engine (Mesin Game)
Game Engine
adalah system perangkat lunak yang dirancang untuk menciptakan dan pengembangan
video game. 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, mesin fisika atau
tabrakan (dan tanggapan tabrakan), suara, script, animasi, kecerdasan buatan,
jaringan, streaming, manajemen memori, threading, dukungan lokalisasi, dan
adegan grafik. Proses pengembangan permainan sering dihemat oleh sebagian besar
menggunakan kembali mesin permainan yang sama untuk menciptakan permainan yang
berbeda.
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. 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.
Dengan adanya engine, waktu, tenaga dan biaya yang dibutuhkan untuk membuat
game software menjadi berkurang secara signifikan.
Beberapa
game dengan jenis dan gameplay yang hampir sama bisa dibuat dengan sedikit
usaha bila terlebih dulu dibuat engine-nya. Setelah engine diselesaikan,
programmer hanya perlu menambahkan program utama, memakai resources (objek 3D,
musik, efek suara) yang baru, dan, jika benar-benar dibutuhkan, sedikit
memodifikasi engine sesuai kebutuhan spesifk dari game yang bersangkutan. Program
game engine seluruhnya berorientasi objek. Dia lebih bersifat reaktif daripada
prosedural. Sulit untuk menggambarkan engine secara keseluruhan dalam
flow-chart, karena alur program bisa diatur sesuai dengan keinginan pemakai
engine, yaitu game programmer.
Tujuan Penggunaan Game Engine
Game engine
menyediakan seperangkat alat pengembangan visual di samping komponen software
digunakan kembali. Alat-alat ini umumnya diberikan dalam suatu lingkungan
pengembangan terpadu untuk mengaktifkan disederhanakan, perkembangan pesat dari
permainan dengan cara data-driven. Mesin pengembang Game upaya untuk
“pra-menciptakan roda” dengan mengembangkan suite perangkat lunak kuat yang
mencakup banyak unsur pengembang game mungkin perlu untuk membangun sebuah
permainan. Kebanyakan mesin permainan suite menyediakan fasilitas yang
memudahkan pengembangan, seperti grafik, suara, fisika dan fungsi AI. Mesin
permainan ini kadang-kadang disebut “middleware” karena, seperti dengan istilah
naluri bisnis, mereka menyediakan sebuah platform perangkat lunak yang
fleksibel dan dapat digunakan kembali yang menyediakan semua fungsionalitas
inti yang dibutuhkan, langsung dari kotak, untuk mengembangkan sebuah aplikasi
permainan sambil mengurangi biaya , kompleksitas, dan waktu-ke-pasar-semua
faktor penting dalam industri video game yang sangat kompetitif. Gamebryo dan
RenderWare adalah seperti program middleware banyak digunakan.
Seperti solusi
middleware lainnya, 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 seperti RenderWare bahkan dirancang sebagai rangkaian dihubungkan
secara longgar komponen middleware permainan yang bisa selektif dikombinasikan
untuk membuat mesin khusus, bukan pendekatan yang lebih umum dari memperluas
atau menyesuaikan solusi terintegrasi yang fleksibel. Namun diperpanjang
tercapai, hal itu tetap menjadi prioritas tinggi dalam mesin game karena
berbagai kegunaan yang mereka diterapkan. Meskipun kekhususan nama, mesin
permainan yang sering digunakan untuk jenis lain aplikasi interaktif dengan
kebutuhan grafis real-time seperti demo pemasaran, visualisasi arsitektur,
simulasi pelatihan, dan lingkungan pemodelan.
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.
Arsitektur Game Engine
Arsitek adalah
pelajaran untuk membuat rancangan dari bangunan.
Sedangkan arsitektur mesin game adalah system perangkat lunak
yang dirancang untuk menciptakan dan pengembangan video game. Dapat
dikatakan bahwa arsitektur mesin game itu adalah rancangan dari
sistem perangkat lunak dari game itu sendiri.
Tahap awal dari
merancang suatu game adalah memilih jenis game yang akan dibuat agar
dapat lebih terfokus dalam mengerjakannya. Selanjutnya adalah mendesaian
game yang akan dibuat. Setelah kita memiliki desain game, langkah
berikutnya adalah mengimplementasikan desain tersebut menjadi source
code. Apabila source telah selesai dirancang, maka game
tersebut dapat dimainkan dan digunakan sesuai yang diinginkan oleh
sang pembuat game. Apakah game tersebut dibuat untuk dikomersilkan
atau dikembangkan oleh orang lain.
Beberapa elemen yang terdapat
dalam game engine, yaitu:
a) Tools/Data
Pada
pengembangan game paling tidak dibutuhkan beberapa tools seperti 3d model
editor, level editor dan graphics programs. Bahkan jika diperlukan, seringkali
kita mengembangkan game engine tersebut dengan menambahkan beberapa code dan
fitur yang diperlukan.
b) System
System adalah
bagian dari game engine yang berfungsi untuk melakukan komunikasi dengan
hardware yang berada di dalam mesin. System adalah bagian yang membutuhkan
perubahan yang cukup banyak apabila dilakukan implementasi pada platform yang
berbeda. Di dalam system sendiri terdapat beberapa sub system seperti graphics,
input, sound, timer, configuration. System bertanggung jawab untuk melakukan
inisialisasi, update dan mematikan sub system yang terdapat di dalamnya.
c) Console
Console dapat
merubah setting game dan setting game engine di dalam game tanpa perlu
melakukan restart pada game tersebut. Console biasa digunakan dalam proses
debugging, seperti misalnya apabila game engine tersebut mengalami error maka
kita hanya mengoutputkan error message tersebut ke dalam console tanpa harus
melakukan restart.
d) Support
Support
merupakan bagian yang sering digunakan pada system di galam game engine.
Support berisikan rumus-rumus matematika yang biasa digunakan, vector, matrix,
memory, file loader. Merupakan dasar dari game engine dan hampir digunakan
dalam semua project game engine.
e) Renderer/Engine
Core
Renderer/engine
core 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
merupakan layer antara game engine dan game itu sendiri. Berfungsi sebagai
control yang bertuuan untuk memberikan interface apabila di dalam game engine
tersebut terdapat fungsi yang bersifat dinamis sehingga memudahkan untuk
mengembangkan game tersebut.
g) The
Game
Game merupakan
inti dari penggunaan game engine sendiri, sehingga ini tergantung bagaimana pengguna
dalam mengembangkannya.
Tipe-Tipe Game Engine
Game engine
biasanya datang dengan macam-macam jenis dan tujuannya. Ada 3 tipe game
engine yaitu sebagai berikut :
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. Terkadang mereka juga membuat semuanya mulai
dari nol. 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. Tower Games Studio
membutuhkan satu tahun penuh untuk menyempurnakan game engine-nya, hanya untuk
ditulis ulang semuanya dalam beberapa hari sebelum penggunaannya karena adanya
bug kecil yang sangat mengganggu.
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.
Sumber :
http://vanillabluse.blogspot.com/2016/04/arsitektur-game-engine.html
Sumber :
http://vanillabluse.blogspot.com/2016/04/arsitektur-game-engine.html