Jakiego algorytmu używałeś w przeszłości do generowania prostego labiryntu 2D?
algorithm
procedural-generation
jdeseno
źródło
źródło
Wolę ciasno zwinięte labirynty, które tworzy Algorytm Kruskala.
Standardowy opis algorytmu Kruskala jest nieodpowiedni, ponieważ nie rozróżnia on lokalizacji na wykresie od grup lokalizacji, opierając się na grze słów o wyborze struktury danych, co prowadzi do dwuznaczności opisu, które dezorientują nowicjuszy. Dlatego odrzucam terminologię Kruskala.
Użyję następujących terminów:
Z nich otrzymujemy:
źródło
Wikipedia ma świetny zasób na temat generowania labiryntu . Korzystam z algorytmu losowych prymów ze świetnymi wynikami. Algorytm podziału wygląda interesująco, ale nigdy go nie użyłem.
Oto przykład Wikipedii z Prim's w pracy.
źródło
Jednym prostym sposobem jest sporządzenie listy ścian północnych i zachodnich, a następnie ich permutację. Nadaj każdemu pokojowi numer. Następnie wysadź jedną ze ścian na liście, o ile dwa pokoje nie mają tego samego numeru, a następnie propaguj jeden z numerów do wszystkich innych pokoi o tym samym numerze. Idź dalej, aż zabraknie ci ścian. Działa to w przypadku prostokątnych labiryntów lub, w rzeczywistości, każdego innego labiryntu, w którym można podać listę „potencjalnie połączonych pokoi”. Ponadto programowanie jest dość proste.
źródło
Przyjrzałbym się również niektórym algorytmom używanym w rozwoju Roguelike. W Rogue Basin jest dobry zasób początkowy
źródło
Dobry bieg tutaj: https://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/
Podstawowe kroki to:
Kod tutaj: https://github.com/munificent/hauberk/blob/db360d9efa714efb6d937c31953ef849c7394a39/lib/src/content/dungeon.dart
źródło
Zapytałeś, którego użyłem, więc postaram się na nie odpowiedzieć. Użyłem rekurencyjnego algorytmu cofania w mojej labiryncie w Rootbeer Games .
Jest to dowód na to, że użyłem algorytmu, nie traktuj go jako reklamy mojej pracy.
źródło