The Architecture of the Kapow Systems Engine by Jacob Marner, - - PowerPoint PPT Presentation
The Architecture of the Kapow Systems Engine by Jacob Marner, - - PowerPoint PPT Presentation
The Architecture of the Kapow Systems Engine by Jacob Marner, M.Sc. Architecture Manager Deadline Games What is Kapow Systems? Production tool for making games A sand box Cross platform run-time system Supports PC, Xbox and
What is Kapow Systems?
- Production tool for making games
– A sand box
- Cross platform run-time system
– Supports PC, Xbox and PlayStation 2
- Box of tools for making game
– No game specific components
- Was used to create Total Overdose
Key Features
- Integrated editor
- Fragments
- Entity type Database
- Memory management system
- Cross platform asset generation
- TNT script language
Layered Architecture
Libs Kernel Editor Plugins Main
Adapter (The hardware abstraction layer) Toolbox Math Freetype Multistream Asset system Entity database Scene graph classes Collision system Script system Editor system Editor library zlib Photon mapper Memory Manager Expat Animation system Mockup system Particle systems Path finding Physics Kapow Engine class
Entity type Database
- Run time type information (RTTI) system
- Used for multiple purposes:
– Automatic GUI generation – Saving and loading scenes / fragments – Script interface – Saved games – Rewind system – Later: Undo in editor
Entity type Database, cont.
class Model : public Node { ... void Register() { tModel = new EntityType("Model"); tModel->InheritFrom(tNode); tModel->SetCreator((CREATOR)Create); ... tModel->RegisterProperty( "hard_alpha_factor", tNUMBER, FLOAT_GETTER(Model::GetHardAlphaFactor), FLOAT_SETTER(Model::SetHardAlphaFactor), "control=slider|min=0|max=1"); ... } ... };
Asset Generation
3D Max model (.max file) <<becomes>> XML file (.model file) Editor <<slow load>> Native file (.model_pc) <<auto-generates>> Native file (.model_pc)
First use of asset after change of original version (in editor) Subsequent uses (in editor)
Editor <<fast load>>
Asset path for Asset block generation
Editor <<generates>> Asset block (e.g. a .map file)
Release build Asset path
Asset block (e.g. a .map file) Release run- time system <<fast load>>
Memory Management
- Consoles have no virtual memory!
Fragmentation is a big problem.
- We segment memory and make a seperate
allocator for each:
– Frame based allocator for game levels – First fit allocator for small temporary things – Best fit allocator with flushing for renderlists. – Best fit allocator with defragmenting support for script
- bjects.
– The system malloc() for the rest.
Questions?
jobs@deadlinegames.com