0

Wiiゲームといくつかの(Sony)PSOneゲームをOpenGL ESに移植することを調査するように依頼されました(どのプラットフォームを推測できますか?)。

私はこれまでこのようなゲームポートに着手したことはありません(そしてそれを行うために誰かを雇う予定です)が、プロセスを理解したいと思います。

  1. WiiはOpenGLを使用していますか?そうでない場合、それは何を使用し、OpenGL / OpenGL ESへの移植はどれほど簡単ですか?
  2. プロセスを理解するのに役立つリソース/本/ブログはありますか?
  3. 私の会社は公式のWii開発者になる必要がありますか?もしそうなら、どこでそのプロセスを開始しますか?
4

5 に答える 5

3

ゲームコンソールはOpenGLを使用しませんが、独自のカスタムライブラリを使用します。主な理由は、それらがかなり遅く、RAMがほとんどないことです。したがって、パフォーマンスのすべての低下を絞り出す必要があります。つまり、カスタムコードです。通常、開発者キットを使用してフレームワークを入手し、そこからコードをビルドします。最終的には、開発者キットのパーツを独自の特別なコードに置き換えて、必要なすべての速度と特殊効果を得ることができます。

開発者がソースにアクセスできるにもかかわらず、PSOneゲームがPS3で非常に醜いのには理由があります。収益は、コードに触れることを正当化するものではありません。

これが、ゲーム開発が非常に高価である理由の1つです。すべてのゲームは(多かれ少なかれ)完全に新しい製品です。ゲーム会社は、前回のバージョンのコードを少し再利用できる場合もありますが、多くの場合、すべてを再開発する必要があります。彼らはまた、お互いにあまり話しません。

近年、キットはより複雑で強力になり、完全なゲームエンジン(あらゆる種類のエフェクトと3Dサポートを備えた)を入手できますが、各エンジンは完全に異なる種類の獣であるため、エンジンAからコードをコピーすることさえできませんBへ。

現在、メディアコンテンツ(ビデオ、オーディオ、レンダリングシーケンス)は非常に高価であるため、実際のゲームエンジンは細部が細かいことが多いため、すぐに変更されることはありません。

最終結果:ゲームを移植する場合は、ハードウェア用のエミュレーターを作成します(これは通常、非常に単純で、あらゆる種類のゲームを実行できます)。

[編集]Wii用のソフトウェアを開発するには、こちらをご覧ください:http: //www.warioworld.com/

Wiiエミュレーターについては、http: //wiiemulator.net/を参照してください。

于 2009-10-13T13:17:38.150 に答える
3

WiiまたはPSOneからの移植は複雑で複雑なタスクであり、並行して機能する複数の個別のエンジニアリング作業に分割して、機能する最終製品を作成できます。ターゲットハードウェアに移動する前にできる最善のことは、ゲームが期待どおりに実行され続けることを保証しながら、移植不可能なコードをすべて区分化することです。新しいプラットフォームへの移行に取り組むとき、あなたの努力は、ポータブルではない区画化された部品の再実装に切り替わります。

したがって、あなたの質問に答えるには、はい、このアプローチを取るには、ソニーと任天堂のライセンスを取得した開発者になるか、一緒に仕事をする必要があります。ソニーの場合、問題のあるPSOne開発プログラムを提供しているかどうかさえわかりません。ソニーのアカウント担当者が明確にするのに役立ちます。

移植作業の焦点となる可能性が高い主なサブシステムは次のとおりです。

  1. グラフィックコードのレンダリング には、最適に実行するために実行されているハードウェアに関する基本的な前提条件が含まれています。APIレベルの互換性は表面的な互換性であり、期待したほどには得られません。レンダラーへのエントリポイントを見つけて、シーンをレンダリングするために必要なデータを決定し、そこからターゲットハードウェア用にすべてのレンダリングコードを書き直すことを計画します。
  2. ゲームの保存ゲームの状態のシリアル化とアーカイブを分離する必要があります。古いゲームでは、多くの場合、#pragmaパックフィールドを使用してfwrite()構造体を使用します。それはまだあなたのために働くつもりですか?
  3. ネットワークWiiゲームは、ターゲットハードウェアでは利用できない高レベルのサービスに書き込みます。低レベルでは、ソケットはまだソケットです。Wiiゲームはどのネットワークサービスに依存していますか?
  4. コントロールあなたがどこから来たのかからあなたが行くところまで、入力の完全な再設計または再想像に欠けているものは、ソフトウェアのレビューが不十分になる結果になります。
  5. メモリ管理コンソールゲームは、システムソフトウェアがヒープからメモリを返す速度、それが引き起こす断片化の量、およびこれらの条件下でゲームが動作するために必要な期間について、基本的な仮定を行うことがよくあります。これらのメモリ管理の前提は、新しいプラットフォームでは廃止されています。オペレーティングシステムからのクッションを提供する独自のメモリマネージャを作成することをお勧めします。また、リリース用にコンパイルされたコンソールゲームは、ほとんどのエラー処理が取り除かれ、メモリ不足を適切に処理しません。
  6. コンテンツボトルネックはシステムメモリになります。必要なアセットをメモリに収めることができますか?テクスチャを使用すると、必要に応じてミップを減らすことができ、グラフィックハードウェアのタイミングを使用すると、遠いクリッピングプレーンを引き込むことができます。アセットがメモリに常駐している場合、モデルの顔の密度を調べて減らすための技術アーティスト、またはよりサイズに適したアニメーションコーデックを実装するためのアニメーションプログラマーが必要になる場合があります。これは非常にゲーム固有です。

