Arsitektur
game engine adalah sistem perangkat lunak yang dirancang untuk menciptakan dan
mengembangkan video game. Ada banyak mesin permainan yang dirancang untuk
bekerja pada konsol permainan video dan sistem operasi dekstop seperti
Microsoft Windows, Linux, dan Mac Os.
Tahap-tahap awal pembuatan game :
1. Tuangkan Logika permainan anda ke dalam rendering (view)
1. Tuangkan Logika permainan anda ke dalam rendering (view)
Konsep
Hal pertama yang harus dilakukan adalah memisahkan render dari logika. Logika permainan tidak mengenal rendering, sehingga pada logika tidak peduli apakah nantinya akan ditampilkan dalam 2D, 3D seni, ASCII atau apapun. Namun rendering tergantung pada logika, karena itu perlu info tentang cara/dimana untuk menampilkan segala logika kita. Gambar berikut menunjukkan 2 modul dengan dependensi. Rendering yang terjadi di dalam modul "View".
Hal pertama yang harus dilakukan adalah memisahkan render dari logika. Logika permainan tidak mengenal rendering, sehingga pada logika tidak peduli apakah nantinya akan ditampilkan dalam 2D, 3D seni, ASCII atau apapun. Namun rendering tergantung pada logika, karena itu perlu info tentang cara/dimana untuk menampilkan segala logika kita. Gambar berikut menunjukkan 2 modul dengan dependensi. Rendering yang terjadi di dalam modul "View".
Contoh:
Kita akan
membuat kelas RaceCarView pada objek RaceCar. RaceCar menangani logika dan
input pengguna tetapi tidak tahu tentang cara menampilkannya, dan RaceCarView
menampilkan mobil balap pada layar, dengan menggunakan informasi dari raceCar.
2.
Tuangkan logika permainan anda ke dalam model dan controller
Konsep
Hal kedua
yang bisa kita lakukan adalah menuangkan logika menjadi model dan controller.
Model ini pada dasarnya adalah dunia permainannya. Ia akan mengetahui apa-apa
tentang cara menampilkan, input pengguna, dll. Model hanya mengimplementasikan
aturan dunia permainan anda, dan bagaimana entitas berinteraksi satu sama lain.
Controller tau tentang model dan dapat memanipulasinya. Misalnya controller
memeriksa input pengguna, dan memanipulasi mobil yang sesuai. Controller perlu
untuk kode rendering saat menggunakan input mouse untuk memanipulasi objek di
layar.
|
Contoh:
Dalam contoh
balapan mobil (RaceCar), ketika ada input dari pengguna pertama yang akan
menangani adalah RaceCarController. Ketika pengguna menekan tombol kiri,
Controller melihat ini dan akan menangani model RaceCar, steer left(). Model
ini kemudian menangani aturan dari dunia mobil untuk melakukan manuver ke kiri.
Jadi, kita
membagi ke 3 modul berbeda, yaitu: model, view, dan controller.
- Model
Semua aturan
dunia permainan diimplementasikan dalam model, dan juga berisi data negara atau
level dari setiap objek permainan atau entitas. Ini adalah simulasi permainan
dari dunia nyata, sehingga model tidak tahu apa-apa tentang input pengguna atau
menampilkan ke layar.
- View
Rendering ke
layar ditangani oleh view. View menggunakan model untuk tahu di mana saja si
view harus menampilkan sesuatu. View tidak memiliki fungsi lain selain untuk
menampilkan saja.
- Controller
Controller
menangani user input dan memanipulasi model. Pertama memeriksa input pengguna,
selanjutnya Controller mungkin bisa meminta View untuk menampilkan objek ke
layar saat mouse di klik, dan akhirnya memanipulasi data pada model. Beberapa
COntroller dapat diterapkan bersamaan, misalnya keyboard controller, controller
joypad, dan bahkan controller 'bot' AI.
Disini,
model berdiri sendiri dan tidak perlu tahu apa-apa tentang yang lain
(Controller dan View). View hanya bergantung pada model untuk membuat segala
sesuatu di layar Controller menerima input, dapat memperoleh informasi tambahan
dengan memanggil View, dan pada akhirnya memanipulasi Model.
Keuntungan
dari arsitektur ini:
-
Desain yang bagus, karena menggunakan modul-modul
-
Dunia permainannya dibundel dalam model
-
Perubahan render tidak mempengaruhi permainan inti
-
mendukung input Controller yang berbeda, user/bot
|
Game engine juga sering
disebut juga “Game Middleware”. Game Middleware adalah software yang didalamnya
sudah terdapat elemen-elemen yang dibutuhkan oleh seorang game developer,
kebanyakan dari game middleware memberikan fasilitas guna menunjang
pengembangan game dengan mudah seperti graphics, sound dan Artificial
intelligence.
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. Bahkan jika diperlukan,
seringkali kita mengembangkan game engine tersebut dengan menambahkan beberapa
code dan fitur yang diperlukan.
b. System
System
sendiri 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 sendiri 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.
Beberapa
contoh game engine :
a.
RealmForge
Merupakan free
dan open source game engine untuk Microsoft .Net Framework dan dikhususkan pada
visual3D Game Engine, merupakan cross platform game engine untuk .NET 2.0 dan
Microsoft XNA.RealmForge dibangun diatas AXIOM 3D rendering engine. Di tulis
dalam bahasa C# keseluruhan. Dibangun untuk pembuatan game berbasis .NET.
b. Truevision3D
Merupakan
game engine 3D yang dibangun dengan menggunakan visual basic 6 dan C++ dengan
menggunakan Microsoft Directx API. Mulai versi 6.5, engine ini
menggunakan direct 9 dan shader support, serta ditulis ulang menggunakan C++.
Sampai perkembangan terbaru, belum ada wacana untuk mengembangkannya untuk
mendukung penggunaan directx9 serta Microsoft XNA.
c. OGRE
OGRE (Object-Oriented Graphics Rendering Engine) merupakan engine
yang mendukung 3D Graphic. Merupakan game engine yang fleksibel dalam melakukan
3D Rendering, ditulis dalam bahasa C++ sehingga memudahkan pengembang untuk
membangun game yang mendukung 3D Graphics.
Beberapa contoh game middleware yang sering digunakan :
a. Gamebryo
Merupakan
game engine yang berawal dari perusahaan Numerical Design Limited (NDL) akan
tetapi pada perkembangannya, perusahaan NDL bergabung dengan Emergent Game
Technologies. Ditulis menggunakan bahasa C++, Gamebryo merupakan 3D Game engine
yang memberikan support kepada beberapa platform sebagai berikut :
- Windows (baik direct 9 dan 10)
- Nintendo game cube
- Nintendo WII
- PS 2 dan PS 3
- XBOX serta XBOX360
b.
Renderware
Merupakan
salah satu saingan dari Gamebryo. Bergerak dalam bidang 3D API dan graphic
rendering engine. Renderware digunakan pada computer games, Active Worlds serta
beberapa VRML Browser. Merupakan game engine yang sering digunakan di PS2
sehingga sering disebut sebagai “Sony’S Directx”.
c.
Unreal Engine
Merupakan
salah satu game engine yang cukup populer. Dikembangkan oleh Epic Games dalam
bahasa C++, Unreal engine menjadi salah satu game engine yang mempunyai
kemampuan portability yang baik. Dapat berjalan pada beberapa platform seperti
Windows, Linux, MacOS dan beberapa video games console seperti Dreamcast, XBOX,
XBOX360.
#Sumber Referensi
Tidak ada komentar:
Posting Komentar