質問

この質問は、提起されたものと非常に似ています ここ.

私の問題は、私がこのような地図を持っているということです:

Main Map

このマップは、2D Perlinノイズを使用して作成され、対応する要素の高さまたは勾配に基づいて、地形の各要素にタイプと色の値を割り当てた作成された高さを介して実行されます。マップアレイは2次元で、画面サイズの正確な寸法(ピクセルあたりピクセルあたり)であるため、1200 x 800世代ではリグで約2秒かかります。

強調表示された長方形にズームインします:

http://i.stack.imgur.com/hrZnM.png

明らかにサイズが大きくなると、詳細が失われます。そして、ここに問題があります。その場で追加の詳細を作成してから、プレーヤーが動き回るときにディスクに書き込みます(プレーヤーは単にグリッドに沿った動きに制限されているドットになります)。これを行うための2つのアプローチがありますが、最初に思い浮かび、すぐに実装しました。

http://i.stack.imgur.com/bbLia.png

これは、前の画像の黄色のグリッドスペース(中央の左側)によって強調されている古い地形のサンプリングされた要素から作成された新しい偏ったローカル地形のズームインビューです。ただし、このシステムには、たとえば、黄色のグリッドスペースを1つ左に移動してビーチタイルに移動すると、地形が完全に変化するため、大量の変更が必要になります。

http://i.stack.imgur.com/6shKz.png

そのため、適切に機能するためには、過度の量を実行する必要があります。次の世界に到達するために必要な地元の世界の40程度のグリッドスペースを移動するにつれて、単語は補間であると思います。世界中のタイル。それは複雑で非常に不可能なようです。

2番目のアプローチは、元のマップのグリッドを小さなビットに分割し、各正方形を4で割ることです。私はこれを実装していませんが、実際に詳細を増やす方法でどのようにするかはわかりませんが、それはおそらく最良の解決策になると思います。

これにどのようにアプローチできるかについてのアイデアはありますか?それはローカルで飛行中でなければならないことに留意してください。マップの解像度を増やすだけで、私はどんな犠牲を払っても避けたいものです。

役に立ちましたか?

解決

Perlinノイズを書き換えて、位置の関数にします。その後、オクターブ(したがって詳細レベル)を増やし、より高い解像度でエリアをリゾートすることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top