また、ビットの互換性(WiiとPSOneはどちらも32ビットですが)、コンパイラの特異性、ビルドスクリプトの非互換性、独自のコンパイラ拡張機能などの問題の標準セットに遭遇します。

ゲームのテストは比較的困難です。経験則として、プレイのすべての主要な側面をカバーする、最大2日間でゲームを実行するのに十分なテスターをチームに配置する必要があります。打ち負かすのに長い時間がかかるゲーム(30時間以上のゲームプレイを伴うRPG)では、完全なカバレッジを提供するには、テストチームをかなり大きくする必要があります。移植を行っているだけなので、テストチームがゲームのすべての壁をパンチして(まだ)クリッピングがあることを確認することなく、新しいコードのカバレッジを最大化するテスト計画を立てることができます。ゲームは一度出荷されました。

ライセンス開発者になるには、申請する必要があります。経験から、ターンアラウンドタイムは良くありません。一般的に言えば、出荷されたタイトルを備えたスタジオと、適度に優れたセキュリティと(比較的)高価な開発キットを購入できる組織化されたオフィスが優先されます。これらの基準を満たしていない場合は、ライセンスを取得した開発者と協力したほうがよい場合があります。

コンソールとゲームの開発は、すでに経験を積んだ人々にとっては挑戦的です。すべてを網羅した本はありません。私の推奨は、システムまたはエンジンプログラマーの立場でタイトルを出荷した経験のある専門家を採用することです。ただし、ゲームにどのタイプのプログラマーとスキルセットが存在するかは、Stackにとってまったく異なる質問です。

于 2009-10-24T06:06:41.000 に答える
3

私が新しいゲームプログラマーだったとき、あるバージョンのエンジンでの作業から新しいバージョンへのいくつかのゲームを移植しました(下位互換性は無視も追求もされていませんでした)。ファイルをコピーして(場合によっては名前を変更して)、新しいプロジェクトのホームに配置するのも少し手間がかかりました。その後の手順は次のとおりです。

  • 再コンパイル
  • 何百ものエラーの多くを修正します[多くの場所で、同じエラーが何度も発生します]

  • 新しいゲームエンジンからの呼び出しを古いコードの適切な呼び出しに「配線」する
  • 古いコードから新しいゲームエンジンへの「ワイヤアップ」関数呼び出し
  • 他の奇妙なことに対処します(たとえば、古いゲームエンジンでは、2Dゲームはテクスチャ自体を「スウィズル」します。新しいバージョンでは、エンジンは(特定のプラットフォームで)それを行いました)
  • #ifdefこれははっきりとは覚えていませんが、コードの一部が実際にコンパイルされ、後で入力する関数スタブが作成されるように、コードの一部が混ざっていた可能性があります。

私が覚えているように、私が何かをコンパイルするまで、それは3、4日でした。(しかし、他のゲームを古いバージョンから新しいバージョンに移植したときに役立ちました!)

タスクの規模は、取得するコードがどのようなものかによって決まります。傍受できる一般的な3D呼び出しがある場合、つまりサンクレイヤーを追加する場合は、ビジネスを行っています。これは、コードの抽象化のレベルによって異なります。正常に動作し、「RenderModel」や「RenderWorld」の呼び出しなどがある場合は、これらの関数、さらにはそれらが機能する構造を置き換えることができます。描画がいたるところに行われていて、呼び出しが「ポリゴンの描画」や「線の描画」、「この高度に最適化されたデータ構造を使用した描画」のようなものである場合は、長いスローガンが発生する可能性があります。

Wii開発キットは必要ありません。与えられたコードが実際に元の環境でコンパイルされている(そして出荷コードと一致している)ことを確認するのが良い場合もありますが、それを信頼して新しい環境で機能させることができる場合もあります。

最後に、WiiがOpenGLを使用しているとは思いません。また、どこに助けを求めるべきか本当にわかりません。

于 2009-10-21T23:37:51.707 に答える
1

あなたがしたいと思うかもしれないことは、ゲームのアーキテクチャを設計することから始めて、新しいゲームがどのようなものであるかについての詳細な仕様を書くことです。

これを取得すると、コードを書き直すため、コンソールを処理しないビジネスロジックの一部を移植できる場合があります。ただし、I / O、ユーザーインタラクション、グラフィックス/サウンドを扱うものはすべて書き直されるため、最初からやり直すことをお勧めします。

仕様は非常に重要です。現在のゲームがどのように機能しているかを確認して、新しいポートが同じユーザーエクスペリエンスを提供するようにする必要がある場合は、それを確認してください。

Wiiで飛び降りて壁に跳ね返って安全に着陸できることを知っている場合、それが経験の一部である場合は、同じバグを保持することをお勧めします。バージョンでは、それは面倒かもしれません。

于 2009-10-22T02:08:45.273 に答える
1

PS1ゲームをiPhoneにうまく移植することは、彼らが非常に異なる方法で機能するというかなりの作業になるでしょう。実行可能だと確信していますが、すべての固定小数点演算とZバッファベースのレンダリングの欠如を実際のグラフィックチップに置き換えるには、多くの作業が必要になります。

Wiiの方がずっと簡単でしょう。WiiAPIはOpenGLと非常によく似ています。ただし、Wiiには、他のGLベースのプラットフォームでは利用できない非常に優れた固定機能機能がいくつかあります。しかし、実行可能である必要があります...

それ以上何も言えないのかよくわかりません。何年にもわたって非常に多くのNDAに署名してきたため、私が言えることと言えないことを100%確信することはできません;)

それでも、移植作業を行うために誰かを雇いたいと思っていて、必要なハードウェアを供給する準備ができているなら、私は無料かもしれません;)

于 2009-10-23T21:17:33.877 に答える