Podoba mi się sposób, w jaki Age of Empires II generuje losowe mapy (dobra różnorodność, przyzwoite przejścia do biomów, mapy wydawały się losowe bez poczucia chaosu), ale staram się odtworzyć ten styl. Próbowałem użyć np. Szumu Perlina, ale wszystko wychodzi albo zbyt jednorodnie, albo jeśli nie, wartość Perlina -> heurystyka terenu jest zbyt wrażliwa i krucha, aby tworzyć różne typy świata.
Pamiętam typ mapy AoE2 „Nieznany” reklamował „100 000 możliwych map”, sugerując pewne użycie liczb nasion, ale nie jestem pewien, jak użyć liczb nasion w celu uzyskania odmiany, którą widziałem.
Jakich algorytmów i heurystyki można użyć do tworzenia losowych map, które wyglądają jak losowe mapy AoE2?
Edytuj, aby być bardziej szczegółowym:
Myśląc dalej o moim problemie i studiując to, co lubię w losowym silniku map AoE2, uważam, że moim największym problemem jest zarządzanie rozmieszczeniem wody i życia roślin na mapie . Widzę teraz, że wiązałem to również z „przemianami biomów, które mają sens”, ale to inny problem (choć spodziewam się, że moje dalsze używanie hałasu Perlina sprawi, że będzie to trudne do rozwiązania).
Dodałem kilka losowych map AoE2, które podkreślają to, co lubię w ich silniku mapowania, którego moje wysiłki nie są w stanie odtworzyć. Wszystkie zrzuty ekranu pochodzą z losowego typu mapy „Niestandardowe” -> „Nieznany”. Nie poinstruowałem gry, aby używała określonych geografii, takich jak archipelagi.
Dalej znajdują się zdjęcia z mojego silnika mapy. Każdy piksel odpowiada jednemu kafelkowi mapy AoE2.
Jedną z komplikacji dla mojego projektu jest to, że chcę, aby mapy były wiele, wiele razy większe niż mapy AoE2. Tak więc, bez względu na to, jakiego silnika używam, musi być w stanie stworzyć pełny zakres biomów na każdej mapie, a nie jeden wąski zestaw biomów na mapę, jak w przypadku AoE2.
Mapy Age of Empires II
Oto przykład z jeziorami śródlądowymi i rzeczami przypominającymi rzeki. Podoba mi się, jak mapa zawiera rozrzuconą dużą ilość wody, ale ta woda jest nadal nieco skoncentrowana - istnieją duże połacie ziemi, które są dostępne do budowy twojego imperium. Nie musisz spędzać całej gry na planowaniu miasta wokół wody.
Oto podobny przykład, w którym gra była wystarczająco inteligentna, aby połączyć wyspy z przemierzającymi mokradłami. Nie wyobrażam sobie, jak algorytm oparty na hałasie stworzyłby tam bagno i tylko te miejsca. Zwróć też uwagę na to, jak gra stworzyła ziemię, tak aby każdy gracz miał swój prywatny, duży pokos ziemi na początek. Nie stworzył losowych kawałków ziemi, a następnie zgadnij, który z nich byłby najmniej okropny dla każdego gracza.
Podoba mi się, że ta mapa również intensywnie wykorzystuje wodę, ale nie obejmuje wielu jezior śródlądowych. Porównaj to z pierwszym obrazem. Podoba mi się sposób, w jaki AoE2 tworzy zupełnie różne obszary geograficzne przy użyciu tych samych elementów składowych. Moja próba użycia hałasu Perlina tutaj się nie powiodła - albo dostaję ogromne rozległe oceany, które przyćmiewają masę lądową, albo Krainę 10.000 Jezior. Trudno mi było zdobyć obie wyspy i połączone kontynenty (myślę, że Ameryka Północna / Południowa).
Porównaj ten obraz z powyższym. Pokazują, że jałowość mapy nie zależy od poziomu wody. Pierwsze zdjęcie przedstawia mapę prawie pozbawioną wody, ale zawierającą lasy i trawę. Drugi obraz ma umiarkowaną ilość wody, ale jest pustynią. Podoba mi się to, że jest to możliwe (pomyśl o tym, by mieć w swoim świecie zarówno Nowy Meksyk, jak i Saharę i Kostarykę).
Moje własne mapy
Czytałem w wielu miejscach, że dobrym sposobem na budowanie map jest warstwowanie wielu poziomów szumu Perlina, z których każdy reprezentuje inny wymiar danych. Następujące popularne zalecenia, poszedłem z uniesieniem i wilgoci, wybierając typy terenu od stołu Whittaker tutaj .
Wziąłem dwie mapy perlin, skwantyzowałem wartości z każdej na liczby całkowite za pomocą prostej if perlin_val < x { i=some_int } else if perlin_val < y...
, a następnie zmapowałem pary liczb całkowitych (wysokość, wilgotność) do tabeli typów terenu (np. [1,0] -> tropikalna pustynia, [1,1 ] -> użytki zielone). Oceany zostały uwzględnione w tym systemie - wysokość = 0 zdefiniowanych oceanów.
Istnieje dobra różnorodność i pod wieloma względami wydaje się, że jest to prawdziwy świat, ale jest kilka problemów:
Po pierwsze, nie ma wzorca głębi oceanu. Spodziewałbyś się płytkich wód w pobliżu brzegu i głębszych wód dalej, nie ma rymu ani powodu, dla którego miejsca
Po drugie, cała woda jest skoncentrowana w oceanach; nie ma jezior ani rzek, ponieważ hałas Perlina nie spada nagle do niższej wartości na środku kontynentu.
Stworzenie równowagi między ilościami każdego biomu jest bardzo, bardzo trudne. Przypisuję to do:
Szum Perlina przebiega zgodnie z rozkładem normalnym, dlatego oszacowanie sposobu dostosowania prawdopodobieństwa każdego mapowania wymiarów jest trudne
Próba zrównoważenia wielu wymiarów jest trudna - może chcę więcej (2,3), więc zwiększam szanse na uzyskanie (n, 3). Cóż, teraz mam za dużo (3,3) i wszystko wygląda źle.
Kiedy powiększyłem szum wystarczająco blisko, aby uzyskać płynne dane, nie otrzymałem bardzo kompletnej próbki wartości Perlina. Więc poprawiłem swoje rozkłady dla mapy przede mną, załadowałem nową losową mapę i otrzymałem bardzo różne wyniki.
Próbowałem naprawić problem rzek / jezior, wytwarzając wodę z trzeciego zestawu wartości Perlina. Binarna decyzja dotycząca wody / ziemi, a następnie zastosuj wszystkie powyższe rzeczy do ziemi. Ułatwia to zdecydowanie kontrolę dystrybucji wody (wciąż nie jest idealna, ale lepsza), ale wprowadza problem polegający na tym, że istnieje wiele przejść biomów, które nie mają sensu. Np. Niewytłumaczalne płaty pustyni pośród bujnej łąki, śniegu na plaży itp. Z przyczyn wymienionych powyżej nadal trudno jest kontrolować proporcje biomów lądowych.
Patrząc na powyższe problemy, wypróbowałem prostszy algorytm, który odwzorował szum Perlina tylko na jeden wymiar. Mam teraz szereg rodzajów terenu rosnących od 0 = głęboki ocean -> 1 = płytki ocean -> 2 = plaża ... -> N = śnieg. Chociaż daje to wyspy i kontynenty i znacznie ułatwia zrównoważenie proporcji każdego terenu, typy terenu są zdecydowanie zbyt skupione. Każda masa lądowa wygląda jak mapa wysokościowa, na ogół bez typów terenu rozrzuconych po jej powierzchni. Każda masa lądowa ma w przybliżeniu te same cechy, zawsze w tej samej kolejności i zawsze w tym samym kształcie pierścienia.