Programowanie gier komputerowych. Tomasz Martyn. Wykład 1. Silnik gry

Podobne dokumenty
Wykład 4. Rendering (1) Informacje podstawowe

Problemy programowania gier. mgr Mateusz Rynk

Unreal Engine w 24 godziny : nauka tworzenia gier / Aram Cookson, Ryan DowlingSoka, Clinton Crumpler. Gliwice, cop Spis treści.

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

Grafika komputerowa i wizualizacja

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Programowanie gier komputerowych Tomasz Martyn Wykład 4. Cykl produkcyjny wytwarzania gry (3): Prototypowanie gameplaya i UDK Kismet

PRZEWODNIK PO PRZEDMIOCIE

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

GUI - projektowanie interfejsów

Tworzenie gier na urządzenia mobilne

Programowanie gier komputerowych. Tomasz Martyn. Wykład 10. Różności: Cinamatics, Aktorzy kinematyczni, Prefabs, Archetypes

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

Grafika 3D na przykładzie XNA 3.1

Wykład 12. Animacja postaci

Gry Komputerowe Laboratorium 1. Zajęcia organizacyjne Animacja z uwzględnieniem czasu. mgr inż. Michał Chwesiuk 1/22. Szczecin,

Karty graficzne możemy podzielić na:

ZAKRES TEMATYCZNY KONKURSU 3/1.2/2016/POIR PROGRAMU SEKTOROWEGO GAMEINN. A.1 Innowacyjne rozwiązania w zakresie projektowania modeli rozgrywki w grach

Projektowanie gier komputerowych. dr inż. Mariusz Szwoch

Tworzenie gier na urządzenia mobilne

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Zaawansowany kurs języka Python

PRZEWODNIK PO PRZEDMIOCIE

Plan wykładu. Akcelerator 3D Potok graficzny

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Spis treści. Dzień 1. I Konfiguracja sterownika (wersja 1410) II Edycja programu (wersja 1406) III Środowisko TIA Portal (wersja 1410)

Mikołaj Kania Waldemar Korłub Jakub Krajewski

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2015/2016

GUI - projektowanie interfejsów

a. Czym różni się sposób liczenia odbicia zwierciadlanego zaproponowany przez Phonga od zaproponowanego przez Blinna?

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Komputerowe wspomaganie projektowania- CAT-01

GRY KOMPUTEROWE 3D OpenGL DirectX Ogre3D Crystal Space ClanLib Irrlicht SDL Ardor3D jmonkey Engine GRY KOMPUTEROWE 2D ORX Troll2D

Uniwersytet Mikołaja Kopernika w Toruniu. Profilowanie ruchu sieciowego w systemie GNU/Linux

Technika mikroprocesorowa. Konsola do gier

Architektura komputerów

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Architektura gier komputerowych na wybranych przykładach. Krzysztof Rosiński

system do animacji postaci w grach komputerowych

Gry Komputerowe - laboratorium 0

OfficeObjects e-forms

Dodatkowo planowane jest przeprowadzenie oceny algorytmów w praktycznym wykorzystaniu przez kilku niezależnych użytkowników ukończonej aplikacji.

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

Spis treści. Księgarnia PWN: Roland Zimek - Swish Max3

SPIS TREŚCI: KARTY GRAFICZNE... 15

Rok akademicki: 2017/2018 Kod: JFM s Punkty ECTS: 7. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Projektowanie oprogramowania cd. Projektowanie oprogramowania cd. 1/34

Techniki animacji komputerowej

Projektowanie aplikacji graficznych. dr inż. Jarosław Zubrzycki

PRZYJĘTE ZASADY GRY...3 ZAŁOŻENIA PROJEKTU...4 CZYM JEST I DLACZEGO QT?...5 DIAGRAM KLAS...7 DIAGRAM GRY SINGLE PLAYER...8 DIAGRAM MULTIPLAYERA...

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Informatyka Studia II stopnia

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

Działanie systemu operacyjnego

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Wprowadzenie do QT OpenGL

Działanie systemu operacyjnego

Referat Pracy Dyplomowej

Warszawa, Wytyczne dla projektu Biblioteka GUI

Projektowanie graficzne. Wykład 2. Open Office Draw

Podstawy 3D Studio MAX

Programowanie na poziomie sprzętu. Programowanie w Windows API

Działanie systemu operacyjnego

Podstawy Informatyki Computer basics

Zaawansowane programowanie w języku C++

WYMAGANIA EDUKACYJNE Z ZAJĘĆ KOMPUTEROWYCH DLA KLASY SZÓSTEJ W ZAKRESIE WIADOMOŚCI I UMIEJĘTNOŚCI UCZNIÓW

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

