最終ゲームに余分なアセットが残っているのはなぜですか?


28

私は、No Man's Skyのファイルで発見されたもの、ゲームに使用されていない、またはゲームに関連しない多くのことについて読んでいたところです。Watch Dogsファイルに残っているE3設定についても少し前に読みました。ゲーム開発者が最終ゲームで古いファイルや未使用のファイルを残すのはなぜですか?

確かにこれはディスク上の余分なスペースを占有するだけで、ゲームをダウンロードする場合はより多くのデータをダウンロードする必要がありますか?

また、開発者は人々が見つけることができるものを恐れていませんか?


7
一般に、削除を保証するのに十分なデータは使用しません。また、この「未使用」ファイルを削除すると、「未使用」ファイルの一部を使用する他のゲームオブジェクトに実際に問題が発生する場合があります。納期に間に合わせる必要があり、最終的にはコンテンツをカットできるという事実に帰着すると思います。
ライアンホワイト

10
サイドノートとして、カッティングルームの床はこの例でいっぱいです。tcrf.net/The_Cutting_Room_Floor
drawoc

2
1)誰もそれらを削除することを覚えていません。2)はい。3)いいえ
-user253751

他の例はDota2です。開発者が何らかの資産を残すだけでなく、将来のリリースに備えて不完全な機能を備えています。たとえば、新しいキャラクター、アイテム、スキル。そのため、バイナリを逆アセンブルする人々は、ゲームに関する可能な将来のニュースの少なくとも一部を見ることができます(注目すべき例:数年前のコードで見られたピットロード/アンダーロードキャラクターは、数日前に公式に発表されました)。
バクリウ

回答:


35

主要なゲームはビルドパイプラインと呼ばれるものを使用します。これは、すべての異なるディストリビューションのゲームコンテンツの構築を処理する別のツールセットのようなものです。No Man's skyやWatch_Dogsのようなマルチプラットフォームゲームは、ほとんどの場合、プラットフォームごとに異なるアセットを使用します。だから私はそれをあなたの質問に2つの可能な答えを見る方法。

  1. 開発者は、パイプラインから特定のアセットを削除するのを忘れ、実際のゲームにバンドルされました。

  2. 開発者は、期限に間に合わなかったため、パッチまたはアップデート中に後で使用するために、ゲーム内に意図的にいくつかの「未使用」アセットを残しました。ウィッチャーからの悪魔のピットの例3。


16
また、3。意図的に「未使用のアセット」を配置し、モダー/パワーユーザーがそれらを見つけられるようにします。#2と同様ですが、コンテンツが特定のタイトルや将来のパッチでも使用されない可能性があります。
Kroltan

4
Kroltanの#3に対して+1。IIRCウィッチャー3には、未使用のコンテンツに隠れているイースターエッグの例があります。開発者の写真などが入っている、ゲームを修正するために必要な秘密の領域がいくつかありました。
ミルク

3
「削除するのを忘れた」は、それを説明するのにあまり良い方法ではありません。開発者は、アセットの使用を削除したことを知っている場合があります。しかし、別のチームがアセットの使用を開始しました。このような場合、削除の可能性のあるコスト(ゲームを完全に破壊する)は、削除の利点をはるかに上回ります。
アロン

33

複数の人が取り組んでいる大規模なゲームで、参照されているすべてのコンテンツを見つけるの、あなたが考えるよりも難しい場合があります。支援する明示的なツールがある場合でも(ArenaNetでそのようなツールを構築し、Unrealを使用する人は誰でもそれらのツールのUnrealのバージョンにアクセスできますが、Bungieは同じことを行い、それらについて話をするツールさえあります)

そのようなシステムを無効にするコンテンツを参照する方法はいくつかあります。一般的には、システムが追跡できないものでコンテンツを参照するだけです(コードへの暗黙的またはハードコード化された参照をアセットに作成するなど)。

すべてのコンテンツの相互参照を見つける問題を解決したとしても、実際に何かが使用されているかどうかを判断できないという問題があります。一部のアセットはスクリプト内のどこかで参照されている可能性がありますが、そのスクリプトのトリガーボリュームは壁内に誤って配置されているため、コンテンツはゲーム内で生成されません。これを徹底的にテストすることも非常に困難です。

