Wie erstelle ich Terrain wie das der verbrannten Erde?


12

Ich bin ein Webentwickler und möchte gerne meine eigenen Spiele schreiben.

Aus Gründen der Vertrautheit habe ich mich für JavaScript und canvasElement entschieden.

Ich möchte in Scorched Earth ein solches Terrain erzeugen.

Verbrannte Erde

Bei meinem ersten Versuch wurde mir klar, dass ich den yWert nicht einfach nach dem Zufallsprinzip bestimmen konnte . Die Gipfel und Täler mussten vernünftig sein.

Ich habe ein bisschen gegoogelt, aber entweder finde ich nichts Einfaches für mich oder ich verwende die falschen Keywords.

Können Sie mir bitte zeigen, welche Art von Algorithmus ich verwenden würde, um etwas in dem Beispiel zu generieren, wobei zu berücksichtigen ist, dass ich in der Spieleprogrammierung völlig neu bin (seit ich Breakout 2003 mit Visual Basic sowieso gemacht habe)?

Antworten:


18

Der Mittelpunktverschiebungsalgorithmus ist genau das, was Sie wollen.

Dieser Link kann ungefähr so ​​aussehen:

Bildbeschreibung hier eingeben

Oder wie Ihr Bild, je nachdem, welche Parameter Sie verwenden. Es gibt C - Quelle verfügbar hier .


Vielen Dank dafür, ich bin mir immer noch nicht sicher, wie ich es in JavaScript implementieren soll, aber ich hoffe, dass es mir klarer wird, wenn ich diesen Artikel durchlese.
Alex

Es gibt die C-Quelle, die ich gerade bearbeitet habe. Es sollte kein zu großes Problem sein, sie umzusetzen :)
The Communist Duck

@Die kommunistische Ente Danke, ich habe mich schon einmal in C versucht.
Alex


@alex, Sie sollten in Ihrer Implementierung eine Art Rekursion verwenden. Derzeit haben Sie einfach eine Linie mit zufälliger y-Komponente, wobei die zufällige Variation nach rechts abnimmt.
Juha Syrjälä

5

Wie wäre es mit Algorithmus zur Verschiebung des Mittelpunkts , möglicherweise gefolgt von einer leichten Glättung, z. B. Tiefpassfilterung , um zu scharfe Spitzen zu entfernen? Dieser Ansatz ist nicht derselbe wie bei Scorched Earth, sollte jedoch ähnliche Ergebnisse liefern.

Ich glaube, dass Scorched Earth die Schwerkraft und den fallenden Schmutz simuliert hat. Sie können zum Beispiel keinen zu steilen Hang haben, da sonst der Dreck herunterfallen und einen weniger steilen Hang erzeugen würde.


1

Es gibt einen anderen Ansatz, den Sie verwenden können. Sie können eine Anzahl zufällig erzeugter Sinuswellen addieren und das Ergebnis dann so skalieren, dass es auf Ihren Bildschirm passt. In der Praxis ist es sehr einfach und führt zu einigen schönen Ergebnissen, obwohl es geschmeidiger und vielleicht künstlicher ist als Ihr Beispiel-Screenshot.

Sie können die Quelle in Javascript hier sehen. Es ist wirklich einfach, mit einigen Parametern zu fummeln, um verschiedene Geländearten zu erhalten.

https://github.com/fmstephe/Tankwars

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.