JavaFX. Technologie Biznesu Elektronicznego. Wydział Informatyki i Zarządzania Politechnika Wrocławska

Praktyczne zastosowanie grafiki komputerowej

Śledzenie promieni w grafice komputerowej

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Pracownia projektowania gier 2

Komputery przemysłowe i systemy wbudowane

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

Programowanie współbieżne i rozproszone

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Wykład I. Wprowadzenie do baz danych

Struktury systemów operacyjnych

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

OSGi Agata Hejmej

Pakiety matematyczne. Matematyka Stosowana. dr inż. Krzysztof Burnecki

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

problem w określonym kontekście siły istotę jego rozwiązania

SpriteKit. Biblioteka do tworzenia gier wbudowana w SDK. Wspiera grafikę 2D w oparciu o sprite y

Opis efektów kształcenia dla modułu zajęć

NOWOŚCI W CABRI 3D v2.

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Wykład Ćwiczenia Laboratorium Projekt Seminarium 15 30

Instytut Nauk Technicznych, PWSZ w Nysie Kierunek: Informatyka Specjalność: Gry komputerowe i multimedia, GKiM studia niestacjonarne Dla rocznika:

Wykład 5. Rendering (2) Geometria

PAMIĘĆ OPERACYJNA...107

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Wykład 1 Inżynieria Oprogramowania

I. KARTA PRZEDMIOTU. I Formy zajęć, liczba godzin. Semestr Wykład Ćwiczenia Laboratorium Projekt Seminarium Łącznie. IV Forma zaliczenia

Spis treści. Księgarnia PWN: Roland Zimek - SWiSH Max2 i SWiSH Max3. Wprowadzenie... 9

forma zajęć * w+ćw O/F P/K sem+ćw O K Szkolenie BHP Inne O Z 4ćw O/F** P/K zajęć*

Transkrypt:

Programowanie gier komputerowych Tomasz Martyn Wykład 1. Silnik gry

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

Przykładowe silniki gier Rodzina quake owa (Id software): - Doom - pierwszy silnik z prawdziwego zdarzenia -Quake III Arena - umożliwiał tworzenie pierwszych moddów Source (Valve Corporation) UDK i Unreal Engine 1-3 (Epic Games) CryEngine 1-3 (Crytek) Unity 3D silniki open source owe: Ogre, Irrlicht, Troque, Crystal Space

Składniki silnika gry Dzisiejsze, profesjonalne silniki gier są dużymi pakietami programowymi, w których można wyodrębnić dwie podstawowe składowe: 1. silnik właściwy (real-time game engine) na podstawie dostarczonych danych (reprezentujących zasoby audio-wideo, logikę, mechanikę, fizykę, ) generuje ( napędza ) grę 2. zbiór rozmaitych narzędzi wspomagających tworzenie gry edytory zasobów (pomieszczeń, terenów, materiałów, animacji, cząstek, ), edytor graficzny logiki gry, IDE skryptów, zarządca/ wyszukiwarka zasobów, konwertery (import/eksport) danych,

Architektura silnika gier 3D

Warstwy niskiego poziomu

Warstwa zewnętrznych API Algorytmy i struktury danych - STL (STLPort, EASTL), Boost, Grafika DirectX OpenGL libgcm niskopoziomowe API graficzne Sony dla RSX (PS3) Edge wysokopoziomowe, wydajne API graficzne firm Naughty Dog i Sony dla PS3 Fizyka - Physix - Havok - Open Dynamics Engine Animacja postaci - Granny - Havok Animation - Edge - Endorphin i Euphoria (Natural Motion Ltd.) AI - Kynapse

Warstwa niezależności od platformy Obudowuje i/lub zastępuje wywołania funkcji systemowych i interfejsy różnych API.

Moduły podstawowe 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 (np. zamiast bibliotek zewnętrznych typu STL/Boost)

Klasy zasobów i zarządca zasobów Podstawowe funkcje zarządcy zasobów: udostępnia jednolity interfejs (lub grupę interfejsów) do ładowania i usuwania różnego rodzaju zasobów gry 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

Silnik graficzny (1): Renderer Zastosowanie: Pobieranie obiektów graficznych i jak najszybsze ich renderowanie (zwykle bez brania pod uwagę, które z nich są aktualnie 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 bryłę widzenia, płaszczyzny obcinania, etc.) oraz widoku (viewport) i tworzy między nimi połączenie obsługuje system materiałów i shaderów obsługuje system oświetlenia, w tym często oświetlenie globalne (obliczane w fazie obliczeń wstępnych) udostępnia funkcjonalność renderowania debugowego (niewypełnione siatki wielokątów - wireframe)

