Desain game tradisional , seperti yang saya tahu, menggunakan polimorfisme dan fungsi virtual untuk memperbarui status objek game. Dengan kata lain, rangkaian fungsi virtual yang sama disebut dengan interval reguler (ex: per-frame) pada setiap objek dalam game.
Baru-baru ini, saya menemukan, bahwa ada sistem pesan berbasis event lain yang tersedia untuk memperbarui status objek game. Di sini, objek biasanya tidak diperbarui berdasarkan per-frame. Alih-alih, sistem pesan acara yang sangat efisien dibuat, dan objek permainan diperbarui hanya setelah menerima pesan acara yang valid.
Arsitektur Game Driven Event dijelaskan dengan baik di: Game Coding Lengkap oleh Mike McShaffry .
Bisakah saya meminta bantuan dengan pertanyaan-pertanyaan berikut:
- Apa kelebihan dan kekurangan dari kedua pendekatan tersebut?
- Di mana yang lebih baik dari yang lain?
- Apakah desain game yang didorong Event universal dan lebih baik di semua bidang? Apakah karena itu direkomendasikan untuk penggunaan bahkan di platform mombile?
- Mana yang lebih efisien dan mana yang lebih sulit untuk dikembangkan?
Untuk memperjelas, pertanyaan saya bukan tentang menghapus polimorfisme sepenuhnya dari desain game. Saya hanya ingin memahami perbedaan dan manfaat dari menggunakan pesan yang digerakkan oleh acara vs panggilan biasa (per-frame) ke fungsi virtual untuk memperbarui status permainan.
Contoh: Pertanyaan ini menyebabkan sedikit kontroversi di sini, jadi izinkan saya menawarkan Anda contoh: Menurut MVC, mesin permainan dibagi menjadi tiga bagian utama:
- Lapisan Aplikasi (Perangkat Keras dan komunikasi OS)
- Logika Game
- Tampilan Game
Dalam gim balap, Game View bertanggung jawab untuk merender layar secepat mungkin, setidaknya 30fps. Game View juga mendengarkan input pemain. Sekarang ini terjadi:
- Pemain menekan pedal bahan bakar hingga 80%
- GameView membuat pesan "Pedal 2 Bahan Bakar Mobil Ditekan hingga 80%" dan mengirimkannya ke Game Logic.
- Game Logic mendapatkan pesan, mengevaluasi, menghitung posisi dan perilaku mobil baru dan membuat pesan berikut untuk GameView: "Draw Car 2 Fuel Pedal Pressed 80%", "Car 2 Sound Acceleration", "Car 2 Coordinates X, Y" .. .
- GameView menerima pesan dan memprosesnya sesuai
update
). Yang kedua bisa Anda lakukan dengan olahpesan karena berbagai alasan.