VERY IMPORTANT! A version of this review was originally published in Game Developer Magazine at the end of 2004. The observations about certain parts of the Torque Game Engine I make in this review have been addressed to varying degrees which include new releases of the game engine, new patches, another book dedicated to Torque, and various documentation projects (Torque Developer Network wiki) currently under way at GarageGames. Pricing may have changed but this review does not reflect them.

When Dynamix, developer of the Tribes franchise, imploded a few years ago, several employees carried on the vision of improving the technology that they had developed over the years. Unlike most displaced developers they did not simply wander off to look for jobs with yet another game company but instead formed a new middleware company, Garage Games, licensing the source code to the Tribes 2 game engine from the now-defunct Dynamix, marketing it under the name Torque Game Engine (TGE): a viable—and incredibly affordable—alternative for small, independent development houses.

WHAT DO YOU GET

TGE is a true game engine in the same market as the Quake and Unreal engines containing several individual components; graphics, audio, networking, input, scripting & tools. There is minimal A.I. support and the second weakest area is physics. As a TGE licensee you receive access to the source code repository via the Open Source concurrent version system (CVS). The latest release is always available along with previous versions, allowing licensees to review recent changes that may affect their development schedule.

TGE graphics makes use of a fixed function pipeline that is capable of executing on 32-bit Microsoft Windows, Mac OSX, and certain Linux distributions. TGE makes use of OpenGL where possible but falls back to DirectX 7 for Win32 platforms if a compliant Win32 OpenGL implementation is unavailable for the particular brand of graphics card.

The audio component is a capable though vanilla implementation, offering ordinary stereo and 3D positional audio capability handled through the OpenAL API. Open source OGG format is used for large audio files. Other than OpenGL and OpenAL all other components of the engine are proprietary to Garage Games.

TGE was developed to handle first-person shooters, so there’s quite a bit of that FPS legacy still apparent, e.g. in the definition of default cameras and player input. Garage Games has been working hard to move the engine forward to show that it can create more than just FPS games by creating & co-publishing several new titles – Think Tanks, Orbz & Marble Blast, plus various puzzle games. In development are role-playing games, puzzlers, real-time strategy, and several MMORPGs. Garage Games is also keen to promote TGE add-ons by third-party developers, some of which include an RTS module and Torque Retro for creating 2D games.

SCRIPTING

TorqueScript, TGE’s scripting language, resembles a form of type-less C++ (though only because it uses curly-braces for code blocks and the double-colon (::) to denote member functions) with most of what you would expect from a modern object-oriented scripting language; local variables, functions, inheritance, and function overloading. (To me it looks like a slightly backward version of JavaScript.) TorqueScript is interpreted, the compiler, as each file is loaded – a sort of compile-on-demand – reads in a raw text file, tokenizes it, generating a new compiled version, which the game then executes.

For games ready to be distributed as final products the original script source code can be removed, leaving only the unintelligible tokenized form which can be further obscured by packing in a single resource file using a third-party tool, or altering the way the game engine reads and writes the files by changing the C++ source.

The learning curve for programmers & designers familiar with a modern OOP language such as Java or Python is almost non-existent.

The script language is fast enough for most game requirements, certainly as fast as JavaScript and bear in mind that most of what takes place in script is manipulation and testing of a few variables before placing calls in to a powerful C++ game engine. TorqueScript won’t win any speed awards for fluid dynamics simulations but that isn’t the technological target. The script language is extensible via C++, so a project requiring extra features or a speed boost can make use of a C++ solution which I found to be pretty painless when required to do so.

DYNAMICS

Other than the almost non-existent A.I. of the game engine, the weakest area of TGE is physics. Garage Games have put out a capable engine but the physics are rudimentary, with vehicles being the most developed, everything else is taken care of with basic collisions, gravity and friction. Anything beyond would require a dedicated physics engine such as Havok or Open Dynamics Engine (ODE), the latter I integrated after three weeks of grunt work.

NETWORKING

