Ian T. Jacobsen edited this page Apr 13, 2014 · 3 revisions
Clone this wiki locally


This page is intended to be a proposal. It describes the technical details of implementing CEF as well as a "sales pitch" for why we should do it. This is not a tutorial on how to use it to code the GUI.

Chromium Embedded Framework, hereby abbreviated as CEF, is a library licensed under the New BSD License. CEF provides a full web browser implementation that is customizable, and can be embedded into any application.

OpenRA can benefit from using CEF, because it renders onto a framebuffer as if it was the window in your browser, which means that OpenRA can use all the technologies and tricks that have been used to make all websites, and use it for its own UI. This means resources from over a decade of people trying to set up UIs. Along with that, the run-time scripts (Currently Lua) could potentially be powered by the V8 Javascript engine.

CEF does insist on running in multiple threads, which is where the problems come.

Chromium Embedded Framework Google Code website: http://code.google.com/p/chromiumembedded/

New BSD License: http://opensource.org/licenses/BSD-3-Clause


What would OpenRA require CEF to be able to do?

  • Render the GUI (DONE)
  • Render unit and building icons (DONE)
  • Get information like the player's money, game time and power usage
  • Tell the game to start production, when the player clicks on an icon
  • Tell the game to pause, resume and quit


CEF is multi threaded. (TODO: Expand on this)


CEF has been implemented and does render itself and Building Icons. Current work can be found here - https://github.com/Smilex/OpenRA/tree/CEF