Umbra

From RogueBasin
Revision as of 15:43, 24 November 2009 by Jice (talk | contribs) (no https (no need for read-only access))
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.

Engine

The engine takes care of module/widget 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.

Modules

Umbra uses the term "module" in reference to any "chunk" of an application that has 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.

Widgets

A special kind of module that can be used in Umbra is a widget. Widgets are standard modules, but they offer extra interactivity options: they can be minimised, closed and freely positioned on the console as if they were a moveable window.

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).

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.

Games

For now, there are no 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 showcase the engine's potential.

Download

Bear in mind that the engine is still under development and is not guaranteed to be neither complete nor stable. It should be used for testing and debugging purposes only.

Talk