Wartbed:GUI evaluation

From Dark Omen Wiki

Jump to: navigation, search
This page contains temporary information. It does not reflect current or future WARTBED state

Contents

Currently evaluated GUI frameworks

GUI systems are relatively complex beasts (which I know having designed a few!) and are good candidates for 3rd party libraries. Requirements are

  • Sufficiently feature-complete (no half-complete or starting frameworks)
  • Stable
  • Maintained
  • OGRE-integrated

Note that the screenshots below are not necessarily representative of the appearance of the frameworks since they all support skinning.

CEGUI

http://www.cegui.org.uk/wiki/index.php/Main_Page
4.jpg
CEGUI is the default GUI framework under OGRE. I had considerable problems getting it to work, though it was reasonably simple once everything was described (a situation of files all over the place without a meaningfuil structure in OGRE - would need some cleaning up). Also, the available support and guides are scarce. It is also rather clumsy to initialise, if perhaps not to work with.

  • It has bindings for Irrlicht and OpenSceneGraph so it might be considered a relatively inter-API-portable framework.
  • CEGUI is very oriented toward defining widgets in XML files. Changing widgets programmatically is done by setting their properties through a messaging system. This message system is clunky and poorly documented.
  • The CEGUI documentation (both Wiki and source-generated API documentation) is insufficient, terse and often unhelpful.
  • CEGUI is by far the most powerful GUI library with the most supported widgets.

QuickGUI

http://www.ogre3d.org/wiki/index.php/QuickGUI
qgui_9_3.jpg
Made for OGRE, inspired by BetGUI and CEGUI.

  • QuickGUI has somewhat overly complicated initial set-up syntax requirements.
  • QuickGUI is quite easy to work with and neither terse not verbose
  • Widgets are widgets and communicated with through methods, not messages. This is object-oriented but also may entail plenty of casting depending on coding style.
  • The widgets are more limited in automagic functionality than CEGUI (f.i. no 4-state button widget) but are easy to work with programatically on events.
  • QuickGUI seems not to support ImageSet-like bitmap abstractions, wherefore all icons must be in unique files?
  • QuickGUI has virtually no documentation.
  • There are quirks: events must be methods in a class rather than free functions. The even handler class must be polymorphic (at least one virtual method) dur to internal dynamic_casts under the QuickGUI hood. QuickGUI seems less mature and robustly written than CEGUI.

MyGUI

http://www.ohloh.net/p/my-gui
1702687_1024x768.png
Last updated in June 2008. MyGUI is a sleek and sufficiently feature-complete framework that is well prepared for integration into OGRE. However, it myst be compiled from source (which is a one-time occurrence, though) and depends in turn on FreeType2, which also must be compiled. This meant initial only hassle, but since the current version seems to be written to a pre-Shoggoth OGRE version I've yet to get it to compile (some invalid signatures and a bunch of unresolved externals).

OpenGUI

http://opengui.rightbracket.com/
Screenshots
OpenGUI seems like a nice GUI library. However, it seems not to be updated anymore (last official optade was in 2007), which might mean severe integration issues with OGRE.

GUIs to be checked and perhaps evalutated

  • BetaGUI
  • Navi - uses the Gecko engine to render HTML and XML into OGRE. Very powerful (supports JavaScript and AJAX, but might be slow and very, very overkill. Also not necessarily easier to design game interfaces in HTML)

Conclusions

CEGUI and QuickGUI are as of yet seemingly the two best GUI options for OGRE.

CEGUI seems the most well-designed framework, however not the easiest to work with due to monolithic and kitchen-sink design and obtuse messaging system. In initial configuration and event bindings QuickGUI feels somewhat messier, and this can be suspected to permeate the entire framework. Function-identical code is principally of identlical length between them (except that CEGUI's evaluation code only reacts to the left mouse button). CEGUI binds events to functions rather than methods, which is greatly to its advantage as if simplifies syntax without in practice losing flexibility. QuickGUI's widgets are all dragabble by default. If this is an advantage or not I haven't decided yet.

I will do some practical tests to see which is easier to use in a realistic WARTBED context, and if the features of CEGUI are needed.

Personal tools
communication