Random 2D Tile-algorytm generowania Map

Czy ktoś może mi powiedzieć jak generować struktury wyspowe lub wzgórza jak w Minecrafcie?

Szukam właściwej teorii dla tego generowania losowego kształtu, ale powinna ona mieć określony wzór bazowy..

Jak: Wyspy powinny być zaokrąglone, ale różnią się kształtem i skalą (min/max szerokość i wysokość ).

Lub: rzeki nie powinny być liniami prostymi, powinny mieć krzywe i losową szerokość.

Albo nawet: generowanie jakiegoś lasu, gdzie drzewa są umieszczone w taki sposób, że użytkownik może nadal chodzić po lesie (myślę, że jest to proste, po prostu powiedz, że niektóre bloki wokół drzewa powinny pozostać puste, jeśli kod spróbuje umieścić więcej drzew wokół ostatniego)

Jakiego rodzaju matematyki mogę używać do takich rzeczy?

Byłbym wdzięczny za linki do tutoriali lub referencji. Od kilku godzin przeszukuję całą sieć, ale znalazłem tylko jakieś książki do kupienia, np. "matematyka z Grami" czy coś, ale mój budżet jest ustawiony na zero.

EDIT:

Po pierwsze, przepraszam za mój zły englisch.

Drugorzędne chcę wam wszystkim podziękować za odpowiedzi. To są świetne referencje i spędzę dużo czasu, aby zagłębić się w to.

Author: Ace, 2012-08-15

3 answers

Zdecydowanie polecam zajrzeć do informacji o programowaniu gier Amita i innych wpisów na jego blogu. Miał całą serię na temat tworzenia realistycznie wyglądających map z rzekami, liniami brzegowymi itp.

Budowanie Światów

Chociaż generowanie map proceduralnych może być stosowane do światów spoza siatki, jest najczęściej używany z siatkami. / Align = "left" / , generowane mapy rzadko są tak ładne, jak ręcznie robione światy. Mają jednak trzy zalety: (1) niższy koszt na świat, jeśli tam jest wiele światów do zrobienia, (2) więcej wartości powtórek, ponieważ następny czas przez świat jest inny, a (3) potencjał dla świata ewoluuje w trakcie gry.

  • generator map świata Amita
  • generowanie treści proceduralnych: generowanie terenu, miast, budynków
  • Dungeon generation in Unangband
  • generowanie światów gier ze strukturą lock-and-key tak, aby niektóre pomieszczenia wymagaj obiektów z innych pomieszczeń
  • algorytm budowania rzek
  • dodawanie rzek do losowo generowanego terenu
  • oryginalny algorytm Rogue do generowania lochów
  • 11 algorytmów generujących labirynt z demami i kodem
  • Używanie funkcji szumów do generowania jaskiń, takich jak te w terrariach i Minecrafcie
  • pokoje o nieregularnym kształcie, algorytm prosty
  • Zmiana rozmiaru wnętrza pomieszczenia
  • algorytm tunelowania do kopania lochów w DungeonMaker
  • Przewodnik po technikach generowania losowego terenu
  • Przewodnik Wiki do generowania treści proceduralnych
  • Symulowanie Wielkich Wirtualnych Światów

Amit ' S wielokątne generowanie Map Do Gier (pierwsza pozycja na liście) jest niezwykle imponującym artykułem, który mówi o logice generowania sensownych linii brzegowych, Wysp, rzek, gór itp. Niezwykle efektowna praca!

A Metoda "Uprawy" Rzek W Losowo Generowanym Świecie [zawarte w powyższej liście] dość prosty algorytm generowania ścieżki rzeki na podstawie innych "kafelków" na mapie, np. ich typu i wysokości.

 32
Author: Ray Hayes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-15 11:21:30

Kiedyś znalazłem świetną stronę do teorii, kiedy zrobiłem rougelike. Zobacz .

 3
Author: Mizipzor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-15 11:15:03

Dość często mapy są logicznie podzielone na warstwy / nakładki, takie jak "podstawowa wysokość terenu"," poziom wody"," wyżyny"," drzewa"," obudowa " itp.

Wtedy dla każdej warstwy uruchamiany jest inny rodzaj generatora. Bardzo często stosuje się fraktale, ponieważ mają tendencję do generowania ciekawych i trudnych do przewidzenia kształtów. Ale tylko część fraktala jest używana. Użycie całości natychmiast ujawniłoby strukturę (na najwyższym poziomie fraktale są bardzo powtarzalne) i widzowie by to zauważyli. Więc, wygenerowany fraktal jest następnie zniekształcony/modyfikowany/filtrowany / cięty, więc nie będzie to oczywiste. Na przykład możesz wygenerować podstawowy poziom terenu za pomocą prostego oscylatora trygonometrycznego X-Y, a następnie podsumować go częścią fraktalnego obrazu, ograniczoną do niektórych wartości min-max, a otrzymasz nierówny teren z zauważalnymi wzniesieniami i spadkami..

Dla wszystkich innych warstw zwykle nie można "podsumować", ponieważ warstwy inne niż teren nie są o "wysokości" lub "gęstości", ale raczej są 0/1-umieść drzewo tutaj czy nie? Ale znowu, wykonujesz to podobnie: generujesz jakiś obraz (może znowu fraktal), następnie sprawdzasz Liczby i ustawiasz wartość progową: wszędzie, gdy liczba jest wyższa/niższa niż X, umieszczasz / nie umieszczasz rzeczy. Można je dodatkowo filtrować lub rozgałęziać: na przykład, jeśli drzewo uderzy w pozycję pod wodą, umieść tam rybę lub w ogóle nie Umieść drzewa.

Jestem przekonany, że nie możesz znaleźć na nim zasobów. Kilka lat temu googling dla "terrain generation algorithms" zwróci wiele hitów!

 3
Author: quetzalcoatl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-15 11:16:06