1 / 26

Programowanie gier komputerowych Tomasz Martyn

Programowanie gier komputerowych Tomasz Martyn. Wykład 1. Silnik gry – podstawowe wiadomości. Inżynierowie (informatycy) – projektują i implementują oprogramowanie związane z grą poszczególne moduły silnika (rendering, AI, fizyka, audio, etc.)

kyna
Download Presentation

Programowanie gier komputerowych Tomasz Martyn

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowanie gier komputerowychTomasz Martyn Wykład 1. Silnik gry – podstawowe wiadomości

  2. Inżynierowie (informatycy) – projektują i implementują oprogramowanie związane z grą • poszczególne moduły silnika (rendering, AI, fizyka, audio, etc.) • praca na poziomie makro-systemowym (integeracja poszczególnych składowych silnika, etc.) • programowanie gameplaya i skryptowanie W ramach projektu, zespołem inżynierów kieruje senior engineer • Projektanci gameplaya(interaktywnej części gry odpowiedzialnej za wrażenia i doświadczenia gracza ) • scenariusz gry, sekwencja rozdziałów (poziomów), cele gry, dialogi • projekty poziomów (levels) gry - rozmieszczenie geometrii statycznej - rozmieszczenie broni, apteczek, etc. - w którym miejscu i kiedy wyskoczy potwór… Struktura studia deweloperskiego (1)

  3. Artyści – tworzą zawartość (content) gry • szkice i obrazy na poziomie konceptualnym (conceptartists) • modelarze • foregroundmodelers tworzą modele pierwszoplanowe (postaci, pojazdy, …) • backgroundmodelers tworzą statyczną geometrię świata (tereny, budynki…) • projektanci tekstur (textureartists) • oświetleniowcy (lightingartists) • animatorzy • aktorzy motioncapture • muzycy i projektanci efektów dzwiękowych • voiceactors Zespołem artystów kieruje art director Struktura studia deweloperskiego (2)

  4. Testerzy • Producenci – zależnie od studia: • zarządzanie zasobami ludzkimi • łącznik miedzy deweloperami, a działem businessowym studia • czasem nie ma producentów, a czasem wszyscy są producentami 6. Inni • techniczni • administracja • dział marketingu • … Struktura studia deweloperskiego (3)

  5. Podstawowy cel silnika: Wielokrotne wykorzystanie istniejącego kodu do tworzenia różnych gier • Jednakże granica między silnikiem a samą grą jest często rozmyta • Na ogół przyjmuje się, że pojęcie architektura sterowana danymi (data-drivenarchitecture) wytycza granice między grą a jej silnikiem • Recepta na wyodrębnienie silnika z gry: Usuń z gry zasoby (art assets), świat i reguły gry, a to, co zostanie, to będzie silnik Co to jest silnik gry?

  6. Rodzina „quake’owa”(Id software): - Doom - pierwszy silnik z prawdziwego zdarzenia - Quake III Arena - umożliwiał modding Technologia Quake’a została wykorzystana m.in. w grach: - Sin - F.A.K.K. 2 - Medal of Honor : Allied Assault i Pacific Assault • Unreal Engine 1- 3(Epic Games) • Half Life Source Engine • XNA (środowisko wspomagające programowanie gier) • Unity Engine • silniki open source: Ogre, Irrlicht, Troque, Crystal Space… Przykładowe silniki gier

  7. Dzisiejsze, komercyjne silniki gier są dużymi pakietami programowymi, w których można wyodrębnić dwie podstawowe składowe: • silnik właściwy (realtimegameengine) • zbiór rozmaitych narzędziwspomagających tworzenie gry (edytor świata, edytor cząstek, konwertery formatów danych, etc.) Co to jest silnik gry? (cd)

  8. Architektura silnika gry

  9. Warstwy najniższego poziomu

  10. Algorytmy i struktury danych - STL – używać, czy nie używać? • Grafika • libgcm– niskopoziomowe API graficzne Sony dla RSX (PS3) • Edge – wysokopoziomowe, wydajne API graficzne firm Naughty Dog i Sony dla PS3 • Fizyka • Open Dynamics Engine • Animacja postaci • Granny • HavokAnimation • Edge • Endorphini Euphoria(Natural Motion Ltd.) • AI - Kynapse Warstwa zewnętrznych API

  11. Obudowuje (wrapping) lub zastępuje wywołania funkcji systemowych, interfejsy różnych API, a nawet niektóre standardowe funkcje języka C. Warstwa niezależności od platformy

  12. Warstwa obejmuje m.in.: • zarządzanie pamięcią szybkie przydzielanie i zwalnianie pamięci, zapobieganie fragmentacji… • bibliotekę matematyczną operacje na wektorach i macierzach, kwaterniony, operacje geometryczne (wyznaczanie przecięć pomiędzy obiektami geometrycznymi, wyznaczanie brył ograniczających, etc.), rozwiązywanie układów równań, całkowanie numeryczne… • własne algorytmy i struktury danych (zamiast bibliotek zewnętrznych typu STL) Systemy rdzenia

  13. Podstawowe funkcje: • udostępnia jednolity interfejs (lub grupę interfejsów) do ładowania i usuwania różnego rodzaju zasobów gry (assetsoraz inne dane) • zarządza umieszczaniem zasobów w pamięciach różnych rodzajów w czasie działania gry • zapobiega wielokrotnym przydziałom pamięci dla tego samego zasobu Zarządca zasobów

  14. Zastosowanie: Pobieranie obiektów graficznych i jak najszybsze ich renderowanie (zwykle bez brania pod uwagę, które z nich są widoczne) • (Graphics Device Interface) • wyliczanie urządzeń graficznych dostępnych w systemie (np. 2 lub więcej kart) i ich inicjalizacja odpowiednim ustawieniem parametrów bufora ramki (z-bufor, bufor koloru, bufor szablonu) • integracja renderera z pętlą komunikatów systemu operacyjnego • dostarcza abstrakcję kamery (frustum – pole widzenia, płaszczyzny obcinania, etc.) oraz widoku (viewport) i tworzy między nimi połączenie • obsługuje system materiałów i system oświetlenia • zarządza stanami renderingu na podstawie materiałów i oświetlenia • grupuje obiekty graficzne (np. względem materiałów) celem minimalizowania zmian stanów renderingu Silnik graficzny (1): Renderer

  15. Zastosowanie: Przeszukuje scenę celem wyznaczania obiektów graficznych, które są aktualnie widoczne (PVS), oraz określa wymagany poziom szczegółowości prezentowanych obiektów (LOD) • selekcja obiektów względem bryły widzenia (frustumculling) • grafy sceny i struktury podziału przestrzennego (BSP tree, quad- i octree, kd-tree, hierarchie brył ograniczających) • portale • selekcja obiektów względem zasłaniania (occlusionculling) • poziom szczegółowości (LOD - level of detail) Silnik graficzny (2): Graf sceny, wstępna selekcja obiektów i LOD

  16. systemy cząstek (dym, ogień, rozbryzgi wody,…) – często jako bezpośrednie wejście dla renderera • kalkomanie (decals - dziury po pociskach, ślady stóp,…) – j.w. • mapowanie oświetlenia i otoczenia • efekty postprocesingu (patrz np. OgreCompositor) • high dynamicrange • antyaliasing • bloom • ... Warstwa efektów

  17. Zastosowanie: Umożliwia tworzenie (często 2-wymiarowych, implementowanych jako teksturowane prostokąty) „nakładek” na wizualizowaną scenę 3D • HUD i GUI (wybór broni, konfigurowanie jednostek, wydawanie rozkazów,…) • różnego rodzaju menu Dodatkowo: • odtwarzanie nagranych wcześniej scenek-przerywników (FMV) • in-gamecinamatics (IGC) – stałe sekwencje wbudowane w rozgrywkę Warstwa interfejsu gracza

  18. konsola i inne narzędzia deweloperskie (dostarczane z grą lub nie) • mierzenie czasu wykonania wybranych części kodu • wyświetlanie statystyk podczas działania gry • wyświetlanie na bieżąco jak dużo pamięci jest używanej przez silnik i jego poszczególne moduły • nagrywanie zdarzeń gry w celu ponownego odtworzenia danej sekwencji • … Profilowanie i debugowanie

  19. Obecnie przy komercyjnym tworzeniu gier zwykle korzysta się z gotowych silników fizycznych: • Havok • PhysX Wykrywanie kolizji i fizyka

  20. Obecnie w grach 3D najczęściej wykorzystywana jest animacja szkieletowa System animacji szkieletowej powiązany jest z: - rendererem za pośrednictwem modułu realizującego nakładanie „skóry” na szkielet (skinning) - fizyką za pośrednictwem podsystemu realizującego fizykę szmacianych lalek (rag dolls) System animowania

  21. obsługuje I/O różnych kontrolerów gracza (klawiatura i mysz, joypady, kierownice, maty, WiiMote…) • umożliwia stworzenie przez gracza własnego odwzorowania pomiędzy możliwymi akcjami kontrolera i akcjami gry • wykrywa sekwencje wciskanych klawiszy • … Warstwa I/O

  22. XACT – Microsoft (PC i Xbox 360) • SoundR!OT – ElectronicArts • Scream – Naughty Dog (PS3) System dźwięku

  23. single-screen – kilka kontrolerów podłączonych do jednej maszyny, pojedyncza kamera (np. bijatyki) • split-screen – j.w. ale z każdym z graczy skojarzona odrębna kamera • networked– wiele maszyn połączonych w sieć i każda z nich jest hostem dla jednego gracza • MMOG – tysiące graczy za pośrednictwem swoich maszyn, współdzielą jeden olbrzymi świat obsługiwany przez (zwykle) bardzo dużą liczbę serwerów Przekształcenie gry „multiplayerowej” do „single-playerowej” jest na ogół prostym zadaniem. Wiele silników traktuje tryb single jako przypadek szczególny trybu multi (np. Quake). Multiplayer Przekształcenie odwrotne (single -> multi) jest zwykle o wiele bardziej trudne, bowiem należy dostosować od multi wiele modułów silnika (renderer, warstwa I/O, system animowania,…). Dlatego, jeśli silnik ma wspierać multi, to należy go projektować pod tym kątem od samego początku.

  24. Zastosowanie: Pośredniczy między kodem rozgrywki (w natywnym języku, w którym napisany jest silnik, lub w języku skryptowym - często w tym i w tym), a niższymi warstwami silnika • high-levelgameflow - definiuje sekwencję, drzewo lub graf celów gracza; dostarcza również definicję „sukcesu” oraz „kary” za porażkę • elementy statyczne świata na ogół podzielone są na kawałki (chunks, levels): • ze względu ograniczeń pamięciowych • w celu sprawowania kontroli nad „przepływem” gry w wirtualnym świecie • w celu ułatwienia procesu tworzenia gry Gracz w danej chwili widzi co najwyżej kilka (zwykle jeden) taki kawałek • elementy dynamiczne są tym, co w największej mierze określa rozgrywkę Warstwa „fundamentów rozgrywki”

  25. Moduły wyspecjalizowane

  26. Pętla gryPrzykład na platformie Windows

More Related