GUI system improvements


I’ve been reading the progress reports and I’ve been waiting to see more planned major features for the GUI system. Currently we are using CEF for our GUI system (after having used CEGUI in the past). I’ve also looked at a ton of other GUI libraries, all of them have some major flaws. I’ve even considered writing my own.

Here are the main features I’d like to see:

  • Automatic content scaling based on window size (and high DPI support), including font scaling
  • A GUI designer that can be used to build the GUI layouts. It should also be available easily bundled with a game to allow easy tweaks by users and modding.
  • All of the common widget types with support for adding custom ones
  • Drawing complex 2D shapes in the GUI (extra points for svg rendering)
  • It should be easy to customize the look and it should be easy to make GUIs that look modern, and “game ready”
  • Easy to use SDL events for input
  • Input can report if the GUI has focused element that consumed input (in order to allow unused input to be forwarded to the game).

Basically none of the GUI systems that I know of have these properties. That and the bunch of bugs and annoyances with CEGUI, are the reason I’m considering writing my own.

I haven’t yet tried to write code using bsf GUI but looking at the GUI sample and the editor, I can tell that many of the features I’d like are missing. So is there a timeframe when they might get added? I’m currently a bit intimidated by the bsf GUI system so I’m probably not going to be able to get these implemented myself. The biggest things missing aare the automatic scaling, and layout editor, the others are a bit smaller things that I could consider working on myself.


High DPI support is planned in the relatively near future, potentially also svg rendering. Auto-content scaling is also something I plan on adding, but not sure when.

Custom widgets are supported and general 2D drawing can be done through GUICanvas. GUI can be skinned with a custom look. You can check focus on GUI elements and use that to determine whether to process an input event (it’s done in the editor).

I’d like to have a visual GUI editor, but it’s unlikely this is happening soon. I don’t plan on adding any SDL integration.


Thanks for the info. I guess we’ll see if I have enough patience to not start on my own GUI library before the scaling gets done.