I'll start from the beginning ..
The whole architecture rests on a core engine that tries to be as
generic as possible. Currently on this code is uploaded in the
repository.
All further components would use this core engine to achieve specific
functionalities.
The engine core consists of:
1. Controller - Controls the overall flow of engine.
2. Renderer - Handles all rendering/drawing functions (OpenGL
based work)
3. Parser - Handles all parsing related work i.e.
processing input files for creating and loading graphics, sound, etc
4. Event handler - Handles all the event handling like calling
functions when a object is clicked, check if a object is clicked.
Some modules are still to be added like networking, audio, video,
fonts, etc and are in process.
These are essentially the components of the engine.
Each of these modules use Lua as scripting language, so for each of
these modules, tasks can be worked by using Lua scripting language.
So...
The system would contain a core controller object. It would connect
the data repository's and the functions that use it. It will decide on
what access is allowed to which object.
All data is stored in XML files. The code is currently written in C++
and will run on all
platforms ( Windows, Linux, ... and hopefully Mac ).
GNU toolchain is used at all times, and the libraries that are used
are mandated to be cross-platform portable.
Any animation scheme could be a file that will compressed and stored
in the following way:
archive ( .tar.gz )
|
|- main.xml
|- res
|- img1.jpg
|- script1.lua
|
|
Thus the basic libraries/modules/packages that came up in the design
are:
TinyXML and TinyXPath for XML Parsing
SDL for OpenGL, Audio, Events
( keyboard, mouse,etc )
LUA as scripting language
freetype2 for font rendering
SDL_sound ( and dependencies )
SDL_image ( and dependencies )
Also are the following for scriptablility:
LUA and openGL bindings
LUA and tinyXML,tinyXPath bindings
LUA and freetype bindings
LUA and SDL_net bindings
LUA and application object manipulation functions bindings
... libraries mentioned above are not fixed. And can be changed.