Rabu, 18 April 2012

Arsitektur Game Engine

Arsitektur mesin game adalah system perangkat lunak yang dirancang untuk menciptakan dan pengembangan video game. Simplenya dari arsitektur mesin game itu adalah rancangan dari sistem perangkat lunak dari game itu sendiri.
Ada banyak mesin permainan yang dirancang untuk bekerja pada konsol permainan video dan sistem operasi desktop seperti Microsoft Windows, Linux, dan Mac OS X. 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

Tahap-tahap awal pembuatan game :
Langkah 1: Tuangkan logika permainan Anda ke dalam rendreing (view)

Konsep
Hal pertama yang harus kita lakukan adalah memisahkan render dari logika. Dan ini masuk akal. Intinya logika game bisa berjalan pada kecepatan yang berbeda dari rendering.
Logika permainan tidak mengenal tentang rendering, sehingga pada logika tidak peduli apakah nantinya akan ditampilkan dalam 2D, 3D seni, ASCII atau apa pun. 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”.
 Logic - 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.

Langkah 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 tahu tentang model dan dapat memanipulasinya. Misalnya controller memeriksa input pengguna, dan memanipulasi mobil yang sesuai. Controller perlu untuk kode renderinf (view) saat menggunakan input mouse untuk memanipulasi objek di layar.
 MVC
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 memanggil model RaceCar.steer_left(). Model ini kemudian menangani aturan dari dunia mobil untuk melakukan manuver ke kiri.

Dimana penempatan AI-nya?
Kebanyakan permainan menggunakan AI untuk mengendalikan objek permainan tertentu, jadi pertanyaannya adalah dimana tempat untuk menaruh AI-nya, dalam model atau controller? Jawabannya cukup sederhana: jika AI mengontrol objek yang sama dengan cara yang sama sebagai pengguna tidak (yaitu ‘bot’), maka sebaiknya kita menerapkannya dalam controller. Dalam kasus lain, AI adalah bagian dari dunia permainan sehingga Anda harus menerapkannya dalam model. Dalam contoh ini, AI mobil harus dilaksanakan di controller, karena mereka pada dasarnya bot. Jika kita sebagai pejalan kaki yang tidak berada pada “jalan”, maka akan diimplementasikan dalam model, karena pejalan kaki adalah bagian dari dunia juga.

Ringkasan

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 menampilakn 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 (Contoller 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 dan / atau bot
 MVC - 2

Referensi :

Tidak ada komentar:

Posting Komentar