Kolejna część relacji z targów PGA. Poprzednia, opisująca ogólnie targi, dostępna pod tym zdaniem. Tym razem, skupiamy się na samym Zlocie Twórców Gier. Dokładniej, opowiem wam, czego ciekawego się dowiedziałem. Niestety, część wykładów, które wybrałem trochę mnie zawiodły, więc notki z nich są krótkie.
Unity3d – Najlepsze praktyki i dobre rady
Na początek zaliczyłem nieprzyjemną podróż. Nie chodzi o wykład, a o kolegę, który na targi nas prowadził. Ogólnie wysłał nas w przeciwną stronę i na pierwszy wykład wpadłem spóźniony… Ale! I tak jakieś info jest. To co w tytule, dobrze określa czym był wykład. Autor: Kacper Kościeński, prezentował rzeczy, które warto wiedzieć lub stosować. Nie podam wszystkiego, bo sam odnotowałem sobie te, moim zdaniem najciekawsze, a sam pozwolę sobie je wypunktować:
- Porządek wykonywania funkcji – Start, Update, Awake. Wiesz, że są. Wiesz, że coś robią. Ważne jest, aby wiedzieć w jakiej kolejności i kiedy się wykonują.
- Rozbijanie złożonych struktur – Tutaj podany był przykład, który najlepiej wyjaśni o co chodzi. W grze autorzy mieli obliczenia na wektorach, czyli obiektach klasy Vector3. Kiedy rozbili te obliczenia na operacje na prostych zmiennych, szybkość kodu się poprawiła.
- Twórz instancję często używanych komponentów – Mamy taki komponent Transform, do którego często się odnosimy. Przyspieszyć czas reakcji, możemy, przez dodanie do skryptu w obiekcie, zmiennej Vector3, która będzie pamiętać ustawienia komponentu Transform. Ma to być rozwiązaniem szybszym i bardziej efektywnym.
Jak ugryźć shadery w Unity
Z tego wykładu niestety nic nie wyniosłem. Przeznaczone na niego było 30minut, ale już na starcie, komputer odmówił współpracy z rzutnikiem. Po 15 minutowej szamotaninie, organizatorzy do niczego nie doszli, więc odbył się wykład, bez pokazania części praktycznej, ani slajdów.
Trochę losowości i algorytmów, czyli jak zaoszczędzić godziny level designu
Ten wykład był przygotowany bardzo ciekawie. Dostawaliśmy kolejne implementację prostej gierki, gdzie elementy losowości bardzo ją urozmaicały. Np. pojawiał się rozrzut broni, losowe pomieszczenia, losowe rozbryzgi krwi etc.
Nie było to jakieś bardzo techniczne, a bardziej zachęta do dodawania losowości w grach, by urozmaicić rozgrywkę. Stosując kilka rozsądnych algorytmów, możemy wygenerować ciekawą planszę, bez minimalnego projektowania. Dodatkowo, dodając elementy losowe, np. rozrzut przy broni, gra staje się ciekawsza, bo pociski nie lecą zawsze idealnie.
Dlatego kodu czy wielkiej teorii tutaj nie uświadczymy. Ale rację autorowi trzeba przyznać. Jeżeli chcecie temat zgłębić, to dodaje 24 minutowe wideo z wykładu. Jakość dźwięku fatalna niestety.
VR czyli fotoplastykon 2.0
Na ten wykład poszliśmy trochę przypadkowo. Mieliśmy iść na inny, ale malutka salka, nie pomieściła wszystkich chętnych, dlatego udaliśmy się do sali, gdzie miał odbyć się nasz następny wykład w celu zajęcia sobie miejsca.
Ogólnie poznaliśmy w skróci historię zafascynowania ludzi wirtualną rzeczywistością, oraz mogliśmy sobie przymierzyć okulary VR.
Silent Narratives: Designing Through the Eyes of an NPC
Wykład cud! Naprawdę. Zapamiętajcie sobie nazwisko Len de Gracia, bo kobieta jest naprawdę świetna! Nie dość, że wiedzę przekazuje w sposób, który przypomina opowiadanie powieści fantasy, to przemyca tam masę konkretów i dobrych praktyk. Do tego wydaje się naprawdę bardzo sympatyczną babką.
Sam wykład dotyczył budowania wiarygodnych światów i postaci. Temat podpadł pod grafikę, bo pani Len, była projektantką wnętrz – w sensie wnętrz budynków w Wiedźminie. Więc na co zwrócić uwagę projektując wnętrza? Ogólnie zasada jest taka, że ludzie chcą coś rozpoznawalnego i realistycznego. Dlatego, dobrym źródłem inspiracji przy tworzeniu wnętrz jest np. korzystanie z dzieł sztuki. Malarze przykładają dużą wagę do kompozycji, więc skopiowanie ich dzieł, może dać dobry balans. Jako przykład, pokazano nam kilka zdjęć obrazów, po czym screen z Wiedźmina, gdzie wycinki tych obrazów były umieszczone. Efekt – świetny.
Druga warta odnotowania rzecz, to fakt, że w grze mamy inną perspektywę. Podany był przykład z obrazem i komodą. Jeśli w normalnym życiu zobaczymy duży obraz, nad małą komodą, jest to dla nas normalne. Ale w perspektywie gracza, takie coś, będzie nienaturalne. Dlatego, trzeba pilnować, by proporcje były zachowane.
Na koniec poznaliśmy sprytną sztuczkę. Pani Garcia miała do zrobienia szkołę w biednej dzielnicy. W średniowieczu, szkoła w biednej dzielnicy, no cóż… nie istniała. Więc jak zrobić coś, co będzie przypominało szkołę, ale taką biedną? Inspiracją ma iść ze współczesności. Zdjęć wielu miejsc z przeszłości nie uświadczymy. Dlatego dobrym sposobem, jest wzięcie zdjęcia współczesnego i podmienieniem elementów na nim się znajdujących, na odpowiedniki z epoki, na którą stylizujemy grę. Zdjęcie, które posłużyło do utworzenia ubogiej szkoły, wyglądało mniej więcej tak:
Ogólnie rzecz ujmując, chodzi o to, żeby gracz dostrzegł coś charakterystycznego, żeby miejsca były dla niego rozpoznawalne. Nasi gracze, nigdy nie byli i nie będą w średniowiecznej szkole. Ale nam, jako designerom, za cel przyświeca to, żeby wchodząc do budynku, gracze rozpoznali, że to szkoła! Ważne są wszystkie te szczegóły, budujące całość.
Otwarty świat – o metamorfozie implementacji gier z serii “Wiedźmin”.
Na tym wykładzie, który poprowadził Jakub Rokosz, zdobywaliśmy wiedzę na temat budowania otwartego świata. Znów pochwały dla prelegenta, bo jest naprawdę pozytywnym gościem, o aparycji szalonego naukowca. Zajmuje się on, tworzeniem questów.
Wykład zaczęliśmy od zdobycia wiedzy, jak wygląda proces powstawania fabuły. Wygląda to tak, że ekipa dostaje zarys fabularny. Następnie rozbijają to na fragmenty o podobnej długości lub wadze i rozpisują. Jednak, nie jest to jeszcze dokładny opis. Bardziej krótkie instrukcje. Gracz musi pogadać z tym i z tym gościem. Po rozmowie się pokłócili. Gracz wyszedł. Dopiero w późniejszych fazach, całość jest rozpisywana dokładniej.
W kolejnej części, rozmawialiśmy o tym, jak wygląda struktura logiczna gry. Na początek dostaliśmy przykład, jak wygląda to w prostych grach, a do porównania Wiedźmina 3. Przy czym screen z Wiedźmina jest niekompletny…
Czym jest struktura logiczna? Jest to schemat, wszelakich powiązań questów między sobą. Takie rozbicie fabuły, pozwala uniknąć błędów logicznych już na etapie projektowania. Np. jedna postać, nie będzie w dwóch miejscach na raz.
Następnie posłuchaliśmy na temat budowania struktury w grze z otwartym światem. Wiedźmin 2 miał dość prostą strukturę. Dla Wiedźmina 3, musiała ona ulec zmianie. Wcześniejsze jednostronne relacje (czyli np. questy główne odblokowują questy poboczne), zostały zmienione na relacje dwustronne. Teraz, każdy quest ma na coś wpływ.
Innymi słowy, część kroków do pokonania pewnej części fabuły jest opcjonalna. Na wykładzie nazwane było to Story Hubem. Najprościej wyjaśnić można to tak. Jeżeli grę mamy podzieloną np. na 6 rozdziałów (jak Gothic), to takimi Story Hubami, był koniec każdego rozdziału. Musieliśmy spełnić kilka narzuconych z góry warunków, by móc dojść do Story Huba i rozpocząć kolejny fragment. Trzymając się Gothica, Story Hubem, było np. przyłączenie się do gildii.
Co dały nam te wszystkie kroki? Bez sensowna, byłaby gra z otwartym światem, gdzie mamy wymuszone bieganie z punktu A do B i do C. Dlatego, takie rozwiązanie, pozwala podać graczowi najważniejsze fragmenty fabuły głównej. Zgłębianie jej, leży w jego zakresie. Jeśli kogoś nie interesuje eksploracja świata, dostaje tylko najważniejsze informacje, potrzebne mu do zrozumienia fabuły. Dociekliwy gracz, sprawdzi co jeszcze autorzy mu zaproponowali – questy poboczne mogą być związane z fabułą główną, ale nie być wymagane do jej ukończenia. Padło stwierdzenie, że wpychanie graczom do gardła masy informacji fabularnych to zły pomysł.
Wiarygodny świat i jego budowa – od renderingu po generowanie
Tutaj przyznam, zawiodłem się na wykładzie. Liczyłem na kilka ciekawych zagadnień, zwłaszcza, że prelekcję prowadził twórca Barok engine. To co otrzymaliśmy, to monotonny wykład z fizyki, prowadzony w nieciekawy sposób. W efekcie, nie doczekaliśmy do końca. Za to po wyjściu z sali, mój brat (magister fizyki), wytknął kilka błędów rzeczowych. Wykład mógłby być interesujący, dla osoby chcącej pisać własny silnik, ale dla twórcy gier, trochę nie przydatny.
Człowiek kontra komputer, czyli sztuczna inteligencja w grach turowych
Kolejny wykład, który mnie potwornie zawiódł. Tematem przewodnim było: Czy da się zrobić sztuczną inteligencję na podstawie tabeli i czterech wykresów. Dało się. Jednak miało to kilka wad. Autorzy obrali swoją teorię na tzw. algorytmach uczących się. Czyli im więcej nasza sztuczna inteligencja grała, tym bardziej potrafiła ogarnąć jak grać. Tylko, że najpierw musi mieć skądś bazę wiedzy. Żeby ją zbudować, trzeba przeprowadzić sporo gier. Więc pomysł autorów sprawdzał się, jeśli mamy dużo czasu no rozgrywanie setek tysięcy gier, albo jeśli obudujemy całość kolejnymi skomplikowanymi modułami.
Obecnie najpopularniejsze do robienia sztucznej inteligencji są drzewa decyzyjne. Czyli: jeśli dzieje się A to zareaguj tak, a jeśli spełnione są warunki B to zrób inaczej. Autorzy prezentacji, chcieli wykorzystać “prawdziwą” sztuczną inteligencję. Czyli logika rozmyta, sieci neuronowe itp. Problem w tym, że takie coś, jest bardzo zasobożerne i moim zdaniem, przez dłuższy czas czegoś takiego nie zobaczymy. Tym bardziej, że jak wspomniałem, algorytm potrzebuje wiedzy startowej, a nie da się jej wyczarować z próżni.
AI Jungle
Ostatni Wiedźminowy wykład. Tym razem Michał Słapa, opowiadał o AI w Wiedźminie. Mimo, że wykład trwał, aż dwie godziny, informacji przydatnych ogólnie, za dużo nie było. Bardziej była to bardzo fajna ciekawostka.
Wykład podzielony był na trzy części, odpowiadające trzem narzędziom:
Behavior trees
Zdecydowanie najkrócej opowiadana część. Przyczyną był fakt, że takie coś występuje w prawie każdej grze. Chodzi o zachowanie np. NPC. To, że mają swój rytm dnia, śpią w nocy, chowają się przed deszczem etc. Są to proste drzewa sekwencji, gdzie postać reaguje na pewne warunki otoczenia.
Steering Graph
Narzędzie odpowiedzialne za poruszanie się. Tym razem było ciekawiej. Najogólniej, wiemy, że istnieje np. path finding. Czyli szukanie ścieżek. Ale panowie z CDPR, wymyśli coś fajnego. Mają kilka poleceń. Np. unikaj kolizji, trzymaj się z dala od ścian itp. Każą jedynie swojej postaci biec z punktu A do B, korzystając z takich poleceń. Ścieżka dobiera się sama automatycznie. Dając danej postaci różne moduły, możemy modyfikować jej zachowania, a każdy moduł jest niezależny. Pomysł prześwietny!
Btw. wiedzieliście, że jak w Wiedźminie postać za wami biegnie i na nią nie patrzycie, to tak naprawdę jest teleportowana za was w momencie jak się obracacie? Dzięki temu nie ma opcji, że podążając postać gdzieś utknie po drodze. Kolejny przydatny i świetny pomysł.
Spawn Tree
Jest to podobno pierwszy na świecie taki system. Pozwala to “pojawiać” grupy wrogów z danym zadaniem, w danym miejscu, w zależności od sytuacji. Np. możemy w łatwy sposób w dzień nasłać na gracza wilki, a w nocy zombie. Możemy dodać inne warunki, zmieniające to, jaki istotny mają się pojawić.
Ostatecznym podsumowaniem był fakt, że wszystkie te rzeczy oparte są o drzewa decyzyjne. Więc na koniec taki wniosek, że z drzew decyzyjnych da się zrobić dużo fajnych rzeczy.
OK. Tyle z ZTG! W następnej części… Cosplayerki!