SGEngine is the one piece of technology that empowers all of my current-generation C++ based software.

Notable games/apps that are based on it:

As the requirements grew from rendering a few meshes to running complex multi-window systems, the engine was improved along the way. But the concept which it is based on still stays the same: the engine must be the minimum piece of software required to build stable and versatile applications.

The engine currently consists of...
  • Primary functions and templates (memory-copy, Array, String etc.)
  • File/path handling functions (ReadTextFileToString, F_GetModTime etc.)
  • Image functions/objects/templates (Image2D / Image2DF objects, PNG load/save functions)
  • An entity/parameter management system (registration, assignment, serialization etc.)
  • A sound system (OpenAL-based, supports 3D sounds and Ogg audio streaming)
  • A scripting system (AngelScript-based)
  • A networking system (UDP socket-based, supports reliable communication)
  • A complex primary IO system (output - OpenGL-based renderer) that includes:
    • An input manager (with rule-based serializable action mapping)
    • A complex context/window system with support for multiple windows and rendering contexts
    • A simple, vertex declaration-based rendering system
    • Fully-featured shader management with shader caching and variable links
    • Texture object system that supports all texture types and streaming of file-based textures
    • A stack-based framebuffer target manager with support for all kinds of framebuffers
    • And, of course, the extremely powerful UI system - a clever mix of IMGUI and RMGUI systems

The engine also included (before the refactoring work)...
  • A mesh object (with a custom file format)
  • Mesh generation tools
  • Imposter rendering systems
  • A game level object (that includes a WYSIWYG editor)
  • An AO lightmap renderer & lightmap texture coord generator
  • A simple particle system
  • A physics library wrapper (using Bullet)
  • A (slightly outdated) animation system (which was improved in Gunplay:NQA)

Currently these features are being moved to the SGE-3D add-on and are improved/rebuilt in the process.


Misc. info

Fun facts
  • The source (SGEngine v2 - without the 3D stuff) is only 570 kB big and consists of only 17000 lines of code.
  • The engine has been in development for 2 years and has experienced lots of partial rewrites.
  • The original version of the engine was written with D3D[X]9 and included a fully-functioning BSP/CSG map compiler and a radiosity lightmap renderer.
  • The engine has its own standard library which in some parts performs significantly better than the Dinkumware implementation of STL.
  • The engine has suffered from having lots of projects stopped in the middle of development:
    • Vector Jumper - a stealth-based 3D platform shooter featuring an android as the hero. Cause: other projects stepping in. Status: to be determined.
    • An unnamed 3D parkour game. Cause: found out that the concept was doomed (lifeless). Status: to be determined. Fun fact: it was just as lifeless as Minecraft and was set to feature a similar graphical design.
    • Dominant Strike - a stealth-based 3D adventure game set in forests. Cause: lack of initial experience with the selected technology. Status: to be finished ASAP.
    • Gunplay: No Questions Asked. Cause: lack of time to make an impressive-enough demo. Status: to be finished ASAP.
    • Texture Designer v2.0. Cause: lack of time to make an impressive-enough demo. Status: to be finished ASAP.

A demo - voxel sprite rendering

The demo features three very simple things: a voxel terrain, a sky-quad and water (in the form of a simple plane). The C++ source for the demo is included to demonstrate how easy it is to make this. Among those three things, there's also everyday game programming stuff like creating windows, managing textures, rendering from buffers and arrays, making the camera move smoothly etc.

Download (29 hits)


Latest images