Looking For Inspiration: A Graphical User Interface Library

Started by
12 comments, last by Sneftel 16 years, 11 months ago
Hey everyone, For my final year project at university i developed a cross platform GUI library for 2D and 3D applications. Now although it only came with basic features (due to time constraints) it was a working solution. Now that i have all my coursework in i am looking to either extend that library to bring it up to date with both features and technologies, or write a new one for DirectX applications. What i would like from you is some answers/opinions on the following: - What GUI library or otherwise do you use in your projects? - What is good and bad about that solution? - What would you like to see in the library i intend to write? - What would you consider next-gen in terms of GUI? Alot of ground has already been covered by my final year project and i want to learn more about the implementation of GUIs. There appear to be alot of enquires into GUIs on these boards of late so i hope you can contribute to this discussion. Thanks, Dave
Advertisement
Bump!
Hi.

I guess that for us to be able to correctly answer your questions, you should list the features of your GUI library and explain the core principles of it.

For my project I am developing my own GUI because there are some things that I don't want to develop myself for a game engine but some other things interest me. GUI is one area I'm interested in and I enjoy programming one myself (but I would hate to develop a full graphics engine myself...).

Anyway, I am using the Ogre3D engine for rendering and there are several GUI solutions available for it (check the Ogre3D forums for informations about their features):
- CEGUI (well-known, even in non-Ogre3D community, as it can be adapted to any renderer)
- BetaGUI
- MyGUI
- SimpleGUI
- OpenGUI (http://opengui.rightbracket.com/), which could also be adapted to any renderer)

I don't know them very well but here is what I have heard about them:
- CeGUI is a full-blown GUI system but it can be too much for only a game GUI and some users are overwhelmed by its complexity
- all of them (I think) lack of tools to design layouts (the GUI apparence) and so, it's very complex/difficult to have its own layout

For my own GUI, I will only create widgets as I need them in the course of my project.

Anyway, here are some features I would like to have in mine:
- Possibility to render the GUI anywhere and still be able to interact with it (e.g. in Doom3 3D panel had GUI such as buttons and it was possible to click on them)
- Flexibility (plugin system for new widgets)
- Ease of use (GUI to create GUIs, Squirrel scripting for the events)
- Simplicity (no need to have hundreds of widgets...)

Hope it helps
Lead programmer of the (slowly evolving) syBR game engine --- http://sybr.sourceforge.net
Take a look at Microsoft's XAML format for a good suggestion for the presentation description format of the GUI. It's XML geared towards application UIs.

Skizz
Hi,

Unlike you two guys, I don't enjoy GUI programming and that's why I'm looking for a ready out-of-the-shelf solution. I kind of prefer to put my energy and time into other parts, but a cute and handy GUI can really make the difference, especially for end users. What I'm particulary looking for in a GUI package is the look (and after all GUIs are all about looks) and ease of use. Something as easy as deriving from a Button class and setting the according event handlers to define the desired actions. Support for a wide range of customizable widgets is a big plus. That's pretty much it.

Good luck.
I think one of the most important aspects of a GUI is tools.

If you have ever used Flash you know what I'm talking about. Most designers and programmers love the way flash works regarding UIs, you can whip out a full menu in an hour, so I think it would be great to have a GUI for C/C++/C# with a nice editor where you could create windows like in flash, say draw a rectangle with rounded sides, define the onClicked state, onHover state, for buttonsetc.

Perhaps instead of drawing stuff on the editor you could simplify it and load images for the states of buttons, windows, etc(that way you don't have to deal with drawing tools). So you if you want to make a button you would click a "create button" then you would customize the different states by loading images created in photoshop for example.

There are a few GUIs out there that claim to have an editor but 99.99999% of them don't have editors or if they do it's VERY primitive and you might as well code the thing instead of messing with the editor.

You could export the GUIs to an XML file or use any other standard file format you might develop.

On a side note, I've seen a few libs out there that link SWF files generated by flash to an exe, so you can for example make your game in DX,OGL, whatever, but using a flash menu for the main menu. Sadly most are buggy, not complete and it has the overhead of having to deal with flash files.

[Edited by - ndatxcod on May 8, 2007 7:32:13 AM]
My current GUI is pretty primitive. It can be downloaded here. I am rewriting the rendering system at the moment so that you can specify a controls appearance like you do in GDI+.

The interaction framework is all in place. I think it is also a little bit overcomplicated in terms of the current rendering.

Any comments are welcome.

Dave
Hi.

I quickly looked at the API documentation and found it pretty clear, that's a good point. The renderer interface is the thing to use to allow anyone to use your GUI with its own graphics renderer. I didn't look very far so I can't tell you how good it is and besides... who knows if my opinion/advices are good to take in account :)

One thing that jumped at my face was the license - GPL - which could scare some users who find it too restrictive.

Just my 2 cents,

Seb
Lead programmer of the (slowly evolving) syBR game engine --- http://sybr.sourceforge.net
Quote:Original post by sebarnolds
Hi.

I quickly looked at the API documentation and found it pretty clear, that's a good point. The renderer interface is the thing to use to allow anyone to use your GUI with its own graphics renderer. I didn't look very far so I can't tell you how good it is and besides... who knows if my opinion/advices are good to take in account :)

One thing that jumped at my face was the license - GPL - which could scare some users who find it too restrictive.

Just my 2 cents,

Seb


Thanks for your comments. That reminds me, the documentation needs to be updated. Yes, the renderer interface allowes the rendering to be rigged up to other engines too.
I found the Quill GUI editor (http://www.innoscript.org/content/view/40/38/). It's a decent GUI layout tool, that exports to an XML format. It would probably have to be customized on an per application basis.

Check out Super Play, the SNES inspired Game Engine: http://www.superplay.info

This topic is closed to new replies.

Advertisement