Grafikus játékok fejlesztése

A tantárgy angol neve: Computer Games

Adatlap utolsó módosítása: 2020. június 4.

Tantárgy lejárati dátuma: 2023. július 31.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar

Mérnök Informatikus szak

Villamosmérnöki Szak

Szabadon választható tantárgy

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIIIJV46   4/0/0/v 4  
3. A tantárgyfelelős személy és tanszék Dr. Szécsi László,
A tantárgy tanszéki weboldala http://cg.iit.bme.hu/portal/oktatott-targyak/grafikus-jatekok-fejlesztese
4. A tantárgy előadója
Név:Beosztás:Tanszék, Int.:
Szécsi Lászlóegyetemi docensIrányítástechnika és Informatika Tanszék
5. A tantárgy az alábbi témakörök ismeretére épít Programozás, szoftvertervezés, matematika, fizika
6. Előtanulmányi rend
Kötelező:
NEM ( TárgyTeljesítve("BMEVIIIAV46") )

A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

Ajánlott:

Programozás alapjai tárgy elvégzése, azaz C++ programozási ismeretek szükségesek. A tárgy (erősen gyakorlati szemlélettel) áttekinti a szükséges számítógépes grafikai alapokat, így a Számítógépes Grafika tárgy hallgatása előtt is felvehető.

A tantárgyat nem vehetik fel azok, akik már előzőleg teljesítették a VIIIAV46 (Grafikus játékok fejlesztése) tantárgyat.

7. A tantárgy célkitűzése A tárgy a játékfejlesztésben használt alapvető grafikai ismereteket, az azokra épülő technikákat mutatja be gyakorlati példákon, DirectX/HLSL implementációkon keresztül. A hallgatók a grafikus kártya programozását, a legelterjedtebb, illetve legfrissebb grafikai algoritmusokat és trükköket ismerhetik meg, ezzel a játékfejlesztés hardver-közeli területén szerezhetnek szakértelmet. A tárgy ismerteti a játékfejlesztés nem szigorúan grafikai elemeit, a fizikai szimulációt és az ütközés-kezelést, valamint az ezeket összekötő programstruktúrát is
8. A tantárgy részletes tematikája
    1. Modellezés
      1. Modellezési technikák.
      2. A háromszögháló. Csúcspont és index buffer (Vertex és index buffer) reprezentáció.
      3. Gyakorlat: A DirectX x fájl formátum. Bevezetés az effect keretrendszer használatába. A mesh, device és effect interfészek. 3D objektum megjelenítése transzformációk és megvilágítás nélkül.
    2. Transzformációk
      1. Koordináta rendszerek és transzformációik. Projektív geometria, ideális pont, Descartes és homogén koordináták viszonya, beágyazott modell.
      2. A transzformációs csővezeték. A modellezési, világ-, kamera- és képernyő-koordináták szerepe, és a közöttük átvivő transzformációk.
      3. Gyakorlat: Mátrixok DirectXben. Kamera osztály használata. A csúcspont árnyaló (vertex shader) szerepe. HLSL alapok. Globális paraméterek. Mozgó 3D objektum megjelenítése, a kamera mozgatása.
    3. 3D képalkotás
      1. A teljes 3D képalkotási csővezeték: fix és programozható szakaszok, vágás, raszterizáció és mélységteszt. A pixel és csúcspont árnyaló (pixel és vertex shader) környezete.
      2. Lokális megvilágítás-számítás és absztrakt fényforrás-modellek. A Lambert és Phong felületi fényvisszaverődés modell.
      3. Gyakorlat: Kísérletek a mélységteszttel. A csúcspont bufferben (vertex buffer) tárolt árnyalási információk szerepe. Csúcspontonkénti (per vertex lighting) és pixelenkénti (per pixel lighting), Gouraud és Phong árnyalás. Több objektum megjelenítése megvilágítás-számítással, mozgó fényforrásokkal.
    4. Textúrák és raszterműveletek
      1. A textúrák szerepe. Textúra-koordináták. Textúra formátumok. Szűrés. Mipmapelés. Perspektív-helyes textúrázás. Kockatextúrák (cube textures) és a környezeti leképezés (environment mapping). Az ideális tükör felületi fényvisszaverődési modell.
      2. Keverés (blending) és átlátszóság. Hátsólap-eldobás.
      3. Anti-aliasing. Előszűrés és utószűrés (FSAA vagyis full-screen anti-aliasing).
      4. Gyakorlat: Kísérletek a keverés (alpha blending) és többszörös mintavételezés (multisampling) opciókkal. A textúra interfész a DirectX-ben. Textúrázó egységek (samplers) és textúra olvasás HLSL-ben. Többmenetes (multi-pass) képalkotás. Képernyőt lefedő négyszög (full-screen quad). Textúrázott, illetve a környezet tükröző objektumok, és végtelen távoli környezet-textúra megjelenítése.
    5. Plakátok (billboards) és részecske-rendszerek
      1. Sprite. Plakátok.
      2. Plakátfelhők. Részecske-rendszerek.
      3. Geometriapéldány-gyártás (geometry instancing).
      4. Gyakorlat: Részecske-rendszer megvalósítása. Csúcspont és index bufferek összeállítása hardveres példány-gyártáshoz. Plakát beforgatása a csúcspont árnyalóban. Alpha blending és átlátszósági rendezés. Animált füst megjelenítése.
    6. Textúrába rajzolás (Render-to-texture)
      1. A lokalitás problémája. A rajzolási célpont (render target) fogalma. MRT (multiple render target, több párhuzamos rajzolási célpont). Portálok. Imposztorok.
      2. Késleltetett árnyalás (deferred shading). Gömbplakátok (spherical billboards).
      3. Gyakorlat: A DirectX surface interfész. Egy render-to-texture pass megvalósítása, egy fa rajzolásával. Az eredményül kapott textúra megjelenítése plakátokon, így erdőt rajzolva. Gömbplakátok megvalósítása, vágási hibák nélküli füst megjelenítése.
    7. Árnyékok
      1. Síkra vetített árnyék. Mélység-térképek létrehozása és használata. Takarás-szűrés (percentage closer filtering). Lágy árnyék (soft shadow) eljárások.
      2. Gyakorlat: Több DirectX mélység-stencil felület használata. Hardver mélység-térképek. Mélység-térkép alapú árnyékok megvalósítása pontszerű fényforrásra.
    8. A játék színterének felépítése
      1. Világ-objektumok heterogén kollekciója. Hierarchikus színtér-gráfok.
      2. Valósidejű animáció. Az élethű mozgás fizikája. Newtoni mozgás. Pozíció, sebesség és gyorsulás az elmozdulás és elfordulás tekintetében. Forgatások leírása kvaterniókkal. Animáció időlépcsőkben. Az animáció beágyazása a színtér-objektumok rendszerbe.
      3. Gyakorlat: Színtérgráf megvalósítása. Fizikai animációval mozgatott objektumok megjelenítése, fizikai alapon mozgó kamerából nézve.
    9. Játéklogika
      1. Folytonos és diszkrét ütközésvizsgálat. Térfelosztás és befoglaló alakzatok. Ütközés-válasz stratégiák. Az ütköző merev testek fizikája. Az ütközés-kezelés beágyazása a színtér-objektumok rendszerbe.
      2. Játék-intelligencia. Egyszerű célokon alapuló vezérlés. A felhasználói és mesterséges intelligencia alapú vezérélés beágyazása a színtér-objektumok rendszerbe.
      3. Gyakorlat: Statikus földfelszín objektum. A talajjal ütközés detektálása és az ütközés-válasz megvalósítása. A mozgó játékobjektumok közötti ütközés-detektálás és válasz megvalósítása, befoglaló gömbök segítségével. Egyszerű mesterséges intelligencia megvalósítása. Az eredmény egy komplett kis játék, több mozgó, ütköző objektummal, melyek egyikét a játékos irányítja.
    10. Karakter-animáció
      1. Karakter modellek. Csontváz animáció. Merev bőrözés. Transzformációs láncok.
      2. Sima bőrözés. Transzformációk keverése a csúcspont árnyalóban.
      3. Az inverz kinematika célja.
      4. Gyakorlat: Animált karakter megjelenítése a csúcspont árnyalóban magvalósított sima bőrözéssel.
    11. Stencil trükkök
      1. Stencil buffer és stencil teszt. Stencil tükrök. Árnyéktestek. Stencil árnyékok.
      2. Gyakorlat: DirectX mélység-stencil felületek. Síktükör megvalósítása a stencil buffer használatával. Egy árnyéktest implementáció tanulmányozása.
    12. (14. hét) Sugárkövetés és fraktálok
      1. Sugármetszéspont-számítás. Rekurzív sugárkövetés. Sugárkövetés a grafikus kártyán és helyettesítő megoldások.
      2. Gyakorlati bevezető a fraktálok grafikai alkalmazásáról. Julia és Mandelbrot halmazok. Iterált függvény-rendszerek (IFS). Káoszjáték.
      3. Gyakorlat: Mandelbrot és Julia halmazok megjelenítése a pixel árnyaló használatával. IFS megjelenítése káoszjátékkal.