TGE’s networking component is the biggest prize in the package. It is capable of working through firewalls and NAT, using very few ports to connect to a server, and requiring opening no ports for incoming connections to the client. It’s a robust, proven technology designed for high-speed action games in a high-latency, low-bandwidth environment. The server side of networking, besides offering a mostly transparent experience to the developer, handles lobby services, with a master server for aggregating and locating multiple servers for a particular game, and distribution of object data in suitably compressed packets only to those clients that require them. The client portion is mostly automated. Beside performing remote procedure calls (RPC) on the server and sending specific messages to other players, the behind-the-scene technology handles the problems of interpolation and prediction to smooth out the game play and animation experienced by the player.

GRAPHICS

The graphics core, based on Tribes 2 (2001), is a capable beast even for a 4 year old design. The feature list reading like a marketing execs wet dream. I won’t exhaustively iterate features other than to say that some of the highlights that really make the graphics engine powerful and a deciding factor against rolling your own technology is the multiple rendering paths for different hardware platforms, cross-platform capability without altering your game assets, a capable, native OS looking windowing GUI, plus automated level-of-detail (LOD) on almost all 3D game objects, including the terrain & water, add to all that the built-in terrain, world & mission editor tools.

TGE offers large open environments and a competent portal system for transitioning to building interiors and underground areas. A single area can be several miles across, the terrain repeating indefinitely so there is no edge to the world and across this area dozens of large, complex buildings and structures can be placed.

One of the issues I encountered with the repeating terrain is that permanent objects, such as buildings, placed on the map, cast shadows across the landscape. Travel far enough in any direction and the map will repeat and you can detect the repetition by locating the shadows that are baked in to the terrain’s shadow map, sans objects that are casting the shadows.

During experimentation I was able to tweak the C++ source code to turn off shadows cast on the terrain by buildings once the player left the mission area, which is the beauty of having full source code access.

For 3D model assets TGE supports most of the major industry standard packages (3DS Max and Maya, for starters) with limited support for others (such as SoftImage). Models are created and then exported via plug-in to the appropriate game engine format and the rendering system is capable of handling Quake and Half-Life BSP level-data for buildings and interiors.

WHERE IT NEEDS IMPROVEMENT

With a product the size and complexity of TGE, there is going to be a very steep learning curve; similar to learning Maya or Max, hours will have to be spent to determine the function of each source module, script file, and tool and through initial evaluation and development I had a number of serious issues that had me muddling through with low productivity for several weeks.

My biggest complaint was at the lack of clear documentation with no clearly defined, easy starting point where you can just jump right in. Garage Games website, overflowing with valuable information often felt like a library after a hooligan had thrown all the books on the floor. The information you need is there; you just have no idea where to look and very little of it is organized coherently.

The website can be very obtuse, it was days before I realized there was an “unread posts” link for the forums and I’m still finding new links and buttons (that have most likely been there all along) that I never noticed before. A nod to the wise: For new developers and people evaluating the product, make the “Getting Started” and “Documentation” buttons prominent, right now these are too easy to overlook. The signal-to-noise ratio of information on the GG website is very good, it’s just that there’s too much signal.

In Garage Games defense the documentation problem is being addressed and what’s available now is a vast improvement over what was around 12 months ago when I first looked at this engine. The company has been working feverishly the past few months on bringing their documentation up to par with the rest of their product, proper organization of the website, the TGE documentation project – a separate purchasable resource – and Kevin Finney’s new book 3D Game Programming All In One (Premier Press).

There are several online resources (check further reading) that help you along, but it can take some time to figure out what is relevant and what can be safely ignored. The forums and resources are a good source of information, but sifting the effluence for the gold nugget can be time-consuming.

FUTURE DIRECTIONS

