To CEGUI or not to CEGUI

Started by
15 comments, last by Frank Taylor 12 years, 9 months ago

[quote name='NineYearCycle' timestamp='1311330508' post='4838837']
It has been a while since I used CEGUI but at the time I found it to be truly awful and so bad that I've never even tried to go back to it since.


Perhaps you could elaborate on your specific issues with it so we can improve these areas please?

btw: As for libRocket, I think HTML is not the greatest choice for game UIs, it's a page-based format, not a screen format. You get all the cons of Flash/Scaleform with virtually no decent authoring tools (especially since libRocket has some special important CSS attributes). This of course isn't a problem with libRocket but with the whole concept of using HTML for game UI.
[/quote]

Specific issues would be with from experience almost 5 years ago :) but ok, at the time it was the amount of boilerplate code, the raw nature of the signal/slot schema (i.e; no helpful abstractions/wrappers), the already mentioned documentation, setting up the styles and overloads for them was also a pain at the time, back then there wasn't much of a GUI editor either so everything we did was done by hand editing xml files.

As for LibRocket, its simple to use which means you get going right away, you might hit issues later on but that's really an issue caused by attempting to use it for very complex GUIs and in all the games I've worked on that hasn't ever been an issue. As for page vs screen, that's almost a semantic argument. It allows for sub-windows, links to other pages (as you'd expect from HTML), scrolling/movable windows etc, beyond that and you should be looking into more fully fledged GUI systems like QT, wxWidgets and maybe even CEGUI.

My apologies if CEGUI has improved drastically (in the last 5 years) but given the comments from others above I'm not inclined to believe that it has. Changed, undoubtedly, of course but the same issues of up front complexity have been put forward by others, the steep learning curve, the editor still having issues, the doc's being almost unusable... this is all stuff we mentioned to the team 5 years ago.

Andy

"Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile"

"Life is short, [the] craft long, opportunity fleeting, experiment treacherous, judgement difficult."

Advertisement

You probably mean Window and WindowRenderer hierarchies and I must agree on that point. This is definitely an area to improve. Other than that I don't recall parallel inheritance in CEGUI.

CrazyEddie is doing some research and we might move to a slightly different paradigm in 0.9, we want to have widget behaviors to allow easy creation of very specific widgets. To move away from the old school consistent GUI.

[quote name='NineYearCycle' timestamp='1311334490' post='4838855']
Specific issues would be with from experience almost 5 years ago :) but ok, at the time it was the amount of boilerplate code, the raw nature of the signal/slot schema (i.e; no helpful abstractions/wrappers), the already mentioned documentation, setting up the styles and overloads for them was also a pain at the time, back then there wasn't much of a GUI editor either so everything we did was done by hand editing xml files.

CEGUI has changed a lot in these 5 years, styles/skins are done completely differently now (falagard skinning system - very powerful but desperately needs visual tool), as I pointed out above, we are working on tools - that is IMO the biggest downside to something like CEGUI, it isn't easy to prototype with and it isn't easy for artists to grasp, that should change quite soon :-) I will reiterate that I think the documentation is not perfect but is solid, dunno how it looked like 5 years back. Sure there are areas to improve and we welcome any effort to do so, our time isn't free/limitless...

https://www.ohloh.net/p/CEGUI


