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
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
Source: google.com