Minggu, 24 April 2016

ARSITEKTUR GAME ENGINE

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)
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".


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
 
http://en.wikipedia.org/wiki/List_of_game_engines
 

 

Tidak ada komentar:

Posting Komentar