While I cannot determine if Microsoft’s Xbox Live X-Arcade—an online console experience aimed at the casual gamer—is a sound business idea, I can certainly see the appeal of tapping in to the vast console market opportunities that Microsoft’s initiative provides. Garage Games has lined themselves up as a technology partner with Microsoft by porting TGE to the Xbox console, which provides exciting opportunities for independent developers. It remains to be seen whether the barrier to entry is low enough for most independents to be able to place product into this distribution channel. The price for licensing the Xbox version of TGE is still to be determined, but from what I gather the final price wouldn’t cover the cost of my Alienware laptop so is within the range of most small development company budgets.

Garage Games make no bones about the age of their engine (released in 2001). Three years in game development is a long-time, and the engine was designed to run on DX7-class hardware even when DX8 had been kicking around for a while. Torque Shader Engine (TSE) is Garage Games’ answer to many people who point at the latest Unreal, Quake, and Half-Life engines as the geek equivalent of technological muscle-flexing (I originally had a more colorful metaphor, but my editor wasn’t happy with it [Justin, what was the original metaphor? The original metaphor was “technological pissing match”]). TSE adds a lot of the features developers have been asking for, namely, a move away from the fixed function pipeline to a more flexible shader-driven format. Rather than patching an already long-in-the-tooth graphics engine or bolting on a simple shading component, Garage Games decided to do it properly. The developers rewrote the graphics engine pretty much from the ground up (delaying the bullet point on the feature list that the marketing drones would have loved to have for at least a good six months). Currently, TSE is available as an early adopter product, for developers keen to exercise the new features and work out the kinks before general release. The price is reasonable, and you only have to pay once, receiving the final version when it becomes available.

A direction that I was pleasantly surprised to discover is that Garage Games is working with some of the larger handheld device manufacturers to port TGE to platforms that utilize the soon-to-be-released 3D graphic chipsets. Some of these devices were on show this year at GDC and Electronic Entertainment Expo (E3) with prototypes making use of chipsets from ATI, Intel, and NVIDIA, which approximate DX7-level device capabilities. We may yet see TGE ported to the Sony PSP.

SUMMARY

TGE finally feels like the product is moving away from being a single game, in-house engine to a proper, and viable, middleware solution. I would consider the game engine to be “feature complete” and Garage Games is really now concentrating on gold plating everything. TSE is the biggest revamp under way and it will be interesting to see what Garage Games will do to enhance the product beyond that.

As Microsoft found with DirectX, once you throw a few thousand dedicated enthusiastic developers at a product, strange things begin to happen, the product takes on a life of its own and it’s going to get abused and upgraded in ways you could never anticipate.

Many of the real bugs and problems with the game engine were squashed during the product lifecycle of Tribes 2 and I’d be surprised if there were any real show stoppers remaining. Saying that, an engine of any size and complexity will have various weird bugs that are difficult to uncover but at least Garage Games isn’t shy about listing them and they appear to possess an open development issue policy so it is interesting to watch a major engine bug – the bug was with wheeled vehicles in a networked environment — being squashed in real-time with help from the community of developers.

The general perception in the industry is that the more you pay, the better the product you get. The extra cost buys you, among other things, higher quality, responsive technical support, proper documentation, and so on. It’s difficult to decide whether this holds true for TGE. I’ve worked with other middleware companies—Havok, Renderware, and iD, to name but a few—and found them all to be immensely helpful when you are a licensee; some go so far as writing a demo or flying out an engineer to be onsite for a day or two to help you through a particular problem—that is, when you’re paying the big bucks. Obviously Garage Games’ TGE engine, available as low as $100 per programmer, is in a different price bracket; as such, it offers a limited level of support. So, if you can live without the mothering support that other middleware providers offer, TGE really does measure up in just about every other area. You get the full source code, a rapid response on bug fixes and issues, and tools and technology that are comparable to other costly middleware packages.

I would certainly consider giving this product 5 stars based on everything that it can do but the problems I’ve covered are what held me back from doing so. Another year and you may see TGE being used in more mainstream titles and at the current price point its unbelievable value. My text editor cost more than this engine!

This review originally appeared in a 2004 issue of Game Developer Magazine.