未使用のコンテンツを検出およびフィルタリングするための自動化された(または自動化可能)メソッドが失敗すると、人間の介入という昔ながらの方法が残ります。人間は間違いを犯し、悪い推測をします(他の誰か変更を加えたからではなくても、ファイルはまだ使用されていると考えるかもしれません)。そして、ゲーム内の無関係なコンテンツをイースターエッグとして意図的に残すこともあります。これにつながるのは、自然な人間の誤りです。

それはだ、通常は本当に負荷やファイルサイズの最適化のための多くの針を動かすために、コンテンツの十分な量ではありません。また、大規模なビルドチェーンまたはエンジンで最大または最も遅いアセットをレポートするツールもありますが、そこに焦点を当てているのは、主要な犯罪者の影響を減らし、無駄なバイトをすべて見つけて見つけることではありません。通常。


Arqadeでイースターエッグとして使用されていないファイルの例:Undertaleの「Sansと戦うときに再生される曲」はどこに表示されますか?
フィリップ

1
Starbounlには現在、レシピを教えている部分が削除されたため、「調理済み触手」を取得/作成できないという問題があります。一方、アセットと定義ファイルは、動作するように見えるようにそこに置かれます。そちらで同じ材料から作られたいくつかの異なるアイテムを作成/ピックアップするためのレシピを1つ頻繁に学ぶことを考えると(とにかく食べ物用)、誤ってビットをゲームから除外する方法を簡単に確認できます。
StarWeaver

1
ディスクに含まれるゲームで使用されていないすべてのコンテンツを見つけることができたとしても、一部のゲームは、ディスクの製造後にベンダーが製造する追加費用のアドオンモジュールをユーザーがダウンロードできるように設計されています。ディスクには、ディスク上のゲームでは使用されないがダウンロードバージョンでは有用な10メガバイト相当のテクスチャが含まれている場合、ダウンロードサイズを10メガバイト減らすことができます。
supercat

1
出荷されたゲームで多くの未使用のアセットがあった古い例はMechCommander 2でした。Microsoftがその新しいXNA Buildツールをテストすると、ゲームのテクスチャの40%が未使用であることがわかりました。blogs.msdn.microsoft.com/briankel/2006/01/24/...
ロス・リッジ

注:チューリング完全言語(および最も有用な言語)では、コード行が実行されたかどうかを調べることは解決できません(ハルティングの問題)。これをどうにかしてしまったら、ゲームを捨てて、代わりにノーベル賞を集めるかもしれません。
オーダス

9

他の答えに欠けているのは、これがゲームとは何の関係もないということです。すべてのアプリケーションに影響します。

ファイルは常に存在し、コードは合理的に複雑なプログラムでは使用されません。これは、次の2つのことが原因で発生します。

  • プログラムは時間とともに進化します。
  • コードの一部またはファイルが使用されていないかどうかを把握するための努力が必要です。
    • 上記の労力を費やさずにアイテムを削除すると、アプリケーションの動作が予測不能になります

7

Uri Popov答えに追加/拡張:

  1. プログラムは、既存の資産ファイルの新しい改善されたバージョンとプログラム自体の更新を含む更新パッケージをインストールする場合があります。私の場合、以前のバージョンのアセットファイルを上書きしません。以前のプログラムバージョンへのフォールバックを許可するためです(たとえば、完全に悲惨な更新プログラムを配布したというパニックを想像してください:-))。元のプログラムバージョンはtexture_0.ddsおよび更新されたバージョンのtexture_1.ddsを使用している可能性があります(したがってtexture_0.ddsは必要ありません)。上書き(単一の名前のみを使用)は、新しいアセットファイルを古いアセットファイルで上書きするトリッキーなメカニズムがない限り、プログラムアップデートの削除、つまり元のバージョンへのフォールバックを禁止します。そして、それは誰もがサポートしたいものではありません。

編集:

元の質問へのコメントに反応して、

誰もそれらを削除することを覚えていません

  1. 私は誰もそれらを削除することを敢えてしなかったと言うでしょう。そのファイル(現在欠落している)ファイルXのロードポイントでゲームに十分なエラートラップ(誤って、無知、エラー、キーパーソンが退職したなど)がなく、激しいテストにもかかわらず問題が発見されなかった場合はどうなりますか?読み込みは「3回ごと」、36のレベル35でのみ発生し、4週間の激しいゲームでしか到達しないとしましょう:-)。ソフトウェアのクラッシュによる評判の低下は残忍な現象であり、最悪の場合、破産した会社に終わる可能性があります。そのファイルには手を触れない方が良いです:-)。

