Czy jest to zatem generowanie proceduralne? Absolutnie. Do wyświetlenia prostej posłużyły przecież jasno określone procedury.

Podobne dokumenty
Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Równania miłości. autor: Tomasz Grębski

Wymagania edukacyjne z informatyki dla uczniów klas VI SP nr 53 w Krakowie w roku szkolnym 2019/2020

samopodobnym nieskończenie subtelny

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Techniki animacji komputerowej

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

Sprawozdanie z realizacji programu Kodowanie z klasą dla uczniów klasy II i IV Szkoły Podstawowej nr 7

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa, Inżynieria oprogramowania, Technologie internetowe

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Programowanie dynamiczne

Czym jest wykrywanie kolizji. Elementarne metody detekcji kolizji. Trochę praktyki: Jak przygotować Visual Studio 2010 do pracy z XNA pod Windows

Układy stochastyczne

Wymagania edukacyjne na ocenę z informatyki klasa 3

Modelowanie i obliczenia techniczne. dr inż. Paweł Pełczyński

Algorytmy sztucznej inteligencji

Algorytm genetyczny (genetic algorithm)-

Od szczegółu do ogółu, praktyczne refleksje o nauczaniu informatyki wg nowej podstawy programowej

Prawdopodobieństwo geometryczne

Algorytmy i schematy blokowe

Technologie informacyjne - wykład 12 -

Scenariusz lekcji Ozobot w klasie: Spacer losowy po układzie współrzędnych

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

CIĄGI wiadomości podstawowe

Implementacja filtru Canny ego

Temat 1: Pojęcie gry, gry macierzowe: dominacje i punkty siodłowe

Zastosowania Robotów Mobilnych

Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń

Modelowanie jako sposób opisu rzeczywistości. Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka

Tworzenie modeli ciała ludzkiego dla potrzeb modelowania pola elektromagnetycznego. Bartosz Sawicki, Politechnika Warszawska

Plan wykładu. Akcelerator 3D Potok graficzny

Opis postępowania przy eksportowaniu geometrii z systemu Unigraphics NX do pakietu PANUKL (ver. A)

Algorytmika i pseudoprogramowanie

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji.

JAKIEGO RODZAJU NAUKĄ JEST

SCENARIUSZ LEKCJI. Dzielenie wielomianów z wykorzystaniem schematu Hornera

Projekt i implementacja systemu wspomagania planowania w języku Prolog

SCENARIUSZ LEKCJI. Opracowywanie wielostronicowego dokumentu o rozbudowanej strukturze, stosowanie stylów i szablonów, tworzenie spisu treści.

Uniwersytet Kazimierza Wielkiego w Bydgoszczy Zespół Szkół nr 5 Mistrzostwa Sportowego XV Liceum Ogólnokształcące w Bydgoszczy

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

Funkcje liniowe i wieloliniowe w praktyce szkolnej. Opracowanie : mgr inż. Renata Rzepińska

Analiza obrazów - sprawozdanie nr 2

XV FESTIWAL NAUKI 2011 WPROWADZENIE DO BIOCYBERNETYKI

13. Równania różniczkowe - portrety fazowe

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Kolekcja prac KOMPUTEROWE PRZETWARZANIE WIEDZY

FRAKTALE I SAMOPODOBIEŃSTWO

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

SYMULACJA OPADÓW ATMOSFERYCZNYCH I POKRYWY ŚNIEŻNEJ W GENERATORZE OBRAZU JASKIER IG

TUTORIAL: Konwersja siatek i chmur punktów na powierzchnie a następnie odtworzenie drzewa operacji.

Algorytm. a programowanie -

Maciej Piotr Jankowski

SCENARIUSZ LEKCJI. Autorzy scenariusza: Krzysztof Sauter (informatyka), Marzena Wierzchowska (matematyka)

GUI - projektowanie interfejsów

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

TOZ -Techniki optymalizacji w zarządzaniu

Mikroekonometria 5. Mikołaj Czajkowski Wiktor Budziński

D O K U M E N T A C J A

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa i multimedia

Rzut oka na współczesną matematykę spotkanie 3: jak liczy kalkulator i o źródłach chaosu

SCENARIUSZ LEKCJI. TEMAT LEKCJI: O czym mówią współczynniki funkcji liniowej? - wykorzystanie arkusza kalkulacyjnego na lekcjach matematyki

Języki formalne i automaty Ćwiczenia 5

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Ile waży arbuz? Copyright Łukasz Sławiński

Iteracyjne rozwiązywanie równań

Liczba godzin. Poziom wymagań ponadpodstawowy

Technologia Flash cieszy się coraz większą popularnością. Liczba dostępnych

Scenariusz zajęć. Moduł VI. Projekt Gra logiczna zgadywanie liczby

Prawdopodobieństwo i statystyka

TECHNIKI MULTIMEDIALNE LABORATORIUM GIMP: Projektowanie tła

