You are on page 1of 24

Pereki programowania gier.

Vademecum profesjonalisty.
Tom 6
Autor: Mike Dickheiser
Tumaczenie: Andrzej Grayski (wstp, czci I-III,
VI-VII); Mikoaj Szczepaniak (czci IV-V)
ISBN: 978-83-246-1087-7
Tytu oryginau: Game Programming
Gems 6 (Book & CD-ROM)
Format: B5, stron: okoo 700
oprawa twarda
Zawiera CD-ROM
Wyczerpujcy przegld nowoczesnych technik tworzenia gier komputerowych
Zaawansowane algorytmy sztucznej inteligencji
Realistyczne odwzorowywanie zjawisk fizycznych, efektw dwikowych i owietlenia
Jzyki skryptowe i sterowanie danymi
Techniki zabezpieczania gier w wersji beta
Przemys gier komputerowych jest jedn z najszybciej rozwijajcych si bran informatyki. Gry,
ktre jeszcze niedawno zapieray dech w piersiach, dzi wydaj si proste i mao realistyczne.
Wspczesne symulatory i strzelanki to arcydziea, ktrych produkcja angauje rodki
porwnywalne z budetami hollywoodzkich superprodukcji. Rosnce w ogromnym tempie
moliwoci komputerw i konsoli wpywaj jednak nie tylko na jako gier, ale take na proces ich
tworzenia i wykorzystywane podczas niego narzdzia. Programici tworzcy gry implementuj
zaawansowane algorytmy sztucznej inteligencji, wykorzystuj niezwyke moliwoci ukadw
wywietlajcych grafik i skomplikowany aparat matematyczny.
Ksika Pereki programowania gier. Vademecum profesjonalisty. Tom 6 to doskonae
kompendium wiedzy dla wszystkich, ktrzy tworz gry komputerowe lub zamierzaj to robi.
W kadym rozdziale, napisanym przez cenionego eksperta z tej brany, znajdziesz niezbdne
informacje dotyczce rnych aspektw pisania gier. Przeczytasz o sztucznej inteligencji,
symulacji zjawisk fizycznych oraz odwzorowywaniu owietlenia i dwikw. Poznasz nowoczesne
techniki programowania wspbienego, optymalizacji kodu pod ktem maszyn
wieloprocesorowych, stosowania jzykw skryptowych i wykorzystywania moliwoci procesorw
graficznych.

Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl

Programowanie pod ktem procesorw wielordzeniowych


Siatkowa reprezentacja obiektw gry
Testowanie pojedynczych moduw gry
Optymalizacja korzystania z zasobw
Rachunek wektorowy i macierzowy
Symulacja zachowania cieczy
Tworzenie algorytmw sztucznej inteligencji
Korzystanie z regu logiki rozmytej
Programowanie skryptowe w jzykach Lua i Python
Optymalizacja wywietlania obiektw gry
Wykorzystywanie moliwoci procesorw graficznych
Generowanie efektw dwikowych w czasie rzeczywistym
Tworzenie gier sieciowych
Przeczytaj i stwrz gr, w ktr zagraj miliony graczy

Spis treci
Przedmowa ........................................................................................ 13
Wstp ................................................................................................. 17
O obrazku z okadki ......................................................................... 23
Biografie autorw ............................................................................. 25

Cz I Programowanie w oglnoci ............................................... 43


Wprowadzenie .................................................................................. 45
Rozdzia 1.1

Algorytmy nieblokujce .................................................................. 47


Porwnaj i zamie oraz inne prymitywy uniwersalne ............................................... 48
Parametryzowany stos nieblokujcy .............................................................................. 50
Parametryzowana kolejka nieblokujca ......................................................................... 54
Nieblokujca parametryzowana lista wolnych blokw pamici .................................... 57
Konkluzja ....................................................................................................................... 58
Literatura cytowana ....................................................................................................... 59
Zasoby ............................................................................................................................ 60

Rozdzia 1.2

Wykorzystanie moliwoci procesorw wielordzeniowych


przy uyciu OpenMP ........................................................................ 61
Przykad: system czstek ............................................................................................... 62
Korzyci ......................................................................................................................... 62
Wydajno ..................................................................................................................... 63
Przykad: wykrywanie kolizji ........................................................................................ 64
Zespoy wtkowe ........................................................................................................... 65
Zrwnoleglanie wykonywania funkcji .......................................................................... 65
Tak, ale ...................................................................................................................... 67
Konkluzja ....................................................................................................................... 68
Literatura cytowana ....................................................................................................... 68
Zasoby ............................................................................................................................ 68

Rozdzia 1.3

Widzenie komputerowe w grach


programowanie z uyciem biblioteki OpenCV ........................ 69
Komputerowe widzenie w grach ................................................................................... 69
Biblioteka Open Computer Vision ................................................................................ 70
Przykad zastosowania ................................................................................................... 70
Co dalej? ........................................................................................................................ 79
Literatura cytowana ....................................................................................................... 79

Pereki programowania gier. Vademecum profesjonalisty. Tom 6

Rozdzia 1.4

Siatkowa rejestracja obiektw gry ................................................. 81


Drzewa czwrkowe i semkowe ................................................................................... 82
Organizacja obiektw .................................................................................................... 84
Konkluzja ....................................................................................................................... 88
Literatura cytowana ....................................................................................................... 88

Rozdzia 1.5

Techniki BSP ....................................................................................... 89


Czym jest BSP? Dlaczego BSP? ................................................................................... 89
Wzowe BSP ................................................................................................................ 90
Renderowanie obiektw w wzowym wariancie BSP ................................................. 93
Bezpodziaowy wariant wzowego BSP ...................................................................... 94
Liciaste BSP i regiony wypuke ................................................................................... 95
Generowanie portali midzy regionami wypukymi ..................................................... 98
Generowanie zbiorw PVS .......................................................................................... 100
Kompresja wektora widzialnoci ................................................................................. 105
Obiekty krajobrazu w drzewie BSP ............................................................................. 107
Konkluzja ..................................................................................................................... 108
Literatura cytowana ..................................................................................................... 108

Rozdzia 1.6

Dopasowywanie acuchw ......................................................... 109


Wyszukiwanie opierajce si na identyfikatorach tekstowych .................................... 109
No to mamy problem ............................................................................................... 110
Kilka znanych rozwiza ............................................................................................. 110
Nasze rozwizanie ....................................................................................................... 111
Zastosowanie rozwizania ........................................................................................... 116
Konkluzja ..................................................................................................................... 117
Literatura cytowana ..................................................................................................... 117

Rozdzia 1.7

Implementacja testowania moduw na bazie CppUnit ........... 119


Oglnie o testowaniu moduw ................................................................................... 119
Oglnie o pakiecie CppUnit ........................................................................................ 120
Uruchamianie klas mocujcych ................................................................................... 122
Wykorzystanie pakietu CppUnit do testowania klasy zarzdzajcej modelami .......... 123
Testowanie moduowe funkcji prywatnych ................................................................. 129
Wykorzystywanie CppUnit do testowania niskopoziomowej funkcjonalnoci .......... 129
Konkluzja ..................................................................................................................... 134
Literatura cytowana ..................................................................................................... 134

Rozdzia 1.8

Fingerprinting jako metoda ochrony wersji pre-release aplikacji ...135


Zniechcanie ................................................................................................................ 135
Znaki wodne i odciski palcw ..................................................................................... 136
Wykonywanie znakowania .......................................................................................... 137
Bezpieczestwo gwarantowane przez znakowanie ..................................................... 137
Strategie znakowania ................................................................................................... 137
Atak porwnawczy ...................................................................................................... 140
Konkluzja ..................................................................................................................... 140
Literatura cytowana ..................................................................................................... 141

Rozdzia 1.9

Przyspieszanie adowania zasobw


na podstawie statystyki korzystania z nich .................................. 143
Sformuowanie problemu ............................................................................................ 143
Optymalizowanie kolejnoci zasobw ........................................................................ 145
Czynniki wpywajce na wynik pomiaru .................................................................... 146
Potencjalne zagroenia ................................................................................................ 147
Powszechne praktyki optymalizacyjne ........................................................................ 147

Spis treci

Konkluzja ..................................................................................................................... 148


Literatura cytowana ..................................................................................................... 148

Rozdzia 1.10

Pozosta w grze:
podmiana modyfikowanych zasobw na gorco ................. 149
Jak to dziaa? ................................................................................................................ 149
Anatomia procesu ........................................................................................................ 151
Uwarunkowania praktyczne ........................................................................................ 155
Przykadowy program .................................................................................................. 156
Konkluzja ..................................................................................................................... 156
Literatura uzupeniajca ............................................................................................... 156

Cz II Matematyka i fizyka .......................................................... 157


Wprowadzenie ................................................................................ 159
Rozdzia 2.1

