2

これがゲーム デザインに関連していることは知っていますが、StackOverflow の FAQ を読んだところ、ソフトウェア アルゴリズムに関する質問をここで行うことができると記載されています。これがゲームデザインのほうが良い場合は、誰かがそれを動かすのを手伝ってくれることを願っています, ありがとう!

マルチスレッドの手続き型ダンジョンジェネレーターを設計しています。ただし、どのような問題に遭遇する可能性があるのか​​ 疑問に思っています.マルチスレッドを明確に示す多くのアルゴリズムを見つけることができませんでした.

作成する必要がある 3 つの異なるオブジェクトがあります。複数の「部屋」を収容する「世界」と、各部屋には潜在的な「オブジェクト」が収容されます。

現在のアルゴリズムは次のように機能します。

Step 1: Generate World
Step 2: Generate Rooms and Objects concurrently

ワールドには、ルーム リストと「利用可能なオブジェクト リスト」があります。ルーム作成メソッドは、ルームを生成し、それらをワールドのルーム リストに追加します。-- オブジェクト作成プロシージャは、ルーム プロシージャとはまったく通信しません。むしろ、オブジェクト作成手順は、ワールドのルーム リストからランダムなルームを選択し、ルーム内にランダムなオブジェクトを生成します。

これに関する唯一の問題は、オブジェクトの作成手順が途中で終了する場合です。つまり、オブジェクト作成手順よりも後でルーム作成手順が終了したため、ルーム リスト内の一部のルームだけにオブジェクトが作成されます。

他に問題はありますか?また、そのようなアルゴリズムの開発に関するアドバイスや経験はありますか?

4

1 に答える 1

2

まず、あなたが言及した問題は実際の問題ではありません.3つのステップで作業する必要があるからです:

  1. 世界を生成する
  2. 部屋を同時に生成する
  3. オブジェクトを同時に生成する

この順序で、すべての部屋が存在することが保証されます。とにかく、パフォーマンスの観点から、2 + 3 を一緒に保つことから得られることはあまりありません。

ただし、同時実行でよくある主な問題は、結果を結合するときです。ルームがリストに保持されている場合、そのリストへの追加を同期する必要があり、処理が遅くなります。実際にワールド空間にルームを作成し始め、並行して生成されたルームが同じ空間を占有しないようにする必要がある場合は、さらに複雑な問題が発生します (ルーム内のオブジェクトについても同様です)。

于 2011-10-26T05:10:01.803 に答える