シンプルなマップ、4つのバイオーム、およびそれらの配布方法


16

基本的な考え方は次のとおりです。私は、ランダムに生成されたオーバーワールドといくつかのダンジョンの入り口がその周りに散らばっている、ローグっぽい、おそらくドワーフ要塞のようなゲームを持っています。私はすでに基本的に覆われたダンジョンを持っていますが、私は世界の側面に固執しています。

スクリーンの2Dマップと見なされるこのオーバーワールドには、おそらくそれぞれ独自の合計スクリーン数を持つ4つの異なるテーマまたはバイオーム(草地、砂漠、雪、沼地)のブロブのような分布が必要です。マップが8x8で、64のユニークな画面を提供するとします。それらの半分は草原、4分の1の砂漠、そして沼地と雪はそれぞれ4分の1になります。

町と出発地を含む可能性のある世界地図のモックアップ、ただしダンジョンの入り口はない

パレットの削減により、雪は沼地と同じ色になったようです。もともと、下隅には8つの雪スクリーンがあり、中央にはわずかにずらした8スクリーンの沼地がありました。申し訳ありませんが、ロケーションマーカーは無視してください。

私が手に入れた最高のものは、いくつかの蛇の形でした。そして、雪の中を砂漠で蛇行するような(またはその逆の)無意味な組み合わせで十分であることがよくありました。私の人生では、どのようにすてきでブロビーになるのか、ましてや、それを臨床的な(?)の意味を持たせることはできません。では、モックアップのようなバイオームマップを生成するにはどうすればよいですか?

さて、リクエストにより、世界は実際にその例よりもそれほど大きくありません。そして、雪が砂漠に触れないという特別な制限を加えて、テーマの外観を決定するいくつかの塊を広げる方法が必要です。画面はスクロールせず、画面が「砂漠」に設定されている場合、画面上に草はありません。


サードパーティのライブラリを使用するつもりですか、それとも独自のソリューションをコーディングしますか?
ウィリアムマリアガー

私は思い好む自分をコーディングします。

バイオームのサイズは固定されていますか?
kaoD

マップ生成で従う正確なルールのポイントリストを使用して投稿を編集できますか?私たちが何を目指しているかを正確に知ることで、問題に対処するのがより簡単になるでしょう。
ウィリアムマリアガー

編集し、バイオームのサイズ、まあ、例えば私はそれらで行った。16x16の世界の場合、砂漠まだ4分の1の領域になりますが、それは主に特定の領域が存在することを保証するためです。
カワ

回答:


8

この猫のスキンを作成する方法はたくさんありますが、もっと興味深いのはセルオートマトンを使用することです。空のグリッドから始めて、ランダムな位置にいくつかのシード開始セルを追加します。これらは、いくつかの基本的な非混合タイプのバイオームでなければなりません。説明:草、砂漠、雪、海。

独自のデザインの成長ルールに基づいて、ランダム性を特徴とする可能性があります(CAの概念を技術的に破ることを気にしませんか?)。あなたが海にいて、草や沼地の隣にいる場合、沼地に変わるかもしれないという追加のルールがあります。雪の近くにいると氷になり、砂漠の近くにいると乾燥して砂漠になることもあります。

同じことは他のミックスにも当てはまります。理論的には、凍った沼地、ツンドラ、草原の広大な森林から成長した広大な森林からのジャングルのようなサブミックスでさえもです。

可能性は無限であり、継続的でもあります。これらのルールはすべて単純なので、時間とともに変化する環境を実装できます。高さ情報、およびそれを考慮したルールと組み合わせると、湖や川を成長させ、山や他の派手なものよりも森林の成長をブロックすることができます。

その高さマップは、パーリンノイズ、ダイアモンドスクエア、または他のCAモデル全体の結果である可能性があります。実際、プレートのテクトニクスをモデル化し、山を押し上げ、trenchに沈み、川を下って峡谷を作ることで、時間が経つにつれてそのマップを変更することもできます。

このウサギの穴は永遠に広がります。


CAの提案に対する賛成。Valmondのコメントとよく一致しています。

CAソリューションがこの問題に対していかにシンプルであるかに驚くでしょう。単純なルールとランダムな開始マップにより、非常に詳細で「現実的な」外観の風景を作成できます。
DampeS8N

CAの原則に沿って行った。砂漠と雪を分けておくのは絶対的な位置のルールだけなので、まだ完全ではありませんが、今のところはうまくいきます。

