The engine is a complete game framework, giving you initialization, rendering,
input, camera, resource management and support/utility/helper classes. Basically
you should concentrate on your game/entity logic only.
The engine provides:
- Sprite rendering for entities (10-100 thousand sprites, each having
position, size, texture and color).
- Terrain with utility methods (getting altitude, etc.).
- Billboard rendering for UI (up to several thousand world/screen space
alpha blended sprites).
- Simple static mesh rendering for extreme cases (where sprites are not
- Templated world subdivision system ("grid") for game interactions.
- Keyboard/mouse input handling and listeners.
- Lots of utility methods (ray-terrain, ray-entity intersection, etc).
- Templated pool storage container for game entities.
- Your game logic timing at fixed rate (rendering happens at variable
rate, entity positions are interpolated).
- Unified framework for resource management (sprite textures, ordinary
textures, effects, meshes).
- Game skeleton (game that does practically nothing, fill in your game).
The main bottleneck in dealing with lots of game entities is system RAM
throughput - keep this in mind. We tried to optimize the engine side (entity
pools, rendering, etc.) as much as we could and managed to squeeze out
relatively good results, but the end game performance depends on your game logic
We typically got 60-70 FPS with very simple game featuring 50k game entities on
AthlonXP 1500+, DDR RAM and GeForce2Ti. "Real game" logic slows that down to
40-50 FPS, which we take as quite acceptable.
- Source (172KiB) - the complete source code, MSVC project/workspace, needed
binary files. Requires MSVC6 and DX8.1 SDK.
- Docs (196KiB) - engine API documentation, very few of UML, tutorial and example
source from tutorial.