Dewsi często sięgają po proceduralne generowanie podczas projektowania poziomów
O proceduralnym generowaniu ciąg dalszy. Jeśli ktoś nie czytał poprzedniego artykułu, to bardzo zachęcam. W tym materiale będziemy kontynuować temat matematycznej metody tworzenia światów w grach.
Wielu z Was miało pewnie nieraz styczność z proceduralnym generowaniem, nie mając o tym pojęcia. Grając w jedną z części
Diablo napotykamy na taki system chociażby przy generowaniu przedmiotów czy map. Właśnie o mapach chcę Wam dzisiaj opowiedzieć, bo w tym przypadku nie jest to takie generowanie o jakim pisałem w poprzednim artykule. Mówimy tutaj o składaniu mapy ze zrobionych już przez autorów elementów. W przypadku Diablo są to najczęściej jakieś krypty, jaskinie czy innego typu ''
dungeony”. Artyści stworzyli ściany, przejścia, tunele, dekoracje i inne potrzebne obiekty, a programiści stworzyli prosty system, który z tych elementów stwarza gotowe plansze.
Można to zrobić w dość nieskomplikowany sposób. Przedstawię to na przykładzie jaskini. Na początek system musi przeanalizować założenia. Będzie jedno wejście do jaskini czy więcej? Czy ma być jedno wyjście, a może ma być ich kilka? Dla tego przykładu zrobimy jedno wejście i jedno wyjście. Na początku generator tworzy wybraną ilość pomieszczeń, znacznie większą niż przewidywana w finalnej strukturze.
Następnie rozkładamy te pomieszczenia w losowych miejscach na naszej mapie, tak aby jedno pomieszczenie nie nachodziło na drugie.
Teraz system wybiera kilka losowych pomieszczeń, które spełniają założenia np. są szersze od pewnej wartości.
Tak wybrane pomieszczenia muszą być ze sobą połączone jak najkrótszymi liniami. Dodatkowo można wymusić aby system zrobił też inne losowe połączenia dla uatrakcyjnienia jaskini.
Kolejnym krokiem będzie stworzenie wyjść z pomieszczeń oraz korytarzy łączących. W tej fazie nie usuwamy jeszcze zbędnych lokacji, ponieważ niektóre mogą być wykorzystane do budowy korytarzy. Muszą być one jednak tak zbudowane, jak wskazują wcześniejsze połączenia. Po tym etapie można usunąć zbędne pomieszczenia oraz dodać wejście i wyjście.
Tak wygenerowany schemat dekorujemy, wykreowanymi wcześniej przez deweloperów elementami. Teraz mamy już gotową jaskinię, która czeka, aż ją zwiedzimy i unicestwimy wszelkie czające się w niej potwory. To nie jest jedyny sposób generowania jaskiń. Można eksperymentować i próbować tworzyć inne techniki generowania.
Przynajmniej wiemy już, jak to się dzieje, że za każdym razem, kiedy wchodzimy do jaskini w Diablo jest ona ciut inna niż poprzednio. Diablo nie było pierwszą grą, którą korzystała z dobrodziejstw proceduralnego generowania. Jednym z pierwszych autorów gry z owym generowaniem był Don Worth, który stworzył Beneath Apple Manor.
Teraz nasze gry wyglądają o niebo lepiej, ale system generowania dużo się nie zmienił. Mamy za to bardziej skomplikowane struktury zawierające podzespoły, które są w stanie w mgnieniu oka generować takie obiekty. W przypadku Beneath Apple Manor obliczenia i możliwości nie pozwalały na zbyt wiele, zatem gra była mocno ograniczona. W wysokiej rozdzielczości mogliśmy mieć tylko 5 pomieszczeń, a w niskiej „aż” 10.
Na dzisiaj to wszystko, lecz przygotuję dla Was jeszcze artykuły o generowaniu fauny i flory oraz innych ciekawych tematów związanych z tworzeniem gier. Na te i inne tematy możecie pisać w komentarzach oraz zaglądać do mnie na stream. Na twitch.tv/tojteusz możemy razem sprawdzić działanie nurtujących Was zagadnień oraz możecie zobaczyć jak powstają gry lub razem w nie pograć.
P.S. Czy wiesz że czat na Twitchu czy Hitbox’ie wykorzystuje proceduralne metody? Generuje on odpowiednie kolory nicków, które jak się okazuje nie są zupełnie losowe! Spełniają pewne warunki. Są mocno nasycone i występują w odpowiedniej skali barw. Nie spotkamy tutaj odcieni czarnych, białych ani nawet szarych.
Komentarze