4

あなたが大企業であり、PC、Mac、Xbox、および PS3 をターゲットとする巨大なブロックバスター タイトルを作成しているとします。そして、ほとんどのスタジオがそうする傾向があるように、C++ を選択したとしましょう。移植可能なコードとして作成するのはどの部分ですか? 本当にポータブル ゲームを作成することは可能ですか? 新しいプラットフォームに移行する場合、レンダリング エンジンとユーザー インターフェイスを書き直す必要がありますか?

4

4 に答える 4

2

経験に基づいた推測では、ハードウェアに依存するコードを除くすべてが移植可能になるように書かれています。つまり、ゲーム ロジック、ベクター グラフィックス、サウンド (?) は (かなり) 移植性があり、グラフィック出力、メモリ管理、タイミングは (常に) ではありません。

ライブラリを適切に選択すれば、おそらく移植可能なコードの量を最大化できます。

于 2012-07-29T15:25:15.647 に答える
1

PC ゲーマーに 360 コントローラーの使用を求めることはできません。

レンダリングとユーザー インターフェイスは、少なくとも最初からやり直す必要があります。また、さらに、ネットワークなど、OS に依存するその他の機能を再構築する必要がある可能性があります。結局のところ、boost::asioPS3 では機能しない可能性があります。ベクトル化のようなその他のプロセッサ固有のもの

ただし、理想的には、ゲームは可能な限り多くの移植可能なコードを使用します。

于 2012-07-29T15:21:56.130 に答える
1

通常、物理エンジンがあれば移植可能だと思います。また、ヘルス、インベントリ、NPC の動作などのプレイヤー システムは、プラットフォームに依存しません。ゲームがどのコンソールに対応しているかに応じて、レンダリング エンジンを書き直す必要があります。ユーザーの操作は、各コンソールで異なる方法でアクセスされる可能性が高い別のコントローラーと対話する必要があるため、少し書き直される可能性があります。

一般に、コードがコンソール用の API とやり取りする場合、レンダリング、ベクトル化、ユーザー インターフェイス、入力などを書き直す必要があります。物理演算、基本動作、Ai、ヘルス インベントリ管理などの基本コードは、実際に書き直す必要はありません。

つまり、ハードウェアに依存している場合は、書き直すかリファクタリングする必要があります。

于 2012-07-29T15:22:08.733 に答える
1

移植性のないコードはすべてローカライズされるため、DRY 原則を順守することでコードの移植性が高まります。

たとえば、コード内でこれを複数回実行しないでください。

#if defined(PC)
  // create a network connection PC-style
#elif defined(XBOX)
  // create a network connection XBox-style
#elif defined(MAC)
  // create a network connection Mac-style
#elif defined(PS3)
  // create a network connection PS3-style
#endif

代わりに、一度実行して関数を作成します

createNetworkConnection();

複数の場所で使用します。

于 2012-07-29T15:24:31.837 に答える