Sign in to follow this  
dave

Looking For Inspiration: A Graphical User Interface Library

Recommended Posts

dave    2187
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

Share this post


Link to post
Share on other sites
sebarnolds    168
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

Share this post


Link to post
Share on other sites
Skizz    794
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

Share this post


Link to post
Share on other sites
Ashkan    451
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.

Share this post


Link to post
Share on other sites
ndatxcod    100
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]

Share this post


Link to post
Share on other sites
dave    2187
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

Share this post


Link to post
Share on other sites
sebarnolds    168
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

Share this post


Link to post
Share on other sites
dave    2187
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.

Share this post


Link to post
Share on other sites
cdoty    733
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.

Share this post


Link to post
Share on other sites
DeadXorAlive    535
Hi, if you want some different view on GUI I highly recommended to watch the lecture about immediate mode GUI from molly rocket mentioned here . I found this inspirational myself, and even if you don't like the approach it may be worth to watch to think about the problems with retained mode GUI that are mentioned.

In short, immediate mode gui is characterized by a stateless, procedural interface where the whole gui is recreated every frame. Creation, logic and drawing can happen at a single point in the code which is supposed to make it easy to maintain, customize and integrate.

Share this post


Link to post
Share on other sites
Sneftel    1788
CEGUI was a pain in the rear end to get my head around, but now that I have it's very useful. The skinning system is ridiculously flexible and the execution model is reasonable. I would say that the most important thing for me is the skinning: I don't want to find out that your GUI system doesn't support some aspect of my desired look after having poured a lot of work into integrating it.

[Edited by - Sneftel on May 8, 2007 11:23:03 AM]

Share this post


Link to post
Share on other sites
ndatxcod    100
With CEGUI you pretty much have to design your engine/app around it, that is, it's a royal pain in the butt to try to integrate it into a project/engine that has already a renderer in place.

Share this post


Link to post
Share on other sites
Sneftel    1788
Quote:
Original post by ndatxcod
With CEGUI you pretty much have to design your engine/app around it, that is, it's a royal pain in the butt to try to integrate it into a project/engine that has already a renderer in place.

Say what? I've integrated CEGUI into three engines now, and never had any problem with it. All CEGUI wants from your app is a way to load textures and a way to draw quads. What did you find difficult about the integration?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this