hal pertama yg harus dilakukan adalah memecah antara logika dan rendering. karan kecepatan logika akan berbeda dengan rendering.karna pada logika tidak peduli apakah game ini akan dijalankan pada 2D,3Dseni atau apapun. pada kenyataannya rendering sangat bergantung pada logika. karen semua itu perlu info mengenai tata cara atau dimana untuk menampilkan seluruh logika kita. dibawah ini adalah penggambaraanya.
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.
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