As for LibRocket, its simple to use which means you get going right away, you might hit issues later on but that's really an issue caused by attempting to use it for very complex GUIs and in all the games I've worked on that hasn't ever been an issue. As for page vs screen, that's almost a semantic argument. It allows for sub-windows, links to other pages (as you'd expect from HTML), scrolling/movable windows etc, beyond that
and you should be looking into more fully fledged GUI systems like QT, wxWidgets and maybe even CEGUI.

To each their own, I admit CEGUI isn't the greatest fit for very simple UIs. Most of the complexity fears come from the fact that CEGUI has a lot of dependencies. That is true but all of them are optional, it works in a lot of different environments and with a lot of packages but you don't have to use all of them.


My apologies if CEGUI has improved drastically (in the last 5 years) but given the comments from others above I'm not inclined to believe that it has. Changed, undoubtedly, of course but the same issues of up front complexity have been put forward by others, the steep learning curve, the editor still having issues, the doc's being almost unusable... this is all stuff we mentioned to the team 5 years ago.

That's our biggest problem it seems, we have a lot of users, lots of projects but nobody seems to praise CEGUI, everybody just goes and hates it all over the internet. We aren't sure why this is happening to be honest but I understand that it can put someone off researching CEGUI, which is a shame IMO... Sure, the whole pipeline is complex but also powerful. It allows UI seen in Torchlight, World of Battles and other titles (http://www.cegui.org...cts_Using_CEGUI). Also, people claiming that it's complex are often ones who fear multiple DLLs, linking and compiling in general. You can't have a clean API without some verbosity.
Those tools in the video look great. I had no idea CEGUI was used in Torchlight, thats reassuring.

Interested in Fractals? Check out my App, Fractal Scout, free on the Google Play store.


If you're looking for a much easier to use and regularly updated UI then I'de recommend LibRocket far far far higher than CEGUI.


I didn't realize libRocket was still being regularly updated. There isn't much listed on their website. I had looked into it briefly, and ruled it out due to the use of HTML. I had assumed the use of HTML for the UI would mean the displayed UI would be static and hard to change on the fly. But now that I think about it, it probably isn't all that different from the XML layout files used by CEGUI. I'll have to give it another look.

I wish there was a comparison between libRocket and CEGUI somewhere. Without any experience in using UI libraries, I feel like my decision will boil down to a comparison of features and majority opinions from other people. As Nanoha said, the fact that a published game uses CEGUI makes it feel like the safer option, but that is mostly a lack of knowledge about the benefits of the alternatives.
Nairou,

You are not reinventing the wheel... you are learning.
You can learn a lot from a GUI, if you consider the possibility that the entire 3D Game-world is a Graphical User Interface. In developing a GUI you will discover techniques for event handling, messaging, and process optimization for other game entities and game mechanics. GUIs are built entirely on the concept of user interactivity. Interactivity is what separates our Artform from the other passive entertainment media/mediums. Dependent on your game, you may require special types of Widgets not found or adaptable in a pre-made GUI Lib. Somewhere in creating your interactive gameworld, you will duplicate methods that exist within a GUI.

I didn't realize libRocket was still being regularly updated. There isn't much listed on their website. I had looked into it briefly, and ruled it out due to the use of HTML. I had assumed the use of HTML for the UI would mean the displayed UI would be static and hard to change on the fly. But now that I think about it, it probably isn't all that different from the XML layout files used by CEGUI. I'll have to give it another look.

I wish there was a comparison between libRocket and CEGUI somewhere. Without any experience in using UI libraries, I feel like my decision will boil down to a comparison of features and majority opinions from other people. As Nanoha said, the fact that a published game uses CEGUI makes it feel like the safer option, but that is mostly a lack of knowledge about the benefits of the alternatives.

Sadly no comparison AFAIK. Someone should do one ;-) And yeah, CEGUI is very old-school proven kind of GUI system. If cross platform support is not an issue for you, you might also look into Garshasp (on Ogre forum), they used Flash through ActiveX.


You are not reinventing the wheel... you are learning.

While learning sure is great I generally STRONGLY prefer getting things done. Reinventing everything will get you nowhere. You could also write your own graphics library (because OGL and DX are not good enough!), write your own kernel, design your own CPU architecture, etc...

I wasted too many years working on an OpenGL game engine before I realized using Ogre3D saves you so much headache. It's just what beginners do (I think), they want to write their own thing! More experienced programmers reuse where possible.

Even if you stumble upon something in open source library XY that really bugs you, you can just create a patch and get it upstream or even fork it. It still is much less time consuming than rolling your own.

Still, to each their own :-) Also, from what I've read in T e c h l o r d design material, we might be doing something remotely similar for CEGUI 0.9
Also, from what I've read in T e c h l o r d design material, we might be doing something remotely similar for CEGUI 0.9 [/quote]
:P Awesome!

BTW, I am an advocate for CEGUI and recommend it above all others if one has absolutely no desire to create their own. I have motivated others to start projects like this one. Many debate over writing games, not game engines, but, I would encourage folks to write GUIs instead.

This topic is closed to new replies.

Advertisement