Proceduralna generacja świata zorientowana na funkcje gry


36

W dużych proceduralnych grach krajobrazowych ziemia wydaje się nudna, ale prawdopodobnie dzieje się tak, ponieważ prawdziwy świat jest w dużej mierze nudny, a miejsca w scenerii są dramatyczne lub taktyczne.

Patrząc na pokolenie światowej z tego punktu widzenia, generator krajobrazu do gry (czyli nie dla dekoracji, ale przez wzgląd na rozgrywki) musi nie przestrzegają zasad krajobrazu, lecz pewne zasady żoną oczekiwania gracza. Na przykład może istnieć generator dławika / trasy, który tworzy wzgórza, wąwozy, rzeki i góry między miastami, a nie naturalny sposób powstawania miast, rozproszone na lądzie w oparciu o zasoby lub warunki generowane przez góry i wzory opadów.

Czy wykonuje się taką pracę? Zacznij od miast lub centrów ludności, a następnie dodaj teren?

Powodem, dla którego pytam, jest to, że wcześniej zastanawiałem się nad pobraniem istniejących map z fantasy (mojej i innych), umieszczeniem informacji w systemie jako punktu bazowego, a następnie wygenerowaniem z tego dobrego świata. Wydaje się, że obejmuje to istniejąca technologia, to znaczy, w której projektant wprowadza wszystkie niezbędne informacje, takie jak populacje miasta, zasoby, biomy, sieci drogowe i rzeki, a następnie pozwala PCG wypełnić luki.

Ale teraz zastanawiam się, czy generator treści może generować również ogólny projekt. Generuj miasta i centra ludności, równoważąc je tak, aby istniała naturalna pozorna potrzeba handlu, następnie generuj pozycje i łączność, a następnie z rodzaju miasta przygotuj listę niezbędnych zasobów, które muszą być w pobliżu, i tylko wtedy, być może, podane niektóre zasady, jak uczynić podróż między miastami zarówno wiarygodnymi, jak i interesującymi, generują ostateczną treść, w tym drogi, dławiki, mosty i tunele, promy i teren, w tym niezbędne biomy i linię brzegową.

Jeśli zostało to zrobione wcześniej, chciałbym wiedzieć i chciałbym wiedzieć, co poszło źle, a co poszło dobrze.


Twoje podejście wydaje się dziwne. Nie rozumiem, dlaczego miasta i centra ludności miałyby być na pierwszym miejscu ... nawet wtedy, czy nie możesz umieścić niektórych miast i przypisać tym punktom sprzyjające, ale losowe parametry, i pracować z tego miejsca?
Kaczka komunistyczna

1
Myślę, że podążasz właściwą ścieżką, najpierw projektu kulturowego, a terenu (i pogody) drugiego. W prawdziwym świecie społeczeństwa, kultury oraz sieci i struktury gospodarcze nie powstają nigdzie. Zamiast tego powstają (lub nie powstają) w zależności od terenu. Niektóre tereny po prostu nie sprzyjają rozwojowi społeczeństwa, a inne tak. Duże miasta nie powstają na środku pustyni lub zamarzniętej tundry, ponieważ a) prawie nie ma jedzenia ani wody, i b) trudno jest sprowadzić towary do miasta.
Tim Holt,

2
Rozumiem twój kąt, @Tim Holt. Moim zdaniem Reguła Fajności i Reguła Zabawy zawsze przewyższają wiarygodność przy projektowaniu scenariusza gry. Miasto, które tworzy most nad kraterem aktywnego wulkanu, może nie być wiarygodne, ale mimo to jest fajne. Ponadto, gdy gracze potrzebują miast rozmieszczonych równomiernie w całym świecie gry do celów rozgrywki, musisz im je dać, nawet jeśli ich położenie geograficzne nie miałoby sensu.
Philipp

Odpowiedzi:


12

Oto świetny przykład proceduralnego generowania terenu przy użyciu parametrów takich jak wilgotność, wysokość itp. Http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/


2
Świetna robota, ale wciąż losowa dystrybucja elementów krajobrazu po pierwsze, cywilizacja / elementy rozgrywki po drugie
Richard Fabian