9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

Heti 2 óra előadás, ahol elhangzanak az elméleti alapok, és a gyakorlati feladat megoldásához szükséges ismeretek is, valamint 2 óra számítógép melletti gyakorlat, ahol egy konkrét grafikai algoritmust kell implementálni DirectX környezetben.

Minden óra alkalmas számítógépekkel felszerelt tanszéki teremben zajlik, ahol a téma megkívánja, az előadás helyett is tudunk gyakorlati órát tartani.

10. Követelmények

a. A szorgalmi időszakban: Házi feladat.

b. A vizsgaidőszakban: Gyakorlati vizsga.

c. Elővizsga: van

11. Pótlási lehetőségek A házi feladatot a szorgalmi időszak végéig le kell adni. Pótlási lehetőség a pótlási héten lesz.
12. Konzultációs lehetőségek Órák után, illetve külön egyeztetett időpontban.
13. Jegyzet, tankönyv, felhasználható irodalom

Előadás- és laboranyagok a tárgyhonlapon.


Dr. Szirmay-Kalos László, Antal György, Csonka Ferenc:

Háromdimenziós grafika, animáció és játékfejlesztés

ISBN: 963 618 303 1

14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra56
Félévközi készülés órákra4
Felkészülés zárthelyire 
Házi feladat elkészítése50
Kijelölt írásos tananyag elsajátítása 
Vizsgafelkészülés10
Összesen120
15. A tantárgy tematikáját kidolgozta
Szirmay-Kalos László
egyetemi tanár
Irányítástechnika és informatika tanszék
Szécsi Lászlóegyetemi docensIrányítástechnika és informatika tanszék
Egyéb megjegyzések A Játékfejlesztés nevű M.Sc. szakiránytárggyal a tematika hasonlósága ellenére minimális az átfedés, a használt eszközök és a megközelítés absztrakciós szintjének eltérése miatt. Míg ez a tárgy a Direct3D és HLSL programozásra, illetve a PhysX könyvtár alkalmazására koncentrál, és ezekből az elemekből épít játékmotort, az M.Sc. tárgy kész játékmotor használatával, a teljes tartalomalkotási futószalagot szem előtt tartva épít játékalkalmazást.