Overview

The engine is basically split in a few main parts, which communicate with each other. The user only has partial access thru scripting, and does not have to worry about what is done internally. However here is a short description about the key elements in the engine

Lua Think

Once a lua script was loaded, the execution of the engine is continued. However, every frame a lua function is called. You can register functions to be called every frame by using the Timer class.

Function Publishing

Many of the lua calls will end up here, in the engine's own system to work on user variables and class methods. The system publishes all classes that can be accessed from Lua along with the methods that are allowed. See LuaDoc? for details.

Resource Manager

The user can load models, textures... The resource manager can be split into various memory chunks, if the user wants to, but normally there is one big MemoryPool? where all user resources go to, and will reside until the end. One cannot unload resources individually, only complete chunks, if chunk management is used. Resources can only be loaded once, and will be referenced to, if loaded again. They are first looked after in the projectpath, then if not found in the basepath.

Render

The Renderer performs 3 main tasks, and comes before anything else.
  • Setting up the proper environment (background,lights, cameras,...)
  • Visibility Testing
  • Rendering the List3D? and then the List2D?

It is organised as
  • List3D?
    • separated into sets, and layers
    • every layer can hold models, trails..
    • nodes are linked to other l3dnodes or worldnodes, only worldnodes do visibility testing. If a worldnode wasnt visible, children l3dnodes wont be seen either.
    • sets contain background information, camera,sun.. and particles
    • generally used for all perspective drawing

  • List2D?
    • sorted by a user sortkey
    • orthogonally drawn on top of the screen, after perspective drawing

  • VisTest?
    • visibility testing is done based on the worldnodes
    • finds nodes visible to cameras,projectors
    • finds closest fxlights

World

The world is separated into dynamic nodes and static nodes.

  • SceneTree?
    • a hierarchical tree of scenenodes.
    • scenenodes are normally static, although they can be moved and rotated just as the actors, it is most efficient to not change them after creation

  • ActorList?
    • a simple list of actornodes
    • actornodes have no hierarchy, but are meant for nodes that frequently change their position.
    • actornodes allow automatic velocity handling