4
「だれも削除しなかった」ための+1。多くの場合、未使用の資産を削除しないと、わずかなディスク容量しかかかりません。チームの他の誰かがまだ使用しているアセットを削除すると、大きな紫色のチェッカーボードが残ったりクラッシュしたりする場合、会社の評判が非常に悪くなる可能性があります。
パトリックM

2

ゲーム開発者が最終ゲームで古いファイルや未使用のファイルを残すのはなぜですか?

確かにこれはディスク上の余分なスペースを占有するだけで、ゲームをダウンロードする場合はより多くのデータをダウンロードする必要がありますか?

また、開発者は人々が見つけることができるものを恐れていませんか?

ゲーム開発者は、未使用のファイルをすべて見つけて削除するための労力を費やしたくないため、最終ゲームで未使用のファイルを残します。すべてのゲームは少し余分な材料を使用して問題なく動作し、時間はお金です。クリーンアップはコストを増加させます(これがどのように自動化されるかに依存します)。

余分なスペースが必要であり、より多くのデータをダウンロードする必要があることを意味しますが、これは通常、開発者の問題ではありません。

開発者が何かを恐れる必要があるかどうかはわかりませんか?なぜ彼らはすべきですか?余分なファイルに妥協がない限り(本当に悪いアートワーク、上司や顧客についての冗談など)、彼らはおそらくあまり気にしません。であるが、いくつかの例彼らは実際にプレイヤーが資産に検出かもしれないものを恐れています。


Not sure if developers need to be afraid of anything people might find?Titanfall 2の技術テストがPCに届かない理由を読んでください。
TMH

@TomHartそのとおりです。この場合、彼らは恐れていた。他のケースでは、質問で言及されたようなものではなく、追加の資産が含まれていました。恐れるレベルは開発者によって異なると思います。
トライラリオン

1

ほのめかされていますが、他の回答では完全には触れられていません。すべてコストになり、コストの一部はあなたが思っているよりもトリッキーです。

最も明らかなコストは、誰かがそれらを削除しなければならないことです。これで、インターンをケースに入れて、実際のゲームでは不要なファイルを削除するようにファイルを検索するように指示することができます。しかし、それでも、あなたはこれにお金を払わなければなりません、そして、たとえあなたがインターンを支払わないモンスターだからといって、開発チームのためにピザを注文するような有用な何かをそのインターンにさせることができたかもしれません。まだ費用がかかります。

あまり目立たないコストは、削除しようとしているリソースが理由で入れたことです:あなたは絶対に理由が時代遅れであることを確認してください?確かに、デモ用にこのコードを書いたのでもう必要ありませんが、それは完全に本当ですか?他のライブラリに移行するのを忘れた便利な関数を作成しましたか?Staceyは、実際のゲームで終わったデモ用に本当にクールなグラフィックを作成しましたか?内部シミュレーターは、テストに使用した古いレベルを引き続き使用しますか?

ゲームを作ることはビジネスです。たとえそれが金makingけビジネスでなくても、リソースが限られたビジネスです。個々のビジネスケースを作成しなくても、すべての決定には費用便益分析が必要です。そして、単純な事実は、ゲームにそれらのアセットを残すコストがわずかに大きいダウンロードであり、メリットはリリースの直前に何かが爆発するリスクが大幅に減少することです。

「それほど明白ではない」段落のこれらの疑問符はすべて、不確実性を表しています。あなたはただ知りません。そして、あなたがビジネスを営んでいるとき、あなたはあなたの未知のものを知られているものと交換しなければなりません。そして、知られているのは、あなたが構築したパッケージは、たとえそれが少し膨らんだとしても、テストに合格したということです。

ハッキングの誘導に使用される可能性のある開発プロセスに関する情報漏洩など、他の潜在的なコストがありますが、テストプロセスをそのまま通して行ったので、実際に心配する必要はありません。

tl; dr:4%大きいダウンロードは誰にも気付かないでしょうが、必要なファイルを削除してゲームを中断した場合には気付くでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.