Professional Documents
Culture Documents
Praca Magisterska
Praca Magisterska
Algorytmy proceduralnego
generowania rzeczywistoci
na przykadzie dwuwymiarowej
gry cRPG
Praca magisterska
wykonana pod kierunkiem
dr. Tomasza Gwizday
Uniwersytet dzki
Wydzia Fizyki i Informatyki Stosowanej
d, 2012
Spis treci
1. Wstp................................................................................................................................. 4
1.1 Proceduralno oraz losowo..............................................................................................4
1.2 Zastosowania generatorw proceduralnych..........................................................................5
2. Cel...................................................................................................................................... 7
2.1 Implementacja algorytmw....................................................................................................7
2.2 Wybrane rodowisko programistyczne..................................................................................8
2.2.1 Jzyk programowania....................................................................................................8
2.2.2 Kompilator......................................................................................................................8
2.2.3 Biblioteka graficzna........................................................................................................8
3. Mapa wiata....................................................................................................................... 9
3.1 Elewacja................................................................................................................................9
3.1.1 Automat komrkowy......................................................................................................9
3.1.2 Szum Perlina................................................................................................................10
3.2 Biomy...................................................................................................................................11
3.2.1 Korekta biomw...........................................................................................................12
3.3 Uksztatowanie terenu.........................................................................................................13
3.3.1 Rzeki............................................................................................................................13
3.3.2 Gry.............................................................................................................................14
3.3.3 Lasy.............................................................................................................................14
3.4 Infrastruktura........................................................................................................................15
3.5 Analiza ksztatw.................................................................................................................17
4. Miasto............................................................................................................................... 22
4.1 Plan drg.............................................................................................................................22
4.2 Przygotowanie listy budynkw ............................................................................................23
4.3 Gospodarowanie przestrzeni.............................................................................................24
4.4 Generowanie budynkw......................................................................................................24
4.5 Aranacje pokojw...............................................................................................................27
5. Labirynt............................................................................................................................ 28
5.1 Zastosowanie algorytmu......................................................................................................28
5.2 Hunt&Kill..............................................................................................................................28
5.3 Mapa owietlenia.................................................................................................................29
6. Postacie........................................................................................................................... 31
6.1 Statystyki postaci.................................................................................................................31
6.1.1 Zawody........................................................................................................................31
6.1.2 Cechy indywidualne.....................................................................................................32
6.1.3 Modyfikacje cech.........................................................................................................32
6.2 Animacja szkieletowa...........................................................................................................35
6.2.1 Budowa modelu szkieletowego...................................................................................35
6.2.2 Animacja......................................................................................................................36
7. Nazwy............................................................................................................................... 38
7.1 Technika generowania.........................................................................................................38
7.1.1 acuch Markowa........................................................................................................38
7.2 Imiona postaci......................................................................................................................41
2
1. Wstp
Generowanie proceduralne jest dziedzin szeroko wykorzystywan w produkcji mediw
cyfrowych. Algorytmy tworzenia zasobw stosuje si gwnie w programach
przeznaczonych do manipulacji obrazem, jak rwnie grach wideo. W pracy opisany zosta
sposb generowania wszystkich istotnych elementw gier komputerowych wraz z uytymi
w tym celu algorytmami.
- gra akcji FPP, podobna do Quake III Arena, zajmujca na dysku 96kB, gdy jedynym
zasobem jaki posiada, jest jej kod wykonywalny.
Zakres wykorzystywania elementw generowanych proceduralnie zmienia si wraz z rozwojem technologii informatycznych. Kiedy rozmiary pamici komputerowej byy bardzo
ograniczone, generowanie proceduralne pozwalao zredukowa wielko aplikacji, gwnie
poprzez losowe tworzenie poziomw gry.
Wraz z rosnc moc obliczeniow komputerw, producenci gier ukierunkowali
si na rczne tworzenie zawartoci. Wszelkie modele i tekstury s tworzone przez
grafikw, a muzyka i efekty nagrywane w studiach, umoliwiajc pen kontrol nad
produktem wynikowym. Drug stron takiego rozwizania jest powtarzalno - za kadym
razem kiedy uruchomimy gr otrzymujemy t sam zawarto. Taki sposb produkcji gier
kadzie zdecydowany nacisk na prac grafikw, natomiast coraz mniejsz wag przykada
si do rozwiza algorytmicznych, przez co wydawanych jest coraz wicej tytuw
klasyfikowanych jako visual-novel13, ktre dalece odstpuj od klasycznej definicji
gry komputerowej.
Obecnie generatory stosuje si w ograniczonym zakresie, jednak twrcy w zdecydowanej
wikszoci produkcji wprowadzaj czynnik losowy aby urozmaici rozgrywk bd
dostosowa j do umiejtnoci graczy. Std te proceduraln zawarto mona spotka
zarwno w produkcjach klasy AAA, jak i grach niezalenych.
[13] Chris Klug, Josiah Lebowitz: Interactive Storytelling for Video Games: A Player-Centered Approach to
Creating Memorable Characters and Stories. Burlington, MA: Focal Press. pp. 1947. ISBN 0-240-81717-6.
2. Cel
Celem pracy jest analiza zalet i wad elementw generowanych proceduralnie w grach.
rdem analizy jest w peni funkcjonalna gra cRPG (computer Role Playing
Game - Komputerowa gra fabularna korzystajca z tej samej mechaniki i terminologii
co tradycyjne gry RPG), z zasobami wygenerowanymi w caoci proceduralnie, utworzona
specjalnie na potrzeby pracy.
Do tej pory nie stworzono komputerowej gry fabularnej, ktra w ten sposb zapewniaa
by jednoczenie grywalno oraz niepowtarzalno elementw.
2.2.2 Kompilator
Obecnie istniej dwa liczce si kompilatory jzyka C++ - GCC (GNU Compiler
Collection) oraz Visual C++. Pierwszy z nich jest kompilatorem rozwijanym na zasadzie
wolnego oprogramowania i powszechnie wykorzystywanym do tworzenia programw
gwnie w rodowisku Linux. Visual C++ jest kompilatorem dziaajcym w systemach
rodziny Windows oraz domylnie dostarczany w zintegrowanym rodowisku
programistycznym Visual Studio. Oba kompilatory s zgodne ze standardami jzyka C++
i zapewniaj optymalny proces kompilacji programw.
Z uwagi na moliwoci oferowane przez Microsoft Visual Studio 2010 Premium
oraz moliwos korzystania z jego penej, legalnej wersji poprzez program akademicki
DreamSpark Premium14, wybranym kompilatorem zosta Visual C++.
[14] www.microsoft.com/poland/edukacja/dreamsparkpremium_dla_studenta.aspx
[15] www.libsdl.org
[16] www.sfml-dev.org
[17] alleg.sourceforge.net
3. Mapa wiata
wiat w grze reprezentowany jest przez siatk skadajc si z rwnych rozmiarw
kwadratw, w dalszej czci pracy nazywanych rwnie polami. Mapa wiata znajdujca
si w grze jest tablic pl o wymiarach 120x100. Aby jak najlepiej odda warunki
rzeczywiste, naley rozrni obszary ldowe od morskich, nada im charakterystyczne
cechy klimatyczne oraz flor.
3.1 Elewacja
Pierwszym etapem generowania wiata gry jest stworzenie mapy wysokoci terenu.
Cz wykorzystywanych algorytmw zwraca jednak wartoci zero-jedynkowe, co pozwala
wycznie na oddzielenie wd od ldw. W najprostszej wersji rezultatem takiego dziaania
jest przypisanie dla kadego pola wartoci 1 (ld) lub 0 (woda). Czynno t mona
wykona na wiele sposobw, w pracy zostay przetestowane dwa z nich.
[18] F.Bagnoli, R.Rechtman, S.Ruffo, Damage spreading and Lyapunov exponents in cellular automata,
Phys.Lett.A, 172, 34, 1992
Rysunek 3: Bitmapa
powstaa ze scalenia map
czstkowych
10
3.2 Biomy
Kolejnym etapem generowania wiata jest podzielenie go na biomy, czyli strefy rnice
si klimatem, faun oraz flor. Skala wielkoci wiata jest przyjta tutaj bardzo umownie.
Gdyby biomy wystpoway tak, jak w naturze, caa gra toczyaby si w jednej strefie
klimatycznej. Rozwizanie takie jest niedopuszczalne, ze wzgldu na wystpujc wtedy
nisk rnorodno odwiedzanych lokacji.
Biom dla kadego pola jest wyliczany jako funkcja dwch parametrw: wysokoci
nad poziomem morza oraz temperatury. Dziki temu, e jako generator terenu wybrany
zosta szum Perlina, wysoko pola mona atwo uzyska odczytujc i digitalizujc
jego jasno. Temperatura wyliczana jest w identyczny do wysokoci sposb. Korzystajc
z tej samej metody generowany jest obraz rozkadu ciepa.
Wysoko
Pustynia lodowa
Lasy twardolistne
Step
Tundra
Lasy liciaste
Pustynia
Tajga
Lasy rwnikowe
Sawanna
Temperatura
Tabela 1: Przypisanie biomu w zalenoci od wysokoci i temperatury.
[20] Robert H. Whittaker: Communities and Ecosystems, Macmillan, 1975. ISBN 0-02-427390-2
11
Oczywicie w naturze taki sposb jest nie do przyjcia, poniewa rzeba terenu danego
regionu jest zawsze cile zalena od obecnego biomu. Wysoce nieoptymalna byaby
jednak implementacja procesw formowania powierzchni, bazujca na klimacie, pogodzie
i warunkach atmosferycznych. Z tego te wzgldu zastosowano rozwizanie pozwalajce
na niezalene generowanie uksztatowania terenu i stref klimatycznych, gdzie
za powizania tych dziedzin odpowiada podana wczeniej tabela.
Wyszukiwanie wybrzey
Kade pole bdce ldem bezporednio graniczcym z oceanem zapisywane
jest jako wybrzee.
12
= 2/3
= 0
= 1/3
= 0
Naley pamita, e pole (0,0) mapy wiata znajduje si w jej lewym-grnym rogu.
Jeeli uzyskana warto losowa wskazuje na pole (X+1, Y) to staje si ono polem
aktualnym (X,Y). Powysze wartoci prawdopodobiestwa pozostaj niezmienne
do koca ewolucji biegu rzeki.
Poniewa
przedstawiony
algorytm
moe
produkowa zaptlenia (klastry pl 2x2 bdcych
rzekami),
stosuje
si
naiwne
rozwizanie
redukujce takie ptle poprzez usuwanie rzek z pl
posiadajcych najmniej takich samych ssiadw.
Rzeki w rozgrywce
Rysunek 7: Korekcja przepywu rzeki.
Gracz nie moe wej na pole bdce
rzek. Jeeli powstanie tam droga, jest ona transformowana w most, ju osigalny
dla bohatera.
Rysowanie rzek
W celu optymalnie szybkiego oraz estetycznego wywietlania
reprezentacji rzek, w programie zastosowano szablon do ich produkcji.
graficznej
13
3.3.2 Gry
Prawdopodobiestwo przypisania terenu grzystego dla danego pola
przedstawia wygenerowana, poprzez ponowne zastosowanie szumu
Perlina, bitmapa w skali odcieni szaroci. W tym przypadku, zwaywszy
na aspekt rozgrywkowy, szum posiada wiksz ziarnisto, dziki czemu
mapa jest zrwnowaona pod wzgldem wystpowania gr. Jasno
piksela z uzyskanej mapy okrela prawdopodobiestwo przypisania
terenu grzystego do tego pola.
Rysunek 8:
Reprezentacja
graficzna gr.
Gry w rozgrywce
Pole zajte przez skay jest nieosigalne dla gracza, nie mona
rwnie przez nie przeprowadzi drogi czcej miasta.
Rysowanie gr
Wzgrze powstaje poprzez czenie losowo wybranych punktw tworzcych
aman otwart zwyczajn, ktra nastpnie jest zamykana poprzez poczenie
z punktami podstawy. Uzyskana figura jest wypeniana kolorem zalenym od biomu
na jakim si znajduje.
3.3.3 Lasy
Lasy na mapie wiata prezentowane s jako pojedyncze drzewa. Prawdopodobiestwo
umiejscowienia ich na danym polu zaley, analogicznie jak w przypadku gr,
od wygenerowanej bitmapy oraz przypisanego biomu. Skutkuje to map, na ktrej,
dla przykadu, zalesienie w strefie lasw liciastych jest o wiele wiksze ni w strefie
pustynnej.
Lasy w rozgrywce
Gracz moe swobodnie przemieszcza si po polach oznaczonych jako lasy,
jednake prawdopodobiestwo zaatakowania bohatera przez losowych
przeciwnikw jest wtedy znaczco wysze.
Rysowanie lasw
Na kady biom wystpujcy w grze, przypada
jeden rodzaj wywietlanego drzewa. S to:
akacja (sawanna),
kaktus (pustynia),
krzew stepowy (step),
bananowiec (lasy tropikalne),
db (lasy liciaste),
pistacja (lasy twardolistne),
wierk (tajga),
brzoza karowata (tundra),
sosna karowata (pustynia polarna).
Rysunek 9: Reprezentacje
graficzne drzew.
14
3.4 Infrastruktura
Na powsta, wypenion terenem, map nakada si elementy infrastruktury. Nale
do nich miasta, drogi, mosty oraz porty. Ilo miast losowana jest z przedziau <10,20>.
Kady element infrastruktury zajmuje powierzchni jednego pola.
Pierwszym krokiem generowania infrastruktury jest losowe wybranie dwch pl
na ktrych umieszczone zostan miasta, oraz poczenie ich ze sob. Miasto moe
powsta na kadym terenie z wyjtkiem oceanw, wybrzey, rzek oraz gr. W celu
wyznaczenia drogi pomidzy dwoma pocztkowo utworzonymi miastami stosuje si
heurystyczny algorytm A*22. Jest to powszechnie stosowany w grach komputerowych
sposb wyznaczania trasy midzy dwoma punktami. A* jest najszybszym z algorytmw
wyszukiwania najkrtszej drogi w grafie, dajcy przy tym najblisze optymalnym wyniki.
Schemat dziaania algorytmu A*:
Wymagane struktury danych:
- zbir pl przeszukiwania posiadajcych dodatkowo parametry:
F - ocena cieki bdca sum parametrw G i H,
G - koszt ruchu z punktu startowego do danego pola,
H - przewidywany koszt ruchu z danego pola do pola kocowego,
wsprzdne pola rodzica,
- lista otwarta,
- lista zamknita.
1. Umie pole pocztkowe na licie otwartej.
2. Znajd na licie otwartej element posiadajcy najnisz warto F. Od tej pory
jest on aktywnym polem.
3. Dodaj aktywne pole do listy zamknitej
3a. Pierwszy warunek stopu: Pole docelowe zostao dodane do listy zamknitej.
4. Dla kadego pola ssiadujcego z aktywnym:
4a. Jeeli jest nieosigalne lub znajduje si na licie zamknitej, zignoruj je.
4b. Jeeli nie znajduje si na licie otwartej:
- dodaj je do niej,
- uczy wierzchoek aktywny rodzicem sprawdzanego pola,
- oblicz dla niego wartoci parametrw:
- G przyjmuje warto rodzica powikszon o jeden,
- H jest euklidesow odlegoci do punktu kocowego,
- F jest sum wartoci G i H.
4c. Jeeli znajduje si na licie otwartej, sprawd czy jego warto G jest wiksza
od zinkrementowanej wartoci G pola aktywnego, jeli tak:
[21] James D Foley, Andries van Dam, Steven K Freiner, John F Hughes, Richard L Phillips: Wprowadzenie do
grafiki komputerowej. Jan Zabrodzki (tumaczenie). Warszawa: Wydawnictwa Naukowo-Techniczne,
1995. ISBN 83-204-1840-2.
[22] P.E.Hart, N.J.Nilsson, B.Raphael: A Formal Basis for the Heuristic Determination of Minimum Cost Paths,
IEEE Transactions on Systems Science and Cybernetics SSC4 4 (2): 100107, 1968
15
Mosty
Jeli okae si, e droga prowadzi przez rzek, na polu tym
zostanie umieszczony most.
Porty
W przypadku, kiedy nowo wylosowane miasto nie czy si
z adn drog ani innym miastem, przyjmuje si, e znajduje si
ono na innej wyspie. W takim wypadku powtarza si algorytm
wyszukiwania drogi z moliwoci poprowadzenia trasy przez
ocean. Jeeli takie poczenie znaleziono, to kade pole drogi
pooone na oceanie i graniczce z drog ldow traktuje si
jako port. W przeciwnym wypadku losowane jest nowe pooenie
miasta.
Rysunek 10:
Reprezentacja
graficzna mostu.
Rysunek 11:
Reprezentacja
graficzna portu.
Miasta w rozgrywce
Kade takie pole symbolizuje obszar ktry moe zosta odwiedzony przez gracza.
Wchodzc do miasta bohater przenosi si z mapy wiata do wygenerowanej
lokacji, gdzie moe odwiedza poszczeglne domy i rozmawia z mieszkacami.
Rysowanie miast
Zalenie od temperatury biomu na obszarze ktrego znajduje si
miasto, istniej trzy typy miast:
na terenie pustynnym - domy zbudowane gwnie
z kamienia, czciowo lepianki i szaasy,
na terenie umiarkowanym - budynki z cegie, osady
ogrodzone murem,
na terenie chodnym - chaty z drewna, ocieplane som.
Do rysowania domw nie uywa si adnych specjalistycznych
algorytmw generujcych. Elementy architektoniczne tworzy
si poprzez
losowe
dobieranie
wymiarw
budynkw,
umiejscowienia drzwi, czy bram.
Rysunek 12:
Reprezentacja
graficzna miast.
16
17
Zawarto
Popularny wskanik niezaleny od liniowych transformacji - skali i rotacji,
opisywany wzorem:
RZ =
Gdzie
A - dugo ciciwy duszej,
B - dugo ciciwy krtszej.
a
b
Gdzie
a - dugo duszego boku prostokta grnaicznego,
b - dugo krtszego boku prostokta granicznego.
Prostoktno
Jako stosunek pola powierzchni obiektu do pola powierzchni prostokta
granicznego opisanego na tym obiekcie.
RP=
A
B
Smuko
Jest stosunkiem dugoci bokw prostokta granicznego opisanego na obiekcie
(kolor czerwony na rysunkach) wyraana wzorem:
RS =
Gdzie
L - obwd,
S - pole powierzchni.
Centryczno
Jest to stosunek dugoci maksymalnej ciciwy A, obiektu, do maksymalnej
dugoci ciciwy B prostopadej do A (ciciwy na rysunkach oznaczono kolorem
zielonym).
RC =
L2
4S
S
ab
Gdzie
S - pole powierzchni,
a - dugo duszego boku prostokta granicznego,
b - dugo krtszego boku prostokta granicznego
Wspczynnik Malinowskiej
Jest jednym z najprostszych wspczynnikw ksztatu stosowanych w cyfrowej
analizie obrazw i wyraa si wzorem:
RM =
L
1
2 S
Gdzie
L - obwd,
S - pole powierzchni.
[23] Wedug wykadu M. Kujawiska: Cyfrowe przetwarzanie obrazw. Politechnika Warszawska, Wydzia
Mechatroniki, Instytut Mikromechaniki i Fotoniki
18
Ponisza tabela prezentuje otrzymane wyniki dla ksztatw wygenerowanych przez szum
Perlina.
Numer
figury
Zawarto
Centryczno
Smuko
Prostoktno
Wspczynnik
Malinowskiej
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3,28
4,26
2,12
3,23
5,15
2,21
6,15
2,41
4,92
5,33
4,84
5,35
4,43
6,73
1,26
1,97
1,50
1,92
1,22
1,78
2,46
1,02
2,20
1,18
2,05
2,14
1,29
1,49
1,29
1,74
1,41
1,89
1,27
1,57
2,34
1,12
1,43
1,08
1,71
2,33
1,13
1,47
0,57
0,55
0,75
0,62
0,60
0,63
0,45
0,71
0,46
0,52
0,49
0,56
0,54
0,50
0,81
1,06
0,46
0,80
1,27
0,49
1,48
0,55
1,22
1,31
1,20
1,31
1,11
1,59
19
Ponisza tabela prezentuje otrzymane wyniki dla ksztatw najwikszych jezior na kuli
ziemskiej.
Numer
figury
Zawarto
Centryczno
Smuko
Prostoktno
Wspczynnik
Malinowskiej
1
2
3
4
5
6
7
8
9
10
11
12
13
14
3,80
6,59
2,56
3,86
5,19
7,13
9,45
5,03
5,55
3,33
4,92
2,20
4,46
8,04
4,08
1,56
1,81
2,32
1,37
2,41
1,84
2,04
3,50
2,04
1,75
2,22
3,14
2,17
2,84
2,00
1,57
2,09
1,18
2,00
1,53
2,02
3,23
1,75
1,43
2,00
2,52
1,99
0,48
0,38
0,63
0,63
0,45
0,41
0,46
0,60
0,51
0,56
0,56
0,65
0,51
0,31
0,95
1,57
0,60
0,97
1,28
1,67
2,07
1,24
1,36
0,82
1,22
0,48
1,11
1,84
20
rednie wartoci
elementw
wygenerowanych
rednie wartoci
elementw
rzeczywistych
Zawarto
4,32 1,46
5,15 2,07
Centryczno
1,68 0,46
2,30 0,77
Smuko
1,56 0,41
2,01 0,55
Prostoktno
0,57 0,09
0,51 0,10
Wsp. Malinowskiej
1,05 0,37
1,23 0,45
Cecha
Tabela 4: Porwnanie rednich wynikw kolejnych wspczynnikw ksztatu dla obu testw.
21
4. Miasto
Ze wzgldu na przyjt konstrukcj map gry (ktre skadaj si z kwadratowych pl,
a w przypadku miast s ich tablic o wymiarach 60x60), reprezentacja poszczeglnych
budynkw w miecie opiera si na planach prostoktw. Najbardziej adekwatnym
dla takiego modelu schematem rozmieszczenia ulic jest architektura nowojorska, tj. miasta
w ktrym plany poszczeglnych dzielnic skadaj si z siatki rnej wielkoci prostoktw.
Przykadem rodzimej metropolii o takiej budowie jest d. Plac Wolnoci peni rol punktu
centralnego, a otaczajce go prostopade ulice Zachodnia, Pnocna, Wschodnia
i Poudniowa (dzi ul. Rewolucji 1905 oraz ul. Prchnika) wyznaczay podstawowy szablon
dla budowy nastpnych drg.
22
3a. Ustal kierunek podziau prostokta na podstawie jego wymiarw. Jeeli bok A
jest duszy od boku B, czworokt dzielony bdzie lini pionow, w przeciwnym razie lini
poziom.
3b. Wylosuj miejsce przecicia prostokta w aktywnym wle, zachowujc odpowiedni
margines.
3c. Jeeli okrelony margines nie pozwala na przecicie czworokta, nie rb nic,
w przeciwnym razie dodaj dwa powstae prostokty do drzewa BSP jako wzy potomne
do aktywnego.
4. Utwrz tablic prostoktw skadajc si z wymiarw przechowywanych tylko
w liciach drzewa binarnego. Kade pole mapy znajdujce si na obwodzie dowolnego
z uzyskanych prostoktw potraktuj jako drog.
W powyszy sposb, poza globaln sieci drg, algorytm zwraca wsprzdne kadej
dziaki na ktrej nastpnie mona stworzy okrelony rodzaj zabudowy.
Wielkoci uzyskanych dziaek mona sterowa poprzez zmian iloci iteracji algorytmu
BSP. Dla miast generowanyh w grze, algorytm wykonuje cztery iteracje, co daje
wiarygodne rozmiary parceli na mapie o rozmiarze 60x60 pl.
Tawerna
Tawerna jest miejscem w ktrym bohater moe naby od oberysty rne rodzaje
trunkw. Jest to rwnie miejsce gromadzce przyjezdnych z innych miast.
Kunia
W kuni bohater moe przede wszystkim wyposay si w or sucy do walki.
W kadym obiekcie tego typu znajduje si co najmniej jeden kowal, ktry
udostpnia towary na sprzeda.
Zbrojownia
Zbrojownia jest bliskim odpowiednikiem kuni. Jedyn rnic jest moliwo
nabycia zbroi i elementw ochronnych zamiast ora do walki.
23
Zielarnia
Chata zielarki to miejsce w ktrym bohater wyposay si w mikstury leczce
oraz poprawiajce statystyki.
witynia
W kadej wityni gracz moe otrzyma od kapana bogosawiestwa, ktre bd
zwiksza statystyki bohatera przez okrelony czas.
Rynek
Rynek jest gwnym miejscem spotka mieszkacw miasta. Mona na nim kupi
rne przedmioty niedostpne w konwencjonalnych sklepach. Plac umoliwia
rwnie dostp do studni, ktrymi schodzi si do miejskich katakumb.
[25] Thomas H Cormen, Charles E Leiserson, Ronald L Rivest: Wprowadzenie do algorytmw. Warszawa:
Wydawnictwa Naukowo-Techniczne, 2003. ISBN 83-204-2800-9.
24
Paac krlewski
Minimalny rozmiar dziaki: 27x17 pl
Paac
budowany
jest
w ksztacie obrconej litery C.
Gwnym pomieszczeniem jest
komnata krlewska w ktrej
znajduje si midzy innymi
tron. Hol czy ze sob dwa
skrzyda paacu podzielone losowo na pokoje.
witynia
Minimalny rozmiar dziaki: 12x12 pl
Kada witynia oparta jest
na tym samym schemacie;
droga do niej prowadzca poczona jest z przedsionkiem,
a ten z naw gwn. Wewntrz znajduje si otarz,
a ciany bdce za nim ukadaj si w ksztat trjkta.
W zalenoci
od rozmiaru
dziaki ustalana jest ilo
awek wypeniajca gwn
komnat.
Tawerna
Minimalny rozmiar dziaki: 13x15 pl
Z drog poczony jest wszy
hol recepcyjny bdcy przedsionkiem do pokojw gocinnych oraz kuchni, powstaych
przez podzielenie jednego
szerokiego budynku.
25
Sklep
Minimalny rozmiar dziaki: 9x9 pl
Z przedstawionego algorytmu
korzysta
zarwno
kunia,
zbrojownia jak i zielarnia. Tworzony jest prostoktny budynek o wymiarach dziaki,
w dalszej kolejnoci zostaje
on podzielony
algorytmem
drzewa binarnego na mniejsze
pokoje. Zaraz obok wejcia
do budynkw tego typu, dodawana jest tabliczka z symbolem prowadzonej dziaalnoci.
Rynek
Minimalny rozmiar dziaki: 5x5 pl
Plac gwny nie jest w rozumieniu stricte budynkiem, lecz
zbiorem poustawianych losowo
kramw
kupieckich
i studni publicznego uytku.
Na kadym rogu dziaki rynkowej stoi posg tarczy
i miecza zwikszajcy estetyk okolicy.
Cmentarz
Minimalny rozmiar dziaki: 5x5 pl
Miejsce pochwku mieszczan
skada si z nagrobkw
ustawionych w odlegociach
dwch pl na planie siatki.
Cmentarz dodatkowo otoczony
jest potem.
26
Dom mieszkalny
Minimalny rozmiar dziaki: 9x9 pl
Zastosowano tutaj algorytm generowania sklepu, jednak bez umieszczania tablicy
przy wejciu.
Obiekt zajmujcy
dwa pola
Obiekt znajdujcy
si przy cianie
Obiekt stojcy
na rodku
Sypialnia
ko
Garderoba
St
Kuchnia
Kuchenka
Beczka
St
Salon
Rega
Garderoba
St
Magazyn
Skrzynia
Skrzynka
Beczka
Kunia
Piec
Kowado
Wiadro
Zielarnia
Suszarka zi
Kocio
brak
27
5. Labirynt
Mimo i struktury labiryntowe w naturze objawiaj si gwnie w korytarzach
wytworzonych przez mrwki czy korniki, s one powszechnie wykorzystywane
w zagadnieniu generacji map dla gier. Wszelkiego rodzaju podziemia, katakumby,
a gwnie lochy w produkcjach typu roguelike (nakierowanych na eksploracj cigw pokoi
i korytarzy) korzystaj z rnorakich algorytmw generowania labiryntw.
5.2 Hunt&Kill
Jak sama nazwa wskazuje, algorytm Hunt&Kill pracuje w dwch fazach. Faza polowania
"hunt" okrela pole od ktrego rozpocznie si nastpna faza - "kill". Aby opisa dziaanie
tej metody naley wpierw zapozna si z algorytmem bdzenia losowego.
Algorytm bdzenia losowego
Poniszy przepis jest czci algorytmu waciwego Hunt&Kill i odpowiada on fazie "kill".
Parametrem startowym procedury jest pole aktywne nalece do mapy labiryntu.
1. Jeeli pole aktywne nie posiada nieodwiedzonych ssiadw, koczymy dziaanie
algorytmu.
[26] Jamis Buck: "Algorithms" is Not a Four-Letter Word. New Orleans, LA: RubyConf 2011
28
Wady
Satysfakcjonujce
wyniki
dziaania
dla potrzeb gier komputerowych.
Tabela 6: Wady i zalety algorytmu Hunt&Kill.
29
30
6. Postacie
6.1 Statystyki postaci
We wszystkich wygenerowanych miastach znajduj si mieszkacy. Kady obywatel
ma swj indywidualny zestaw cech opisujcych zarwno jego wygld zewntrzny
jak i nastrj. Wraz z tworzeniem budynkw, na mapie umieszczane s punkty startowe
dla poszczeglnych postaci. Dla przykadu: w kadej wityni obok otarza swj punkt
startowy ma kapan.
W momencie generowania miast przechowywane s tylko rodzaje wykonywanych
zawodw, przypisanie cech indywidualnych nastpuje w nastpnej fazie jak jest tworzenie
postaci.
6.1.1 Zawody
Zawd
Punkty startowe
onierz
paac, rynek
Kowal broni
kunia, rynek
Kowal zbroi
zbrojownia, rynek
Oberysta
tawerna, rynek
Zielarka
zielarnia, rynek
Krl
paac
Kapan
witynia
Kupiec
rynek
Kucharz
kuchnia, rynek
Tragarz
magazyn, rynek
Bezrobotny
dowolne
31
Dostpne opcje
Pe
mczyzna
kobieta
Imi
Rasa
biaa
czarna
nordycka
Wiek
dziecko
mody
dorosy
sdziwy
Wysoko
Waga
Zawd
Nastrj
spokojny
wesoy
smutny
zy
zaskoczony
rozbawiony
Fryzura
mczyzna
ysy
grzybek
krtkie
irokez
kobieta
krtkie
kitki
dugie
kok
32
Rasa
Kolor wosw
Sawanna
Pustynia
Step
czarna
czarny
brzowy
siwy
Lasy rwnikowe
Lasy liciaste
Lasy twardolistne
biaa
bez modyfikacji
Tajga
Tundra
Pustynia lodowa
nordycka
blond
rudy
siwy
Zawd
onierz
Minimalny
wzrost
Maksymalny
wzrost
Maksymalna
waga
Pe
100
Kowal
80
Oberysta
100
Zielarka
180
Minimalna
waga
140
70
Krl
Kapan
150
Kucharz
90
80
80
100
Tragarz
M
Tabela 10: Modyfikacje cech postaci ze wzgldu na zawd.
Wiek
Dziecko
Zmiana cechy
Nowe wartoci
maksymalny wzrost
120
maksymalna waga
50
fryzura mska
grzybek
krtkie
kolor wosw
blond
brzowy
czarny
rudy
33
Sdziwy
maksymalny wzrost
140
minimalna waga
70
maksymalna waga
90
kolor wosw
siwy
fryzura mska
ysy
grzybek
krtkie
fryzura damska
dugie
kok
[czarna]
[brzowy, czarny, siwy]
}
natomiast do zbioru B przyjmiemy cechy wieku (np. dziecka);
B = {
maksymalny_wzrost:
maksymalna_waga:
fryzura_mska:
kolor_wosw:
[120]
[50]
[grzybek, krtkie]
[blond, brzowy, czarny, rudy]
}
to wynikowym zbiorem modyfikacji regu, ktre naley zaaplikowa do generatora bdzie:
A + B = {
rasa:
maksymalny_wzrost:
maksymalna_waga:
fryzura_mska:
kolor_wosw:
}
[czarna]
[120]
[50]
[grzybek, krtkie]
[brzowy, czarny]
34
Wady
Bardzo niskie zuycie pamici komputera. Kada posta posiada swj model
szkieletu, a jej akcje zapisane s jako
kolejne transformacje poszczeglnych
koci.
Wzmoony
czas
obliczeniowy.
W kadej klatce animacji wyznaczana
musi by transformacji koci, ktra nastpnie jest przekadana na transformacj poczonej bitmapy.
Dowolno
interakcji
z otoczeniem.
Szkielet moe reagowa na bodce zewntrzne i w ten sposb zmienia swoj
struktur.
35
6.2.2 Animacja
Do uzyskania pynnej animacji niezbdne jest zdefiniowanie poszczeglnych klatek
kluczowych szkieletu, a nastpnie implementacja algorytmu interpolujcego te stany.
Metod zastosowan w czeniu ruchw midzy komi jest kinematyka prosta 27. Zakada
ona, e pozycja poszczeglnych czci modelu w danym czasie jest liczona wedug
pozycji i orientacji samego modelu, uwzgldniajc wszelkie stawy znajdujce si
po drodze. Przykadowo, jeeli obrcone zostanie rami postaci, to wraz z nim poruszy
si tak samo przedrami, nadgarstek jak i palce, tak by zachowa swoj wzgldn
orientacj w stosunku do ramienia.
Przeciwiestwem kinematyki prostej jest kinematyka odwrotna, gdzie pozycja modelu jest
obliczana na podstawie transformacji poszczeglnych jego czci. W przypadku
kinematyki
odwrotnej
to
poruszenie
doni
spowoduje
ruch
nadgarstka
oraz przedramienia.
[27] J. M. McCarthy: Introduction to Theoretical Kinematics. MIT Press, Cambridge, MA, 1990
36
Klatka kluczowa skada si z tablicy zawierajcej kt obrotu oraz dugo kadej z koci.
Do wykonania animacji poruszania si postaci w prawo wystarczy uy omiu zaptlonych
klatek.
Kolejnym etapem tworzenia animacji jest interpolacja klatek kluczowych. Gdyby akcja
odgrywana bya tylko poprzez czasowe przechodzenie z jednego stanu do nastpnego,
animacja nie byaby pynna. Interpolacja pozwala na obliczenie stanu szkieletu pomidzy
klatkami kluczowymi pobierajc z nich wartoci ktw obrotu koci oraz ich dugoci.
Na potrzeby projektu w zupenoci wystarcza interpolacja liniowa. Stan obecnych
parametrw koci mona wyrazi wzorem:
y= y 0+(x x 0)
y 1 y 0
x 1 x 0
gdzie
x0 - czas wystpienia pierwszej klatki kluczowej
x1 - czas wystpienia drugiej klatki kluczowej
y0 - warto parametru pierwszej klatki kluczowej
y1 - warto parametru drugiej klatki kluczowej
x - obecny czas
y - warto parametru w obecnej chwili
37
7. Nazwy
7.1 Technika generowania
Kada istniejca w grze posta lub lokacja posiada swoj nazw. W celu
ich wygenerowania zastosowano algorytm posugujcy si wasnociami cigu Markowa.
Sposb ten oparty jest w caoci na zbiorze danych wejciowych i pozwala uzyska wyniki
bdce danymi we wstpnie okrelonym stopniu podobnymi do tych wchodzcych.
Wady
Pena zaleno od danych wejciowych. Rne zbiory wejciowe gwarantuj rne wyniki.
[28] Maria Podgrska i in.: acuchy Markowa w teorii i zastosowaniach. Warszawa: Szkoa Gwna
Handlowa, Oficyna Wydawnicza, 2002.
38
=>
=>
=>
=>
=>
jabko
[a]
[n]
[a]
[n]
[\0]
[j]
[a]
[b]
[]
[k]
[o]
=>
=>
=>
=>
=>
=>
Przykadowe rezultaty
[a]
[b]
[]
[k]
[o]
[\0]
kabanos
wynikowa tablica
[k]
[a]
[b]
[a]
[n]
[o]
[s]
[b]
[a]
[n]
[j]
[]
[o]
[k]
[s]
=>
=>
=>
=>
=>
=>
=>
[a]
[b]
[a]
[n]
[o]
[s]
[\0]
=>
=>
=>
=>
=>
=>
=>
=>
[a, , a]
[n, n, b, b, n]
[a, \0, o]
[a]
[k]
[\0, s]
[o, a]
[\0]
nano
babananos
k
abkos
39
n = 2
banan
[ba]
[an]
[na]
[an]
jabko
=>
=>
=>
=>
[n]
[a]
[n]
[\0]
[ja]
[ab]
[b]
[k]
[ko]
=>
=>
=>
=>
=>
kabanos
[b]
[]
[k]
[o]
[\0]
Przykadowe rezultaty:
[ka]
[ab]
[ba]
[an]
[no]
[os]
=>
=>
=>
=>
=>
=>
wynikowa tablica
[b]
[a]
[n]
[o]
[s]
[\0]
[ba]
[an]
[na]
[ja]
[ab]
[b]
[k]
[ko]
[ka]
[no]
[os]
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
[n, n]
[a, \0, o]
[n]
[b]
[, a]
[k]
[o]
[\0]
[b]
[s]
[\0]
bananos
ko
jabanan
nananos
n = 3
banan
jabko
kabanos
[kab]
[aba]
[ban]
[ano]
[nos]
Przykadowe rezultaty:
banan
ko
abanos
jabko
=>
=>
=>
=>
=>
wynikowa tablica
[a]
[n]
[o]
[s]
[\0]
[ban]
[ana]
[nan]
[jab]
[ab]
[bk]
[ko]
[kab]
[aba]
[ano]
[nos]
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
=>
[a, o]
[n]
[\0]
[]
[k]
[o]
[\0]
[a]
[n]
[s]
[\0]
40
wyrazw zbyt krtkich, mona ograniczy zbir startowych podcigw tylko do tych, ktre
znajduj si na pocztkach wyrazw (w podanym przykadzie dla n=3 otrzymane wyrazy
mogyby zaczyna si tylko od ban, jab lub kab).
Mirayam,
41
42
43
8.2 Pomie
Opisane w rozdziale 5. labirynty tworzone pod miastem, owietlone s pomieniami
pochodni umieszczonymi na cianach. Aby najlepiej odzwierciedli taki rodzaj ognia, naley
przyj kilka zaoe:
44
Prawdopodobiestwo
opadu deszczu
Sawanna
50,00%
Las tropikalny
80,00%
Tajga
20,00%
Pustynia
0,00%
Las liciasty
50,00%
Tundra
20,00%
Step
20,00%
Las twardolistny
50,00%
Pustynia polarna
0,00%
8.4 Czcionka
Napisy s nieodcznym elementem kadej gry cRPG. Dziki nim moliwa jest intuicyjna
nawigacja po menu gry, dialogi z napotkanymi postaciami, opisy zachodzcych zdarze
fabularnych czy chociaby wywietlanie imion i nazw przedmiotw. Gra skadajca
si z elementw wycznie generowanych musi zapewnia rwnie tworzenie swojej
czcionki.
45
8.4.1 Parametryzacja
Generowana czcionka pozwala na pen modyfikacj jej parametrw. Dziki temu
moliwe jest ustalanie wzorcw odpowiednich dla rnych zastosowa. Na zestaw cech
opisujcych konkretny wzorzec skada si:
wysoko znaku,
szeroko znaku,
kolor,
grubo linii,
kolor obramowania znaku,
grubo obramowania.
46
9. Zagadnienia fabularne
9.1 Przedmioty
Kada gra cRPG dysponuje szerokim wachlarzem przedmiotw spotykanych w grze.
Gwnie s to bronie wykorzystywane przez bohatera do walki z przeciwnikami, mikstury
modyfikujce statystyki oraz przedmioty fabularne.
W opisywanym projekcie najwikszy nacisk pooono na przygodowy aspekt gry, oznacza
to, e ma umoliwia ona graczowi swobodn eksploracj wygenerowanego wiata. Wie
si to z du gam dostpnych przedmiotw, niekoniecznie uytecznych, lecz bdcych
odbiciem wiata realnego.
9.1.1 Inwentarz
Kady przedmiot wystpujcy w grze zalicza si do jednej z moliwych kategorii, takich jak:
Ubrania
Odzienie znajdujce si w ekwipunku postaci wpywa na jej reprezentacj
graficzn. Gra oferuje moliwo przebierania sterowanej postaci w celu
wywoania konkretnych zachowa u postaci niezalenych.
Przykad:
Sposb nabycia:
Bro
W grze wystpuje kilka rodzajw broni. Nie su one graczowi do walki
lecz znajduj inne zastosowanie.
Przykad:
Sposb nabycia:
Jedzenie
Poywienie zaspokaja rosncy wraz z upywem czasu gd bohatera.
47
Przykad:
Sposb nabycia:
Picie
Napoje alkoholowe zwikszaj poziom nietrzewoci bohatera, co skutkuje
efektem rozmycia ekranu. Alkohol wykorzystywany jest w grze do pozyskiwania
informacji.
Przykad:
Sposb nabycia:
Sposb nabycia:
Przedmioty fabularne
Posiadanie rzeczy specjalnych, bdcych unikatowymi w grze, jest warunkiem
koniecznym do ukoczenia powierzonych graczowi zada.
Przykad:
Sposb nabycia:
Biuteria
Ozdoby s dobrem oglnym i nie maj adnych waciwoci poza wartoci
pienin oraz moliwoci wrczania jej jako prezent.
Przykad:
Pozostae
Przedmioty codziennego uytku nie maj adnego konkretnego zastosowania
w rozgrywce, mog jednak suy jako rodki do osignicia dalszych celw.
Przykad:
Sposb nabycia:
Wyrzucenie
Powoduje trwae usunicie przedmiotu z ekwipunku. Po wybraniu tej opcji gracz
nie jest w stanie przywrci wyrzuconego przedmiotu.
48
Zaoenie ubrania
Bez wzgldu na pe i zawd, gracz moe zakada dowolne ubrania.
Nie ma ograniczenia co do iloci noszonego na sobie odzienia.
Zdjcie ubrania
Kade noszone przez bohatera ubranie moe by w dowolnym momencie zdjte,
a on sam by rozebranym do naga.
Kupno
Postacie posiadajce moliwo sprzeday przedmiotw maj dodatkowy
ekwipunek bdcy ich zapleczem. Kady przedmiot posiada swoj okrelon
warto w wewntrznej walucie gry - zocie.
Sprzeda
Handlarze znajdujcy si na rynku oferuj moliwo kupowania przedmiotw
od gracza za cen stanowic poow wartoci przedmiotu. Gracz moe sprzeda
dowolne przedmioty nie bdce przedmiotami fabularnymi.
Kradzie
Opcja kradziey pozwala graczowi na wgld w inwentarz wybranej postaci.
Kady przedmiot bdcy w jej ekwipunku, poza zaoonymi ubraniami,
jest podatny na kradzie. Gracz moe sprbowa przywaszczy sobie wybrany
przedmiot, nastpuje wtedy test na udan kradzie, bdcy wylosowaniem
wartoci "udana" bd "nieudana". Jeli kradzie powioda si, wybrany przedmiot
staje si wasnoci bohatera, w przeciwnym przypadku rabowana posta
alarmuje o kradziey. Jeli bohater zosta przyapany na gorcym uczynku,
okradana posta nie bdzie chciaa mie z nim adnych kontaktw, co uniemoliwi
rozmow z ni lub handel (w przypadku kupcw).
9.2 Fabua
Na fabu gry skadaj si zadania przydzielane do wykonania graczowi przez postacie
niezalene - NPC (ang. non-player character, to kada posta wystpujca w grze, ktrej
gracz nie moe kontrolowa w sposb bezporedni. Termin NPC w zaweniu do tej pracy
okrela postacie w grze, ktre maj moliwo przydzielenia graczowi zada
do wykonania). Historie przekazywane przez postacie niezalene nawizuj do wiata
w ktrym porusza si gracz oraz tworz stosown atmosfer gry. NPC losowani
s dla kadego nowego miasta, a rodzaj zadania ktrym dysponuj okrelany jest
na podstawie ich zawodu.
Rdzeniem kadego zadania, ktre ma zosta wykonane przez bohatera, jest drzewo
dialogowe. Skada si ono z sentencji wypowiadanych przez NPC oraz odpowiedzi
udzielanych przez gracza. Kada wypowied postaci niezalenej zakoczona jest
co najmniej dwiema opcjami dialogowymi z ktrych gracz, aby kontynuowa, musi wybra
dokadnie jedn. Wybranie konkretnej opcji rozmowy rozwija skojarzon z nim ga
drzewa dialogowego. Limi takiej struktury s flagi decydujce o postpie zadania.
49
[30] http://www.diagram.ly/
50
51
Imiona postaci
13661 B
27%
Sowniki tytuw
2208 B
4%
Definicje kolorw
4567 B
9%
Rodzaje przedmiotw
3992 B
8%
Wypowiedzi NPC
8615 B
17%
Zadania fabularne
12934 B
26%
Typy wyliczeniowe
3856 B
8%
52
Dane wewntrzne
53 KB
5%
Kod programu
349 KB
34%
Biblioteka graficzna
611 KB
60%
53
1013 KB
Rozmiar oryginalny
Domylna kompresja
324 KB
Najlepsza kompresja
319 KB
0
200
400
600
800
1000
1200
Rysunek 35: Rozmiar aplikacji wynikowej dla rnych poziomw kompresji w UPX.
65
60
55
50
45
0
54
10.4 Wieloplatformowo
Jedn z gwnych zalet biblioteki Allegro5 jest jej zgodno z trzema wiodcymi
platformami - Windows, Linux oraz iOS. Dziki temu kod napisany przy uyciu tego
systemu jest natychmiastowo gotowy do kompilacji pod kad z wymienionych platform.
Aplikacja tworzona jest domylnie na system Windows, lecz w przyszoci planowane jest
wydanie wersji dziaajcej w systemie Linux. Preferowan dystrybucj jest tutaj Ubuntu,
lecz gra zostanie uruchomiona na kadym standardowym jdrze systemu Linux z obsug
55
rodowiska graficznego Gnome lub KDE. Kompilacja na platform Apple iOS nie jest
przewidziana ze wzgldu na odpatno rodowiska programistycznego.
Naley pamita, e sama wieloplatformowo biblioteki wspomagajcej aplikacj
nie wystarczy do penej przenonoci kodu. Aby aplikacj dao si skompilowa w innym
rodowisku
programistycznym
musi
by
ona
niezalena
od
rodowiska.
Domylne ustawienia projektu w MSVC zakadaj wykorzystywanie pakietu
redystrybucyjnego C++. Jest to dodatkowy komponent systemu, ktry niekoniecznie musi
znajdowa si w kadej jego instalacji. Czsto spotykane s rwnie dyrektywy
preprocesora optymalizujce aplikacj lub w pewien sposb przypieszajce prac
programisty. Opisywana aplikacja pozbawiona jest tego typu zalenoci i kodowana
w cisej zbienoci ze standardami jzyka C++. Jedynym wyjtkiem jest stosowana
dyrektywa #pragma once, jednake jest ona obecnie wspierana przez wszystkie wiodce
rodowiska programistyczne.
podkrelnikiem
"a"
wielk
liter
ma
liter
wielk
liter
nazywane
od
maej
litery
(np.
int
i,
56
moliwo
swobodnej
edycji
projektu
na
rnych
komputerach,
i, co najwaniejsze, cige wykonywanie kopii bezpieczestwa kodu.
Wszelkie pliki znajdujce si w projekcie (37 nagwkw h oraz 40 plikw
rdowych cpp) mieszcz si fizycznie w jednym katalogu projektu. Pozwala
to na bezproblemowe i intuicyjne zaczanie plikw poprzez dyrektyw #include.
Jednake, aby zachowa porzdek w funkcjach wykonywanych przez odpowiednie
klasy, pliki pogrupowane s logicznymi filtrami wewntrz rodowiska MSVC.
57
11. Wnioski
Wnioski wycignite z projektu najlepiej przedstawi w formie analizy porwnawczej
elementw, ktre warto tworzy proceduralnie w grach komputerowych oraz tych, ktrych
generowanie mija si z celem. Zestawienie to utworzone jest na podstawie algorytmw
zastosowanych w projekcie, efektw ich pracy oraz nakadu roboczogodzin programisty
w celu ich implementacji. Niestety ze wzgldu na zaoenie projektu o tym, e generowany
ma by kady element rozgrywki, wybrane zostay tylko czoowe algorytmy dla kadego
aspektu gry.
Elementy gry, ktre warto generowa proceduralnie:
Mapa wiata
Szum Perlina pozwala na wiarygodne odwzorowanie wysokoci terenu i jest powszechnie
uywany dla generowania map w rnego rodzaju grach. Korzystnym zabiegiem jest
nawet jednorazowe uycie algorytmu generowania mapy, ktra bdzie nastpnie
modyfikowana rcznie przez deweloperw gry. Produkcje opierajce si na elementach
strategicznych bardzo czsto posiadaj w zasobach du ilo map. Generowanie takich
plansz oszczdza producentom czas oraz gwarantuje niepowtarzalno rozgrywki.
Labirynty
Cigi podziemnych korytarzy stosowane s w grach komputerowych od samego pocztku
ich istnienia. Nawet w produkcjach najwyszej klasy wydawanych obecnie istnieje
zaimplementowany tzw. system generowania lochw (np. Diablo III, Legend of Grimrock).
To wanie moliwo penetrowania losowo tworzonych jaski oraz katakumb
zagwarantowaa takiej grze jak Diablo II rzesze fanw nawet 12 lat po jej premierze.
Sam algorytm generujcy jest rwnie stosunkowo atwy w implementacji
i parametryzacji.
Postacie niezalene
Ten element warto generowa tylko wtedy, gdy w grze wystpuje bardzo duo postaci
lub gdy istoty tworzone s dynamicznie w zalenoci od sytuacji. W wielu grach
(jak chociaby popularnej Assassin's Creed) pojawia si zjawisko "ataku klonw",
w ktrym gracz odnosi wraenie, e nieustannie napotyka te same postacie.
Proceduralne generowanie chociaby elementw ubioru postaci pozawala wyeliminowa
ten problem.
Animacja szkieletowa
Taki rodzaj animacji opaca stosowa si, kiedy gracz ma bezporedni wpyw na animacje
58
Imiona
Spord dziedziny generowania nazw tylko tworzenie imion daje zadowalajce rezultaty.
Cig Markowa jest tutaj jednym z proponowanych rozwiza, lecz nie naley ogranicza
si jedynie do niego. Generowanie imion dobrze wspgra z generowaniem postaci oraz
dodaje wiarygodnoci w tworzonym wiecie gry. Unikalna osoba z unikalnym imieniem
jest bardziej realna ni kolejna kopia tego samego modelu postaci o imieniu Mieszkaniec.
Efekty specjalne
Uwzgldnienie tego komponentu jest w odniesieniu do dzisiejszego rynku gier
formalnoci. W starszych grach wideo, efekty specjalne tworzono rnymi wyszukanymi
metodami, tylko po to, by moliwie ograniczy zuycie czasu procesora i pamici. Rozwj
techniki umoliwi realistyczne modelowanie efektw czsteczkowych poprzez swobodne
tworzenie tysicy kopii obiektw i zarzdzanie nimi w niemale kadym obiegu gwnej
ptli gry.
Elementy gry, ktrych nie warto generowa proceduralnie:
Mapy miast
Generowanie miast ma sens tylko wtedy gdy jest to gwnym zagadnieniem aplikacji
(np. SimCity lub Pixel City). W kadym innym przypadku moliwoci rozoenia
topograficznego sieci drg, budynkw czy obiektw uytecznoci publicznej
s tak zrnicowane, e bardzo trudno uzyska wiarygodny wygld miasta. Historycznie
miasta powstaway z maych osad, ktre nastpnie rozwijane byy w coraz wiksze
metropolie. Dobry algorytm generujcy miasta musiaby symulowa ten proces.
Czcionka
Ilo dostpnych krojw czcionek, rwnie na licencjach bezpatnych, w zupenoci
wystarczy dla lwiej czci projektw. Generowanie czcionki wymaga algorytmicznego
podejcia dla kadego znaku, a utworzenie fontu wygldajcego np. jak pismo odrczne,
jest wyjtkowo czasochonne i nieopacalne.
Fabua
Komputerowe wytworzenie wiarygodnej i epickiej historii to zagadnienie z dziedziny
sztucznych sieci neuronowych i na dzie dzisiejszy jest tematem do abstrakcyjnym
w odniesieniu do gier komputerowych. Jeeli produkcja ma zainteresowa gracza lini
fabularn to zdecydowanie musi by ona nakrelona przez czowieka. Algorytm
komputerowy moe suy w tym wypadku pomoc i wygenerowa proste zmienne
dla danej historii, np. nazwa szukanego przedmiotu, lub pokrewiestwo osoby zlecajcej
zadanie w stosunku do bohatera.
Grafika gry
W caym projekcie to generowanie i dynamiczne rysowanie grafiki do gry zajo najwicej
czasu. Wytworzenie obrazw i modeli w programie graficznym trwa z reguy nie duej
niby to zajo poprzez pisanie procedur rysujcych, a moliwo kontroli grafiki
[31] Richard Wyckoff: Postmortem - DreamWorks Interactive's Trespasser. Game Developer, May 14, 1999
59
60