3 min read

Feature: Muzzy Lane Moves Hardcore To The Web

Today's Gamasutra feature looks at how Muzzy Lane built its fully 3D in-browser game engine and the specific challenges it tackled, from rendering to ba
With browsers capable of supporting higher quality 3D objects -- and higher-quality games -- many developers are looking at ways to flex their muscle within the web window. For Making History II: The War of the World, Muzzy Lane Software is using Sandstone, its 3D game engine for fully web-based games that supports multiplayer and social networking features, too. Today's Gamasutra feature looks at how Muzzy Lane handled its specific engineering challenges -- rendering 3D games in-browser, approaching backend services and handling content distribution. When it comes to rendering, Muzzy Lane's Matt Seegmiller explains: As it turned out, it was not all that difficult to render hardware accelerated 3D graphics in a browser window. To do so, the basic challenge (in Windows) that needs to be overcome is getting a handle to a window. (This is similar in Mac OS X or in Linux.) Most 3D-in-the-browser solutions currently solve this issue by writing a browser plug-in. However, there are two drawbacks to this. First, many people distrust custom browser plug-ins (Flash and Java plug-ins being the exception.) Second, each browser plug-in is very browser specific. Even the Mozilla plug-in architecture, that many browsers support, still often needs to be slightly tweaked for each individual browser. This eventually becomes a maintenance nightmare. Instead, the team created a Java extension -- even though Java applets generally run in a secure sandbox that makes it challenging to run the native code necessary for hardware acceleration: The way around this is to create a Java extension which is installed on the client machine. The classes in the Java extension are assumed to be trusted because the end user installed them. These classes can then load and run native code without issue. Once the Sandstone Player is installed, including the Java extension, an applet class from this extension is placed on a page. This applet can download whatever content it needs and save it to disk. Once this content is downloaded, a call is made to C++ from Java which loads C++ code that was just downloaded, essentially loading the game engine. The engine is told which downloaded package to run, whether to connect to a server, etc. Most importantly, it is given a handle to the parent window which was created by the applet in Java and accessed from C++. This gives the engine a place to render, which is actually on the web page in the browser. The full feature goes further in-depth on Muzzy Lane's bold, fascinating solution, from rendering to distribution.

Latest Jobs


Lakewood, Colorado
Release Manager


Remote OR Amsterdam, Netherlands
Network Programmer

McKinney, Texas
Associate Game Producer

Remedy Entertainment

Helsinki Metropolitan Area, Finland
Rigging Artist
More Jobs   


Register for a
Subscribe to
Follow us

Game Developer Account

Game Developer Newsletter


Register for a

Game Developer Account

Gain full access to resources (events, white paper, webinars, reports, etc)
Single sign-on to all Informa products

Subscribe to

Game Developer Newsletter

Get daily Game Developer top stories every morning straight into your inbox

Follow us


Follow us @gamedevdotcom to stay up-to-date with the latest news & insider information about events & more