BananaBread is a 3D first person shooter that runs on the web. It takes the Cube 2: Sauerbraten engine, which is written in C++ and OpenGL, and compiles it using Emscripten into JavaScript and WebGL so that it can run in modern browsers using standards-based web APIs and without the need for plugins.

Mozilla (makers of Firefox) created this project for several reasons. First, to serve as a testcase for running a demanding 3D game in browsers: Having a working testcase lets us try out new browser features and to profile performance in order to make browsers faster. Another goal is to prove that games of this nature can run in JavaScript and WebGL, which many people are skeptical about. Finally, all the code in this project is open (and practically all the art assets), so others can learn from this effort and use this code to create their own browser games.

To learn more about how BananaBread was done, see these blogposts:

Gameplay Instructions


BananaBread Repo:

Emscripten Repo:

Martin Best
BananaBread and Emscripten Development
Loading screen: yd
And a huge thank you to the Cube 2: Sauerbraten devs who wrote the original game that we ported
Wouter "Aardappel" van Oortmerssen
Lee "eihrul" Salzman
Mike "Gilt" Dysart
Robert "baby-rabbit" Pointon
Quinton "quin" Reeves

Please note that up to date versions of modern browers are needed to run this demo, and it will not launch if it detects crucial features are missing.

See the project FAQ (specifically the technical part) for solutions to common problems.

Known issues: