ランダム/手続き型と以前に作成されたレベル生成


31

ランダム/プロシージャ生成を使用した場合と事前に作成したレベルを使用した場合の利点/欠点

アイテムがランダムに生成された地形で配布する問題である可能性があり、生成された地形が奇妙に見えるかもしれないという事実以外、私が考えることができるものはほとんどないようです。

ただし、以前に作成したレベルの欠点は、レベルエディターを作成する必要があることです。何を使用するのが良いかを判断できません。

回答には、手続き型と既成の両方のコード/例、および賛否両論を含めることができますか?

回答:


26

最初に主な質問に簡単に答えると、手続き的に生成されたゲームワールドの主な利点は次のとおりです。

  • 世界は巨大になる可能性があり、手動で設計されたゲーム世界よりもはるかに大きくなる可能性があります。

  • プレイヤーは常に新しい何かを発見できるため、ゲームごとに世界(または少なくともその一部)を再生成できます。

逆に、手続き型生成の主な欠点は次のとおりです。

  • 使用される生成方法によっては、ワールドが常にプレイ可能であること、つまり、ワールド生成に不運だという理由だけでプレイヤーが進まないことを確認できない場合があります。

  • 完全にプレイ不可能な世界の生成を避けることができたとしても、ランダムな世界の生成は非常に多様な難易度につながる可能性があります:プレイヤーは、必要なものをすべて手に入れるのに便利に並んでいる場合があります。 。

    長期間にわたって、このようなランダムな変動は平均化する傾向がありますが、ゲームの難易度が重くフロントローディング(サバイバルゲームに典型的)の場合、悪いスタートはゲームを台無しにし、幸運なスタートはすべてのチャレンジを奪う可能性があります。

  • 手続き型の生成が不十分だと、世界は単調で退屈な感じになります。ランダムに生成された多数の迷路を見た後、それらは細部が異なっていても、すべて同じように見え始めます。

  • また、ゲームワールドが各ゲームで完全に再生成される場合、プレーヤーが以前のゲームから認識できる固定された場所や機能はありません。このような親しみの欠如は、プレイヤーが感情的なレベルでゲームに参加したり、他のプレイヤーと経験を共有したりするのを難しくする可能性があります。

どちらのリストでもカウントできるものが1つあります。ゲームごとに世界がランダムに再生成されるゲームでは、すべてのプレイスルーが異なるため、「ウォークスルー」ガイドのようなものはありません。

(この再現性は、テストとデバッグの問題になる可能性がありますが、少なくともデバッグモードでRNGシードを指定できるようにすることで、および/または「チート」コマンドを提供することで少なくとも部分的に回避できますさまざまなステージへの早送り再生。)


ただし、デメリットリストを見ると、ほとんどの場合、純粋なプロシージャ生成のデメリットが説明されていることがわかります。それらの多くは、手動で生成されるコンテンツと手順で生成されるコンテンツを混在せることで回避できます。

たとえば、プレイヤーは常に固定された手動で設計された町から開始し、多かれ少なかれ固定されたホーム地域に囲まれている可能性がありますが、町から遠く離れた場所をランダムに生成して、プレイヤーが探検するために不慣れな地域を常に提供することができます。

手動で設計された他の町や他の場所が世界中にランダムに配置されている場合もあります。そのため、プレイヤーはそれらを見つける必要がありますが、到着すると何を期待するかがわかります。逆に、山などの顕著な特徴を手動で配置することもできます(少なくとも固定された開始位置の近くに)が、地形の詳細はランダム化できます。

デッドロックと難易度の変動を引き起こすランダムな配置に関しては、手続き型世界生成アルゴリズムの上にさまざまな一貫性とバランスのチェックを実装することで対処できます。たとえば、プレーヤーが水を渡るために特定のアイテムを必要とする場合、プレーヤーが水を渡らずにアイテムに到達できるように、少なくとも1つのそのようなアイテムが配置されるようにコードを含めることができます。

同様に、プレイヤーがレベルxに到達する前にバランスを崩すような素晴らしさの杖が配置されないように、おそらくプレイヤーが到達できる固定位置に少なくとも1つが配置されるように、アイテム配置ルールを調整することもできます彼らが生き残るために必要とする段階に到達する前にそれを。


ところで、手続き型および手動で生成されたコンテンツメッシュをほぼシームレスに作成する一般的な方法は、手続き型ワールドジェネレーターを使用して手動生成プロセスを開始することです(たとえば、必要に応じて村や山のピークを生成するなど、適切に調整されます) )設計している領域を初期化してから、手動で調整して必要な詳細を追加および調整します。(これにより、手動の変更とジェネレーターのシードと使用されたパラメーターのみを保存することで、非常にコンパクトなレベルのストレージも可能になります。)

手動コンテンツと手続き型コンテンツを組み合わせる他の方法には、手動で設計したレベルに空白スポットを残し、ランダム化されたコンテンツで埋めることが含まれます(たとえば、城には、アウトラインと出口のみが固定されたランダムに生成された迷路をダンジョンに含めることができます)、または手動設計では、レベルの一部の広い輪郭(町内の家の配置など)のみを指定し、詳細(各家の正確な外観など)をランダムに選択することができます。

実際、ゲーム世界を完全に固定している多くのゲームでさえ、世界の生成にはいくつかの側面があるため(自然に見える地形の作成や、個々のツリーの森への配置など)、レベルデザインプロセスの一部として何らかの手順生成を使用します手作業で行うのは困難で退屈ですが、自動化は比較的簡単です。

逆に、ほとんどの手続き型ワールドジェネレーターは、少なくともいくつかの手動で設計されたオブジェクトと要素を使用して、ワールドを構築します。複数のレベルのネストされたランダム/手動生成を簡単に行うこともできます。たとえば、手続き的に生成された世界には、手動で描画された輪郭を持つ手続き的に生成された木に囲まれた手動で生成された町を含めることができます。


また、手続き型コンテンツの生成は、必ずしも固定された世界と互換性がないわけではないことに注意してください。固定されたRNGシードを選択し、それを使用してワールドを生成できます。これは、プレイヤーが探索できる巨大な世界が必要であるが、すべてのゲームとすべてのプレイヤーで同じ世界を維持したい場合に役立ちます。

これを行う場合(またはしない場合でも)、複数のRNGインスタンスを使用して階層型で動作するようにワールドジェネレーターを設計する必要があることに注意してください。サブリージョンを生成するために使用し、各サブリージョンに異なるシード値を割り当てます。その後、リージョンジェネレーターは、リージョンの生成に使用する別のRNGインスタンスをシードするために使用します。これは、「バタフライ効果」を回避するためです。マップの最も小さい部分の最も細かい部分でさえも変更すると、RNGが同期しなくなり、世界の他のすべてが完全に異なってしまいます。

バタフライ効果を避けるためのもう1つの重要な方法は、特にプレイヤーが「オンザフライ」でワールドを生成している場合、通常のRNGを完全に回避することです(ただし、生成のようなプレーヤーが新しいレベルを入力したとき)、代わりに内部状態を保存しない乱数生成メソッドを使用します。たとえば、プレーヤーが入ろうとしているサブリージョンのシードを選択する場合、ワールドジェネレーター全体がサブリージョンの座標(および独自のシード全体)を取得し、それらをハッシュ関数に供給してサブリージョンシードを生成できます。こうすることで、プレーヤーが入力する順序に関係なく、各リージョンは常に同じように見えます。


追伸 余談ですが、手続き生成に使用される実際のコードに関する最後の質問について簡単に説明します。ああ、私はそれをせずに意味のある意味で本当に釈明だとは思わない多く、それらを使用してゲームがあるとして手続の世界の生成を行うためのさまざまな方法として、文字通りがあるので、あなたが提供してきたよりも詳細。

たとえば、手続き的に生成されたすべての探索ゲームの偉大な祖父はおそらくRogueであり、そのレベル生成アルゴリズムは単純に、大きな長方形レベル内に長方形の部屋の束をランダムに配置し、それらの部屋を通路に接続する(そして階段を配置する)それらのいずれかの次のレベル)。NethackからDiabloシリーズまで、その多様な後継者はこのシステムについて多くの方法で詳しく説明しましたが、ほとんどはグリッドマップにランダムに配置された部屋、ダンジョン、迷路からなる明確なレベルの基本的な考え方を保持しています。

