不足しているリソースをどのように処理すればよいですか?


13

ゲームは特定のアセットがロードされることを期待していますが、見つかりません。状況はどのように処理する必要がありますか?例えば:

Texture* grassTexture = LoadTexture("Grass.png"); // returns NULL; texture not found
Mesh* car             = LoadMesh("Car.obj");      // returns NULL; 3D mesh not found

開発中にユーザーが誤って削除したり、破損したり、スペルを間違えた可能性があります。

いくつかの潜在的な応答:

  • アサーション(理想的には開発中のみ)
  • ゲームを正常に終了します
  • 例外をスローして、それを処理しようとします。

どちらが最適ですか?


それを行う1つの方法は、ゲームデータがまだ完全であるかどうかを確認することです。欠落しているデータを自動的に再ダウンロードしない場合。エラー>データの確認をユーザーに依頼>ダウンロード。明らかに、このための小さなツールを作成する必要があります。
シダー

@Sidar最も投票された答えよりもあなたが言ったことが好きです。多分あなたはあなたが何を言おうとしているのかをより良く説明することができます
concept3d

エラーのUさは、時にはゲームを中断させ、人々はそれをプレイ/起動できないことです。たとえばSteamでは、ゲームが正常に動作していない場合、ゲームデータを確認できます。何かが破損/欠落/変更されていると思われる場合、Steamはそれらのファイルを自動的に再ダウンロードします。彼らがどうやってそれをするのか正確にはわかりません。しかし、彼らは明らかにいくつかのデータに対してそれをチェックします。おそらくハッシュコード?私は本当に知りません。しかし、あなたは常に(それか何かに「エラー」と言うだけでテクスチャ)の標準的な代替資産を持つ必要があります
Sidar

@Sidar回答でうまくフォーマットしないのはなぜですか?
concept3d

私はそれがどのように機能するかを正確に知らないし、それについて誤解したくないので。だから私はあなたに適切な答えを与えることができませんでした。
シダー

回答:


19

多くのゲームには、一般的な「エラーマテリアル」と「エラーメッシュ」があり、それらは本当に明らかです。もちろん、ログの警告とこれを組み合わせてください。


この投稿に完全に同意します。ただし、リリース/分散ビルドでは異なることを行いたい場合があります。
ジョンケル

リリースビルドの場合、ハッシュを使用して利用可能なファイルを検証し、欠落または無効なファイルをダウンロードする方法を考えることができます。ただし、開発中に注意を引くには、黒とマゼンタの市松模様のテクスチャを表示するのが間違いなく最善の方法です。モデルには、明らかなはずの巨大なERRORモデルを使用できます。
クリスチャンIvicevic

これはテクスチャにとって意味があります。3Dモデルではそれほどではありません。ほとんどの3Dモデルが欠落している場合はどうなりますか?ゲームはおもしろそうに見えますが、そもそもプレイできるはずです。3Dモデルの幾何学的プロパティに基づいて空間データ構造を計算するとどうなりますか。これは、テクスチャが欠落しているような単純な状況でのみ発生します。しかし、データの完全性チェックは、市販のゲームにとってはより良いアプローチだと思います。
concept3d

1
@ concept3d-少なくともSourceエンジンには大きな明らかなエラーメッシュがあることを知っています(Dota 2テストクライアントで、ヒーローを追加していたときに時々見ました)。レベルデータの大きな帯が欠落している場合は、特にリリースビルドでエラーを発生させるのがおそらく最善ですが、デバッグの目的で、大きな疑問符が踊るのはそれほど悪くはありません。
ロバートフレイザー

6

あなたが持っている場合は異なる解像度資産同じテクスチャを、あなたは、異なる解像度を使用して、状況を救済しようとすることができます。

Texture* grassTexture;
try {
    grassTexture = LoadTexture("Grass.png");
} catch (WhateverExcaption e) {
    grassTexture = LoadTexture("Grass_512.png");
}

場合でも、それが失敗し、救済するための時間かもしれません。


2
キャッチにトグルを追加して、Devでは常に欠落しているメッシュ/ Texを表示することができますが、パブリッシュすると、最初に回復しようとし、明らかでない欠落テクスチャーを持つ場合があります。
DampeS8N
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.