Teoretyczne podstawy informatyki

KURSY PROGRAMOWANIA DLA DZIECI

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

komputery? Andrzej Skowron, Hung Son Nguyen Instytut Matematyki, Wydział MIM, UW

lekcja 8a Gry komputerowe MasterMind

Lista zadań - Relacje

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

AiSD zadanie trzecie

Elementy modelowania matematycznego

Algorytm. Algorytmy Marek Pudełko

Kierunek:Informatyka- - inż., rok I specjalność: Grafika komputerowa

Lekcja : Tablice + pętle

Informatyka. Michał Rad

Metody numeryczne I Równania nieliniowe

Zad. 3: Układ równań liniowych

FUNKCJE. Rozwiązywanie zadań Ćw. 1-3 a) b) str Ćw. 5 i 6 str. 141 dodatkowo podaj przeciwdziedzinę.

Krzyżówka na lekcji o logarytmie liczby dodatniej i nie tylko

1 Wstęp teoretyczny. Temat: Obcinanie odcinków do prostokąta. Grafika komputerowa 2D. Instrukcja laboratoryjna Prostokąt obcinający

Ewidencja oznakowania w oparciu o system wideorejestracji.

LOGIKA I TEORIA ZBIORÓW

KONSPEKT ZAJĘĆ KOŁA INFORMATYCZNEGO LUB MATEMATYCZNEGO W KLASIE III GIMNAZJUM LUB I LICEUM ( 2 GODZ.)

Maszyna Turinga (Algorytmy Część III)

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Kryteria oceniania uczniów z informatyki w klasie II gimnazjum

FUNKCJA LINIOWA - WYKRES

Transkrypt:

Rafał Grzelak Proceduralne generowanie treści w grach komputerowych. 22.03.2013 W niniejszej prezentacji opowiem o mojej pasji - grach komputerowych. Dokładniej to tylko o jednym z wielu aspektów ich tworzenia, a ściślej mówiąc o jednym z aspektów ich programowania. Pokażę czym jest, na czym polega, i jak jest wykorzystywane proceduralne generowanie treści w grach komputerowych. Dla ułatwienia będę używał akronimu PCG - Procedural Content Generation. Warto też wspomnieć jako ciekawostkę, że PCG nie ma swojej taksonomii. W literaturze występuje zazwyczaj przy okazji innych tematów, mimo że zagadnienie jest stare jak same komputery. Czym jest generowanie proceduralne? Bardzo ogólnie mówiąc generowanie proceduralne jest to tworzenie czegoś przy pomocy określonych procedur programowych. Dla przykładu weźmy układ współrzędnych i naniesioną na niego graficzną reprezentację funkcji liniowej. Jak wiemy, prosta linia w matematyce to zbiór nieskończenie wielu odpowiednio ułożonych punktów, jednak w algorytmice zbiór jest skończony czyli zdyskretyzowany. W dużym uproszczeniu prosta została narysowana przy użyciu skończonej ilości pikseli, których położenie zostało wyliczone za pomocą równania. Czy jest to zatem generowanie proceduralne? Absolutnie. Do wyświetlenia prostej posłużyły przecież jasno określone procedury. Czym jest PCG? Powyższy przykład jest dobry na początek, ale trzeba przyznać, że raczej mało ciekawy. Znacznie ciekawsze jest tworzenie bardziej złożonych treści. Chcę opowiedzieć o szczególnym rodzaju treści - o Game Content do którego m.in. zaliczamy: tekstury modele dźwięki muzyka czcionki efekty animacje poziomy

Podział PCG. Jak już mówiłem wcześniej dziedzina ta nie ma swojej taksonomii. Nie ma więc oficjalnego podziału czy jakichkolwiek unormowanych definicji. W różnych źródłach mówi się o wielu rożnych podziałach. Moim zdaniem niektóre mają sens, inne nie, ale i tak ze względu na ograniczony czas powiem tylko o dwóch według mnie najważniejszych, a przynajmniej najłatwiej dostrzegalnych, podziałach algorytmów PCG: ontogenetyczne i teleologiczne 1 W skrócie algorytmy ontogenetyczne próbują odwzorować końcowy wynik fizycznego procesu bez emulowania kroków pośrednich, natomiast algorytmy teleologiczne starają się symulować sam proces, który doprowadził do pożądanego wyniku. Oba te podejścia można stosować wymiennie, ale za każdym razem gdy będziemy chcieli stworzyć coś proceduralnie wykorzystamy jedno z nich. online i offline Ten podział jest również bardzo prosty. Algorytmy online generują treść w czasie rzeczywistym podczas gdy algorytmy offline tworzą go z wyprzedzeniem np. w trakcie wczytywania programu. Podstawowe zagadnienia potrzebne do rozpoczęcia zabawy z PCG: L-system (system Lindenmayera) - rodzaj gramatyki formalnej służący do tworzenia graficznych tworów o fraktalnej budowie. L-system poza alfabetem, produkcjami i symbolem początkowym zawiera także mechanizm konwersji ciągów do struktur geometrycznych (np. technika żółwia). Wykonywany iteracyjnie. Szum Perlina - generuje prymityw teksturowy, który wygląda na losowy, ale ma stałej wielkości detale. Dzięki temu, że losowość jest bardziej uporządkowana, jak w naturze, można go dowolnie transformować i wykorzystywać do wielu rzeczy np. tworzenia realistycznie wyglądających tekstur. Szum simpleksowy - uproszczona wersja szumu Perlina. Efekt jest trochę bardziej sztuczny, ale za to zyskuje się ogromne przyspieszenie obliczeń. Diagram Voronoia - podział płaszczyzny w przestrzeni dwu- lub trójwymiarowej. Dla danego zbioru N punktów dzieli się płaszczyznę na N obszarów, w taki sposób, że każdy punkt w dowolnym obszarze znajduje się bliżej określonego punktu niż wszystkich pozostałych punktów 1 http://cowboyprogramming.com/2007/01/02/teleological-vs-ontogenetic/

