Apa filosofi kode / struktur abstraksi / desain program yang memungkinkan game digunakan dengan grafis 2D dan 3D (secara terpisah) TANPA harus kode ulang logika Game?
Kita berbicara tentang mengambil kode yang sama, mengubah hal-hal minimum (misalnya, menukar nama file untuk aset 2D dengan nama file untuk aset 3D), dan mungkin memasukkan beberapa spesialisasi kelas dasar per generik / templat.
Untuk menempatkannya dalam konteks nyata di mana masuk akal: bayangkan permainan LAN-multipemain di mana ada satu klien 3D yang haus akan kinerja tinggi untuk para pemain dengan beberapa rig gamer yang sangat bagus, dan klien 2D yang lebih rendah hati untuk yang lama kotak berdebu yang seseorang temukan di loteng mereka. Tapi itu masih permainan yang sama - acara yang sama terdaftar (seseorang mengambil koin), protokol jaringan yang sama digunakan, dunia proporsional, dll.
Untuk memasukkannya ke dalam konteks MVC: Controllers adalah persis sama (menekan tombol "Atas" akan mengatur akselerasi pemain di 3,5 unit / detik), Views sama sekali berbeda (2D versus 3D), dan Modelnya sama kecuali untuk apa pun yang berhubungan langsung dengan grafik (pemeriksaan tabrakan untuk lingkungan dilakukan setiap 5 detik, dan itu menggunakan algoritma yang sama. Perhatikan bahwa ini berarti ada Z-koordinat untuk semua Objek Game dalam versi 2D, tapi itu hanya diabaikan atau ditampilkan kepada pengguna dengan cara lain, misalnya oleh bayangan yang ditampilkan lebih jauh ke kiri ketika pemain ada di udara).
Apa yang membuat topik ini sangat menarik adalah bahwa FORCE akan memaksa pengembang untuk memiliki gagasan yang sangat jelas tentang bagaimana datanya disusun dan bagaimana kontrol mengalir. Perhatikan bahwa ini tidak berarti menggunakan apa pun selain perpustakaan grafis seperti SDL, D3DX atau OpenGL. Tidak ada mesin game!
Karena ini adalah sebagian besar pertanyaan teoretis, saya akan mengabaikan bahasa pemrograman, tetapi jika Anda ingin memberikan contoh, Anda dapat menggunakan bahasa apa pun yang Anda suka, C ++ jika Anda ingin menghabiskan seluruh babi, atau bahkan Brainfuck jika Anda merasa hingga tantangan (Setiap jawaban konkret akan dihargai, serta yang abstrak!).