Osobliwoci arytmetyki zmiennopozycyjnej ............................... 161


Format reprezentacji zmiennopozycyjnej .................................................................... 162
Projektowanie programw i funkcji ............................................................................ 167
Konkluzja ..................................................................................................................... 179
Literatura cytowana ..................................................................................................... 180

Rozdzia 2.2

Obliczenia w przestrzeniach rzutowych


z uyciem wsprzdnych jednorodnych .................................... 181
Podstawy matematyczne .............................................................................................. 182
Obliczenia z uyciem wsprzdnych jednorodnych ................................................... 184
Przecinanie linii z obiektami ....................................................................................... 187
Konkluzja ..................................................................................................................... 189
Dodatek A .................................................................................................................... 190
Dodatek B .................................................................................................................... 190
Podzikowania ............................................................................................................. 191
Literatura cytowana ..................................................................................................... 191

Rozdzia 2.3

Zastosowanie iloczynu wektorowego


do rozwizywania ukadw rwna liniowych ........................... 193
Wprowadzenie ............................................................................................................. 193
Linie proste .................................................................................................................. 196
Efektywna interpolacja bilinearna ............................................................................... 198
Rozwizywanie ukadu rwna z trzema niewiadomymi ........................................... 201
Konkluzja ..................................................................................................................... 203
Podzikowania ............................................................................................................. 203
Literatura cytowana i zalecana .................................................................................... 203

Rozdzia 2.4

Indeksowanie sekwencyjne w programowaniu gier ................. 205


Terminologia ................................................................................................................ 205
Sekwencje .................................................................................................................... 206
Sekwencje dziedzinowe ............................................................................................... 207
Sekwencje permutacyjne ............................................................................................. 210
Sekwencje kombinacyjne ............................................................................................ 214
Konkluzja ..................................................................................................................... 217
Literatura cytowana ..................................................................................................... 218

Rozdzia 2.5

Pywalno bry wielociennych ................................................... 219


Pywalno ................................................................................................................... 220
Pole wielokta .............................................................................................................. 221

Pereki programowania gier. Vademecum profesjonalisty. Tom 6

Objto wielocianu ................................................................................................... 223


Czciowe zanurzenie .................................................................................................. 224
Dokadno oblicze .................................................................................................... 227
Siy oporu ..................................................................................................................... 229
Kod rdowy .............................................................................................................. 230
Konkluzja ..................................................................................................................... 230
Podzikowanie ............................................................................................................. 230
Literatura cytowana ..................................................................................................... 231

Rozdzia 2.6

Czsteczkowa symulacja w czasie rzeczywistym


oddziaywania cieczy z bryami sztywnymi ................................. 233
Symulacja przepyww cieczy a SPH ......................................................................... 233
Rozszerzenie metody SPH na oddziaywania cieczy z bryami sztywnymi ................ 238
Oddziaywanie z obiektami dynamicznymi krokowa aktualizacja wasnoci czstek ...242
Szczegy implementacji ............................................................................................. 243
Optymalizacje .............................................................................................................. 247
Konkluzja ..................................................................................................................... 248
Literatura cytowana ..................................................................................................... 248

Cz III Sztuczna inteligencja ........................................................ 249


Wprowadzenie ................................................................................ 251
Rozdzia 3.1

Zastosowanie modelowanego podejcia do implementacji AI


na przykadzie Locust AI Engine w QA3 ....................................... 253
Wprowadzenie ............................................................................................................. 254
Stan obecny zbiory regu deterministycznych ........................................................ 255
Problemy zwizane z reguami .................................................................................... 257
Modelowane podejcie do implementacji AI .............................................................. 259
Interfejs ........................................................................................................................ 260
Zalety i korzyci dla projektantw .............................................................................. 261
Locust AI Engine w Quake III Arena .......................................................................... 263
Soar .............................................................................................................................. 264
Konkluzja ..................................................................................................................... 265
Literatura cytowana ..................................................................................................... 265

Rozdzia 3.2

Koordynacja dziaa autonomicznych BN .................................. 267


Moliwe rozwizania ................................................................................................... 268
Struktura BN ................................................................................................................ 269
Mechanizmy koordynacji ............................................................................................ 270
Przykad. Skoordynowane tropienie gracza ................................................................. 277
Konkluzja ..................................................................................................................... 278
Literatura cytowana ..................................................................................................... 279

Rozdzia 3.3

Zastosowanie behawioralnych architektur robotycznych


w tworzeniu gier .............................................................................. 281
Architektura subsumpcyjna ......................................................................................... 282
Rozszerzone sieci behawioralne .................................................................................. 285
Dyskusja ...................................................................................................................... 289
Konkluzja ..................................................................................................................... 289
Literatura cytowana ..................................................................................................... 290

Spis treci

Rozdzia 3.4

Konstruowanie sterowanego celem robota gry Unreal


Tournament przy uyciu czujnikw rozmytych, maszyn
skoczenie stanowych i rozszerzonych sieci behawioralnych ..... 291
Projektowanie rozszerzonej sieci behawioralnej ......................................................... 292
Hierarchiczne czujniki rozmyte ................................................................................... 298
Moduy behawioralne jako maszyny skoczenie stanowe .......................................... 301
Konkluzja ..................................................................................................................... 303
Literatura cytowana ..................................................................................................... 303

Rozdzia 3.5

Robot sterowany celem:


projektowanie zachowa i cech osobowoci agenta gry
przy uyciu rozszerzonych sieci behawioralnych ....................... 305
Rozszerzone sieci behawioralne .................................................................................. 306
Jako wyboru akcji ..................................................................................................... 311
Projektowanie cech osobowoci .................................................................................. 314
Konkluzja ..................................................................................................................... 317
Literatura zalecana ....................................................................................................... 318

Rozdzia 3.6

Modelowanie pamici krtkotrwaej


przy uyciu maszyny wektorw wspierajcych ........................... 319
Maszyny wektorw wspierajcych .............................................................................. 319
Modelowanie pamici krtkotrwaej ........................................................................... 325
Limitowanie obcienia procesorw ........................................................................... 326
Konkluzja ..................................................................................................................... 326
Literatura cytowana ..................................................................................................... 327

Rozdzia 3.7

Zastosowanie modelu oceny kwantytatywnej


do analizy konfliktw zbrojnych ................................................... 329
Formua podstawowa ................................................................................................... 330
Obliczanie siy ognia ................................................................................................... 330
Obliczanie potencjau bojowego .................................................................................. 331
Szacowanie efektywnoci uycia broni ....................................................................... 332
Teoretyczne przewidywanie wyniku konfliktu ............................................................ 333
A co z efektywnoci wykorzystania broni? ............................................................... 334
Przykad systemu QJM ................................................................................................ 334
Ograniczenia ................................................................................................................ 335
Konkluzja ..................................................................................................................... 335
Literatura cytowana ..................................................................................................... 336

Rozdzia 3.8

Projektowanie wielowarstwowego, przyczalnego silnika AI .. 337


Rozwizania pokrewne ................................................................................................ 338
Architektura silnika AI ................................................................................................ 339
Klasy i waciwoci systemu sterowanego danymi ..................................................... 340
Priorytetowy zarzdca zada ....................................................................................... 345
Wydajno i techniki optymalizacyjne ........................................................................ 346
Narzdzia ..................................................................................................................... 348
Konkluzja ..................................................................................................................... 350
Literatura cytowana ..................................................................................................... 351

Rozdzia 3.9

Zarzdzanie zoonoci scenerii na bazie regu logiki rozmytej .. 353


Koncepcja .................................................................................................................... 353
Regulacja rozmyta ....................................................................................................... 354
Narzdzia ..................................................................................................................... 354
Projekt systemu ............................................................................................................ 357
Zastosowanie do gier ................................................................................................... 358

Pereki programowania gier. Vademecum profesjonalisty. Tom 6

Zaoenia ...................................................................................................................... 359


Uwagi implementacyjne .............................................................................................. 360
Testy i ich rezultat ....................................................................................................... 360
Konkluzja ..................................................................................................................... 362
Podzikowanie ............................................................................................................. 362
Literatura cytowana ..................................................................................................... 363

Cz IV Skrypty i systemy sterowane danymi ............................. 365


Wprowadzenie ................................................................................ 367
Rozdzia 4.1

Przegld jzykw skryptowych ..................................................... 371


Po co w ogle stosowa jzyki skryptowe? ................................................................. 371
Wprowadzenie ............................................................................................................. 371
Sposb kodowania ....................................................................................................... 372
Integracja z jzykami C/C++ ....................................................................................... 377
Wydajno ................................................................................................................... 384
Metody wspierania procesw wytwarzania ................................................................. 387
Konkluzja ..................................................................................................................... 390
Literatura ...................................................................................................................... 390

Rozdzia 4.2

Wizanie obiektw C/C++ ze skryptami jzyka Lua .................. 391


