Axis architecture

Axis architecture



The engine consists of a core and various modules, which automatically attach to the core at runtime. The host application interacts only with the core and remains totally unbiased by the attached modules. Each module can contain one or more of the following components:
  • Image format encoders and/or decoders
  • Sound format encoders and/or decoders
  • 3D scene format encoders and/or decoders
  • Graphics device
  • Audio device
  • Input device
  • File system
Each component is managed by the core and the modules are automatically detected and loaded. In order to add a new supported sound or image format, graphics or audio device or a file system to the engine, one needs simply to copy the respective module file.
For example, Axis natively supports opening of .3ds, .obj, .mtl and .axs scene formats. To add support for .fbx format too, you only need to have the AxModuleFbx.dll copied in your application folder.

This approach has several gains:
  • Allows the core to be independent from third party libraries
  • Reduces the code by separating it into small logically independent parts
  • Creates simple, well classified, universal models for working with different types of media
  • Makes building of a module a task which requires falmiliarity with only the relevant parts of the engine
  • Allows the engine to work naturally with custom, user-created modules
  • Allows applications which use the engine, to use all of the media that the engine supports or will support in future - for example, a game built now, will be able to work with, say, DirectX 15 whenever it comes to existence, or an application that uses the physical file system can without effort be made to use a virtual file system contained within an archive or remotely via stream, if provided with the respective module
This model does not complicate the usage of the engine. Opening an image, a sound or a whole 3d scene is a matter of a single line of code, just as well as setting a preferred graphics or sound device or a file system.
The layered shading model, which will be discussed in another article, allows currently built games not only to work on, but to actually take advantage of the new features of future hardware and devices.