2012-02-02 4 views
1

私は水中基地の中で行われる私のplatformerゲームのいくつかのレベルを生成したいと思います。したがって、横から見ると狭い廊下でつながったいくつかの主要な「ドーム」から構成され、左から右へナビゲートされます。2Dプラットフォームのための建物内装を手続き的に生成

一般的にプラットフォームレベルを生成するための情報がいくつか見つかりましたが、「スムーズ」なジオメトリ - セミランダムと若干混沌とした丘、アライメントされていないフローティングプラットフォームなどに集中する傾向があります。私は自分のレベルを建物に似せて欲しいので、私は長いコヒーレントに配置されたプラットフォームを望んでおり、好ましくは「浮動」なプラットフォームはほとんどない。

難易度を厳密にコントロールすることは問題ではありません。私の焦点は物理学/飛び越えではなく、ナビゲート可能であり、私のレベルでは十分に非論理的ではありません。

私はいくつかの基本的な手順を考えることができます:

  1. 無作為化寸法の長方形の乱数を生成し、ラフなライン上に配置します。おそらく、これを行うには、短くランダムな散歩を各矩形を配置するために右に偏らせてください。
  2. 各矩形の内側に1つの建物セクションを生成し、廊下のドアを完成させます。
  3. 廊下のドアを接続します。

個々の建物を生成することはもう少し不思議です。私は四角形やドーム、傾斜した屋根や傾斜した側壁を持つ台形などのランダムな形状を選んだ後、内部にランダムな点をいくつか選んで壁に当たるまで左右のプラットフォームを描きます。その後、トップダウンスキャンは、いくつかの経路探索を行い、すべてのレベルにアクセス可能であることを確認するためのはしごを描きます。

A very rough drawing (purple shows doors to other buildings)

私はMATLABでlevelgenルーチンを作る検討していますが、私は、C#の/ XNAで私のゲームを作っています。

私の質問は、誰にもこれに関するアドバイスがありますか?この種の世代、特にアルゴリズムを扱うリソース(論文、チュートリアル、プロジェクト、人間のためのレベル設計ガイドなど)はありますか?

遺伝的アルゴリズムを書くことは可能でしょうか(おそらくどの結果が絶滅するかを手動で決めることができます)。

答えて

2

あなたの既存のプランはやや実現可能です。ランダムな部分から一貫性のある全体を生成することは難しいため、建物のアウトラインから始めるトップダウンアプローチは正しい方法です。プラットフォームレベルではなく手続き的に生成された建物を検索したいかもしれませんが、あなたが望むレベルの正確なタイプの既存の資料を見つけることはおそらくありません。

独自のルックで異なるレベルのセットを作成できるように、複数のアルゴリズム(または1つのパラメータセット)を使用することもできます。

また、Matlabでの生成というこの概念は誤っているようです。あなたはあなたのゲームのレベルジェネレータが欲しい!あなたは乱数ジェネレータの "良い"シードのリストを保存することができますが、ランダムなレベルを行うオプションを持つことは素晴らしい考えのようです。