Jak wygenerować teren podobny do Spalonej Ziemi?

12

Jestem programistą i chętnie piszę własne gry.

Na razie wybrałem JavaScript i canvaselement.

Chcę wygenerować taki teren w Scorched Earth.

Spękana ziemia

Moja pierwsza próba uświadomiła mi, że nie mogę po prostu losowo ustalić ywartości; w szczytach i dolinach musiało być trochę zdrowego rozsądku.

Trochę googlowałem, ale albo nie mogę znaleźć czegoś wystarczająco prostego, albo używam niewłaściwych słów kluczowych.

Czy możesz mi pokazać, jakiego rodzaju algorytmu użyłbym do wygenerowania czegoś w tym przykładzie, pamiętając, że jestem zupełnie nowy w programowaniu gier (od czasu zrobienia Breakout w 2003 roku z Visual Basic)?

alex
źródło

Odpowiedzi:

18

Algorytm przesunięcia punktu środkowego jest dokładnie tym, czego chcesz.

Ten link może wygenerować coś takiego:

wprowadź opis zdjęcia tutaj

Lub polub swój obraz, w zależności od używanych parametrów. Jest C source dostępne tutaj .

Kaczka komunistyczna
źródło
Dzięki za to, nadal nie jestem pewien, jak zaimplementować go w JavaScript, ale mam nadzieję, że stanie się dla mnie jaśniejszy, gdy przeczytam ten artykuł.
alex
Jest źródło C, w którym właśnie edytowałem. Nie powinno to stanowić większego problemu do wdrożenia :)
Kaczka komunistyczna
@ The Communist Duck Dziękuję, wcześniej bawiłem się w C.
Alex
@The Communist Duck Mam nadzieję, że jestem na dobrej drodze :)
Alex
@alex, powinieneś użyć pewnego rodzaju rekurencji w swojej implementacji. Obecnie masz po prostu linię z losowym składnikiem y, gdzie losowa zmienność zmniejsza się po prawej stronie.
Juha Syrjälä,
5

Jak na temat korzystania przemieszczenie punktu środkowego algorytm ewentualnie następnie lekkim wygładzania np dolnoprzepustowego filtrowania , aby usunąć zbyt ostre kolce? To podejście nie jest takie samo jak w Spalonej Ziemi, ale powinno zapewnić podobne wyniki.

Wierzę, że Spalona Ziemia w jakiś sposób symulowała grawitację i opadający brud. Na przykład nie możesz mieć zbyt stromego wzniesienia, ponieważ w przeciwnym razie brud spadłby i stworzyłby mniej strome zbocze.

Juha Syrjälä
źródło
1

Istnieje inne podejście, którego możesz użyć. Możesz dodać kilka losowo generowanych fal sinusoidalnych, a następnie skalować wynik, aby dopasować go do ekranu. Jest to naprawdę łatwe w praktyce i daje dobre wyniki, choć płynniejsze i być może bardziej sztuczne niż twój przykładowy zrzut ekranu.

Możesz zobaczyć źródło w javascript tutaj. Naprawdę łatwo jest manipulować niektórymi parametrami, aby uzyskać różne rodzaje terenu.

https://github.com/fmstephe/Tankwars

Francis Stephens
źródło