Niedzielny Dziennik
data publikacji:
No Man's Sky to najgłośniejszy ostatnio przykład wykorzystania generowania proceduralnego
Proceduralne generowanie? Hasło w ostatnim czasie bardzo popularne. No Man's Sky, Minecraft i wiele innych gier korzysta z tego dobrodziejstwa, ale czym ono jest i do czego jest potrzebne? Proceduralne generowanie to taka ''kontrolowana losowość”. Brzmi trochę jakby oba pojęcia się wykluczały, ale jak opowiem Wam czym jest ta procedura, to zrozumiecie dlaczego tak to nazwałem. Zacznijmy od tego jak powstaje proceduralnie wygenerowana mapa. W uproszczeniu korzysta ona z losowych liczb do wygenerowania świata. Wyciągamy sobie losowe liczby na osi X i powstanie nam podobny wykres do tego: Następnie takie dane rozciąga się i dodaje wartości pośrednie (oczywiście trochę to opisuję w przenośni. W celu łatwiejszego zrozumienia). W ten sposób powstają nam doliny i pagórki w przekroju dwu wymiarowym. Dalej moglibyśmy się zagłębiać w kolejne modyfikacje tego terenu, ale chcę przejść o krok dalej i wytłumaczyć jak to wygląda w przypadku przestrzeni trójwymiarowej. Kolejny raz posłużę się uproszczonym przedstawieniem tego procesu. Wygląda to bardzo podobnie jak w przypadku 2D. Generujemy losowe liczby między wartością 0, a 1 na płaszczyźnie dla każdej pary X i Y. Wartość ''0'' umownie traktujemy jako kolor biały, ''1'' jako czarny, a skala szarości występuje pomiędzy nimi. W ten sposób otrzymujemy najprostszą mapę szumów (noise). Widzieliśmy to kiedyś często w telewizorach: I tak samo jak poprzednio, rozciągamy te punkty, a miedzy nimi wstawiamy wartości pośrednie. To tworzy nam gradienty między tymi punktami. W tym miejscu wspomnę, że wykorzystuje się bardzo różne techniki rozkładania tych punktów oraz ich wygładzania. Jedną z bardziej popularnych jest Perlin Noise, wymyślona przez Kena Perlina, skąd też nawa samej techniki: Ale co dalej z taką mapą? Tak jak dla danych wartości przypisaliśmy odpowiednie kolory, tak samo możemy przypisać wysokość punktów na mapie. Wyobraźcie sobie teraz, że każdy piksel powyższego obrazka to jeden klocek w Minecrafcie. Białe punkty to klocki ustawione bardzo wysoko, a czarne to bloki umieszczone znacznie niżej. W ten oto sposób stworzyliśmy najprostszą formę terenu, którą można udoskonalać w nieskończoność. Możemy teraz dodać jeszcze dwie takie mapy. Jedna z nich byłaby znacznie mniej rozciągnięta, o częstszych wzniesieniach i spadkach. Druga miałaby znacznie wygładzoną krzywiznę terenu. Pierwszą z nich dodalibyśmy tylko w miejscu, które jest wyższe od jakiegoś punktu, a druga byłaby poniżej. Taki metoda spowodowałaby, że góry byłyby bardziej poszarpane i spiczaste, a doliny łagodne. Jeszcze raz posłużę się przykładem Minecrafta który w bardzo wczesnych wersjach alpha wyglądał tak: Jednak późniejsze rozwijanie generatora oraz dodawanie coraz to bardziej szczegółowych zakresów, w których coś może powstać, spowodowało że teraz mamy taki efekt jak na zdjęciu. Chyba bardzo dobrze widać różnice i co można dzięki temu osiągnąć. W ten sam sposób powstały planety w No Man’s Sky oraz teren w wielu innych grach. Lecz w tym miejscu nie kończy się temat proceduralnego generowania. Dlatego następnym razem omówimy go jeszcze raz, poruszając tematy generowania jaskiń i innych obiektów oraz dowiemy się czym jest ''ziarno'' w proceduralnym świecie. Tak jak poprzednio, w kometarzach możecie zadawać pytania odnoście proceduralnego generowania jak i innych tematów związanych z tworzeniem gier. Zapraszam Was także na moje streamy, gdzie w godzinach wieczornych zazwyczaj rozmawiamy o tworzeniu gier, robimy je i oczywiście w nie gramy. Tam też możecie zadawać mi pytania oraz dawać sugestie na kolejne tematy.Pod tym wpisem można się reklamować. Jeżeli uważasz, że stworzyłeś bardzo dobry film związany z tematem wpisu, wklej do niego link w komentarzu. Najlepsze filmy zostaną tutaj na zawsze. Zapraszamy do komentarzy. Czekamy na Wasze opinie. Do dyspozycji naszych czytelników oddajemy również forum dyskusyjne... serdecznie zapraszamy tam do rozbudowanych dyskusji i kooperacji spoleczności brodaczy!
Komentarze