Silnik graficzny (2): Graf sceny, wstępna selekcja obiektów i LOD Zastosowanie: Przeszukuje scenę celem wyznaczania obiektów graficznych, które są potencjalnie widoczne (PVS), oraz określa wymagany poziom szczegółowości prezentowanych obiektów (Level Of Detail) selekcja obiektów względem bryły widzenia (frustum culling) grafy sceny i struktury podziału przestrzennego (BSP tree, quad- i octree, kd-tree, hierarchie brył ograniczających) portale (portal culling) selekcja obiektów względem zasłaniania (occlusion culling) poziom szczegółowości (LOD)

Silnik graficzny (3): Warstwa efektów systemy cząstek (dym, ogień, rozbryzgi wody, ) kalkomanie (dziury po pociskach, ślady stóp, ) mapowanie oświetlenia (light mapy oświetlenia globalnego) odbicia lustrzane otoczenia (environment mapping) dynamiczne cienie zaawansowane elementy oświetlania w czasie rzeczywistym (np. Precomputed Radiance Transfer, HDR) efekty post-procesingu

Warstwa interfejsu HUD i GUI (wybór broni, konfigurowanie jednostek, wydawanie rozkazów, ) różnego rodzaju menu (np. do konfigurowania różnych parametrów samej gry: rozdzielczość, stopień trudności, ) Dodatkowo: odtwarzanie nagranych wcześniej cut-scenek (FMV) in-game cinamatics (IGC) stałe sekwencje ruchu kamery wbudowane w rozgrywkę (np. przelot kamery nad sceną celem ukazania pola bitwy)

Profilowanie i debugowanie konsola i inne narzędzia deweloperskie (finalnie dostarczane z grą lub nie) mierzenie czasu wykonania wyświetlanie różnego rodzaju statystyk dotyczących zasobów podczas działania gry nagrywanie zdarzeń gry w celu ponownego odtworzenia danej sekwencji

Warstwa fizyki Obecnie w profesjonalnym tworzeniu gier zwykle korzysta się z gotowych silników fizycznych: Havok PhysX Box2D (w silnikach gier 2D)

System animacji Obecnie w grach 3D najczęściej wykorzystywana jest animacja szkieletowa i morfing (głównie do animacji twarzy) 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)

Warstwa I/O - 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 -

System dźwięku Digital Sound Processing i efekty dźwiękowe dźwięk przestrzenny (wielokanałowy 5.1 i 7.1) odtwarzanie (i niekiedy zarządzenie) Przykładowe systemy: - XACT Microsoft (PC i Xbox 360) - SoundR!OT Electronic Arts - Scream Naughty Dog (PS3)

Multiplayer 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 zwykle prostym zadaniem. Wiele silników traktuje tryb single jako przypadek szczególny trybu multi (np. Quake). 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.

Elementy budulcowe gameplaya Gameplay (pojecie ogolne) całość doświadczeń płynących z grania w grę. Określony jest przez sposób interakcji gracza z gra, zasady gry, cele i wyzwania oraz ich osiąganie, scenariusz, etc. Gameplaye można różnie klasyfikowć, np. wzgledem liniowosci rozgrywki (liniowe, nieliniowe), względem zasad gry (DeathMatch, Capture the flag,...), czy bardziej ogólnie względem gatunku (FPS, Hack and slash,...) Mechanika gry - "maszyneria logiczno-fizyczna" definiowana często przy pomocy jęzków skryptowych, leżąca u podłoża gameplaya i za sprawa ktorej jest on urzeczywistniany/realizowany. Tworzą ją m.in.: reguły gry reprezentowane przez system implikacji logicznych; cele gry i warunki logiczne, które należy spełnić aby te cele osiągnięć; powiązania natury logicznej pomiędzy interaktywnymi obiektami w grze i ich reakcje logiczne (np. zmiana stanu jakiegoś atrybutu logicznego) i fizyczne (in-game behaviour - np. uruchomienie zapadni pod wpływem stopy postaci) w wyniku zachodzących w grze zdarzeń.

Moduły wyspecjalizowane Dodatkowe systemy i funkcjonalności, które są wykorzystywane lub nie w zależności od rodzaju (gatunku) gry.

Czy warto implementować własny silnik gry?

Następny wykład: Cykl produkcyjny wytwarzania gry Prototypowanie geometrii levela na przykładzie UDK