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)?

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 .


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


@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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.