Udało mi się uzyskać dość dobrze wyglądające poziomy, używając następującego algorytmu opartego na kwadratowej siatce:
Najpierw utwórz zestaw pokoi. Losowe parametry określają wielkość pokoi i ich liczbę. Algorytm adaptacyjny mógłby nawet zdefiniować niektóre strefy wykonane z dużych korytarzy, a inne bardzo małych pomieszczeń.
Następnie musisz upewnić się, że wszystkie pokoje są ze sobą połączone. W tym celu uruchom wizjer, aby wykopać korytarze (powiedzmy A *) pomiędzy każdą parą pokoi, nadając losowo wybraną wagę istniejącym przestrzeniom (pokojom lub innym korytarzom) w porównaniu z przestrzenią jeszcze nie rzeźbioną (ściany). Jeśli różnica w wadze jest niewielka, to kopanie nowych korytarzy będzie stosunkowo tanie, a algorytm wykona wiele korytarzy między pokojami, z wieloma możliwościami przejścia z jednego miejsca do drugiego. Jeśli różnica w wadze jest wysoka, algorytm będzie preferował przechodzenie przez istniejące pokoje i korytarze, co sprawi, że ścieżki będą bardziej kręte i będzie mniej możliwości dotarcia do określonego miejsca docelowego.
Pozwala to, na podstawie niewielkiej liczby parametrów, tworzyć bardzo różne poziomy wyglądu, od rzadkich, masywnych hal z małymi korytarzami łączącymi je do labiryntu przypominającego ul, labiryntu ściśle połączonych komór.
Oto przykład wygenerowanego poziomu.
W oparciu o ten algorytm możesz dodać dekorację ścienną zależną od strefy, zmniejszyć lub powiększyć korytarze, stworzyć specjalne pokoje i tak dalej.