To nie jest całkowicie losowe, ale zgadzam się, że nie ma elementów cywilizacyjnych. Myślę, że tę technikę można dostosować do wielu różnych elementów rozgrywki, ale te w wersji demo były przeznaczone do gry wieloosobowej (~ 80 graczy na mapę): (a) wyspa otoczona wodą, aby ludzie nie osiągnęli krawędzi, ( b) łatwe obszary na plaży z rozłożonymi graczami, (c) twarde obszary w górach z skoncentrowanymi graczami, (d) drogi prowadzą do innych obszarów o tym samym stopniu trudności, (e) rzeki prowadzą do obszarów o większym stopniu trudności. Gracze zaczynali solo na plażach i grupowali się, gdy szli w kierunku centrum.
amitp

1
Najważniejszą rzeczą, którą próbowałem zbadać, było rozpoczęcie od ograniczeń gry, a następnie zbudowanie mapy, która wypełniłaby szczegóły, zamiast zwykłych losowych lub „realistycznych” generatorów terenu i próba dopasowania elementów gry na górze . Myślę, że sprawdził się w tym stylu gry, ale nie wypróbowałem go w innych stylach.
amitp

4

Wydaje mi się, że patrzyłem wstecz na to pytanie przez ostatnie trzy dni, zadając sobie pytanie, w jaki sposób procesowe generowanie światów, a nawet galaktyk, może być jednocześnie deterministyczne (na przykład zawsze generowanie tej samej treści z tego samego ziarna ), wyglądają naturalnie i wciąż mają unikalne, interesujące, niezwykłe, a nawet piękne cechy w swoim krajobrazie.

Wracam do tej samej ogólnej odpowiedzi, że zależy to w dużej mierze od gatunku gry i jej wewnętrznej, spójnej historii. Na przykład, gatunek postapokaliptyczny, dlaczego ktoś miałby budować metropolię z masywnymi ścianami na środku nieużytków i sprawić, by wszyscy w niej żyli nieszczęśliwie? Po co kolonizować takie planety? W wysokiej fantazji, po co tworzyć miasto na pływającej wyspie? Dlaczego krasnoludy tworzą miasta w górach? A twój ogólny zły wróg pochodzi z ognistej krainy z aktywnymi wulkanami? Rule of Cool?

Wszystko wraca do twojej odpowiedzi, w której wprowadzasz informacje do PCG i wypełnia lukę, a także do innej odpowiedzi na temat generowania światów, które pasują do fabuły i całej historii.

Tak więc fabuła generuje elementy rozgrywki, które generują odpowiedni krajobraz.

To powiedziawszy, zastanawiam się, czy historia, która generuje drzewo spójnych linii fabuły, wygeneruje ogólny projekt rozgrywki, którego szukasz.

(PS: Te same trzy dni myślenia sprawiły, że znalazłem kolejną odpowiedź na problem, który może się pojawić: powinno być zautomatyzowane narzędzie testowe, aby sprawdzić, czy generowany projekt gry jest prawidłowy, np. Powinieneś mieć średniowieczną armię mającą trudności czas na pokonanie wygenerowanej fortecy)


2

Jedyny artykuł na temat podobnych problemów, które mogłem znaleźć z ręki, to Stachniak i Stuerzlinger „ Algorytm dla zautomatyzowanej deformacji terenu fraktalnego ”. Zakłada się, że najpierw utworzysz teren i go zdeformujesz (a raczej pozwól algorytmowi wybrać parametry, aby automatycznie go zdeformować), aby później dopasować ograniczenia, aby nie odpowiadał bezpośrednio na pytanie. Mimo to metody tam przedstawione mogą okazać się przydatne dla osób z podobnymi problemami.


2

Czy taki algorytm nie generowałby automatycznie bardziej „taktycznego” terenu, gdy drogi są generowane między miastami?

