MAUI Intro
MAUI Concept
MAUI Syntax
MAUI Module

MAUI References

MAUI License


previous next

MAUI, A GUI with Games in Mind.

Graphic User Interfaces (GUIs) are pratically a mandatory component in todays game and application development. I was hard pressed to find a GUI solution specifically designed with GAMES in mind. I tried many GUI Libs and Plugins, often finding myself in a situation that required significant modification or re-invention. Thus, was born Multi-Application User Interface (MAUI) and I took a completely different approach to its design, development, and integration.

Pointer, Gizmos, & Controls

MAUI has 3 primary UI Objects: Pointer, Gizmo, and Control.

  • The Pointer is a Collision Object that is controlled by a User via Input Device (Keyboard, Mouse, Joystick, etc). MAUI decouples control of the Pointer directly from the mouse allowing it to be controlled other devices to include the keyboard.
  • A Gizmo is a Collision Object that interacts with the Pointer executing Scripts based on this interaction. By definition, a Gizmo is a mechanical device or part whose name is unknown. In MAUI, a Gizmo has no specific mechanical operation (Behavior) until assigned and a Gizmo can be assigned any Behavior.
  • A Control is I/O Device Input (Key, Button, Axis) that executes Scripts based on input interaction. Like Gizmos, Controls can be assigned any Behavior.

Both Pointer and Gizmo Collision Objects are coupled to a Display Object (2D Image/3D Sprite or 3D Mesh). MAUI provides a separate Display Object for each Event State and switches between these Display Objects based on Transitions.

Event-Driven Finite State Machine (FSM) Model

MAUI implements a Finite State Machine model composed of a finite number of states, transitions between those states, and actions. States are determined by Events. An Event is a state change based on Pointer/Gizmo collision detection, Control Input Detection, and Event Flags. These interactions are the basis for many types of Events in MAUI. A Gizmo can execute a Script (Action) with each Event State. MAUIs design revolves around Gizmo and Control Events.

Scripted Behaviors, Styles, Themes, & Transitions

In most GUI's the mechanical operation of a Gadget (ie: Button, Slider, etc) is hardcoded. In MAUI, this functionality is scripted and referred to as Behaviors. Behaviors define the logic for handling interactions, event states for Gizmos and Controls. Games can require Gizmos with unusual Behaviors. Scriptable Behaviors allows for many types of traditional and non-traditional Gizmos to be created.

Behaviors can also be scripted to use two or more Gizmos to operate as a Composite Gizmo such as a Dropdown Box. These types of Behaviors rely on MAUI's Gizmo Family Linking System in which Parent|Child|Sibling relationships are automatically established between Gizmos during creation. In the Parent-Child relationship, the Parent usually influences the Child. Gizmos that share the same Parent are Siblings. MAUI uses Family-Linking for both operational and performance purposes.

Games have very active GUIs complete with sound and animation. It was desired that MAUI support sound and animation during events and in between. Transitions define logic for effects executed in between Event Changes. They were originally intended to be used for audio/visual effects during the transition of one event to another, but, can be used other actions.

Styles define Font properties based on Gizmo Event States and Themes define Border Images and Lines based on Gizmo Event States. Both Styles and Themes can use Script for visual effect fonts and borders are drawn.

After careful consideration, I elected LUA Script and Barnki's LUA Plugin for the Scripting solution for MAUI. MAUI also provides a simple preprocessor (batch text replacement) to process LUA Script.

Bitmap Fonts, Image-based Border Themes, and SoundFX

MAUI supports Bitmap Fonts, Image-based Border Themes, and SoundFX.

MAUI Bitmap Font system is based on Craig Chipperfield's Bitmap Font Tutorial. The .PNG format is the recommended file format for Bitmap Fonts although any image format supported by DBPro can be used.

MAUIs Image-based Border Theme uses built-in drawing functions and image sets and MAUI XML Theme Tag provides attributes for all edges and corners.

MAUI BgSound Tag and Scripting makes it easy to apply sound effects to Gizmos based on Events and Transitions.

XML-based file format for import/export.

Inspired by HTML. I elected to use XML for the MAUI's data format.

FREE, Open Source, and written in DarkBASIC Professional.

The DarkBASIC Professional Source can be extended.

previous next
Copyright 2009 F.L.Taylor.