Obsah:


Dopručené nástroje


  • Microsoft Visual Studio 2008 - pokud ho ještě nemáte tak neváhejte a získejte ho legálně a zdarma díky MSDN Academic Alliance. Pokud nepotřebujete plnou verzi zkuste express edici.

  • Kreslítko UML diagramů - Dia, Microsoft Visio (je součástí balíku MSDN Academic Alliance), online Gliffy nebo jakékoliv jiné.

  • Doxygen - nástroj pro automatické generování dokumentace.

  • Systém pro správu verzí - je skoro jedno jaký, ale nějaký mít musíte. Doporučuji SVN, další možnosti jsou CVS nebo SourceSafe. K SVN se vám bude hodit i grafická nadstavba TortoiseSVN.

Cvičení


8.10.2010 - Grafické knihovny OpenGL, Direct3D


Úvod


Trochu podrobněji si představíme grafickou knihovnu OpenGL, a příklad kódu používajícího pevnou renderovací pipeline. Zběžně se podíváme na obdobný kód i v Dirext3D 9.

Pokud vás zajímají detaily (shadery, lingebra pro grafiku ...) tak doporučuji slidy k předmětu Hardware pro počítačovou grafiku

OpenGL


Homepage OpenGL na které najdete nepostradatelnou dokumentaci. Hlavně:


Důležité pojmy: OpenGL pipeline, client/server architektura OpenGL, grafická primitiva, Vertex Arrays, Vertex Buffer Objects, Display Lists, buffery - color, depth, stencil, accumulation, GLU, GLUT, extensions (metody s koncovkou ARB).

Tutorialy
Dobrým zdrojem tutoriálů je NeHe, některé tutorialy jsou ale starší, funkcionalita kterou ukazují je v OpenGL i nadále, ale dá se dosáhnout jednodušeji (některá rozšíření se například časem stala součástí OpenGL).
Pozor: rozběhat NEHE projekty ve VS2008 není jen tak. Některé projekty načítající textury přes zastaralou knihovnu glaux potřebují novou implementaci procedury pro načítaní bitmap.

  • NeHe 02 - Kreslíme první trojůhelníček (windows message loop, otevření okna pro OpenGL, matice)
  • NeHe 06 - Kostka s texturou (načtení textury do texturového objektu, přidání texturových koordinátů)
  • NeHe 12 - Display listy (metaprogramování, reusabilita)

Matice, matice, matice

Model coordinates->Eye coordinates->Clip Coordinates->Normalized Device Coordinates->Window Coordinates
... ModelView ... Projection...


Pokud si chcete udělat pořádek v transformacích a maticích tak si přečtěte tyto FAQ.

Direct3D


Už jen stručně. Samply najdete v "DirectX Sample Browseru", zvolte Direct3D 9 a v menu Show zaškrtněte C++ a Tutorials, klikněte na "Install Project" u "Tutorial 5: Textures".

Na některých strojích jsou možná špatně nastavené cesty k hlavičkovým souborům a ke knihovnám DirectX. Pokud vám z tohoto důvodu projekt nepůjde zkompilovat tak přidejte postupujte následovně: Tool->Options->Projects and Solutions->VC++ Directories, do "Include files" přidejte $(DXSDK_DIR)\Include a do "Library files" $(DXSDK_DIR)\Lib\x86.

15.10.2010 - Ogre a export z Blenderu, ODE, OgreOde


Ogre3D


K čemu je engine dobrý?

Důležité pojmy z říše vykreslování 3D scén: Organizace prostoru - BSP stromy, Octrees, Portály; Visible-surface determination (VSD), Potentially visible sets (PVS)

Ogre3D je jeden z mnoha open source 3D enginů. Další velké enginy jsou například Irrlicht, Crystal Space 3D, Nebula Device a mnoho dalších.

Na co si dát u enginů pozor:
  • Je projekt ještě živý?
  • Jak silná je komunita?
  • Často nedostatečná dokumentace, odpozorovávat chování objektů jen z kódu není ono.
  • Jak bude vypadat workflow? Existují konvertory pro převod modelů a animací do nativního formátu enginu? Jaké formáty jsou podporovány?
  • Jak to bude s integrací dalších technologí? Fyzika, zvuky, GUI, ...
  • Jaká je přesně licence? GPL, LGPL, Creative Commons, MIT ...

Co vše Ogre umí a jak se s ním pracuje - Manuál Ogre3D.Seznam scene managerů.


