Katedra Inżynierii Wiedzy Wykład 1
e-mail: przemyslaw.juszczuk@ue.katowice.pl Konsultacje: na stronie katedry + na stronie domowej Pokój 202c budynek A pjuszczuk.pl
Warunki zaliczenia Kolokwium z części teoretycznej (materiały z wykładów) - 30 % oceny; Projekt (projekty) realizowany w grupach (minimum 2-osobowych) rozliczany indywidualnie - 70 % oceny. Wymagane jest wyraźne wskazanie części projektu zrealizowanego przez daną osobę. Ćwiczenia obejmują wykonanie projektu preferowana praca w grupach z wykorzystaniem narzędzi do wersjonowania, zarządzania zespołem, wykonanie prototypu (opcjonalne), przygotowanie dokumentacji technicznej, dokumentacji użytkownika, przygotowanie Game Design Document. Termin zdania projektu ustalany będzie na zajęciach. Materiały z wykładów oraz ćwiczeń wraz z opisem projektów dostępne będą online.
Silniki gier; Tworzenie gier i Game Design Document; Testowanie i publikacja; Praca w grupie, model przyrostowy, programowanie ekstremalne; Diagramy przepływu i zarządzanie zespołem; Storyboarding i prototypowanie; Interakcje w grze AI cz. I - teoria podejmowania decyzji; AI cz. II - grafowe reprezentacje wiedzy; Interfejsy; Refaktoryzacja, wzorce i obfuskacja kodu; Elementy grywalizacji; NUI; Fizyka i efekty cząsteczkowe?
Luka informacyjna wiemy, że czegoś nie wiemy ; zaspokojenie luki informacyjnej; ciekawość wzbudza zaangażowanie.
Narzędzia silnik gry (najczęściej silnik + narzędzia) - moduł grafiki, AI, fizyka (wykrywanie kolizji) - Unreal Engine, CryEngine, Doom engine, Quake engine, Unity. silnik graficzny (kod odpowiedzialny za grafikę 2D i/lub 3D) - czasami wyróżnia się silnik 3D lub 2D dedykowany konkretnej grafice, np. wsparcie sprzętowe dla grafiki + biblioteki (DirectX, OpenGL) - OGRE, Crystal Space. (silnik fizyczny) - symulacja procesów fizycznych takich jak dynamika płynów, zderzenia i odkształcenia brył. Zastosowanie np. w fizyce do modelowania zjawisk i układów - np. Havoc (oddzielne moduły, np. moduł dotyczący bryły sztywnej, lub animacji postaci), PhysX - wykorzystanie akceleracji sprzętowej kart graficznych (GPGPU). Ciekawostka - Havoc jako element silnika Anvil (później AnvilNext) został wykorzystany w serii gier Assassin s Creed.
Narzędzia narzędzia graficzne - przygotowanie elementów graficznych (np. tekstury), np. GIMP do obróbki grafiki rastrowej (Adobe Photoshop), InkScape do obróbki grafiki wektorowej (Adobe Illustrator), Tiled - edytor do tworzenia poziomów (tzw. kafelki), MakeHuman - darmowe narzędzie do generowania siatek humanoidalnych (animacja postaci w połączeniu ze szkieletem i modelem RigidBody). oprawa dźwiękowa - edytory dźwięku takie jak Audacity, generowanie dźwięków akcji (atak, uderzenie w ścianę) - SFXR, lub mikrofon + nagrywanie.
Unreal Engine pierwsza wersja (mechanizm renderowania, system wykrywania kolizji, system sztucznej inteligencji) - 1998 rok (gra Unreal); Unreal Tournament - wersja 1.5 (1999r.); Aktualna wersja 4, a od 2015 roku silnik jest darmowy (oprócz produkcji komercyjnych, które zarobią powyżej 3 tys dolarów).
Doom Engine pierwsza wersja stworzona przez Id Software na potrzeby gry Doom (1993 rok); od 1999 roku kod silnika opublikowany został na licencji darmowej; silnik doczekał się wielu modyfikacji dotyczących np. obsługi OpenGL. Quake Engine silnik opracowany w 1996 roku (na potrzeby gry Quake); jeden z pierwszych silników posiadających grafikę 3D przygotowany przez Johna Carmacka (ten sam, który napisał silnik Doom Engine).
Crystal Space OGRE biblioteka do tworzenia aplikacji z grafiką trójwymiarową; napisana w C++; obecna wersja: 2 (2012 rok); wymagane dodatkowe biblioteki zewnętrzne do poprawnego działania (np. do Windows); OGRE - Object-Oriented Graphics Rendering Engine; licencja MIT (X11) - otwarte oproramowanie; powstał w 2001 roku (aktualna wersja z 2013 roku 1.9, trwają prace nad 2); możliwość dowolnej edycji, wprowadzenia zmian, dopisywania własnych elementów; moduły: animacja, efekty, materiały, scena, renderowanie - możliwość zmian w kodzie i jego analizy, dostęp do poszczególnych klas.
Rysunek: OGRE (źródło: oficjalna strona OGRE)
Rysunek: OGRE (źródło: oficjalna strona OGRE)
Rysunek: OGRE (źródło: oficjalna strona OGRE)
Narzędzia graficzne - Blender Blender jako darmowa alternatywa dla Photoshopa; Wsparcie dla obliczeń GPU; modelowanie; przygotowanie modelu i przekształcenie w postać (szkielet i poruszanie się); rzeźbienie w materiałach; symulacje (woda, dym, włosy, ubranie); efekty cząsteczkowe jak deszcz, czy iskry; kamera i śledzenie obiektów; zestawy dodatkowych bibliotek; gotowe projekty, matriały, modele.
Rysunek: Blender (źródło: oficjalna strona Blender)
Rysunek: Blender (źródło: oficjalna strona Blendera)
Rysunek: SFXR
Da się przygotować coś bez złożonej grafiki? gry niezależne (indie games, indyki) - tworzone przez mały zespół/ jedną osobę bez wsparcia finansowego; ze względu na ograniczone koszty - często brak fizycznego nośnika; Podstawowym atutem jest innowacyjność (Minecraft).
Rysunek: Minecraft
Rysunek: Superhot
Gry retro a grafika retro gry nieco starsze - najczęściej z lat 1980; gry w stylu retro - (Hotline miami, Fez, Super meatboy) - nowe gry, w których stosowana jest grafika w stylu retro; ograniczona paleta kolorów; skalowanie pikseli (w celu wyraźnego zaznaczenia poszczególnych pikseli): jeden piksel to np. siatka 10 na 10 pikseli;
Rysunek: Piksele i sztuczne zwiększenie wielkości piksela w wyższej rozdzielczości
Własny silnik gry język programowania (np. C++); wzorce projektowe - silnik gry jako sigleton, obsługa zdarzeń przy pomocy wzorca Observer, wzorzec Fasada do ukrycia wybranych elementów; wybór biblioteki graficznej (DirectX, OpenGL). Elementy silnika rdzeń silnika (pętla główna gry i elementy takie jak zdarzenie wyświetlania klatki, odświeżanie zegara, wykonywanie kodu użytkownika i zdarzeń); moduł renderowania (wyświetlanie obiektów na ekranie); moduł sceny / obiektów (elementy opisujące scenę np. 3D, kamerkę i światło); moduł fizyki? - symulacja zderzeń, symulacja grawitacji (np. pinball).
Unity 3D - gry Pillars of Eternity; Deus Ex; Might and Magic X; Slender; Unity 3D - ogólnie zintegrowane środowisko do tworzenia gier 2D, 3D oraz materiałów interaktywnych; wieloplatformowość - Windows, Linux, Mac, apki mobilne, konsole; możliwość pisania skryptów w trzech językach: C#, UnityScript (JavaScript), Boo (inspirowany Pythonem).
Unity 3D - trochę historii pierwsze wzmianki - 2002 rok (długo przed silnikiem Unity); 6 czerwca 2005 - Unity (1.0.0); czerwiec 2006 - Unity 1.5; 2008r. - Unity 2.0 (biggest step ever) - wsparcie dla DirectX, cienie, silnik rzeźby terenu, Asset Store, nowe GUI; 2009r. - Unity 2.5 i wsparcie dla systemu Windows; wrzesień 2010 - Unity 3.0 - mapy świetlne, debuggowanie niskopoziomowe (ponad 200 tys. zarejestrowanych użytkowników); grudzień 2011 - open beta Unity 3.5; luty 2012 - Unity 3.5; listopad 2012 - Unity 4.0 - stary mechanizm animacji Legacy zastąpiony nowym - Mecanim; listopad 2013 - Unity 4.3 - wsparcie dla 2D
Rysunek: Unity Pre-initial release Ver. 0.2b(Źródło: A History of the Unity Game Engine)
Języki w Unity 3D 3 zamienne języki, które w zamyśle twórców pozwalają developerom na przygotowanie dowolnego zestawu instrukcji; środowisko Mono (open source owa wersja Microsoft.Net); UnityScript - postrzegany jako łatwiejszy do nauki na początek niż C#; Licencje Unity 3D Darmowa; Płatna - koszt 1500$;
Wsparcie Unity tutoriale i darmowe poradniki; biblioteka Asset Store z darmowymi i płatnymi materiałami; Unity Unite - cykliczna konferencja w kilku miastach na świecie (2016: Amsterdam, Seul, Tokio, Los Angeles, Singapur);
Dziękuję za uwagę