Funkcje wice ........................................................................................................... 392
Wizanie waciwych obiektw z wartociami jzyka Lua ......................................... 394
Wizanie obiektw rodowiska nadrzdnego z obiektami jzyka Lua ....................... 397
Wizanie waciwych obiektw z tabelami jzyka Lua .............................................. 402
Konkluzja ..................................................................................................................... 403
Literatura ...................................................................................................................... 406

Rozdzia 4.3

Programowanie zaawansowanych mechanizmw sterujcych


z wykorzystaniem wspprogramw jzyka Lua ......................... 407
Wspprogramy Lua .................................................................................................... 408
Filtry ............................................................................................................................ 409
Iteratory ........................................................................................................................ 411
Mechanizmy szeregowania zada ............................................................................... 414
Wielozadaniowo rwnolega .................................................................................... 415
Konkluzja ..................................................................................................................... 419
Literatura ...................................................................................................................... 419

Rozdzia 4.4

Zarzdzanie wykonywaniem skryptw wysokopoziomowych


w ramach rodowisk wielowtkowych ........................................ 421
Oprogramowanie komponentowe i interpreter skryptu ............................................... 422
Wspprogramy i mikrowtki ...................................................................................... 422
Meneder mikrowtkw .............................................................................................. 423
Osadzanie kodu jzyka Python .................................................................................... 426
Eksperymenty i wyniki ................................................................................................ 429
Konkluzja ..................................................................................................................... 431
Literatura ...................................................................................................................... 432

Rozdzia 4.5

Udostpnianie waciwoci aktorw


z wykorzystaniem nieinwazyjnych porednikw ........................ 433
Aktorzy, porednicy i waciwoci. Mj Boe! ........................................................... 433
Nieinwazyjna i dynamiczna architektura ..................................................................... 435
Waciwoci aktora ...................................................................................................... 436
Porednicy aktorw ..................................................................................................... 440

Spis treci

Od teorii do praktyki .................................................................................................... 442


Konkluzja ..................................................................................................................... 443
Literatura ...................................................................................................................... 443

Rozdzia 4.6

System komponentowy obiektw gry .......................................... 445


Obiekty gry .................................................................................................................. 445
Komponenty bazowe obiektw gry ............................................................................. 447
Zarzdzanie komponentami z poziomu obiektw gry ................................................. 448
Komunikacja pomidzy komponentami ...................................................................... 450
Szablony komponentw gry ........................................................................................ 451
Szablony obiektw gry ................................................................................................ 454
Tworzenie obiektu gry sterowanego danymi ............................................................... 455
Konkluzja ..................................................................................................................... 455

Cz V Grafika ................................................................................ 457


Wprowadzenie ................................................................................ 459
Rozdzia 5.1

Synteza realistycznych ruchw nieaktywnych postaci w grze . 461


Wprowadzenie ............................................................................................................. 462
Gwne skadowe animacji ciaa ludzkiego ................................................................. 463
Zmiany postaw ............................................................................................................. 465
Cige, drobne zmiany postaw ..................................................................................... 469
Konkluzja ..................................................................................................................... 474
Literatura ...................................................................................................................... 474

Rozdzia 5.2

Dzielenie przestrzeni
z wykorzystaniem adaptacyjnego drzewa binarnego .............. 477
Budowa adaptacyjnego drzewa binarnego .................................................................. 477
Szczegowa implementacja drzewa ABT .................................................................. 479
Poszukiwanie odpowiednich paszczyzn dzielcych ................................................... 483
Stosowanie drzew ABT dla scen dynamicznych ......................................................... 486
Wizualizacja drzewa ABT ........................................................................................... 487
Konkluzja ..................................................................................................................... 489
Podzikowania ............................................................................................................. 489
Literatura ...................................................................................................................... 489

Rozdzia 5.3

Rozszerzony mechanizm eliminowania obiektw z wykorzystaniem


(niemal) cakowicie ukierunkowanych ramek ograniczajcych ...491
Przegld znanych metod .............................................................................................. 492
Techniki tradycyjne ..................................................................................................... 493
Efektywne rozwizanie dla dwch wymiarw ............................................................ 494
Udoskonalenia technik tradycyjnych ........................................................................... 496
Eliminowanie obiektw wedug ramki ograniczajcej ................................................ 500
Dalsze usprawnienia .................................................................................................... 501
Konkluzja ..................................................................................................................... 502
Literatura ...................................................................................................................... 503

Rozdzia 5.4

Podzia powierzchni z myl o optymalizacji renderingu .......... 505


Wprowadzenie ............................................................................................................. 505
Koncepcje podziau ..................................................................................................... 506
Heurystyka podziau wag ............................................................................................ 508
Heurystyka palety koci ............................................................................................... 508
Szczegowe omwienie heurystyki ............................................................................ 511
Konkluzja ..................................................................................................................... 515

10

Pereki programowania gier. Vademecum profesjonalisty. Tom 6

Rozdzia 5.5

Rendering terenu na poziomie procesora GPU .......................... 517


Prosty algorytm ............................................................................................................ 518
Poziom szczegowoci ............................................................................................... 519
Eliminowanie szczelin ................................................................................................. 521
Odrzucanie obiektw spoza ostrosupa widocznoci ................................................... 523
Wyznaczanie normalnych ............................................................................................ 523
Unikanie kolizji ........................................................................................................... 525
Problemy implementacyjne ......................................................................................... 526
Wyniki ......................................................................................................................... 527
Konkluzja ..................................................................................................................... 528
Literatura ...................................................................................................................... 528

Rozdzia 5.6

Interaktywna dynamika cieczy i rendering na poziomie GPU .. 529


Podstawy matematyczne .............................................................................................. 530
Implementacja na poziomie GPU ................................................................................ 534
Interakcja z ciecz ........................................................................................................ 540
Materiay dodatkowe ................................................................................................... 542
Konkluzja ..................................................................................................................... 542
Literatura ...................................................................................................................... 543

Rozdzia 5.7

Szybkie owietlanie poszczeglnych pikseli


w rodowisku z wieloma rdami wiata ................................... 545
Rozwizanie polegajce na odkadaniu efektw owietlenia na pniej .................... 546
Implementacja odoonego cieniowania dla najnowszych kart graficznych ............... 547
Podstawowe techniki optymalizacji skadowania danych ........................................... 549
Optymalizacja shaderw i ograniczenia sprztowe ..................................................... 552
Rozszerzanie efektw przetwarzania kocowego przestrzeni obrazu ......................... 555
Konkluzja ..................................................................................................................... 556
Literatura ...................................................................................................................... 556

Rozdzia 5.8

Rendering ostrych znakw drogowych ....................................... 557


Wygadzanie krawdzi tekstur progowanych .............................................................. 559
Optymalne tekstury dla techniki progowania .............................................................. 564
Aplikacja autorska ....................................................................................................... 568
Konkluzja i perspektywa rozwoju ............................................................................... 571
Literatura ...................................................................................................................... 572

Rozdzia 5.9

Praktyczny rendering nieba na potrzeby gier komputerowych ......573


Czego chcemy, a co mamy? ........................................................................................ 573
Co waciwie powinno si znale na niebie? ............................................................. 575
Wskie garda .............................................................................................................. 576
Wprowadzenie szeciennej mapy nieba ...................................................................... 579
Skalowanie czasu ......................................................................................................... 580
Analiza aplikacji demonstracyjnej ............................................................................... 581
Kierunki rozwoju ......................................................................................................... 582
Konkluzja ..................................................................................................................... 583
Literatura ...................................................................................................................... 584

Rozdzia 5.10

Rendering rozszerzonego zakresu jasnoci (HDR)


z wykorzystaniem obiektw bufora klatek biblioteki OpenGL .. 585
Wprowadzenie do obiektw bufora klatek .................................................................. 585
Konstruowanie obiektw bufora klatek ....................................................................... 587
Rendering rozszerzonego zakresu jasnoci (HDR) za pomoc obiektw bufora klatek ......590
Konkluzja ..................................................................................................................... 592
Informacje dodatkowe ................................................................................................. 593
Literatura dodatkowa ................................................................................................... 593

Spis treci

11

Cz VI Audio ................................................................................. 595


Wprowadzenie ................................................................................ 597
Rozdzia 6.1

Generowanie dwiku w czasie rzeczywistym


poprzez deformacj siatkow bry sztywnych ............................ 599
Retrospekcja ................................................................................................................ 599
Oglne zasady .............................................................................................................. 600
Podstawy analizy modalnej ......................................................................................... 601
Ograniczenia ................................................................................................................ 603
Od deformacji do dwiku ........................................................................................... 604
Konkluzja ..................................................................................................................... 605
Literatura zalecana ....................................................................................................... 605
Literatura cytowana ..................................................................................................... 606

Rozdzia 6.2

Prosty generator efektw dwikowych czasu rzeczywistego . 607


Silnik akustyki otoczeniowej ....................................................................................... 607
Synteza dwiku .......................................................................................................... 608
Przykady ze wiata rzeczywistego .............................................................................. 610
Konkluzja ..................................................................................................................... 612
Demo ............................................................................................................................ 613
Literatura cytowana ..................................................................................................... 613

Rozdzia 6.3

Miksowanie dwiku w czasie rzeczywistym .............................. 615


Niby nic, a jednak .................................................................................................... 615
Implementacja acucha magistral ............................................................................... 617
Miara gonoci stosunek nate albo decybele ................................................... 619
Zapobieganie nieefektywnoci .................................................................................... 620
Inne usprawnienie ........................................................................................................ 620
Konkluzja ..................................................................................................................... 620
Literatura cytowana ..................................................................................................... 621

Rozdzia 6.4

Zbir potencjalnej syszalnoci ..................................................... 623


PVS podstawy ......................................................................................................... 623
PAS algorytm podstawowy .................................................................................... 625
Bezporednie cieki dwikowe ................................................................................ 625
Rozszerzenie na fal przechodzc .............................................................................. 630
Rozszerzenie na fal odbit ......................................................................................... 631
Konkluzja ..................................................................................................................... 632
Literatura cytowana ..................................................................................................... 632

Rozdzia 6.5

Tani efekt Dopplera ........................................................................ 633


Zjawisko Dopplera ....................................................................................................... 633
Programowanie efektu Dopplera ................................................................................. 636
Zmienna prdko ........................................................................................................ 639
Aliasowanie ................................................................................................................. 640
Implementacja .............................................................................................................. 641
Konkluzja ..................................................................................................................... 641
Zasoby .......................................................................................................................... 641

Rozdzia 6.6

Preparowanie efektw specjalnych ............................................ 643


Preparacja .................................................................................................................... 643
Przykad: radio grajce w pokoju ................................................................................ 644
Krzywe staej gonoci ............................................................................................... 645
Zaawansowane sterowanie gonoci ......................................................................... 646

12

Pereki programowania gier. Vademecum profesjonalisty. Tom 6

Pliki wielociekowe i DirectSound ............................................................................ 646


Koszty i korzyci ......................................................................................................... 647
Konkluzja ..................................................................................................................... 647
Podzikowania ............................................................................................................. 647

Cz VII Sie i gry wielodostpne ................................................ 649


Wprowadzenie ................................................................................ 651
Rozdzia 7.1

Dynamicznie adaptowalne strumieniowanie danych 3D


dla animowanych postaci ............................................................. 653
Wprowadzenie ............................................................................................................. 653
Podstawy i zagadnienia pokrewne ............................................................................... 654
Przygotowywanie i tworzenie skalowalnych danych 3D ............................................ 655
Sterowana kontekstem adaptacja wysyanego strumienia ........................................... 662
Konkluzja ..................................................................................................................... 664
Literatura cytowana ..................................................................................................... 665

Rozdzia 7.2

Wysokopoziomowa architektura systemowa


dla masywnych gier online ........................................................... 667
Systemy zoone i ich zachowanie wzbogacajce ....................................................... 668
Architektura wielowarstwowa ..................................................................................... 668
Sprzenie zwrotne w systemach decyzyjnych ........................................................... 680
Konkluzja ..................................................................................................................... 681
Literatura cytowana ..................................................................................................... 681

Rozdzia 7.3

Generowanie unikalnych identyfikatorw globalnych


dla obiektw gier ........................................................................... 683
Wymagania dla identyfikatorw GUID ....................................................................... 683
Generowanie GUID ..................................................................................................... 685
Sytuacje wyjtkowe i ich obsuga ................................................................................ 687
Konkluzja ..................................................................................................................... 688
Literatura cytowana ..................................................................................................... 688

Rozdzia 7.4

Second Life jako narzdzie prototypowania gier MMOG .......... 689


Wstp ........................................................................................................................... 689
Dlaczego Second Life? ................................................................................................ 689
Second Life zaczynamy! ......................................................................................... 693
Second Life jako narzdzie projektanta ....................................................................... 693
Opracowywanie prototypu ........................................................................................... 695
Tringo historia sukcesu ........................................................................................... 698
Konkluzja ..................................................................................................................... 698
Literatura cytowana ..................................................................................................... 699

Rozdzia 7.5

Niezawodne poczenia TCP peer-to-peer


w warunkach translacji NAT .......................................................... 701
Problem ........................................................................................................................ 701
Rozwizania ................................................................................................................. 703
Realizacja ..................................................................................................................... 703
Zastosowania ............................................................................................................... 708
Ograniczenia ................................................................................................................ 709
Konkluzja ..................................................................................................................... 709
Literatura cytowana ..................................................................................................... 710

Skorowidz ........................................................................................ 711

Rozdzia 3.1

Zastosowanie
modelowanego podejcia
do implementacji AI
na przykadzie
Locust AI Engine w QA3
Armand Prieditis, Lookahead Decisions Inc.
prieditis@lookaheaddecisions.com

Mukesh Dalal, Lookahead Decisions Inc.


mukesh@lookaheaddecisions.com
Tworzenie dobrych gier w oparciu o AI jest naprawd trudn sztuk. Tradycyjna filozofia tej sztuki opera si na reguach (ang. rules), ktre niestety s czsto nieprecyzyjne, a ich definiowanie, implementowanie, debugowanie i modyfikowanie do
kosztowne. W dodatku czsto bywa i tak, i ostateczny rezultat zastosowania owych regu zdaje si mie z jakkolwiek inteligencj niewiele wsplnego. W niniejszym artykule opisujemy alternatywne podejcie do sztucznej inteligencji podejcie oparte na
modelowaniu realnego wiata, w ktrym rozgrywa si scenariusz, czyli wiata akcji, ich
efektw i obserwacji. Jest to podejcie bardziej niezawodne, elastyczne i skutkujce inteligentniejszym zachowaniem aktorw gry; w charakterze przykadu przedstawimy
dotychczasowe rezultaty jego zastosowania w postaci silnika Locust AI Engine na potrzeby gry Quake III. Skoncentrujemy si gwnie na korzyciach, jakie uytkownik gry
zyskuje dziki sztucznej inteligencji, i z tej perspektywy przedstawimy wizj przyszych
jej zastosowa.

254

Cz III  Sztuczna inteligencja

Wprowadzenie
Z rysunku 3.1.1 wynika, e wspczesne gry komputerowe osigaj swj realizm, czerpic z trzech dziedzin wiedzy: grafiki, fizyki i sztucznej inteligencji. Co prawda, samo
pojcie realizmu trudno jednoznacznie zdefiniowa w sposb formalny, niemniej jednak intuicyjnie przekada si ono w pierwszym rzdzie na zaangaowanie, jakie staje si
udziaem gracza, i inteligencj przejawian w zachowaniu tzw. bohaterw niezalenych
(BN, z angielskiego Non-Player Characters NPC)1: wygld i zachowanie obiektw
zblione jest mocno do rzeczywistoci, a dziaania bohaterw niezalenych wydaj si
racjonalne. Te wanie wzgldy s nawet waniejsze ni kreowanie niezwycionych
przeciwnikw.
Rysunek 3.1.1.
Gry komputerowe
jako kombinacja
zastosowa
trzech technologii

Bo do tworzenia niepokonanych wcale nie jest konieczna sztuczna inteligencja


czsto wystarcza zwyczajne oszustwo czy nieuczciwo. Nietrudno przecie stworzy
BN, ktry bezbdnie, natychmiast odnajduje kryjwk przeciwnika (w ktrego wciela
si gracz); zachowaniem bardziej realistycznym (mimo i, oczywicie, mniej skutecznym) jest jednak przeszukiwanie terenu, budynku itp. przypominajce racjonalne postpowanie. W ten oto sposb interes gracza postawiony zostaje ponad interesem jego
przeciwnika; tego wanie gracze od nas oczekuj i to powinno stanowi nasz cel, cel
projektantw.
W dwch cytowanych na rysunku 3.1.1 dziedzinach grafice komputerowej i obliczeniowych zastosowaniach fizyki na przestrzeni kilku ostatnich lat poczyniono olbrzymi postp. Oszaamiajce moliwoci takich narzdzi jak Maya czy 3D Max s obecnie
raczej norm ni wyjtkiem, a pakiety fizyczne w rodzaju Havok uatwiaj programowanie realistycznych scen. Z tego powodu ani grafika, ani realistyczne symulacje zjawisk fizycznych nie s ju dzi tymi czynnikami, ktre decyduj o powodzeniu gier
w krgach ich uytkownikw. Jeli natomiast chodzi o sztuczn inteligencj, to daje ona
wiksz okazj do twrczej inwencji i nowatorstwa, bo nie by jej udziaem ywioowy
rozwj, jakiego dowiadczyli dwaj jej partnerzy. Pozostajca niejako w ich cieniu nie
doczekaa si te (na razie) adnego wsparcia sprztowego, wic si rzeczy zwizane
z ni obliczenia obciaj bezporednio procesory centralne (CPU), co stawia przed
programistami nowe wyzwania, ale te daje im szerokie pole do popisu. Z drugiej jed1

Patrz http://pl.wikipedia.org/wiki/Bohater_niezale%C5%BCny przyp. tum.

Rozdzia 3.1  Zastosowanie modelowanego podejcia do implementacji AI

255

nak strony, powierzenie wielu skomplikowanych funkcji koprocesorom graficznym


zmniejsza obcienie CPU, ktrych moc przeznaczy mona tym samym w wikszym
stopniu na potrzeby AI. W niniejszym artykule przedstawimy kilka przykadw wykorzystania tej sposobnoci.

Stan obecny zbiory regu deterministycznych


W wikszoci wspczesnych gier pierwiastek sztucznej inteligencji manifestuje si poprzez reguy. Kada regua jest par o postaci sytuacja akcja gdy stwierdzone
zostanie wystpienie (zaistnienie) okrelonej sytuacji, uruchamia si waciw dla niej
akcj, ktr moe by pojedynczy ruch obiektu, sekwencja takich ruchw okrelona
przez skrypt czy te zachowanie bardziej zoone, reprezentowane przez klip wideo.
I tak np. widoczno wroga i saba kondycja gracza to sytuacja nakazujca odwrt tego
ostatniego, podobnie jak stwierdzenie wyranej przewagi wroga pod wzgldem uzbrojenia. Animacja prezentowana w zwizku z akcj moe by wywietlana przez ustalony
odcinek czasu bd te do momentu kolejnego dopasowania aktualnej sytuacji do
jednej z regu. Sytuacja (jako skadnik reguy) moe mie niekiedy posta skomplikowanej formuy booleowskiej w przedstawionym przykadzie jest to alternatywa
niewyczajca (OR) dwch okolicznoci.
Inn popularn regu, zwizan z poszukiwaniem cieek, jest wybr przez BN najkrtszej drogi prowadzcej do okrelonego celu. Przy braku dynamicznych przeszkd
i innych agentw AI regua ta sprawdza si cakiem dobrze.
Sposoby dopasowywania aktualnej sytuacji do konkretnej reguy mog by zrnicowane. Niekiedy proces dopasowywania moe by sterowany za pomoc drzewa decyzyjnego, czego przykad przedstawilimy na rysunku 3.1.2: wzy drzewa reprezentuj
wwczas pewne zdefiniowane a priori okolicznoci elementarne, za kady z lici
jedn ze zdefiniowanych akcji. Na wspomnianym rysunku wszystko zaczyna si od
sprawdzenia, czy BN ma sprawn bro; jeli tak, sprawdza si, czy znajduje si on dostatecznie blisko przeciwnika. Spenienie obu tych regu wyzwala akcj, ktr jest atak;
jak atwo zauway, atak moe by rwnie podjty w jeszcze jednej sytuacji BN nie
ma broni, ale stwierdza, e przeciwnik, jako niszy wzrostem, jest sabszy fizycznie
i mona go pokona w walce wrcz.
Kada ze cieek, prowadzca w drzewie decyzyjnym od jego korzenia do jednego z lici, reprezentuje wic pojedyncz regu sytuacja akcja, przy czym sytuacja zdefiniowana jest przez cig odwiedzanych po drodze wzw, za akcja reprezentowana
jest przez li koczcy ciek. Mimo i drzewo decyzyjne stanowi bardzo oszczdn
form kodowania regu, to pod wzgldem zawartoci informacyjnej jest ono rwnowane
klasycznemu zbiorowi par sytuacja akcja.
Innym rodkiem kodowania regu s maszyny skoczenie stanowe (ang. Finite State
Machines FSM). Maszyna taka skada si ze zbioru (zdefiniowanych a priori) stanw2,
z ktrych kady odpowiada okrelonej akcji oraz (reprezentowanych w formie ukw)
2

Z wyrnionym stanem pocztkowym przyp. tum.

256

Cz III  Sztuczna inteligencja

przej midzy stanami, odpowiadajcych testowaniu sytuacji [Rabin02]. W maszynie


FSM widocznej na rysunku 3.1.3 stanem pocztkowym moe by BEZCZYNNO, odpowiadajca bezczynnoci BN, a do momentu ujrzenia wroga, kiedy to nastpuje przejcie do stanu ATAK (ktry reprezentuje akcj, np. w formie wystrzaw z karabinu). Gdy
w stanie ATAK BN traci wroga z pola widzenia, nastpuje przejcie do stanu jego poszukiwania (SZUKAJ), czemu odpowiada moe inna stosowna animacja.
Rysunek 3.1.2.
Proste drzewo
decyzyjne

Rysunek 3.1.3. Przykadowa maszyna skoczenie stanowa

Podobnie jak drzewo decyzyjne, FSM rwnowana jest informacyjnie zwykemu zbiorowi regu; mimo to jest atwiejsza w obsudze od drzewa decyzyjnego, nie wymaga
bowiem jawnego manipulowania flagami booleowskimi czy stanami. Z tego wzgldu
maszyny skoczenie stanowe wykorzystywane s w wielu komercyjnych grach, m.in.
w Age of Empires, Enemy Nations, Half-Life, Doom i Quake.

Rozdzia 3.1  Zastosowanie modelowanego podejcia do implementacji AI

257

Odrbnym zagadnieniem jest kodowanie przechowywanych regu. Stosujc logik rozmyt, nadajemy reguom posta umoliwiajc ich dopasowywanie za pomoc metod
probabilistycznych; z kolei sieci neuronowe zapewniaj realizacj bardziej zoonych
dopasowa oba te sposoby umoliwiaj formuowanie zoonych warunkw prociej
i atwiej ni w standardowych zbiorach regu, stwarzaj te moliwo uczenia si
nowych regu na podstawie obserwowanych przykadw. Systemy eksperckie cz
natomiast serie regu z wewntrznymi interpreterami, wprowadzajcymi swoje wasne
symbole (takie, ktre nie s zwizane bezporednio z zaistniaymi sytuacjami); mimo i
moe to przyda do duej elastycznoci procesowi dopasowywania regu, jest obliczeniowo bardziej kosztowne w porwnaniu z dwiema wczeniej opisywanymi metodami i dlatego systemy eksperckie rzadko uywane s podczas tworzenia gier. Zwrmy uwag, e system ekspercki rwnowany jest standardowemu zbiorowi regu w tym
sensie, e najsabsze warunki uzasadniajce stosowalno reguy mog by utosamiane
z sytuacj, a wykonywane przez ten system dziaanie z akcj.
Reasumujc, reguy mog wystpowa w wielu formach, o rnym stopniu elastycznoci
i czytelnoci, zawsze jednak bd one rwnowane zbiorowi par sytuacja akcja.

Problemy zwizane z reguami


Mimo i reguy mog wydawa si w pierwszej chwili atrakcyjnym mechanizmem implementacji sztucznej inteligencji w tworzonych grach, wie si z nimi kilka problemw.
Oto najwaniejsze z nich.
Reguy czsto prowadz do nieinteligentnych zachowa. Trudno za ich pomoc
ogarn dugofalowe rozgazienie akcji: po wykonaniu specyficznych dziaa przez
kilku BN moe si okaza, e pierwotnie wykonane dziaania nie byy dobrym pomysem.
Przykadowo, gdy wszyscy BN zdaj najkrtsz ciek do tego samego celu, atwo
moe na tej ciece powsta tok.
Reguy okazuj si kosztowne w implementowaniu i realizacji. Projektant definiujcy
reguy musi wykazywa si obszern wiedz, by jego praca daa zadowalajce wyniki.
Zachowanie oparte na reguach uwarunkowane jest starannoci projektantw.
W zachowaniu postaci nie zaobserwujemy adnego inteligentnego zachowania, ktre
wczeniej nie zostao cile zaprogramowane. W obliczu napitych terminw trudno
oczekiwa od projektanta, e znajdzie wystarczajco duo czasu na wyposaenie kadego BN w odpowiedni zasb inteligencji. Nie naley zapomina, i dobrzy programici
gier nie zawsze s dobrymi graczami.
Zachowanie oparte na reguach moe rozczarowywa graczy i wzbudza ich nieufno.
Jednym z najwaniejszych czynnikw stanowicych o powodzeniu gry jest wywoanie
pozytywnego wraenia u graczy. Twarda, konsekwentna rka projektanta moe przynie odczucie wrcz przeciwne nieufno: nieracjonalne, sztuczne zachowanie powoduje, e po pozytywnym nastroju nie pozostaje ani ladu, zbyt inteligentne zachowania postaci odbierane zostaj jako przejaw prymitywizmu.

258

Cz III  Sztuczna inteligencja

Reguy bywaj kruche zawodz w przypadku nawet drobnych odstpstw od


przewidzianego a priori scenariusza. Jeeli np. wszyscy BN wybieraj zawsze najkrtsz ciek do celu, to chwilowe nawet zablokowanie takiej cieki regu t dyskwalifikuje. Reguy okazuj si te wtpliwe w obliczu informacji niepenej, niepewnej
i nieprecyzyjnej nieznanego lub niedokadnie okrelonego pooenia obiektw, nakadajcych si akcji, akcji uzalenionych czasowo itp.
Reguy okazuj si trudne w modyfikowaniu, debugowaniu i generalnie skutkuj
nieefektywnymi iteracjami generuj i poprawiaj. Typowym sposobem poprawiania
kruchej reguy jest definiowanie od niej wyjtkw. W efekcie projektant dodawa
musi wci nowe wyjtki w zwizku z kolejnymi nietypowymi sytuacjami. Jako przykad rozpatrzmy nastpujc regu: jeli kondycja BN spadnie poniej 50% normalnej
wartoci, powinien si on wycofa z walki i poszuka moliwoci doadowania. Jeeli
jednak przeciwnik BN jest ju na skraju wyczerpania i mona by go zabi jednym
strzaem, wycofanie si z walki przy 50% kondycji wydaje si postpowaniem ewidentnie nieracjonalnym i to jest wanie jedna z sytuacji, gdy cytowana regua okazuje
si nieadekwatna. Definiujemy wic pierwszy wyjtek: jeli kondycja BN jest mniejsza
ni 50%, a kondycja jego przeciwnika mniejsza ni 5%, BN najpierw umierca przeciwnika, dopiero potem szuka moliwoci doadowania. Rozwizujemy w ten sposb
jeden problem, ale niestety zaraz pojawia si nastpny: co si stanie, gdy amunicja BN bdzie ju na wyczerpaniu i nie wystarczy jej na zabicie (wyczerpanego ju skdind) przeciwnika? Nie ma innej rady, jak zdefiniowanie wyjtku od wyjtku: jeli
kondycja BN jest mniejsza ni 50%, a kondycja jego przeciwnika mniejsza ni 5%
i jednoczenie amunicja BN nie jest mniejsza ni 5% maksimum, BN najpierw umierca
przeciwnika, dopiero potem szuka moliwoci doadowania. Takie atanie logiki
jest procesem nie tylko nieefektywnym, ale prowadzi do przysowiowego kodu spaghetti3 trudnego w utrzymaniu i nieodpornego na dodawanie do gry nowych cech.
Debugowanie takiego kodu staje si koszmarem, bo wobec skomplikowanego kontekstu
i zoonej informacji o stanie przyczyna bdu moe znajdowa si wiele ramek wczeniej od tej ramki, w ktrej widoczne staj si jego konsekwencje.
Reguy nigdy nie s kompletne. Opisany proces atania regu zdefiniuj nowy
wyjtek i testuj regu a do napotkania kolejnego przypadku, w ktrym okae si nieadekwatna prowadzi nieuchronnie do niekompletnego produktu AI. Proces ten mona bowiem cign potencjalnie w nieskoczono i zazwyczaj koczy si, gdy upywa
termin ukoczenia kolejnego etapu projektu. I wtedy pozostaje tylko nadzieja, e uytkownicy nie odkryj luk w logice AI luk, o ktrych czsto nie wiedz sami projektanci. Uytkownicy s niezwykle dumni z kadej odkrytej luki tego rodzaju, daj temu
wyraz na grupach dyskusyjnych i w blogach, cierajc w proch wszelkie pozytywne recenzje i reklamowy szum wok wspaniaoci i niepowtarzalnoci gry.
Reguy s nieprzewidywalne i niestabilne. Opisywane ju atanie regu skutkuje nie
tylko trudnoci w ich utrzymaniu, ale take ich wysok nieprzewidywalnoci. Jaka
nieprzewidziana sytuacja moe zaama lub zaptli ca gr.
3

Nazwa ta wywodzi si std, e ingerencja w jednym miejscu kodu ma swe konsekwencje w jakim odlegym
jego fragmencie jak na talerzu ze spaghetti: poruszysz co w jednym miejscu i natychmiast co si rusza
z drugiej strony przyp. tum.

Rozdzia 3.1  Zastosowanie modelowanego podejcia do implementacji AI

259

Reguy nie s skalowalne ze wzgldu na liczb BN. Kontrolowanie zachowania jednego tylko BN za pomoc zbioru regu ju jest spraw trudn, a przy zwikszaniu liczby
BN trudno ta (i zarazem krucho regu) ronie w tempie wykadniczym. Sprawy
komplikuj si dodatkowo, gdy postaci te dziaaj w korelacji lub w opozycji do siebie.
Wziwszy pod uwag powysze okolicznoci, zwizane byo nie byo z wci
dominujcym podejciem do projektowania gier, trudno si dziwi, i zastosowanie AI
w tej dziedzinie nie dorwnuje tempem rozwoju grafice i symulacji zjawisk fizycznych.
Staje si coraz bardziej oczywiste, e implementowanie AI w postaci zbiorw regu signo ju kresu swych moliwoci.

Modelowane podejcie do implementacji AI


Zgodnie z racjonalnym modelem teorii decyzji, najlepsz decyzj jest ta, ktra maksymalizuje zysk przewidywany w oparciu o analiz sekwencji przyszych decyzji. Na rysunku 3.1.4 zilustrowany zosta dylemat: dla kadej z dwch alternatyw moliwy jest
kolejny wybr midzy dwiema moliwociami, a dla kadego z czterech wynikajcych
std wariantw prognozowane s okrelone korzyci. Kady z wzw widocznego
drzewa reprezentuje okrelon sytuacj (lub stan), za krawdzie czce wzy reprezentuj decyzje skutkujce zmian sytuacji (stanu). Jak atwo zauway, pierwszym
krokiem na ciece do wariantu najkorzystniejszego jest podjcie decyzji nr 2.
Rysunek 3.1.4.
Dylemat i mierzalne
konsekwencje jego
rozstrzygnicia

Opisane podejcie implementowania AI w odniesieniu do tworzenia aplikacji, szczeglnie gier, nazywane jest podejciem modelowanym, bowiem opiera si ono o wysopopoziomow dynamik systemu zbir dopuszczalnych akcji (decyzji) i konsekwencje ich podejmowania. Oglnie rzecz biorc, podejcie to realizowane jest w trzech
nastpujcych krokach.

260

Cz III  Sztuczna inteligencja

1.

Symulowanie konsekwencji podejmowania kadej z moliwych decyzji


i budowanie na tej podstawie drzewa decyzyjnego.

2.

Szacowanie spodziewanych zyskw w wyniku podejmowania kadej decyzji.

3.

Wybr tej decyzji, ktra prowadzi do najkorzystniejszego z szacowanych wariantw.

W klasycznych grach planszowych, takich jak szachy czy warcaby, na model postpowania skada si opis kadego z (potencjalnie ogromnej liczby) dopuszczalnych
ruchw, kryterium zakoczenia gry oraz zasady orzekania o zwycistwie (albo remisie).
W grach wideo analogiczny model zawiera opis wszystkich dopuszczalnych akcji, ich
efektw i innych zdarze, jakie (w symulowanym wiecie) mog by konsekwencjami
podejmowania tyche akcji. Zauwamy, e reguy gry s czym innym ni podejcie
oparte na reguach: to ostatnie opiera si na definiowaniu a priori akcji podejmowanych w konkretnych sytuacjach, zamiast akcje te opisywa, jak ma to miejsce w podejciu modelowanym.

Interfejs
Szczegy interfejsu czcego implementacj modelowanego podejmowania decyzji
z reszt aplikacji (gry) bywaj zrnicowane, lecz zasady wspdziaania tych dwch
elementw pozostaj z grubsza takie same. Przykadowo w silniku Locust interfejs ten
opiera si na czterech procesach: obserwacji, aktualizacji, decydowaniu i dziaaniu (patrz
rysunek 3.1.5). Obserwowanie to zbieranie informacji o otaczajcym wiecie; aktualizacja
polega na wykorzystywaniu wynikw obserwacji do zmiany przewidywa, decydowanie
to wybr okrelonej akcji na podstawie tyche przewidywa, za dziaanie to fizyczne
realizowanie wybranej akcji w celu zmiany otaczajcego rodowiska. Zakada si, e
maszynie decyzyjnej znany jest biecy stan tego rodowiska, np. lokalizacje wszystkich BN;
kada zmiana stanu rodowiska odnotowywana jest przez proces aktualizacji.
Rysunek 3.1.5.
Interfejs czcy gr
z maszyn decyzyjn

Przedstawiony na rysunku 3.1.5 cykl obserwacjaaktualizacjadecydowaniedziaanie


krci si w nieskoczono. Kropkowana linia symbolizuje wspomniany interfejs oddzielajcy silnik Locust od wiata gry, w ktrej odbywa si obserwowanie i dziaanie;
aktualizacja i podejmowanie decyzji s wic od tego wiata oddzielone. Faktycznie jednak struktura procesu aktualizacyjnego jest przyblieniem wiata gry i jest od zoonoci
tego wiata cile zalena.

Rozdzia 3.1  Zastosowanie modelowanego podejcia do implementacji AI

261

Jednym z najwaniejszych aspektw opisywanego modelu jest podejmowanie decyzji


w czasie rzeczywistym. W skomplikowanym wiecie rzadko daje si w caoci realizowa
zakadane scenariusze, bowiem wiat ten jest z natury nieprzewidywalny. Przykadowo
cieka wyznaczona dla okrelonego BN, jako najkrtsza wiodca do celu, moe okaza
si w pewnym momencie nieaktualna wobec obstrukcyjnych dziaa innych BN.
Locust uwzgldnia uwarunkowania tego rodzaju, bowiem podejmowanie decyzji przeplata si w nim z obserwowaniem rodowiska i jest stosownie do wynikw obserwacji
zmieniane. Pozwala to na dynamiczne modyfikowanie przyjtego scenariusza akcji.
Co prawda, nie jest wykluczone planowanie scenariuszy niemodyfikowalnych, te jednak
okazuj si zwykle nierealizowalne ze wzgldu na wspomnian nieprzewidywalno
otaczajcego wiata. Zamiast tego cz aktualizacyjno-decyzyjna wykorzystuje sparametryzowany model przewidywa, ktrego parametry zmieniane s stosownie do wynikw obserwacji.

Zalety i korzyci dla projektantw


Modelowane podejcie do implementowania AI przynajmniej w wersji obecnej w Locust
Engine oferuje projektantom kilka zalet w porwnaniu z podejciem opartym na
zbiorach regu. Oto one.
 Skutkuje bardziej inteligentnym zachowaniem postaci. Dzieje si tak dlatego,

e w stosunku do kadej podejmowanej decyzji analizowane s jej spodziewane


konsekwencje. Zachowanie BN wspomaganych przez Locust Engine
podporzdkowane jest logicznie spjnym celom, a ich dziaania weryfikowane s
co chwila pod ktem zgodnoci z owymi celami. Schemat ten w naturalny sposb
godzi ze sob dugoterminowe plany strategiczne i dorane decyzje o charakterze
taktycznym poprzez zmian priorytetw wspomnianych celw, stosownie do zmian
zachodzcych w otaczajcym rodowisku.
 Redukuje czas i koszty implementacji. Zrealizowanie gry w zaoonym

terminie z zachowaniem przewidzianego budetu jest oczywistym deniem


projektantw i programistw. Programici i projektanci doskonale jednak wiedz,
e programowanie sztucznej inteligencji moe zaama harmonogram: co wicej,
mimo przekroczenia terminu, zachowanie si postaci jest niedopuszczalnie mao
inteligentne i wwczas dy si jedynie do tego, by stao si ono (powiedzmy)
akceptowalne przez graczy. Locust umoliwia szybk i mao kosztown realizacj
modelu i to bez wymagania szczeglnie gbokiej wiedzy projektantw. Konieczny
jest jedynie precyzyjny opis akcji i ich efektw oraz powizanie wynikw
obserwacji ze stanami modelu.
 Wprowadza niekiedy niespodziewane efekty do zachowania postaci.

Postaci mog wykazywa przejawy inteligencji nieprzewidziane oryginalnie


przez projektantw. Synny Deep Blue wykaza si umiejtnoci gry w szachy
na poziomie mistrzowskim, pokonujc samego mistrza wiata Garrego Kasparowa;
o tak zaawansowane umiejtnoci trudno jednak podejrzewa twrcw programu
rozgrywajcego. To jeden z dowodw na to, e inteligencja programu nie jest
limitowana inteligencj jego twrcw, zatem zachowanie si BN nie jest

262

Cz III  Sztuczna inteligencja

ograniczone inteligencj autorw gry. Fakt ten pozwala programistom zaj si


kreatywnymi aspektami BN ich osobowociami, uzbrojeniem, czujnikami
i celami zamiast drobiazgowego troszczenia si o reguy.
 Stwarza wikszy komfort uytkownikom gier. Bardziej inteligentne

zachowanie postaci to wiksze poczucie (iluzja) realizmu u gracza. Szczeglnie


cenne s te aspekty zachowania BN, ktre gracz identyfikuje z zachowaniem
typowym dla siebie.
 Jest bardziej niezawodne. Przewidywanie prowadzi do wikszej niezawodnoci

ni sztywne reguy, ma bowiem charakter adaptacyjny wymusza dostosowanie


do biecej sytuacji, pozostajc jednoczenie technik oglnego przeznaczenia.
W procesie podejmowania decyzji Locust bierze pod uwag wiele czynnikw,
takich jak kondycja poszczeglnych BN, stan ich uzbrojenia i amunicji, blisko
rde zaopatrzenia (doadowania), kondycj i odlego wroga, itp.; na ich
podstawie podejmuje decyzj najlepsz w ramach narzuconych ogranicze
czasowych im wicej czasu na podjcie decyzji, tym wicej implikacji
podjcia danej decyzji mona wzi pod uwag. Locust take znakomicie radzi
sobie ze skomplikowan topografi terenu, automatycznie tworzc hierarchiczne
struktury punktw orientacyjnych.
 Jest skalowalne pod wzgldem liczby BN. Rozproszenie procesw podejmowania

decyzji redukuje zoono obliczeniow, wykadnicz wzgldem liczby BN


w przypadku tradycyjnego podejcia opartego za zdeterminowanym zbiorze regu.
Obliczenia te mog by take rozproszone midzy kilka procesorw lub kilka
komputerw w sieci
 Uatwia debugowanie i modyfikowanie regu. Gdy okae si, e zachowanie

postaci ma by uzalenione od jakiego nowego czynnika, mona w czynnik


uwzgldni w stosunkowo prosty sposb. Przy podejciu tradycyjnym, gdy
czynnikiem tym ma by np. charakter (uosobienie) BN, mona dla kadego BN
ustali rn hierarchi celw i tak, niemiay i bojaliwy BN szczeglnie
ceni sobie bdzie moliwo czstego uzupeniania zapasw, podczas gdy
miay i odwany dy bdzie do czstych star z wrogiem, mniej obsesyjnie
cenic sobie swoje bezpieczestwo. Leniwy BN moe sztucznie komplikowa
wszelkie ruchy lub wykonywa je bardziej ociale, co pozwoli mu pozostawa
jak najbliej (bezpiecznej) pozycji pocztkowej. Podejcie przyjte w konstrukcji
Locust Engine jest znacznie prostsze i prawie bezkontekstowe, co pozwala atwiej
i szybciej wynajdywa bdy oraz bardziej bezpiecznie modyfikowa kod. Zmiana
lub wzbogacenie zachowania BN jest kwesti zmiany priorytetw celw i innych
parametrw symulacji; unika si w ten sposb produkowania kodu spaghetti,
typowego dla czsto modyfikowanych zbiorw regu. Krotko mwic, gdy zmienia
si model, zmieniaj si podejmowane na jego bazie decyzje samoistnie,
bez adnych dodatkowych zabiegw.
 Umoliwia kreowanie przenonych postaci. Gracze lubi odnajdywa

podobiestwa midzy grami, szczeglnie cenic sobie podobiestwo postaci.


Model zachowania si konkretnego BN w okrelonej grze moe by atwo
zaimplementowany na gruncie innej gry. Locust Engine umoliwia nawet
tworzenie caych bibliotek postaci w oparciu o opis ich zachowania zamiast
jego fizycznej realizacji.

Rozdzia 3.1  Zastosowanie modelowanego podejcia do implementacji AI

263

 Stwarza okazj do wikszego urozmaicenia. Jak ju wspominalimy, sztuczna

inteligencja jest najwaniejszym z czynnikw decydujcych o zrnicowaniu


