ゲームのロジックを再コード化する必要なしに、ゲームを2Dと3Dの両方のグラフィックスで(別々に)使用できるようにする抽象化/プログラム設計のコード哲学/構造は何ですか?
同じコードを取り、最小限の変更(たとえば、2Dアセットのファイル名を3Dアセットのファイル名に交換するなど)を行い、ジェネリック/テンプレートごとに基本クラスのいくつかの特殊化をプラグインしている可能性があります。
意味のある現実的な状況に置くために、いくつかの非常に優れたゲーマーリグを備えたプレーヤー用の1つの一流の、パフォーマンスを要求する3Dクライアントと、古いもののためのより控えめな2DクライアントがあるLANマルチプレーヤーゲームを想像してください。誰かが屋根裏で見つけたほこりっぽい箱。しかし、それでも同じゲームです。同じイベントが登録され(誰かがコインを拾った)、同じネットワークプロトコルが使用され、世界は比例します。
MVCコンテキストに配置するには:コントローラーはまったく同じ(「上」キーを押すとプレーヤーの加速が3.5単位/秒に設定されます)、ビューはまったく異なり(2Dと3D)、モデルは同じですグラフィックに直接関連するものを除いて(環境の衝突チェックは5秒ごとに実行され、同じアルゴリズムを使用します。これは、2DバージョンのすべてのゲームオブジェクトにZ座標があることを意味しますが、無視するか、別の方法でユーザーに表示します(たとえば、プレイヤーが空中にいるときにさらに左に表示される影によって)。
これをこのような魅力的なトピックにしているのは、開発者が自分のデータがどのように構造化され、制御がどのように流れるかについて非常に明確な考えを持つことを強制することです。これは、SDL、D3DX、OpenGLなどのグラフィックライブラリ以外の使用を意味するものではないことに注意してください。ゲームエンジンはありません。
これはほとんど理論的な問題なので、プログラミング言語は省略しますが、例を挙げたい場合は、好きな言語を使用できます。C++を使いたいなら、Brainfuckでもいいと思います。課題まで(具体的な回答はもちろん、抽象的な回答も歓迎します!)