Hacker News new | ask | show | jobs
by marti 4056 days ago
Many game developers seem to build their own UI libraries from scratch. Wouldn't it make sense to use Chromium Embedded Framework[0] or Awesomium[1] instead? I haven't used them myself (yet), but writing a UI in HTML+CSS sounds a lot easier than learning a new API.

[0] https://bitbucket.org/chromiumembedded/cef [1] http://www.awesomium.com

4 comments

Writing UIs in HTML+CSS is only easy for people who know it already, to be honest. It's not a great UI layer.

I've been using it for almost 20 years now, and I'm still easily confused by the completely unintuitive interactions of CSS parameters like floats and clears, position:relative, box model nuances, etc. (I'm sure that someone is now itching to chime in and tell me I'm not a "real web developer", sort of like the argument on HN the other day about whether "real developers" are allowed to write <br/> ...)

Game development teams don't tend to include CSS wizards. Writing a new API can be a reasonable choice given the expertise available... Not to mention the substantial runtime overhead of loading a complete browser just to display some UI widgets.

You are somewhat right in that HTML and CSS heavily inspired what kiUi became. But there are two major concerns that are not adressed by your solution :

- Embedding a whole browser in your app just to display a few widgets is not my definition of "lightweight"

- Often coding UI in native code (C++) makes a lot more sense, integrate with exiting code in a much cleaner way

Game developpers would much less tend to build their own libraries from scratch, if there was at least one that satisfied all of these 'basic' requirements : lightweight, skinnable, auto-layout

I agree, embedding a browser doesn't seem lightweight at all. What it does give, however, is a common and comprehensive framework for laying out and styling your UI elements. Every web developer can now be a game UI designer.

Some of the benefits I see with HTML+CSS(+JS) based UI:

  * Comprehensive feature set
  * Easy prototyping
  * Easy modding
  * No recompilation required
  * Web full of documentation & examples
  * Common skill for developers/designers
The main disadvantage is probably the performance hit of having a full-blown browser engine in your game, but it seems to work OK for AAA games. I believe Anno 2070 uses Awesomium for some of its content: http://www.posidyn.com/games/anno2070/anno2070-09.jpg
HTML is not good for UI.