Zakładając, że drogi mogą mieć tylko pewną zmianę wysokości na odległość, wysokość terenu byłaby dostosowana do wysokości drogi, co prowadziłoby do generowania punktów pośrednich za każdym razem, gdy droga przechodzi przez wzgórze / wąwóz / cokolwiek innego. Oczywiście zmiana wysokości terenu również musiałaby być ograniczona, ponieważ w przeciwnym razie drogi przebiegałyby prosto przez najwyższe szczyty.


Zakładam, że miałeś na myśli, że istniejące drogi ograniczyłyby generowanie terenu, prowadząc do czegoś, co mogłoby wyglądać jak stworzone przez człowieka doliny. To ciekawe, gdzie wcześniej widziałeś, jak generator terenu bierze krajobraz i oceniasz, że zbyt trudno jest jechać, ale jest wystarczająco tani, aby go przebić? Nie odpowiada na moje pytanie, ale dodaje do listy rzeczy, które generator powinien rozważyć, na przykład przeciwny przypadek (gdzie droga jest wysoko nad ziemią) wymagałby mostu lub wiaduktu, a nie coś normalnie widzianego w PCG.
Richard Fabian

Właśnie myślałem o tym, jak to się robi w prawdziwym życiu:
Exilyth

1
Tworzą się góry, ulegają erozji. Na ziemi rosną rośliny i drzewa. Miliony lat później pojawiają się pierwsi koczownicy, błąkają się, a może osiedlają. Zaczynają oddziaływać na otaczającą je ziemię, np. Przez pestki lub ocieplenie. Później znajdą inne miasta, zaczną z nimi handlować i tym samym będą potrzebować dróg. Zazwyczaj łatwiej jest podążać za terenem niż go zmieniać, więc dostosowują swoje drogi do krajobrazu (z wyjątkiem nieco wygładzenia / spłaszczenia). Jak widać, patrzę na ten problem bardziej z perspektywy budowania świata.
Exilyth,

2

Kiedy byłem w Cryptic Studios, pracowaliśmy nad czymś takim do generowania misji / zadań. Projektanci nieco abstrakcyjnie określili cele misji i rozłożyli je z pewną przypadkowością w „porządku podróży gracza” i wytyczyli ścieżki między nimi.

Wczesna wersja dostarczana z Star Trek Online jako Genesis Missions (archiwum) . Byliśmy wtedy bardzo podekscytowani, ale nie mam pojęcia, jak długo trwało to po moim odejściu, czy też jest dostępne w narzędziach odlewniczych użytkownika końcowego. (Jaki był ostateczny cel.)


1
To brzmi jak praca wykonana przy użyciu proceduralnych generatorów fabuły, czy rzeczywiście wygenerowała ona szczegóły świata, aby pasowała do wymaganej fabuły tych misji, czy też zrobiła misje z tego, jaki był świat, czy też po prostu miała szczęście, że misje były trudne lub łatwe w oparciu o to, co wygenerowałeś?
Richard Fabian

1

Typowe podejście do proceduralnego generowania terenu polega na ręcznym narysowaniu określonych cech i użyciu generatora do wypełnienia pozostałych. VTerrain z pewnością ma coś interesującego na ten temat.


1

Lighthouse 3D ma dobry przegląd prostych algorytmów do generowania terenu. Jeśli zaczynasz od mapy zawierającej miasta lub inne interesujące obszary, możesz skorzystać z niektórych z tych technik, aby wygenerować dowolny teren. Na przykład inteligentne użycie algorytmu błędu może być wykorzystane do stworzenia klifów lub dolin wokół twojego miasta, które mogłyby działać jak punkty dławiące. Ponadto użycie algorytmu koła byłoby świetnym sposobem na wygenerowanie terriana do umieszczenia wieży. To tylko niektóre przykłady, ale użycie tych prostych algorytmów byłoby dość łatwym sposobem na wygenerowanie interesującego terenu wokół twoich miast.


1

Może nadmiernie upraszczam, ale po co ignorować fakt, że miasta są budowane na korzystnym terenie, a jeśli tak, to na jakimkolwiek obszarze cywilizowanym z jakiegokolwiek powodu? Być może teren oferuje taktyczną przewagę na oddziale wojskowym, a może tartak znajduje się na skrzyżowaniu dużego lasu i rzeki, która ma większą wioskę w dole rzeki. Nawet „święte” miejsca są oparte na ukształtowaniu terenu, nawet jeśli z prostego faktu, że ten konkretny fragment ziemi został w pewnym momencie uznany za święty, itp. Bez względu na konsekwencje, ostateczne miejsce spoczynku przeważającej większości cywilizacji istnieje w miejsce fizyczne z powodów bardzo związanych z terenem. Nawet w przypadku wyrastającego miasta po prostu dlatego, że między dwoma większymi miastami odbywa się wystarczająca wymiana handlowa, aby uzasadnić pośrednika, jeśli chcesz, lokalizacja miasta zostanie wybrana na podstawie ścieżki najmniejszego oporu. Zostałby umieszczony gdzieś, który oferowałby dobre płaskie pola uprawne do lokalnego zaopatrzenia w żywność w połączeniu z ziemią, która dobrze nadaje się do budowy dróg. Jestem pewien, że pomyślałeś o tym ...

Więc jeśli zamierzasz najpierw zbudować miasta, to dlaczego? Dlaczego nie zbudować miasta, wioski, osady itp. Wraz z przyzwoitym kawałkiem otaczającego terenu, zbudowanym ręcznie, który wspiera tego rodzaju placówkę?

Weźmy na przykład biomy proceduralne. Zazwyczaj są one stosowane do pseudolosowych map temperatury, wilgotności i wysokości. Jeśli już zaprojektowałeś miasto (lub tartak itp.), Prawdopodobnie masz solidną koncepcję tego, jak powinna wyglądać ziemia, co, o ile się nie mylę, jest właśnie twoim celem. Weź fantastyczny budynek, taki jak Orthanc, pełen planów pięter i otaczającego terenu, który posłusznie odtworzyłeś. Wiemy, że w zależności od osi czasu Orthanc był otoczony ogromnym lasem zamieszkanym przez Enty (stworzenia drzewne) itp. Jeśli próbujesz to odtworzyć, zastosowanie losowego terenu nie ma dla mnie sensu. To powiedziawszy, kiedy już stworzysz to ustawienie dla samej wieży i otaczającego ją lasu, co jest pomiędzy Orthanc i jakimkolwiek następnym miastem?

Prostym podejściem może być zapisanie proceduralnego generowania terenu, umieszczenie swojego ustawienia w losowo wygenerowanym systemie terenu i przesunięcie swoich wysokości wokół ustalonego ustawienia i altówki, aby umieścić Orthanc w wielu różnych losowo generowanych światach (czy to powinno być twoje później).

Myślę jednak, że najlepiej byłoby połączyć kombinację ustawienia, terenu i zdefiniowanego biomu i upewnić się, że Orthanc zostanie umieszczony wewnątrz generowanego proceduralnie dużego biomu lasu. W zależności od tego, jak go kodujesz, możesz ustawić min / maks. Biom, teren, wilgotność itp. Dla każdego wstępnie zdefiniowanego ustawienia lub budynku lub miasta, które wyrzeźbiłeś. Czy byłoby to małe zadanie w pełnoprawnym fotorealistycznym świecie 3D? Oczywiście, że nie.

Myślę, że gdybym to spróbował, najpierw zbadałbym algorytmy procedur linii brzegowej. Przyjmując podejście, zgodnie z którym prawie wszystkie cywilizacje na przestrzeni dziejów podążały dowolną linią brzegową, czy to oceanem, morzem czy dużym jeziorem. Jest to ścieżka najmniejszego oporu dla wzrostu, ponieważ prawdopodobnie istnieje obfite łowienie ryb, drzewa w pobliżu dla drewna, a na pewno szybsza podróż nawet z podstawowymi jednostkami pływającymi (przynajmniej w jedną stronę).

