Google managed to port quake 2 using html 5 to play in supported browsers, which include Chrome and Safari.

In the port, we use WebGL, the Canvas API, HTML 5 elements, the local storage API, and WebSockets to demonstrate the possibilities of pure web applications in modern browsers such as Safari and Chrome.

The port is based on the Jake2 project, compiled to Javascript using the Google Web Toolkit (GWT). Jake 2 is a Java port of the original Quake II source code, which was open sourced by id software.

To make the Jake 2 code work with GWT, we have

* Created a new WebGL based renderer
* Ported the network layer for multiplayer games from UDP to the WebSocket API
* Made all resource loading calls asynchronous
* Created a GWT implementation of Java nio buffers based on WebGL arrays (to be ported to ECMAScript Typed Arrays)
* Implemented a simple file system emulation for saving games and preferences using the Web Storage API