19 Jan 2007

Nebula3 Architecture Overview

  • Nebula3 will be divided into 3 layers, where each layer builds on top of each other:
    • Foundation Layer: the lowest level layer, this provides a basic platform abstraction layer below rendering and audio. The Foundation Layer can be used as a platform abstraction for any type of application, not just real-time 3d apps.
    • Render Layer: this is the medium layer, which adds more meat to the Foundation Layer, like 3d rendering, audio, physics, and scene management.
    • Application Layer: this is the highest layer and provides a complete game framework which lets the programmer concentrate on the game logic instead of caring about all the little details necessary for being a well-mannered game application.
  • Nebula3 will integrate Mangalore completely, the subsystems from Mangalore will be integrated into different Nebula3 layers where they fit best.
  • Nebula3 will be more "C++-ish" then Nebula2, and doesn't try so much using C++ for stuff it wasn't intended for.
  • Nebula3 implements object lifetime management through refcounting and smart pointers
  • Nebula3's new object model uses a base class with 4 byte instance data instead of the 70+ bytes in Nebula2.
  • RTTI is higher performance and easier to use
  • Nebula3 still doesn't use C++ excecptions, C++ RTTI and the STL (all of these either degrade performance and/or reduce portability).
  • creating objects by class name is faster and easier to use
  • Nebula3 will be largely clib clean, no complex clib functions (like file i/o or multithreading) are allowed, removing an additional code layer.
  • Nebula3 uses LUA as its standard scripting language, instead of TCL (however, it's still possible to add support for other scripting languages)