Scripted UI

From Doomsday Wiki
Jump to: navigation, search

(a.k.a. next-gen UI widgets)

Doomsday Script should be used to control how the Doomsday GUI behaves, what function each button does, what kind of menus are available, etc.

Replaces the fixed-functionality Doomsday GUI code, game-side menu screens, and the InFine subsystem.


The original games have very basic UI controls for the needs of the in-game menus. Doomsday introduced a separate UI subsystem for its own needs (console, Control Panel and Multiplayer Setup). Later on, InFine was added as yet another separate system for on-screen animations (such as the episode finales in Hexen).

This means there are multiple, disjoint UI-related subsystems in the engine and games. Ideally, the engine should provide a single UI system that is powerful enough to handle all these use cases:

  • In-game menus (New Game, etc.)
  • Control Panel
  • Bindings and controls setup
  • Multiplayer setup and joining
  • Console
  • In-game editors
  • Ringzero GUI: game profiles and resource package management
  • Automatic updater

Furthermore, the old Doomsday UI code (implemented in C) is a quite awkward to use and does not implement full-fledged event processing, widget hierarchy/ownership, and layout mechanisms. It should be discontinued and replaced with a flexible C++ class hierarchy.