From RogueBasin
Jump to navigation Jump to search
Umbra is a beta-stage engine

Umbra isn't specifically a roguelike engine, but rather a generic high level module loader that can be used to power any application. Umbra is based on libtcod and requires it to run. Umbra's philosophy is not to provide roguelike-specific data structures, but rather an underlying architecture that will let the developers focus directly on game-specific code as well as enforce certain code management rules. Umbra is an open source project (BSD-licenced) maintained by Mingos and jice. The engine's name derives from Umbrarum Regnum, wherein it was originally supposed to be contained. Since work on Umbrarum Regnum was suspended in mid 2008, Umbra gained a life of its own.

The current release is 10.10 Alpha, and it's available at Umbrarum Regnum website.


The engine takes care of module loading, running and unloading in any sequence, either static (fallbacks) or dynamic. For instance, a credits/licence screen will usually fall back to the main menu (static), while the main menu will give place to different modules depending on user input (dynamic). The engine takes care of all module rendering, internal logic updating and keyboard & mouse input parsing, which the developer should define if default behaviour isn't appropriate.


Umbra uses the term "module" in reference to any "chunk" of an application, which will typically have its own, separate graphical representation and its own internal logic. The concept is rather flexible. For instance, a main menu screen might be a single module, but also might be divided into two different modules: background animation and interactive menu items in the foreground. It's totally up to the developer how small or large the modules will be.


The engine features a work-in-progress widget system that's tightly associated with the modules. Widgets can be "owned" by a module or be independent elements, treated by the engine in the same fashion as a module would be.

This feature is planned to become an add-on to Umbra's core in order to reduce bloat and let developers choose only the features they require.

Internal modules

Internal modules are predefined widgets that are always available to Umbra users. They serve various purposes, usually application diagnostics (error reporting via the BSOD widget) and benchmarking (the Speed-o-meter, aka Speedo).

User input

Umbra lets the developer define different kinds of user input: global and module/widget-specific keystrokes and mouse parsing (notably, the widget-specific mouse control). The developer can use Umbra's internal keystroke definition, called a callback, or any other way understandable by libtcod.


For now, there are no released games using Umbra as their underlying engine. The Cave, jice's experimental project, has been successfully ported to Umbra and is the first application to ever publicly showcase the engine's potential.



You can post anything and everything regarding Umbra in the following forum board:

Other resources