Wednesday, October 15, 2014

Showcase : MonoGUI

MonoGUI is a GUI Library for the MonoGame framework that I've been working on for the past year.  The goal was to create an easy to use GUI system that was easy to skin.  I wanted the framework to be used in any game, and to give the developer as much flexibility as possible with how it looked.  On top of this, I wanted to do something new, and give the developer the tools to make the UI look as juicy as possible.  Below is a short video showing the progress made so far.


Seen In The Demo
-Ability to switch between 8 different skins
-Skinned animations when visual state (hovering, pressed) changes (size, position and color)
-Skinned animations on any event fires (OnClick, etc)
-Various different widget types
-Adaptability to different screen sizes

Finished but not Visually Evident in the Demo
-Matrix SpriteBatching:
    This is an extension to the normal XNA Spritebatch, that allows you to push transformation
    matrices without needing a new draw call.  It also handles keeping track of different variables in
    Begin calls as well as clipping rectangles.
-Spritesheet Animations:
    Every Widget is created from defined texture regions, and definitions as to how to respond to
    resizing.  Any source texture box can instead be a spritesheet definition, allowing the skinner to
    include animated textures.  Blinking buttons? flowing gradiants? It's all possible!
-Gradient-Defined Progress Bars:
    Define how a progress bar fills by using a gradient image.  The gradient will then use a fill texture
    to fill from black to white, based on the fill percentage.  These gradients can also be defined as
    animated textures, allowing you to have wavy, bubbly progress bars to use as health bars, or
    whatever you want!

Features to Come
Cross Platform Facade:
    MonoGUI already supports some, but will eventually support more commonly-used Platform
    Specific implementations of features such as In App Purchases, saving data and logging.  This will
    allow the game writer to minimize the amount of platform specific code in their game.
Skin-Defined Sound Effects:
    Allows the skinner to define sound effects to play on various widget events.
Visual Skin Editor:
    A small program (written in MonoGUI!) that allows easy visual editing of Skins.


I'm very excited to start releasing this open source project to the public, and see what cool things are done with it!  It should be ready for its initial release within the next few weeks.