Come faccio a generare terreno come quello di Scorched Earth?


12

Sono uno sviluppatore web e sono pronto a scrivere i miei giochi.

Per familiarità, ho scelto JavaScript e l' canvaselemento per ora.

Voglio generare un terreno come quello in Scorched Earth.

Terra bruciata

Il mio primo tentativo mi ha fatto capire che non potevo semplicemente randomizzare il yvalore; doveva esserci un po 'di buonsenso tra le cime e le depressioni.

Ho cercato su Google un po ', ma o non riesco a trovare qualcosa di abbastanza semplice per me o sto usando le parole chiave sbagliate.

Potete per favore mostrarmi quale tipo di algoritmo userei per generare qualcosa nell'esempio, tenendo presente che sono completamente nuovo nella programmazione dei giochi (da quando ho realizzato Breakout nel 2003 con Visual Basic)?

Risposte:


18

L'algoritmo di spostamento del punto medio è esattamente quello che vuoi.

Quel link può generare qualcosa del genere:

inserisci qui la descrizione dell'immagine

O come la tua immagine, a seconda dei parametri che usi. C'è fonte C disponibile qui .


Grazie per questo, non sono ancora sicuro di come implementarlo in JavaScript, ma spero che diventerà più chiaro per me mentre leggo l'articolo sopra.
alex

C'è la fonte C che ho appena modificato. Non dovrebbe essere un grosso problema da implementare :)
The Communist Duck

@L'anatra comunista Grazie, mi sono già dilettato in C.
alex

@La comunista Duck Spero di essere sulla buona strada :)
alex

@alex, dovresti usare un qualche tipo di ricorsione nella tua implementazione. Attualmente hai semplicemente una linea con componente casuale y, in cui la variazione casuale diminuisce a destra.
Juha Syrjälä,

5

Che ne dici di usare l' algoritmo di spostamento del punto medio eventualmente seguito da un leggero livellamento, ad esempio un filtro passa basso per rimuovere picchi troppo acuti? Questo approccio non è lo stesso di Scorched Earth, ma dovrebbe fornire risultati simili.

Credo che Scorched Earth abbia simulato in qualche modo la gravità e lo sporco che cade. Ad esempio non puoi avere una collina troppo ripida perché altrimenti la terra potrebbe cadere e creare una pendenza meno ripida.


1

C'è un altro approccio che puoi usare. È possibile aggiungere un numero di onde sinusoidali generate casualmente e quindi ridimensionare il risultato per adattarlo allo schermo. In pratica è molto semplice e produce alcuni risultati interessanti, anche se più fluidi e forse più artificiali del tuo screenshot di esempio.

Puoi vedere la fonte in javascript qui. È davvero facile armeggiare con alcuni parametri per ottenere diversi tipi di terreno.

https://github.com/fmstephe/Tankwars

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.