14.07.2015 Views

slides - Visionday

slides - Visionday

slides - Visionday

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

The Architecture of the KapowSystems EnginebyJacob Marner, M.Sc.Architecture ManagerDeadline Games


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 ArchitectureMainKapow EngineclassPluginsAnimationsystemMockup system Particle systems Path finding PhysicsEditorEditor systemKernelAsset systemEntity databaseScene graphclassesCollision systemScript systemLibsAdapter (Thehardwareabstraction layer)Toolbox Math Freetype MultistreamEditor library zlib Photon mapperMemoryManagerExpat


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 GenerationFirst use of asset after change of original version (in editor)3D Max model(.max file)XML file (.modelfile)EditorNative file(.model_pc)Subsequent uses (in editor)Native file(.model_pc)EditorAsset path for Asset block generationEditorAsset block (e.g.a .map file)Release build Asset pathAsset block (e.g.a .map file)Release runtimesystem


Memory Management• Consoles have no virtual memory!Fragmentation is a big problem.• We segment memory and make a seperateallocator 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 scriptobjects.– The system malloc() for the rest.


Questions?jobs@deadlinegames.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!