Sądzę, że musiałbyś budować całkowicie do tyłu. Pomyśl, pseudolosowe kropki na mapie reprezentujące punkty cywilizacji, być może z algorytmem hałasu określającym populacje tych cywilizacji, zanim cokolwiek innego zostanie określone. OK, więc 1 punkt przypada na populację 1 000, kolejne 2 000 000 (lub jakikolwiek inny stosunek w zależności od populacji na świecie). Czemu? Dlaczego jest tam tyle populacji? Populacja 1000 osób może być małą społecznością tartaczną. Może to społeczność górnicza, jeśli znajduje się po północnej stronie mapy, jeśli tworzysz kulisty świat 3D. Robi się tu trochę rozmazany, ponieważ nie wiem, czy idziesz we wszystkich kierunkach, czyniąc NESW bezcelowym w określaniu biomów, czy też chcesz bardzo prawdziwej „Ziemi”

Jeśli jednak rozwalicie cywilizacje na podstawie pseudolosowych populacji hałasu, myślę, że możemy bezpiecznie przyjąć kilka zasad (ale może nie absolutnych), takich jak ... Im większa cywilizacja, najprawdopodobniej większa liczba przydatnych zasobów na rękę i teren, aby je wspierać. Cenne minerały, lasy itp. Muszą być obecne lub musi istnieć ogromny system handlu, aby wesprzeć tak ogromne przedsięwzięcie. Na tej podstawie możesz rozpocząć generowanie autostrad z miasta do miasta i dróg do odległych osad, takich jak operacja głębokiego wydobycia itp. Wybierz punkty cywilizacji, które sformułują dobre linie brzegowe i całkowicie zrzuć punkty zaludnienia z mapy, na której musisz wypełnić oceany (a może masz Atlantydę w swoim świecie lub morskie odwierty naftowe).

Ponowne wypełnienie terenu pośredniego zależy całkowicie od podejścia do biomu. Jeśli masz nieskończony świat we wszystkich kierunkach, odłóż Orthanc wszędzie tam, gdzie pasuje pod względem populacji, wepchnij go do biomu lasu i buduj wokół niego na zewnątrz, aż dojdziesz do połowy do następnego wstępnie ustawionego miejsca docelowego, w którym algorytm wykonuje to samo generowanie proceduralne na około. Lerp / Połącz oba tereny, gdy się spotykają, i tak, to oczywiste uproszczenie.

Bez prawdziwej praktycznej wiedzy o tym, co tak naprawdę próbujesz osiągnąć mechanicznie, mogę jedynie wyrzucać pomysły i prawdopodobnie te złe. Myślę, że twoje podejście ma sens, nawet jeśli w rzeczywistości jest całkowicie fantastyczne, ponieważ celujesz w to, co zawsze jest najważniejszym czynnikiem w każdej grze: Czy gracz dobrze się bawi? Czy też tworzę losowy świat, który nie jest nudny, a przez to zabawny?

Co może stać się interesujące, a może to być część generacji cywilizacji w dowolnej grze, niezależnie od terenu, czy nie, co się stanie, jeśli rozbijesz 2 duże miasta obok siebie? Co to znaczy? Czy oni są w stanie wojny? Czy są to masowe operacje handlowe między dwoma kwitnącymi narodami? Jakiego rodzaju wrogów czai się w lasach tego tartaku?

Myślę, że jedno jest pewne, jeśli próbujesz budować teren oparty na „miastach”, a to na teren, na który populacja tego miasta miałaby bezpośredni wpływ, zarówno pod względem krajobrazu, jak i zasobów naturalnych (a może nawet piękna).

Nie jestem pewien, czy faktycznie odpowiedziałem na cokolwiek, czy też było to właściwe, ale jest to bardzo interesująca koncepcja i chciałbym usłyszeć, dokąd zmierzasz.


0

Wygenerowałbym funkcje gry jednocześnie jako część tego samego procesu. Istnieje wiele sposobów budowania terenu w oparciu o reguły. Ten wykład w YouTube autorstwa twórcy Path to Exile jest całkiem dobrym przykładem: https://www.youtube.com/watch?v=GcM9Ynfzll0 . Również w przypadku mniej wbudowanego podejścia wygląda to interesująco: https://www.youtube.com/watch?v=RAtdFKiqs34 . Możesz użyć szumu perlin do wygenerowania wysokości dla każdego wierzchołka voronoi i stamtąd

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.