gier. Zdeterminowane zbiory regu z natury nie uatwiaj takiego rnicowania,
w przeciwiestwie do podejcia modelowanego, szczeglnie tego zastosowanego
w Locust Engine. To ostatnie stwarza szerokie moliwoci pod wzgldem
animowania postaci, zarwno wtedy, gdy maa liczba autonomicznych BN
wykonuje jak wysokopoziomow akcj przez dugi okres czasu, jak i wtedy,
gdy dua liczba prostych postaci wsplnie przejmuje kontrol nad akcj gry
przez krtk chwil. Moliwe jest take sterowanie niskopoziomowym
przemieszczaniem si postaci symulowanie toku i tumu to przykady
prostszych funkcji Locust Engine, w dodatku cakowicie wbudowanych
w specyfikacje celw, a nie sterowanych okrelonymi reguami. W efekcie
zatoczenie wydaje si spontaniczne, a nie zaprogramowane.
Podejcie modelowane jest jednak gorsze pod dwoma wzgldami w stosunku do sztywnych zbiorw regu. Po pierwsze, wymaga zbudowania modelu ten jednak tworzy si
atwiej ni zbir regu, poza tym mona go zbudowa na podstawie interakcji midzy
postaciami. Po drugie, tworzenie i utrzymywanie drzewa reprezentujcego przewidywane konsekwencje jest bardziej kosztowne obliczeniowo od przetwarzania zbioru regu; w wikszoci skomplikowanych aplikacji konsekwencje podjcia optymalnej decyzji warte s jednak powicenia dodatkowego czasu. Locust Engine potrafi podejmowa
decyzje dotyczce wielu BN w cigu kilku milisekund, co umoliwia reagowanie
w czasie rzeczywistym na zachodzce zmiany, przy jednoczesnym eksponowaniu inteligentnego zachowania.

Locust AI Engine w Quake III Arena


Opiszemy teraz logiczne zaoenia Quake III Arena (Q3A) wieloosobowej strzelanki
FPP, produkcji Id Software. Jak za chwil zobaczymy, podejmowane w czasie rzeczywistym decyzje w zwizku z przebiegiem gry s skomplikowane. Masz zaledwie uamek sekundy, by reagowa na ataki zawzitych BN, nieustannie prbujcych Ci zabi;
Ty masz do wyboru bro rne rodzaje, kady przydatny w innej sytuacji ucieczk
i ukrywanie si.
Gracze przemieszczaj si w ramach mapy, zwanej aren, a ich celem jest (wirtualne)
zabijanie (frag4 w terminologii Quake) wojownikw wroga i zbieranie za to kolejnych
punktw, stosownie do trybu gry. Jeli licznik ycia postaci, w ktr wciela si gracz,
osignie zero, posta ta umiera, lecz natychmiast, w okrelonym miejscu areny, pojawia
si jej sobowtr (w terminologii Quake nazywa si to respawn); niestety, dorobek
zmarej postaci bezpowrotnie przepada. Gra koczy si w przypadku osignicia przez
ktrego z graczy (lub przez zesp) okrelonej liczby punktw lub upynicia limitu czasu.
System uzbrojenia zosta tak zaprojektowany, e dla kadej sytuacji istnieje odpowiednia
bro; jedn z najwaniejszych decyzji jest wanie wybr waciwej broni. Bro take
(podobnie jak posta reprezentujca gracza) odtwarza si w regularnych odstpach czasu
4

Na czym polega wirtualny charakter owego zabijania albo czym rni si zabijanie od fragowania
o tym mona przeczyta np. w Wikipedii (http://pl.wikipedia.org/wiki/Frag) przyp. tum.

264

Cz III  Sztuczna inteligencja

w okrelonych lokalizacjach, wystarczy tylko schyli si po ni. Kady egzemplarz


broni wyposaony jest w odpowiedni zasb amunicji. Skrzynki z dodatkow amunicj,
niektre ukryte, rozmieszczone s w okrelonych punktach areny.
Gdy licznik ycia gracza zblia si do zera, mona go doadowa w jednej z czterech
kategorii: tej (25), pomaraczowej (50), zielonej (5, lecz moe przekroczy 100)
i niebieskiej (100 i wicej). czna warto doadowania nie moe przekroczy 200.
Poruszanie si postaci jest w Q3A nieskomplikowane: mog one biega, spacerowa,
skaka lub porusza si w przysiadzie. Bieg jest ruchem domylnym, cho bieganie po
arenie nie jest specjalnie atrakcyjne; spacer (chd) jest bezgony, mona wic skrada
si od tyu do przeciwnika. Mimo i podskoki w przysiadzie te s bezgone, z natury
rzeczy posta porusza si wtedy wolniej, ale za to jest trudniej zauwaalna i moe
przemieszcza si pod niskimi konstrukcjami.
Silnik Locust kontroluje w QA3 zachowanie wszystkich BN zachowanie adnej nie
jest okrelone przez deterministyczne reguy. Model zachowania przewiduje nastpujce akcje: ruch do przodu pod okrelonym ktem, na okrelony dystans, ruch do tyu pod
okrelonym ktem, na okrelony dystans, kontynuowanie poprzedniej akcji, uycie aktualnie posiadanej broni oraz bezczynno. Co do przewidywa skutkw podejmowanych
decyzji, to po licznych eksperymentach doszlimy do wniosku, e najlepsze wyniki daje
analiza skutkw decyzji od trzech do omiu poziomw w gb, przy czym powyej pitego poziomu optymalizowanie wydajnoci staje si coraz mniej skuteczne. Locust analizuje zawarto 20 30 ramek (penoekranowych) na sekund, dokonujc, po kadej
aktualizacji ramki, prognozy zachowania dwch-trzech BN; podjcie decyzji o akcji
wykonywanej przez jednego BN trwa nie duej ni 13 milisekund.
W oryginalnej wersji QA3 opracowanie kompletnego zestawu regu zajo p roku,
a implementacja tego zestawu liczya 50 000 wierszy kodu. Gdy zrezygnowalimy z deterministycznych regu na rzecz silnika Locust, uporalimy si z implementacj modelu
w cigu dwch tygodni, a zwizany z tym kod liczy 2 000 wierszy. Jak wida, kolosalna oszczdno czasu i zasobw. Najwaniejsze jest jednak to, e w nowej wersji BN
wykazuj zdecydowanie wiksz inteligencj, podejmujc bardziej racjonalne decyzje
i stajc si tym samym bardziej przebiegymi przeciwnikami. To za przekada si
w pierwszym rzdzie na wiksze zadowolenie graczy.

Soar
Soar ([Laird00] i [LairdDuchi00]) jest cile powizany z tematyk i duchem niniejszego
artykuu. Jest on rozwizaniem unikalnym w tym sensie, e decyzje podejmowane s na
bazie regu, lecz jednoczenie stosowane jest wnioskowanie wsteczne (ang. backward
chaining) i tworzenie podcelw (ang. subgoaling) w celu zapobiegania niefortunnym
konsekwencjom tych decyzji i wyboru midzy konkurencyjnymi reguami. Przykadowo
zachowanie postaci sterowane jest za pomoc 715 regu, 100 operatorw zmiany stanu
wewntrznego i 20 podstanw. Jako e Soar jest reprezentantem tzw. architektury poznawczej (ang. cognitive architecture), zawiera take modele ludzkiej pamici, takie jak
ograniczona pami operacyjna (ang. working memory), przetwarzanie symboli czy porcjowanie (ang. chunking). Opisywane przez nas podejcie jest jednak ukierunkowane bardziej
na uzyskanie odpowiedniej efektywnoci ni na modelowanie procesw poznawczych.

Rozdzia 3.1  Zastosowanie modelowanego podejcia do implementacji AI

265

Konkluzja
Wizja przyszoci to tworzenie gier, w ktrych poziom (sztucznej) inteligencji dorwnuje
wspaniaym efektom graficznym. Badania skoniy nas do stwierdzenia, e powszechnie
praktykowane implementowanie AI na bazie zbioru regu deterministycznych nie jest
drog do tego celu. Wiedzieli ju o tym w 1980 roku twrcy programu szachowego,
ktry dziesi lat pniej pokona mistrza wiata Garrego Kasparowa: zarzucili oni deterministyczne reguy na rzecz podejcia modelowanego. Uwiadamia sobie ten fakt
take coraz wicej twrcw gier. W niniejszym artykule opisalimy modelowane podejcie do procesu podejmowania decyzji na przykadzie silnika Locust Engine. Daje on
nie tylko moliwo drastycznych redukcji kosztw i czasu implementacji AI, lecz take
lepsze efekty kocowe (bardziej inteligentne zachowanie postaci), w porwnaniu z przetwarzaniem zbiorw regu.

Literatura cytowana
[Laird00] J. Laird, It Knows What Youre Going to Do: Adding Aticipation to a Quakebot.
AAAI 2000 Spring Symposium Series: Artificial Intelligence and Interactive Entertaiment.
AAAI Technical Report SS-00-02.
[LairdDuchi00] J. Laird i J. Duchi, Creating Human-like Synthetic Characters with
Multiple Skill Levels: A Case Study using the Soar Quakebot. AAAI 2000 Fall Symposium Series: Simulating Human Agents.
[Rabin02] Steve Rabin, Implementing a State Machine Language. AI Programming
Wisdom, Charles River Media, 2002, str. 314 320.