Game Development Reference
In-Depth Information
Chapter 10
Moving Tools to the Cloud: Control,
Configure, Monitor, and View Your
Game with WebSocket
John McCutchan
Your engine needs great tools because they increase developer and artist productivity. Engine tools will automate
tasks such as baking assets or regression testing, but they're not just for automation; they are also companion
applications that allow you to control, configure, monitor, and view your engine.
At the highest level, engine tools can be split into two categories: tools that communicate directly with an engine
while it is running, and tools that run independent of the engine. Examples of the latter include mesh bakers and
graphics shader compilers. Tools that communicate with the engine are companion applications running along
or inside the game engine. A dynamic graph showing the amount of memory presently allocated, a Quake-style
command console, and property panels for configuring game objects are examples of companion tools. This chapter
focuses on companion tools.
Often embedded inside the running game, companion tools have the benefits of being synchronized and in
control of the game engine, but they suffer from a few problems. First of all, they require a GUI framework that can run
inside the game. Off-the-shelf GUI frameworks exist, but they often come with large dependencies or inappropriate
licenses, or they conflict with the game itself. Second, because companion tools run as part of the engine, there can be
long iteration times. A minor change to the tool, such as adding a toggle button, requires that the game be recompiled,
relinked, and restarted, incurring the cost of reloading all assets needed to run it. A third problem with companion
tools is that console development kits do not have a mouse or keyboard, relegating the UI to harder-to-use input
methods like analog sticks, D-pads, and onscreen keyboards. Finally, by coupling the tools to the game instance itself,
a developer must be sitting next to the development hardware in order to use them.
Moving these tools out of the game engine and into web applications solves or avoids these problems and gives
you a great platform for developing tools. Browsers are ideal for creating rich GUIs with very fast iteration times.
Because the tools are browser applications, they are remotely accessible. They're also easy to distribute because
they contain no dependencies other than the browser itself. More important, building the tools as web applications
that communicate over the network with an instance of the engine requires a clear separation between tools and the
game, with the benefit of cleaner design and a more modular code base.
Web applications are generally considered to be synonymous with “the cloud,” which means that both they and
the data they use reside on multiple remote servers accessible via a web browser.
Figure 10-1 shows the separation between the tools and the game communicating via network messages.
 
Search WWH ::




Custom Search