Vše začíná v Game.cs
, který nastaví OpenGL, kameru atd. Dále vytvoří scénu.
Scény se nacházejí v Scenes/
a dědí ze třídy Scene
. Scéna je zodpovědná za vytvoření
objektů, které se v ní nacházejí a za nastavení uniformů shaderu.
Meshe se nacházejí v Objects/
ve formátu .obj
. Objekt je potřeba registrovat v Settings/Atlas/objects.json
, pak je získáváme podle klíče (jména).
Objekt načítá materiál .mtl
(Materials/
), je možné různým ploškám nastavit jiný materiál. Materiál načítá textury podle klíče (Settings/Atlas/textures.json
). Pokud klíč existuje, ale textura nelze načíst, aplikuje se global:missing_texture
.
Pro manipulaci s objekty ve scéně používáme Figure (/Figure.cs
). Ty obsahují model matrix, pozici, velocity atd. a jsou zodpovědné za vykreslení objektu.
Pokud chceme custom chování Figure, vytvoříme novou třídu do Entities/
a dědíme z Figure
. Příklad Entities/Ghost/*
. Pro figure je možné zapnout zobrazení bounding boxů (změní se konstanta Figure.Debug
na true)
Projekt obsahuje i základní obsluhu kolizí a gravitace. Ta je implementována v Managers/CollisionManager
. Pokud nechceme, aby byla na objekt aplikována gravitace, nastavíme Figure.IsStatic
na true.
WASD
- pohybSpace
- nahoruShift
- dolůG
- zapnutí/vypnutí ovládání kamery myšíEscape
- ukončeníF
- přepnutí fullscreen/windowed screenV
- zapnutí/vypnutí VSYNC
- 3D GL Core profile + shaders
- high performance => at least 60 FPS
- allow VSync control, fullscreen vs. windowed switching
- event processing (can control camera, object, app behaviour...): mouse (both axes, wheel), keyboard
- multiple independently moving 3D models, at leats one loaded from file
- at least three different textures (or subtextures from texture atlas etc.)
- lighting model, at least 3 lights (1x ambient, 1x directional, 1x reflector: at least one is moving; +possible other lights)
- correct transparency (at least one transparent object)
- Chybí
- height map textured by height, proper player height coords
- working collisions
- pro objekty, které to mají zaplé a pohybují se přes velocity.
- particles
- scripting (useful)
- audio