Scorched Earthのような地形を生成するにはどうすればよいですか?


12

私はウェブ開発者であり、自分のゲームを書き始めたいと思っています。

慣れ親しむために、ここではJavaScriptとcanvas要素を選択しました。

Scorched Earthでそのような地形を生成したいです。

焦土

私の最初の試みは、y値をランダム化するだけではいけないことに気づきました。山と谷にはある程度の正気がなければなりませんでした。

私は少しグーグルで検索しましたが、私にとって十分なシンプルなものが見つからないか、間違ったキーワードを使用しています。

ゲームプログラミングはまったく新しい(2003年にVisual Basicを使用してBreakoutを作成したため)ことを念頭に置いて、この例で何かを生成するために使用するアルゴリズムの種類を教えてください。

回答:


18

中点変位アルゴリズムはまさにあなたが望むものです。

そのリンクは次のようなものを生成できます:

ここに画像の説明を入力してください

または、使用するパラメータに応じて、画像が好きです。Cソースはこちらから入手できます


このおかげで、私はまだJavaScriptでそれを実装する方法がわかりませんが、願わくばその記事を読み終えたときにそれがより明確になることを願っています。
アレックス

私が編集したばかりのCソースがあります。実装するのにあまり問題はないはずです。)
共産主義者ダック

@The Communist Duckありがとう、私は以前にCに手を出したことがあります。
アレックス


@alex、実装では何らかの再帰を使用する必要があります。現在、ランダムな変動が右側に減少する、ランダムなyコンポーネントを持つ単純なラインがあります。
ユハシルヤラ

5

中間点変位アルゴリズムを使用した後、わずかな平滑化が続く可能性があります。たとえば、低域フィルタリングで鋭すぎるスパイクを除去します このアプローチは、焦土の場合と同じではありませんが、同様の結果が得られるはずです。

Scorched Earthは重力と落ちてくる土を何とかシミュレートしたと思います。たとえば、急勾配の丘はできません。さもないと、土が落ちて、急勾配が少なくなります。


1

使用できる別のアプローチがあります。ランダムに生成された多数の正弦波を足し合わせて、画面に収まるように結果をスケーリングできます。サンプルのスクリーンショットよりも滑らかで、おそらく人工的なものですが、実際には非常に簡単で素晴らしい結果が得られます。

ここでソースをJavaScriptで見ることができます。さまざまな種類の地形を取得するために、いくつかのパラメーターをいじるのは本当に簡単です。

https://github.com/fmstephe/Tankwars

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