Wygenerowane w procedurze zakrzywione drogi 2D na mapie

9

Eksperymentowałem z algorytmami do automatycznego generowania map drogowych dla gry, nad którą pracuję.

Używam gier „ Kingdom Rush ” jako punktu odniesienia, ponieważ mają one świetnie wyglądające mapy.

Przykłady map drogowych z gry „Kingdom Rush”

Jestem nowy w proceduralnym generowaniu treści i zastanawiałem się, czy ktoś tutaj ma jakieś wskazówki. Eksperymentowałem z generowaniem losowych topologii dróg, np. Kilku węzłów wejściowych / źródłowych, kilku węzłów wewnętrznych (rozwidlenie i scalanie) oraz niektórych węzłów wyjściowych zlewu, a następnie używając algorytmów układu graficznego do stworzenia rzeczywistej mapy drogowej na podstawie tych informacji.

Oto jeden przykład użycia algorytmu Fruchtermana-Reingolda dla układu drogi:

Mapa wygenerowana przez PCG 1

Niebieski wykres wykorzystuje losowo generowane punkty kontrolne Béziera, aby krawędzie wyglądały mniej prosto.

Oto kolejny przykład wygenerowany przy użyciu tego samego algorytmu, ale różnych liczb losowych:

Mapa wygenerowana przez PCG 2

Problem w tym, że większość wyników wygląda dość podobnie i nie jestem pewien, jakie reguły mogę dodać, aby poprawić sterowalność i różnorodność generowanych proceduralnie map.

Wszelkie porady są mile widziane.

SixTwoOne
źródło
Niesamowite pytanie. Obrazy referencyjne bardzo pomagają, w tym rzeczy, które próbujesz do tej pory. Czy możesz bardziej szczegółowo omówić, co rozumiesz przez „sterowalność”? Jest wiele rzeczy, które mogłyby kontrolują; niektóre przykłady mogłyby pomóc.
Pikalek
Cześć! Dzięki za odpowiedzi. Mówiąc o sterowności, mam na myśli to, czy można napisać pewne reguły (np. Nie umieszczać przecięć bliżej niż w pewnej odległości od siebie; nie dopuszczać kątów ostrzejszych niż x stopni) i czy algorytm generowania przestrzega tych ograniczeń? Ponadto reguły te nie powinny utrudniać algorytmowi generowania różnorodnych interesujących map. Twoja zachęta dodaje otuchy. Zaczynałem się denerwować szczegółami, jak to działa!
SixTwoOne

Odpowiedzi:

2

Twoje przykładowe drogi mają krzywe na odcinkach między skrzyżowaniami, których nie ma twoja droga. Czy próbowałeś dodać więcej „zbędnych” punktów kontrolnych na swoich drogach?

Co powiesz na to, aby liczba pętli była parametrem generacji? Również „krzywizna” (liczba zbędnych punktów kontrolnych) Liczba wyjść byłaby inna.

Myślę, że możesz także zakończyć drogi, gdy uderzą w skrzyżowania, dając im podwójne punkty kontrolne. To powinno sprawić, że skrzyżowania będą wyglądać lepiej.

Osthekake
źródło
Myślę, że sugestia pośrednich punktów kontrolnych jest dobra! Algorytm układu graficznego, którego używam w tej chwili, tworzy tylko linie proste, ale mógłbym umieścić węzeł „zakrzywionego wygięcia” gdzieś pomiędzy dwoma innymi węzłami i użyć heurystyki, aby umieścić punkty kontrolne w pobliżu, dzięki czemu wyglądałby ładnie. Zdecydowanie muszę się tym bardziej przyjrzeć, ponieważ wiąże się to również z tworzeniem lepiej wyglądających skrzyżowań.
SixTwoOne