Version 8, last updated by nolver at March 14, 2010 12:45 UTC
Tomahawk XNA Game Engine Overview
Engine Components

Tomahawk's Components
- Tomahawk.Content: Provides default content and assets, enabling rapid creation of prototypes, like default materials, checkerboard textures, default configuration archetypes, etc.
- .Tomahawk.Runtime: This is where the core engine resides, provides all the subsystems and framework, as well as the basic collection of logic objects
- Tomahawk.Resources: This component defines Tomahawk propietary assets types, like particles.
- Tomahawk.Processors: This component enables loading of Tomahawk specific assets types and resources.
- Tomahawk.Serialization: This component provides serialization services used all over the engine, supporting XmlSerialize (provided for maximum flexibility) and Tomahawk's BoostSerialize (maximum perfomance on the Xbox platform).
Your Game's Components
- Your game's project
- Your game's content project
Third Party Components
- XMAS (XNA Animation System): Tomahawk integrates this powerful animation tree-based animation system.
- JigLibX (xna physics library): Tomahawk integrate this powerful physics engine.
Engine Tools

Your Game's Tools
- Your Game's editor (if required): Tomahawk does not provide a game editor, so you must create one if your game requires so.
Tomahawk's Tools
- AArc: Tomahawk's SerialBoost archetype precompiler. Optimizes archetypes at compile time, to enable faster loading during runtime.
- BSGen: Tomahawk's SerialBoost serialization classes generator. This tool creates specialized serialization methods for each one of the serializable classes defined in your game. This removes the need of using slow Reflection mechanism at runtime, boosting up the performace of serialization at runtime.
Third Party Tools
- XMAS Editor: Create the animation trees used by XMAS animation system
- SCYTHE: Create physics body definition assets that can be used by Tomahawk at runtime.
- NVIDIA FxComposer 2.x: Tomahawk's material and rendering pipeline fully supports the Collada-based format used in FxComposer projects, enabling rapid development of your game shaders and effects.
- 3D Content creation tool of choice: Tomahawk supports all the 3D content creation tools supported by XNA, so you can use any of them.
Tomahawk API Overview

Engine.Instance and the engine Managers
This singleton gives access to all the subsystems and features of the engine. Each of those subsystems has a manager class that exposes the propper interaction mechanisms. All those managers are exposed as read-only public properties of the Engine.Instance object, so you can acces them from any point of your game code.
Examples of those managers are:
- Rendering
- Localization
- Threading
- Networking
- Input...
XWorld.Instance and the Logic Framework
The logic framworks gives a "natural" abstraction of most the engine functions. When implementing features in your game, tipycally you won't directly call any of the engine managers methods, instead you will be creating logic object to do all the common tasks.
Logic objects have several benefits:
- They are structured and named after a more "natural" approach of your game's functions. This way, instead of having a bunch of code lines to move and draw a character in the game, you'll use an XActor, a logic class that already has the common behaviour of game characters.
- Logic objects can be created from archetypes. That means that you can (or let your game designers) configure multiple variations of the same logic object. Then use a simple constructor method to spawn the object from a configuration archetype from your content folder.
- Logic objects have a life cycle that's easy to deal with. Creating your own logic objects is as easy as overriding the methods corresponding to each one of the events that can occur during their life cycle.
- Logic objects are automatically spanwed, indexed, updated and destroyed by the engine's world.
The singleton XWorld.Instance can be used to add instance the new logic objects. Also, this class in is charge of keeping all the objects alive, update them, and destroy them when are no longer needed.