Lunar GUI


Lunar GUI is an add-on module for Lunar Engine providing user-friendly access to customizable menu and gui (graphical user interface) objects. The structure consists of menus containing gui objects and other menus that behave relative to its parent menu. To use the features, you can either use the API in C++, or use a custom script file, or both.

Projects currently using Lunar GUI:
Lunar Radiation

Special features

GUI objects supported

  • Image
  • Animated image
  • Progress bar
  • Label
  • Text edit
  • Button
  • Checkbox
  • Radio button
  • Mouse cursor
  • Tooltip
Lunar GUI objects
Game menu example

GUI object features

All gui objects can have a border, background, text caption, tooltip and other type specific visuals. Interactive objects can have custom focus visuals and tabulation orders. Other mentionable features include auto-size, color multiplication, rotation, button icons, progress bar direction, text-edit encryption and clipboard support.

Script system

There are two types of scripts; the gui script and the skin theme script. The gui script is used to define the menu structure and to define the gui objects within. The skin theme script is used to define the default visuals of newly created objects, and custom settings.

Skin system

Lunar GUI uses a skin system, where the user can specify the visuals of different states of objects in a set called a theme. The different states are normal, over, pressed and disabled.
Several premade themes are included in the package; Default, Windows Classic, Windows XP, Windows Vista/7.


Scriptable animated transitions modifying color (including opacity), position, rotation and scaling when showing and hiding menus, morphing through an arbitrary number of states over a user defined duration on a per menu basis.

Object shuffler

A shuffler is a gui object list structure that can swap gui object position, size, skin etc. This can for example be used to create an ordinary listbox, or a cool custom scrolling "wheel-menu". It is controlled by scrolling with the mouse wheel, pressing the arrow keys on the keyboard, or controlled by the programmer.