Ketika memrogram permainan baru, sebagian besar waktu Anda terpakai
untuk menerapkan beberapa fitur dasar dan pasti Anda memulainya dari
sana bukan?. Karena permainan akan lebih besar, kode Anda akan lebih
kompleks, dan kelas-kelas kodenya pun akan menjadi besar (kelas dewa)
dan itu hal terakhir yang ada inginkan pastinya. Membuat permainan yang
“wah”.
Mari kita asumsikan kita memrogram game balapan, dan kita memiliki kelas yang disebut mobil balap. Tak lama kemudian bahwa kelas akan berisi metode untuk memperbarui stage / level, untuk mengubah tampilan pada layar, untuk menerima input pengguna, dll. Ini akan menjadi besar dan semakin kompleks dengan segala macam fungsi yang berbeda di sana sini. Jadi bagaimana kita bisa membagi permainan kita sehingga permainan itu menjadi menarik, apakah dibagi menjadi beberapa modul dan kelas? Baca dulu sampai kelar dan pelajari pastinya..
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”.
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.
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.
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.
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:
Mari kita asumsikan kita memrogram game balapan, dan kita memiliki kelas yang disebut mobil balap. Tak lama kemudian bahwa kelas akan berisi metode untuk memperbarui stage / level, untuk mengubah tampilan pada layar, untuk menerima input pengguna, dll. Ini akan menjadi besar dan semakin kompleks dengan segala macam fungsi yang berbeda di sana sini. Jadi bagaimana kita bisa membagi permainan kita sehingga permainan itu menjadi menarik, apakah dibagi menjadi beberapa modul dan kelas? Baca dulu sampai kelar dan pelajari pastinya..
Langkah 1: Tuangkan logika permainan Anda ke dalam rendreing (view)
KonsepHal 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”.
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
konsepHal 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.
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
Tidak ada komentar:
Posting Komentar