This page is obsolete, update will come someday :-)
Overview
Portability, robustness and scalability was strongly kept in mind during architecture design process.
Message passing
Project consists of number of modules that are sending messages to each other. In high level modules message-passing is handled by the Scheduler. In low level modules messages are passed in form of direct object method calls.
Message passing scheme is shown below. Arrows are directed from message sender to message receiver.
Project dependencies
All modules were designed to be as decoupled from each other as possible. The high level layer dependency concentration point is the Facade module. The low level layer dependency concentration point is the Platform module.
Dependency graph is shown below. Arrows are directed from dependent module to the module it depends on.
Logic modules
It's the highest level layer of Smoothernity. Game logic is located here. Each module sends message to another module via Mediator.
Engine modules
Reusable high level routines are located here. Each module sends message to another module via Mediator.
Mediator
Mediator serves for message routing purpose. It contains all high level message types. It knows which module should receive which message.
Aggregator
Aggregator builds high level modules static connections. It wraps each module with Scheduler. It also converts incoming events from method calls into high level layer's messages.
Facade
It is high level layer's front end for the lower level application layer. It also builds high level layer from specific parts. It passes incoming events to the Aggregator module.
Application
Here is the target platform application entry point. Executables is built using theese modules. It catches all events from underlying operational system API and translates them to the Facade and Platform modules.
Platform
Platform module encapsulates all platform specific details, providing interface for high level layer.