Ukázkový kód pro dnešní hodinu najdete v repository GamesLecture. Hlavní soubor tohoto solution najdete v \SpaceImpac\SpaceImpact.sln.

Import modelu


Cíl: Vytvořit složitější model a vyrenderovat ho naší aplikací.
Postup:
  • Model vytvoříme v Blenderu - GUI Blenderu je poněkud nezvyklé, proto se nám bude hodit Quickstart guide
  • Do Blenderu nainstalujeme exportovací plugin - Zkopírujte script z adresáře trunk\Tools\OgreExporter do blender\.blender\scripts. V Blenderu v okně "Scripts window" nezapomeňte zavolat "Update menus".
  • Vyexportujeme ho do textového formátu *.mesh.xml - Scripts->Export->Ogre XML,
  • Zkompilujeme do binárního formátu (*.mesh.xml -> *.mesh) utilitou \Tools\OgreCommandLineTools\OgreXmlConverter.exe
  • Načteme a vyrenderujeme naším programem - projekt LoadMesh v solution \SpaceImpact\SpaceImpact.sln


Import scény


Cíl: Vytvořit v Blenderu složitější scénu a vyrenderovat ji v Ogre.
Postup obdobný jako minule:
  • script najdete v adresáři trunk\Tools\blendersceneexporter
  • Projekt pro načítání scény je LoadScene


ODE a OgreODE


OgreODE je wrapper pro fyzikální knihovnu ODE. API OgreODE je objektové (na rozdíl od API ODE, které je čistě v jazyku C, i když uvnitř knihovny se C++ také používá, zajímavý příběh ...) a drží se filosofie Ogre. Problémem je mizerná dokumentace. Jediným náznakem tutorialu je tato stránka na OGRE wiki. Nejvíce se toho člověk dozví z examplů v distribuci OgreOde.

Manuál ODE
Typická programová smyčka

Podíváme se na projekt Physic.

Příště

22.10. - CEGUI, Lua, OpenAL, Síťování

Uživatelské rozhraní - CEGUI


Homepage CEGUI

Cíl: Naklikat vlastní uživatelské rozhraní a použít ho v naší Ogre based aplikaci.

  • Nejdříve si prohlédneme example projekt CEGui ze solution SpaceImpact.
  • Editor layoutů je ve složce Tools\CELayoutEditor\ (můžete ho stáhnout i z oficiální stránky).
  • Upravte stávající layout, např. přidejte tlačítko a v kódu si zaregistrujte handler pro toto tlačítko.

Scriptování - Lua


Pro rychlý úvod je nejlepší článek na Wikipedii. Detaily se dozvíme z referenčního manuálu.

Pár faktů:
  • Lua má Garbage Collection
  • Funkce jsou "first class objects"
  • Kromě základních datových typů má Lua ještě typ "table"
  • K tabulce můžeme přidat "metatable" definující její chování - takto se dá nad tabulkami z Luy dodefinot dědičnost jak ji známe z OO

Spustitelný interpret Luy najdete v adresáři \externalLibs\lua\bin.

Example projekt "LuaExample" nepoužívá přímo LUA C API, ale knihovnu Luabind, ta usnadňuje export C++ objektů do Luy a zpět.

3D Zvuky - OpenAL


Projekt má název Sounds. Podívejte se do kapitoly Introduction to OpenAL v programátorské příručce. Jsou tam shrnuty nejdůležitější pojmy celé knihovny. Náš example kromě OpenAL používá ALUT (OpenAL Utility Toolkit) pro inicializaci a načítání zvuků.

Umělá inteligence


Opět existuje celá řada knihoven, většinou jsou ale komerční XAITMENT, AI-Implant. Free knihovny jsou zaměřeny spíše na výuku: FEAR, Pogamut (aneb proč je tu tak populární UT :-)



29.10. - MMORPG, AI, Frameworky


MMORPG like networking

Open source hra PlaneShift
Knihovna OpenNeL
Nová iniciativa SUNu: Project DarkStar


Síťování


Na většinu základních otázek najdete odpověď v FAQ - Multiplayer and Network Programming na serveru GameDev.net.

Různé algoritmy optimalizující datový přenos se dají odkoukat od konkurence.
FPS:
Quake 3 a Unreal.

RTS:
Age of Empires



Frameworky


Microsoft XNA (XNA creators club)
Popcap framework a příklady her na Popcap portálu.

19.11.2010 - Unreal Development Kit

26.11.2010 - Vývoj her pro mobilní platformy (Ondřej Mocný)