I'm making a GUI API (in C++) for games which uses Allegro 5 as a backend. I looked at how GuiChan works and noticed that they intend for the user to override the paint event and do all the drawing yourself.

Since I felt that in general, there's a decent standard to how widgets behave, I have a static theme class in each widget class (static ButtonTheme buttonTheme; etc) and the parameters set in that theme are used to construct that widget (from there, the parameters can be changed individually for specific widgets). These sorts of things are: padding, font color, border color, is drawing border, back color, size, min / max size etc).

Where I also differ from GuiChan is in the fact that instead of default drawing being rectangles, the widgets have bitmap pointers and if they are NULL, it draws rectangles like GuiChan, if not, they are drawn with bitmaps: ex: button has default, hover, clicked. And if hover is not provided, the switch case will just use default for hover. Each theme has corresponding bitmaps. I also have bitmaps for focused and disabled.

The user can always choose to override the paint event and do it from scratch.

Is this a good idea or a terrible one to use themes and theming? Should I stay generic like GuiChan?

As game developers , which would you prefer, (no themes, partial themes, partial themes + bitmaps)?


  • 1
    \$\begingroup\$ I think you should change "user" to "developer" to disambiguate it. \$\endgroup\$ Dec 9, 2010 at 0:30
  • \$\begingroup\$ Ah - I hadn't realized there was a way to make comments on the original question. -1 for usability :) Moved my question here... Do you mean for end users (players) to override the look, or for developer userd to use themes to customize the content? \$\endgroup\$
    – Tim Holt
    Dec 9, 2010 at 4:46
  • \$\begingroup\$ He definitely means developer and not the players. Players are not going to override events or functions. \$\endgroup\$ Dec 9, 2010 at 5:00
  • \$\begingroup\$ Milo said "Sorry I implicitly meant developers" in Tim's deleted answer-that-was-supposed-to-be-a-comment. \$\endgroup\$
    – Tetrad
    Dec 9, 2010 at 6:31
  • \$\begingroup\$ Yes, allow theming. Use a css type of system to easily allow this. \$\endgroup\$
    – user441521
    May 29, 2015 at 19:41

2 Answers 2


I'd definitely let developers do themes and override things if it doesn't add excessive burden to the average developer, nor decrease your chances of releasing.

Assume that most of your user base will just use the stock methods at first, but the rest will love the fact they can do it different. Or once they've got it working with the stock methods, they'll customize later.


It doesn't seem to make much difference to me - the developer is going to need to be able to customise what gets drawn either way, so whether those customisations are grouped into a theme or not makes little difference. If you're talking about supplying your own themes then that's great but any developer who wants to release the game with the GUI visible is likely to replace your theme anyway.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .