Engine Core

From FIFE development wiki
Jump to: navigation, search

This article is part of design documentation. Design 32.png

Design documentation describes how software is implemented or is about to be implemented. It focuses on system structure (e.g. dependencies), module interactions and relevant algorithms. Concepts described in these articles should form the terminology that is used when discussing about the software that forms FIFE.

High Level Description

Engine Core is one of the high level modules of the engine. For partitioning, see Architecture Documentation. Core consists of several sub-modules that are illustrated in the following picture:

Engine Core High Level View

To keep things simple, exact dependencies are not illustrated in the picture. However sub-module layering can be seen, meaning that higher layers can use services of lower layers, but not vice versa. Exact dependencies can be extracted with a dependency scanning tool that can be found from among the engine soures. Most up-to-date picture is visible via svn browser interface



Controller takes care of constructing, initializing and deleting all the core sub-modules in correct order. It also provides access for engine extensions into these modules. For further information, see Engine Controller Design Documentation.


Loaders take care of certain game format specific loading of game resources. Examples of such format are native xml (engine's own format) and fallout content. The point is to convert these formats into ones that engines handles natively, thus keeping game format specific parts away from the other (generic) sub-modules. Further details can be found from Loaders Design Documentation.


Model contains generic data structures that represent the world, as well as their linking to their visual representation. Controlling the behavior of model, game events get illustrated on screen. Model is described in Model Design Documentation.


View has functionality that is needed to render model on screen. Things like camera and visual trees belong here. View documentation can be found from View Design Documentation


Gui is built on top of Guichan widget library. Engine extends the basic guichan widgets to some extent. Gui is explained in Gui Design Documentation


XML provides XML related convenience functions for other parts of the engine. It is described in more detail in XML Design Documentation.


Audio is built on top of OpenAL extending its functionality with better engine suitable APIs and additional audio format support. Audio is explained in Audio Design Documentation.

Path finding

Path finding contains algorithms relevant for objects to be able to navigate on different maps. Path finding is explained in Path Finding Design Documentation.

Event Channel

E.g. mouse, keyboard, widgets events are distributed to other parts of the engine (and to the clients) by the event channel. Clients can subscribe to certain type of events, and event channel takes care of delivery. Further details for event channel can be found from Event Channel Design Documentation


Video provides low level video handling functionality and the abstraction between different rendering backends. Video is explained in Video Design Documentation.


VFS offers transparent file-system like access to other modules to access resources in different kinds of containers. Examples of such containers are zip, fallout file format and native file system. VFS documentation can be found from VFS Design Documentation


Util is a mixed bag of low level services that several other modules are using. Things like timers, loggers, settings and low level data structures are introduced here. Util is described in Util Design Documentation.

Ideas and Propsals

In case of improvement ideas, write them to Engine Core Ideas. In case of new proposals, please add them to a list below.