Proceduralne wygenerowanie wyspy w kilku krokach: 1. Diagram Voronoia podział płaszczyzny na N obszarów. 2. Relaksacja Lloyda wycentrowanie punktów wewnątrz obszarów, a następnie ponowne wygenerowanie diagramu Voronoia. Operacja jest powtarzana aż do uzyskania satysfakcjonującego dla nas efektu.

3. Podział obszarów na dwie grupy, ląd i wodę, poprzez aproksymacje jakiegoś kształtu np. bitmapy wygenerowanej przy użyciu szumu Perlina. 4. Tworzenie mapy wysokości. Przykładowy algorytm: im dalej od brzegu wyspy, tym wyżej.

5. Tworzenie mapy wilgotności. Przykładowy algorytm: im dalej od wody, tym mniejsza wilgotność. 6. Biomy. Bazując na mapach wysokości i wilgotności można zastosować diagram Whittakera do wyznaczenia biomów.

7. Seria szumów i wygładzeń w celu poprawienia odbioru wizualnego. a) Szum Perlina w celu 'poszarpania' krawędzi biomów. b) Rozmycie krawędzi. c) Wygładzenie. d) Więcej szumu Perlina.

8. Utworzenie szczytów bazując na mapie wysokości. Wartość wysokości, tj. kolor na mapie wysokości, bezpośrednio powiązany z osią Y. Zalety i wady PCG. Raczej oczywisty jest powód stosowania PCG przy tworzeniu gier. Treści wygenerowane algorytmicznie są tańsze, teoretycznie wymagają mniej czasu, mniejszego wkładu ludzkiego, pozwalają na większą różnorodność, oszczędzają przestrzeń dyskowa itd. Zalet PCG jest na pewno dużo. Można się zastanawiać, czemu wszystko nie jest generowane proceduralnie? Gry będą o wiele bardziej rozbudowane i atrakcyjne, prawda? Na proceduralnie wygenerowanej wyspie jest proceduralny las składający się z proceduralnych drzew. W lesie znajdziemy proceduralnie stworzony labirynt w którym płonie proceduralnie wygenerowanym ogniem pochodnia, tworząc chmury proceduralnego dymu. Rzeczywistość nie jest jednak aż tak różowa. Przede wszystkim wypracowanie odpowiednich algorytmów jest w praktyce trudniejsze niż na papierze. Człowiek potrafi dość łatwo wykryć które treści zostały wygenerowane, a które stworzone manualnie. Im bardziej wyrafinowany algorytm tym trudniej to dostrzec, jednak skomplikowanie algorytmów pociąga za sobą wymagania sprzętowe. Procedury muszą działać w rozsądnym czasie, żeby mogły być wykorzystane w grach, stąd uproszczenia. Uproszczenia natomiast oznaczają, mniej lub bardziej, dostrzegalne wzorce.

Powtarzalność nie zawsze jest dużym problemem. Powstały gry, które ominęły ją w sprytny sposób - pozwoliły użytkownikowi na ingerencje w treść. Dzięki takiemu zabiegowi gracz nie dba o to, czy treść jest oryginalna, ale skupia się na jej modyfikacji. Przykładami takiego podejścia są gry sandboxowe np. Minecraft czy Terraria. Podsumowanie. Proceduralne generowanie treści jest bardzo powszechnie wykorzystywaną techniką przy tworzeniu gier komputerowych. Pomimo swoich wad i niedoskonałości cieszy się coraz większą popularnością wśród twórców, ponieważ pozwala na redukcję kosztów i przyspieszenie produkcji gier. Rosnąca moc obliczeniowa komputerów osobistych i konsol do gier pozwala na stosowanie coraz bardziej złożonych algorytmów, dających coraz to lepsze efekty.