逆に、オープンな屋外設定を特徴とするゲームの場合、何らかの種類のフラクタル地形生成アルゴリズムから開始し、その上に他の機能(川、森林、町など)を構築することをお勧めします。または、Minecraftのようなものを実行して、ランドスケープのどの部分がそれぞれ地面と空気であるかを決定するランダムな3D プロシージャルテクスチャを生成し(下のブロックが地面になりやすいようにスケーリングおよびバイアスされます)、次に水のような機能をオーバーレイします、土/岩、植生など。

もちろん、宇宙探査のゲームを書いている場合、上記のどれも当てはまりません。その場合、密度関数に従ってランダムに配置された星系の束を生成し、その後ランダムに生成するだけです。それぞれの星と惑星のセット。あるいは、ユークリッドでない風景を探索するようにプレイヤーを設定している場合、その場合は、まったく異なる一連の課題に直面することになります(特定の半径内のボリュームが多項式ではなく指数関数的に増加するという事実など)大きなマップをメモリに保持するのは非常に困難です)。


7

手続き型生成の利点

  1. マップ/デザインを、手作業で作成するよりもはるかに大きい、本当に大きなサイズに簡単にスケーリングできます。

  2. 地形のチャンクがオンザフライで作成されるシステムを作成することにより、永続メモリからチャンクにロードするコードを記述する必要がなくなります。

  3. 長期的には、手動のマップ編集よりも手順設計を使用すると、より実行可能なレベルを発見できる場合があります。

  4. 「エクスプローラー」ゲームでは、プレイヤーが退屈しないようにするために、互いに異なる数十、数百、または数千ものレベルを生成できます。

手続き型生成の欠点

  1. 生成された地形が「どのように見えるか」を確認するには、多くの作業が必要です。

  2. 「テストレベル」を作成するのは面倒です。

  3. あなたが言及したように、アイテムや他のそのようなものの配置は慎重に行われなければなりませんが、トップダウンのエクスプローラーゲームの場合、これはおそらくあなたが考えるよりも問題ではないでしょう。

  4. 広範なテストを行わない限り、手作業でレベルを作成した場合よりも、特定の手続きレベルでゲームプレイが完全に中断するシナリオが発生する可能性があります。

  5. 本当に複雑な地形では、基本的なマップ設計ツールとファイルローダーの作成に費やしていたはずのバグ修正と設計作業により多くの時間を費やすことになります。

手動設計の利点

  1. ゲームデザイナは、各レベルのコンテキスト内でゲームプレイが正常に機能することをより確信できます。

  2. プロシージャル生成よりも簡単に「詳細」を作成して配置することができます。

  3. 山を流れる水など、一部の地形は、手続き的に作成するのが非常に困難です。そのためには、高度マップの非常に徹底した評価が必要になりますが、これは設計が難しい場合があります。

  4. 「エクスプローラー」ゲームを構築していると言っているように、「直線的な経路」に沿ってプレーヤーをガイドするのは簡単ですが、これはそれほど関連性がないかもしれません。

手動設計の欠点

  1. 広範囲にわたる変更を地形に適用するには時間がかかりますが、手続き型生成では、いくつかの値を変更するだけでまったく異なる地形が生成されます。

  2. 各マップをメモリに保存する必要がありますが、これは小さなレベルでは許容される場合がありますが、大きなレベルでは手続き型生成が唯一の選択肢になる場合があります。ゲームの永続的なメモリインストール要件が増加します。

  3. マップエディタとファイルロードシステムの構築が必要になる場合があります。

これはおそらく、私のプロジェクトが完全に手続き型であり、その落とし穴を知っているためでしょう。エクスプローラーゲームの場合、各マップの大きさを検討し、個別のマップ編集ツールを作成することを望んでいるかどうかを検討することをお勧めします。


(ここではなく、どこかに)プロシージャ生成のコードを表示できますか?使用しませんが、マップを手続き的に生成しようとしたことがありません。(これが私がこの質問をした理由です:P)、また、私はあなたの答えを支持しましたが、他の人の意見が欲しいので、すぐには受け入れられないかもしれません
ピップ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.