1
雪/砂漠の問題に対するオプションの解決策の1つは、雪が砂漠と出会う異なるタイプのバイオームを作成するルールを設定することです。言って、沼。その後、沼地は通常どおり成長し続けることができます。あなたはまだ雪/砂漠の境界線を持っているかもしれませんが、実際にはそれはいくらか自然です。実際、地球上の砂漠のほとんどは雪に覆われています。-要するに、雪は、隣人が砂漠である場合、沼地に変わるというルールを持っているかもしれません。
DampeS8N

11

短い答えですが、あなたは本当にこの記事をチェックアウトする必要があります-www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/それは乾燥した土地とバイオームのランダム生成の世代に1つのアルゴリズムを説明します指定された湿度ゾーンと高度地域に基づきます。しかし、あなたの場合は、あなたが望む分布にあなた自身の値を設定するだけです。

(大きな編集)どのマップ生成の概念を適用する必要があるかについて、これをより明確にします。浮動小数点値で、画面ごとに1単位の座標系を使用します。ボロノイ図を作成しているように、これらの座標内に小さなランダムな点のセットを生成しますが、実際にはランダムな形状を作成しません。代わりに、図はバイオームが設定された後にマップによって暗示され、近似されます。

各ポイントは、各バイオーム領域の中心です。独自のルールを設定して、ポイントをバイオームに関連付けます。たとえば、南または北にあまり遠くない東に砂漠が必要な場合、特定のX値よりも大きく、特定のYの範囲内にあるすべてのポイントには、砂漠があります。

各画面をこれらのポイントの1つに関連付けます。これは、XY座標で画面の中心(4.5、8.5など)を取得し、画面の中心に最も近い点を返すことによって行われます。

画面のグリッド上の形状図の大まかな図を次に示します。シェイプを囲む線にはあまり関心がありませんが、画面がシェイプ領域をどのように近似し始めるかを説明するためにあります。

ボロノイグリッド

画面ごとに繰り返し、それぞれに独自のバイオームを与えます。


私は前にそれを見たことがあります、そして、それは私の好みのために少しバズーカ・オン・ア・カです。

大丈夫、それは穏やかにそれを入れています。それは非常にバズーカ・オン・ア・カです。8x8の例は単なる例ではありませんでした。世界は、そのソリューションを正当化するほど大きくはありません。
カワ

さて、私は今見ます。バイオームをマップのタイルごとに区別する必要はありません。また、この記事で提案されているコンセプトは、著者に合わせて作成されているように見えますが、一部を選択することができます。私は答えをより明確にするために編集しています。
ChrisC

まだ複雑すぎる解決策。ここで使用する高さや湿度はありません。すべてのIの必要性、私がすることを意図し、すべて尋ねるためには、のようないくつかの余分なルール「雪が近すぎる砂漠に取得することはできません」以下、必要な量まで砂漠、沼地、そして雪の塊「広がる」の種類にはいくつかの方法でした。

@Kawa:掘り下げて独自のソリューションを作成する準備ができているようです!私が言うことができることから、あなたはそれをすべてあなたの心の中で視覚化した、それをやるだけだ!:)それがそうであるように見える限り、それは世界の究極の地図ジェネレーターである必要はないことを覚えておいてください。;)
ゾロモン

1

回答1:

雪と砂漠を育て、それが終わったら、(禁止されている)交差点を探し、そこに(多かれ少なかれ)沼地を育てます。

リンスとリピート。

回答2:

「blob」の部分については、(要求に応じて)コメントを投稿に移動しました。

繰り返しで成長する場合、つまり 砂漠の1ポイントを設定し、任意の砂漠ポイントの周りにランダムに成長します(毎回既存の砂漠ポイントの1つをランダムに取り、その側面の1つに(まだ何もない)1ポイントを追加します)、あなたはblobby効果を得る必要があります(たとえば長い行はありません)。

また、ルールを追加して、近くのタイルに雪がある場合に砂漠のタイルを作成できないようにすることもできます。


これは、問題のブロビーの側面にはまったく役立ちません。

2
繰り返しで成長する場合、つまり 砂漠の1ポイントを設定し、任意の砂漠ポイントの周りにランダムに成長します(毎回、既存の砂漠ポイントの1つをランダムに取り、その側面の1つ(まだ何もない)に1ポイントを追加します)。たとえば長い行はありません)。
ヴァルモンド

ルールを追加して、近くのタイルに雪がある場合に砂漠のタイルを作成できないようにすることもできます。
ヴァルモンド

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