Archive for the ‘Software Reviews’ Category

Visual SlickEdit v10

Saturday, March 11th, 2006

SlickEdit’s biggest new feature for game developers has to be C++ refactoring, introduced in v9 and improved greatly in v10, SlickEdit is one of the few editors that offer the ability. There are so many improvements in this area it’s now actually usable functionality and no longer just a checkmark on a marketing brochure. Couple refactoring with customizable code beautifiers and you have a decent tool to hammer your source code into something readable.

SlickEdit v10 has enhanced integration with native operating systems, under Microsoft Windows SlickEdit now installs itself to the Microsoft standard “Program Files” directory and also makes use of “My Documents” to store all preferences and tag files – tag files are constructed by SlickEdit for navigation and context help, e.g. function parameter info, of source code. Previously preferences & tag files were stored under the main SlickEdit directory making backup, migration and multi-user desktops difficult to manage. The use of user directories also eases the sharing of tag files between developers on teams. Now you know precisely where to find your tag files and no longer need to hunt for them in program & project directories.

The GUI has undergone a partial overhaul so that it falls more in line with Microsoft & Apple UI guidelines; enhancements include dockable panes, auto-hide utility windows after use, and grouping of utility windows onto a tabbed pane. SlickEdit is also multi-monitor aware — I can’t imagine trying to work productively on a single monitor workstation anymore — The multi-monitor support is some of the best I’ve seen, preventing text editing windows from splitting across a monitor when first opened, and being able to set “full screen editing” on more than just your primary monitor.

FACTOR IN CHANGES

SlickEdit’s biggest new feature for game developers has to be C++ refactoring, introduced in v9 and improved greatly in v10, SlickEdit is one of the few editors that offer the ability. There are so many improvements in this area it’s now actually usable functionality and no longer just a checkmark on a marketing brochure. Couple refactoring with customizable code beautifiers and you have a decent tool to hammer your source code into something readable.

PROJECT SUPPORT

SlickEdit isn’t an editor or environment aimed purely are people building Microsoft Windows applications. It is designed for developers who work with multiple languages, project types and data files on a daily basis making it ideal for teams who have to ship titles for multiple platforms that include embedded scripting languages.

With support for 47 languages and myriad project types I’m sure SlickEdit has weak support for some of them, but I have yet to find those. The handling of the major project types, Microsoft Visual Studio (MSVS) 2003 & 2005, ANT, make, and a number of others I have tried over the years, has proved to me that it can replace your Integrated Development Environment (IDE) of choice for everyday usage.

If you are moving from a one-platform, single solution IDE, e.g. MSVS, I suggest that you sit down with the tutorials for SlickEdit as the application does possess a different nomenclature and work flow from what you are probably used to. Like going from little-endian to big-endian or CISC to RISC. There’s mental translation from one environment to another until the new becomes familiar enough.

SlickEdit has supported the major source code repository systems for a number of years, e.g. CVS & Perforce, and now in v10, Subversion. My company is currently transitioning from Perforce to Subversion for content management and this is making a big difference for us.

I’m in the midst of developing games in Java so I am pleased to see that SlickEdit v10 supports J2ME (Java 2 Micro Edition) in addition to J2SE (Java 2 Standard Edition). This feature alone lets me debug the database driven web application and the J2ME & J2SE games inside of my IDE. Finally, I’m moving away from multiple DOS boxes and MSVS. SlickEdit has extensive support for ANT and JUnit — both of which I use for J2ME games – that integrate flawlessly into the IDE. Double-click compilation errors output by ANT or JUnit and SlickEdit jumps straight to the problem line every time.

As a mostly embedded systems & console developer (and now J2ME), I occasionally have to lower myself to distasteful tasks like building web pages for the company website. Utilising ASP.NET, C# or VB.NET, XML, Javascript and HTML, all of these languages quite often buried in the same source file, I have to build some complex web application on the back-end that will communicate with the game front-end or a utility that pulls data from a FAQ directly into a forum post. Until SlickEdit came along, there was no editor that I was aware of, capable of handling the errors, syntax colouring, and proper formatting of a source file containing more than one language.

DEBUGGING

SlickEdit supports multi-session debugging allowing you to debug multiple applications, say a game and a web server application that the game communicates with, from a single instance of SlickEdit. Useful when you are creating a J2ME application with a back-end web application.

A LOT OF FEATURES IN ONE BOX

Very few IDE’s provide a comprehensive and flexible source code compare & merge system so I’ve always used 3rd-party diff utilities to perform these actions on my source code. The problem with 3rd-party utilities is that they use a different interface, different keyboard layout for navigation, etc. SlickEdit makes use of Diffzilla, integrated completely in to the SlickEdit environment so that you never have to step out of your IDE to perform a merge or source tree compare. Diffzilla uses all of the key bindings and keyboard emulation that you have set, and makes use of the SlickEdit editor too, so you aren’t lumbered with a crippled diff utility editor.

Navigation through your projects has been enhanced with new syntax searching, improved tagging of source files, especially those with embedded languages, e.g. VBScript or Perl inside of regular source files, and better symbol analysis when navigating by function definition & reference.

PATCHING THE BUGS

Ensure you’re running the latest patch, 10.0.2, as of this review, as it fixes dozens of small, irritating bugs - I ran in to two minor UI bugs during my review of v10 that post-patch completely went away. SlickEdit isn’t buggy by any means — any application this complex will no doubt exhibit a few latent bugs - I just happened to exercise the program through some of the more esoteric features while reviewing. You probably wouldn’t find these bugs in a year’s worth of use.

Perhaps I am just too used to the slick way that MMORPG games and Microsoft Windows handle patching but when a patch is available I expect the application to just handle it all for me after I tell it I want the patch. SlickEdit isn’t the only application on the market guilty of adding friction to the user-experience through the UI when it comes to patching. SlickEdit can readily check for updates but that’s all it does. What would you do if you took your car in for repair and after a brief inspection the mechanic tells you “Yup, it’s broken. Here’s the tools, the replacement parts, and the service manual. Have fun.” I expect more than a link that opens a new browser window to the support area of the company’s website, leaving me to determine the application version, specific OS release, and patch release I require.

SUMMARY

You should consider SlickEdit to be another powerful IDE to put in your toolbox. You can use SlickEdit to replace the “old standby”, MSVS, or you can use SlickEdit to supplement and enhance your toolbox. Asking developers who are deeply entrenched in the MSVS camp to switch editors is difficult, but by sticking to only one environment, and ignoring SlickEdit, you’re passing up an immense opportunity to use one of the best editing and development environments on the market.

VERDICT

Visual SlickEdit v10

Company: SlickEdit
3000 Aerial Center Parkway
Suite 120
Morrisville, NC 27560
USA
Tel: 1 919 473 0070
Fax: 1 919 473 0080

Rating

10 out of 10

Pros

  1. Languages & project support second to none.
  2. Mature, stable code editing & project environment.
  3. Good for console development environments.

Cons

  1. Cost.
  2. Unfamiliarity with new tools prevents changing from current environment.
  3. Complexity of SlickEdit.

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

Torque Game Engine

Tuesday, September 20th, 2005

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.

VERDICT

Torque Game Engine

Company: Garage Games

Price

Independent Developer License $100 per seat;
Professional Developer License $495 per seat;
Torque Shader Engine License $495 per seat;
Microsoft Xbox TGE Professional Developer License TBA.

Rating

4 out of 5

Pros

  1. Garage Games developers are responsive on the community forum and deal with support directly.
  2. Battle-tested fully cross-platform, AAA game engine with all the bells and whistles you would expect.
  3. Full C++ source code to the engine.

Cons

  1. Lack of an easy starting point.
  2. Documentation can be.
  3. Size and scope of the engine can be overwhelming even for experienced individuals.

Further Reading

3D Game Programming All In One (Premier Press)
Garage Games Forums & Resources
Torque Game Engine SDK Documentation

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

Xoreax Incredibuild

Sunday, July 17th, 2005

Large render farms of high-end workstations have long been the secret weapon of the artist and as a programmer I’ve looked on with jealousy at the software provider’s support, however minimal it has appeared, of providing distributed rendering systems for packages such as Maya, Kinetix’s 3D Studio Max and Pixar’s Renderman. This has been exacerbated for me even more by Weta Digital’s gushing enthusiasm for their several hundred processor great wall o’renderers that created the large-scale battle scenes in The Two Towers.

And then along came Xoreax to change the rules with Incredibuild…

Discounting large multi-processor mainframes the ability for a non-mainframe owning developer to compile a single large project across multiple machines has, for a number of years, been the sole domain of Unix & Linux platforms using distributed makefiles. Though difficult to configure and make robust for team use, once the system is up and running it can drastically reduce even the longest compile times. The major downside to it has always been that all systems involved in the build process must have the same compiler versions installed, along with header files, libraries, tools, etc. Hundreds of files, across possibly dozens if not hundreds of machines, that must be kept in lock-step synchronization with each other.

Until recently there has been no viable Microsoft Windows or Microsoft Visual C++ solution so programmers were stuck with their single platform compilation capability, spending, on very large projects, upwards of two hours waiting for a full rebuild of the tool chain or application executable.

But no longer…

Xoreax software released IncrediBuild and changed the way the game is played. IncrediBuild, currently on version 1.133 release and 1.14 beta is their answer to the programmer lusting after the equivalent of distributed makefiles spread over a compilation “render” farm.

WHAT IT DOES & HOW IT WORKS

What Xoreax IncrediBuild does is perform a distributed compilation of your C & C++ source files across multiple computers connected via a TCP/IP network - even 802.11b WiFi, even a 56Kbps modem - running Microsoft Windows NT, 2000 or XP - essentially, any Microsoft OS that has the ability to run services in the background that’s connected to a network. The incredible part of this - absolutely no puns intended anywhere within this review - is that it can do all of this on machines that do not have Microsoft Developer Studio installed.

For all of this to work Xoreax recommends a minimum of a 200MHz Pentium with 64MB of RAM but I’m sure most game development studios these days would be hard pressed to find a machine that underpowered actually doing any useful office work. A single machine with Microsoft Developer Studio 6.0 along with the Xoreax IncrediBuild DevStudio Add-in installed is all that’s required for a development machine, Agents on remote machines and the Coordinator do not require DevStudio to be installed forgoing both the expense of an un-used software package and the requirements of a capable machine. This removes any maintenance headaches that would be caused by ensuring that the same version of compiler, libraries, header files and Service Packs are installed on a diverse network. This also means that the IncrediBuild Agent can be placed on to office machines that are not directly involved with development.

IncrediBuild performs its magic by sharing out the compilation of source files to individual machines running the IncrediBuild Agent. A source file is considered atomic, no further subdivision of labour in compiling it is possible, so the more source files in a project, the better the performance gains witnessed.

Each IncrediBuild Agent, and there can be up to 100 Agents in a build farm though 40 is the recommended maximum, creates a small cache on the HD, and, utilising spare CPU cycles - it runs at the “Idle” priority by default - compiles C & C++ source files just as though they were being compiled on the machine that’s running Microsoft Developer Studio. Should an Agent detect that the host processor usage has spiked from user interaction it stops processing and informs the IncrediBuild Coordinator to find another Agent to perform the work. Considering that powerful desktop machines sit idle most of the time, waiting for the user to press another key or move their mouse, there are an awful lot of wasted CPU cycles hovering around, completely under utilised.

THE NETWORK CONFIGURATION

Setting up an IncrediBuild network is straightforward, install the IncrediBuild Coordinator on a designated machine, and then proceed to load the IncrediBuild Agent — you must be part of the Administrator or Local Administrator group to be able to use IncrediBuild — on to as many spare computers as you can find, referring back to the Coordinator either by machine name or IP address, which should preferably be static. The Coordinator & Agents simply run as services in the background, remaining mostly transparent to the regular user. Each machine in the IncrediBuild build farm places a small icon in the system tray to indicate status, and thankfully, Xoreax provided the ability to hide the icon to lessen taskbar clutter.

projectprogress2.gif
Figure 1. IncrediBuild DevStudio Build Output window.

In DevStudio, IncrediBuild integrates as an “Add-in”, providing another Build menu and toolbar. After correct installation, open the largest DevStudio project you can find and click the “Build Current Project” button on the IncrediBuild toolbar. Remapping the F7 (Build Project) key to IncrediBuild makes it completely transparent. The IncrediBuild DevStudio Add-in supplants the standard Build Output window with it’s own, providing extra tabs (see Figure 1) showing how many Agents are available, the progress of the build across each Agent, and how long your build is taking. The Agent progress window is also available from the icon in the system tray. Configuration of available machines (see Figure 2) is trivial via the Build Coordinator, giving the administrator the ability to add, what Xoreax refers to as “subscribe”, and remove machines from the build farm through an intuitive interface To quote Ron Popeil on late night TV, the software is very much “set it & forget it.”

coordinator1.gif
Figure 2. Build Coordinator.

As the build proceeds, the IncrediBuild DevStudio add-in aggregates all of the output, e.g. errors and warnings, (see Figure 3) from individual Agents into a single list that can be navigated normally by double-clicking or pressing the F4 & Shift-F4 keys for “Go to Next Error Tag”/”Go to Previous Error Tag” feature.

aggregatederrors.gif
Figure 2. Build Coordinator.

I first tested IncrediBuild on a small network of four machines in various configurations and later, on a sunny Saturday morning in January at a local Art College in Los Angeles on a network of newly installed workstations. The IncrediBuild DevStudio Add-in reports all sufficiently idle Agents as a single number in Megahertz, quintessentially an aggregate of all available CPU power, not the most scientific total, but it gives some idea of the network resources at your disposal. It’s quite something to see your overall CPU speed reported as approximately 64,000 MHz, or 66 GHz in modern parlance when you have more than thirty 2.1+ GHz CPUs all ready to do your bidding.

The test network makeup was diverse enough to reflect that found in most companies, a high-end, speedy, 2.8GHz Pentium 4 Northwood equipped laptop, a low-end, 1.1GHz AMD, a low-end, dual processor 950MHz Pentium 3 - any multi-processor machine will remain underutilised as IncrediBuild only makes use of a single processor though Xoreax has promised to rectify this in the future - and finally, a large collection of mid-range, 2.1GHz Pentium 4 machines.. The entire network utilised standard, 100MBit Ethernet. An 802.11b WiFi test was performed merely for curiosity, and worked flawlessly, but the timing results are not included.

The home network was configured to run through two consumer level LinkSys routers, a later reconfiguration of the routers allowed me to exercise IncrediBuild through a hardware firewall solution with no detrimental effects so it is possible to compile between remote office locations utilising standard TCP/IP. IncrediBuild has an encryption facility to safeguard your source files as they are passed around the network, all of the test runs were performed with it off, the default setting. With IncrediBuild encryption switched on I saw no performance difference.

Other than the College machines, all computers were running ZoneLabs ZoneAlarm and it worked almost flawlessly, ZoneAlarm popped up the usual dialogues asking for confirmation to access the Internet or act as a server. Only on one machine the IncrediBuild Agent refused to start up correctly until after a reboot, this may have had something to do with ZoneAlarm being installed but not running at the time of installation as ZoneAlarm never truly shuts down when you stop the service and that may have confused the Xoreax IncrediBuild installer. There was no problem with IncrediBuild when ZoneAlarm was switched off after installation.

On one machine the IncrediBuild Add-in installation proved troublesome, it was running a trial copy of Visual Assist and IncrediBuild failed to create the toolbar correctly, though the IncrediBuild menu showed up fine and the IncrediBuild system worked correctly. Thoughtfully Xoreax provides an option to re-create the menu and toolbar from the “Settings…” dialogue.

During testing, though not during the timing runs, I went around unplugging various machines from the network to simulate service outage, even so far as disconnecting the submitting machine from the Build Coordinator during a long complex build, and without a hiccough the whole operation kept processing files, albeit at a much reduced rate, amply showing the graceful degradation of service that the IncrediBuild software provides.

Computer Specs
Computer
Name
CPU
RAM
OS
Usage
Comments
Miyuke
2×950
MHz P3
512MB
2000
Pro
Agent
The
dual 950 MHz machine had a low usage web server with no clients, and
an FTP server with 1 user transferring files.
Skuld
2.8
GHz P4
512MB
XP
Pro
Agent
See
Below
Buffy
1.1
GHz AMD
1GB
DDR
2000
Pro
Agent
Running
Microsoft Developer Studio, the Eudora e-mail client, two web browser
windows and ICQ. The user did not compile anything during the test
runs.
Giles
400MHz
AMD
256MB
2000
Adv Server
Coordinator
This
machine did nothing except run the IncrediBuild Coordinator software.
College
2.1
GHz P4
512MB
XP
Pro
Agent
None
of the workstations had Microsoft Developer Studio installed.

The load on Skuld, the 2.8 GHz laptop, was what could be considered average for a development machine - running Adobe Photoshop, two copies of Microsoft Developer Studio 6.0, one performing the actual project compile, WinAmp playing MP3s, two windows of Microsoft Office, one to write this review, one to read over a design document that had a lot of graphics in it, and Outlook checking e-mail in the background - and I can’t say I noticed any slow-down when the Agent was compiling a project for a user on another machine. Skuld generally chews through a C++ source file with a full complement of nested “#include” headers at about 1 per second so it’s a good base machine to be comparing against cost savings when weighing the speed gains given by a faster CPU and more RAM versus 3rd party software to perform a distributed task across idle development machines. Skuld was configured as both Agent and Coordinator when networked with the thirty College machines with no apparent detrimental effects other than a spike in network utilisation.

Buffy, the 1.1GHz AMD used SETI@Home configured to run constantly, the IncrediBuild Coordinator detected this high CPU utilisation and promptly removed the Agent from the list of those available. Certainly something to be aware of if you are considering installing IncrediBuild in a team environment, team members need to be aware that running processor intensive screen savers, the SETI@Home project or those that show off the capabilities of a GeForce card, is undesirable.

Network Topology
Configuration
A
Configuration
B
Configuration
C
Configuration
D
Configuration
E
Skuld
(2.8 GHz)
Skuld
(2.8 GHz)
Skuld
(2.8 GHz)
Skuld
(2.8 GHz)
Skuld
(2.8 GHz)
Miyuke
(2×950 MHz)
Miyuke
(2×950 MHz)
College
(2.1 GHz) x9
College
(2.1 GHz) x30
Buffy
(1.1 GHz)
All
nine workstations were idle and unused for all of the test runs.
All
workstations were idle except during Project 5. See the notes for
Project 5 for a further explanation.

As the build progresses the DevStudio Add-in reports a running total of source files compiled, normally this ticks over at one or two per second on the laptop, on the College network it was ticking over at between thirty and forty source files per second. Every time I watched it I was mesmerised by the rapidly increasing source file counter. I’d suggest to Xoreax that they also add a source line running total too.

Interestingly the IncrediBuild DevStudio Add-in shows the progress of the build graphically, (see Figure 4) a horizontal progress-bar or coloured candlestick represents each file as it compiles on the various agents, the candlestick changing colour depending on the results of the compile, light blue for dependency updates and local tool execution, blue for compiling, green for successful compile, yellow for issued warnings, and red for fatal errors.

projectprogress1.png
Figure 2. Build Coordinator.

IncrediBuild obviously supports simultaneous builds submitted from multiple clients, constantly dividing up the available pool of CPU’s until the scheduled jobs are completed.

THE PROJECTS TESTED

Each project was rebuilt five consecutive times using the “Release” option, which generally takes longer to compile & link, with all optimisations enabled and full warning levels; the individual times - in minutes and seconds - are followed by an average of all the times for each build. The results include both compilation and link time. The number of files in an individual project is stated as an actual count of C++ .CPP source files. Header files, inline files, and template files were not considered.

Projects
Project
Lines of Code & Comments 
Total Source Lines&
C++ Files
Header Files
Main Executable Link Time
1
25,000+
32,000+
129
111
6 sec
2
126,000+
154,000+
241
251
14 sec
3
401,000+
500,000+
776
803
25 sec
4
832,000+
992,000+
1,338
228
3 sec
5
837,000+
1,007,000+
1,549
1,797
35 sec
6
1,425,000+
1,678,000+

2,512

2,497

41 sec

PROJECT #1

This was a small-size project that consisted of a cross-platform tech demo that was assembled during the Autumn of 2002. It consisted of a number of small classes linked to a pre-compiled Physics SDK supplied by Havok.

Most definitely a “work in progress”, this is a project in development and requires constant tweaking of the physics parameters and code, which makes extensive use of DevStudio 6.0’s Edit & Continue feature. Sadly an executable created using IncrediBuild is unable to work with this feature and I found myself a little frustrated having re-mapped IncrediBuild to my standard build project key to find myself having to rebuild the project under the standard DevStudio compiler to re-enable Edit & Continue. I really hope that in the near future Xoreax addresses this issue as I find myself unable to live without it when applying the good coding practise of stepping through every source line.

Project #1
Configuration
Run #1
Run #2

Run #3

Run #4
Run #5
Average

A (1)
2:26

2:27

2:27
2:23
2:25

2:25
B (2)

1:42

1:41
1:39
1:49

1:42
1:42

C (3)

1:14
1:12
1:14

1:14
1:12
1:13
D (10)
0:46
0:46

0:45
0:45
0:45
0:45
E (31)
0:14

0:17
0:15
0:14
0:16

0:15

PROJECT #2

This was a mid-sized 3D game project that shipped for Windows 95/98 in 1999 that linked with DirectX, Smacker and the Miles Sound System.

Project #2

Configuration

Run #1
Run #2
Run #3
Run #4

Run #5

Average
A (1)
3:46
3:33
3:33

3:36

3:34
3:36
B (2)
2:19
2:13

2:31

2:18
2:12
2:18

C (3)
1:44

1:45

1:37
1:37
1:36

1:39
D (10)

1:02

0:58
0:59
0:58

0:58
0:59

E (31)

0:22
0:24
0:27
0:21

0:24

0:23

PROJECT #3

This was a large-sized 2D game project developed during 1998/1999 that shipped for Windows 95/98/2000/NT in 1999 that linked with DirectX, the Miles Sound System and a few other libraries. The Developer Studio workspace consisted of three projects, a main executable and two dependent .DLL’s that had to be built first. The main executable and one of the .DLL’s used GNU Bison to turn script files into executable C++ source code that was generated dynamically at run-time so it was a good exercise of the IncrediBuild system in what would be considered a normal configuration for a large-scale, complex project.

When I was originally working on this project I was developing it on a 200MHz Pentium with 64MB RAM and a geologically slow SCSI hard drive. A complete rebuild was on the order of one or more hours.

Once the dynamically generated C++ files were created by GNU Bison on the main build/submitting machine they were parcelled out as normal by IncrediBuild to the rest of the Agents.

This project required me to increase IncrediBuild’s swap-file size from the default 128MB to 400MB to clear up a build error due to a bloated pre-compiled header (.PCH) file. This was only necessary on the submitting machine, i.e. the laptop, so it is not necessary to reconfigure each Agent individually as the dynamics of the project change.

Project #3

Configuration

Run #1
Run #2
Run #3
Run #4

Run #5

Average
A (1)
6:16
6:20
6:08

6:10

6:04
6:11
B (2)
3:59
3:43

3:47

3:41
3:43
3:47

C (3)
2:45

3:06

3:04
3:06
3:08

3:01
D (10)

1:42

1:44
1:40
1:40

1:38
1:40

E (31)

0:45
0:45
0:44
0:45

0:44

0:44

PROJECT #4

This is the open source project M.A.M.E. A popular multi-machine arcade emulator available from http://www.mame.net/, the source code release I used was dated from August, 2001 because it was all I had to hand at the time of testing. Another good exercise of the IncrediBuild application as M.A.M.E. contains eight projects in the workspace, seven of which compile to statically linked libraries to be linked with the final executable.

Project #4

Configuration

Run #1
Run #2
Run #3
Run #4

Run #5

Average
A (1)
4:21
4:15
4:29

4:28

4:24
4:23
B (2)
2:44
2:53

2:50

2:44
2:45
2:47

C (3)
2:15

2:16

2:17
2:07
2:13

2:13
D (10)

0:50

0:48
0:51
0:51

0:47
0:49

E (31)

0:15
0:17
0:14
0:17

0:19

0:16

M.A.M.E. proved anomalous in the timings, they were far lower across the board than I would have expected and I puzzled this for a few minutes until recalling that C code generally compiles faster than C++, and from my intimate knowledge of the source there are also fewer nested “#include” headers than in the other tested projects. The structure of the project dictates that most of the linking takes place in the static libraries - recall that in a distributed build the compilation continues while the creation of the library takes place — the actual link time is minimal, almost instantaneous, when compared to the overall time.

PROJECT #5

This was a large-sized 2D game project that shipped for Windows 95/98/2000/NT in 2000 that linked with DirectX, the Miles Sound System. Again this project required me to increase IncrediBuild’s swap-file size from the default 128MB to 400MB to clear up a build error due to a large pre-compiled header (.PCH) file. Again this generated multiple dependent .DLL’s and used GNU Bison for parsing script files.

Each .DLL took considerable time to link itself, 15 seconds for one large library. On a single machine configuration this effectively stalls the build. With the distributed IncrediBuild system the other machines continue to compile C++ source files independently, shaving several valuable seconds from the overall build.

Project #5

Configuration
Run #1

Run #2

Run #3
Run #4
Run #5

Average
A (1)

10:14

10:37
10:28
10:17

10:06
10:20

B (2)

6:57
6:47
6:41

6:49
6:39
6:46
C (3)
5:17
5:20

5:15
5:10
5:10
5:14
D (10)
2:54

2:59
2:56
2:53

2:49
2:54

E (31)

1:04
1:05
1:04

1:04
1:03
1:04

PROJECT #6

This was a large-sized 3D game project that shipped in 2002 for Windows 95/98/2000/XP that linked with DirectX, and various commercial and proprietary libraries. The compile time was considerably slower due to the large volume of dependencies. Again, I had to increase IncrediBuild’s swap-file size from the default 128MB to 400MB because of the pre-compiled header (.PCH) file.

Project #6
Configuration
Run #1

Run #2
Run #3
Run #4
Run #5

Average

A (1)

17:09
17:48
17:33
17:14

16:56

17:20
B (2)
11:41
11:24
11:11

11:14

11:28
11:23
C (3)
8:54
8:43

8:51

8:59
8:43
8:50

D (10)
5:00

5:13

5:08
5:02
4:56

5:03
E (31)

1:07

1:07
1:29
1:31

1:27
1:20

During testing of Project #5 on Skuld and the thirty College computers for the first two builds all of the workstations sat idle with the logon screen saver displayed. The last three test builds the room was quickly occupied by arriving students who began loading Adobe Photoshop and Maya, mostly from a shared network drive, web browsers and e-mail clients. Network congestion at this point was probably playing an important role and is reflected in the timings as the 25% spike in build time. IncrediBuild attempts to alleviate some of the network congestion utilising both compression and caching but it is still subject to the extremes of extreme network load caused by many users.

For this project the final executable link constituted most of the build time, accounting for more than half of all the time, but it also proves that the entire project, all 1.6 million lines of it, was rebuilt in less than forty seconds.

PRICING

Xoreax IncrediBuild is priced at $299 per seat, with volume discounts and site licenses available, plus the obligatory heavy discounting for educational institutes. Interested purchasers should visit the Xoreax website for up to date details. I can’t honestly say that Xoreax is priced competitively as there are no other products available in the market that compete with it, it’s steep for personal use but applied to a sizable team with the expenditure spread over the cost of multiple project P & L’s the final costs are significantly diminished.

Xoreax estimates that the cost of a single seat pays for itself in around 3 months. Based on a naïve pricing of 10 licenses of $3,000, or $300 per seat to obtain a client license and then install and configure it is possible to make some quick back of the envelope calculations. Let us suppose that conservatively it reduces build time by 10 minutes per day per programmer, and let us suppose that there are 15 programmer on the team, translating in to around 2 hours per day that is gained company wide, if each programmer costs the company $30/hour on average, factoring in wages, benefits, cost of development systems and office space, which is a very low estimate, so each client license pays for itself in around 50 work days and gaining the development team the equivalent of an extra programmer for 2 weeks in the process, which is infinitely more valuable to me as a Lead Developer than the expenditure. So 50 work days or 3 months is equivalent as to make no difference.

With a lot of software it is difficult to quantify programmer productivity gains; IncrediBuild is a rare application where the gains are prominent other than on small scale projects consisting of two or three programmers. For large projects I would definitely recommend it as a purchase, adding to the arsenal of high-powered tools available to developers.

SUMMARY

For companies that are forward looking enough to have a build monkey - an independent build station - compile times to produce the latest version of the game executable that artists and designers can work with are significantly reduced. From the point where the programmer performs a check-in of source code to a usable build the time is reduced to less than a minute for many projects, instead of the fifteen minutes or more as is usual. This is especially suitable for increased productivity if the programmer must wait for the auto-generated report from the build monkey to confirm everything compiled correctly, translating in to less distractions for programmers. The build monkey would also be the ideal location for the IncrediBuild Coordinator as the machine is usually un-attended for most of the working day and rarely undergoes any configuration changes.

IncrediBuild really shows its strength when you edit the one header file - though there are usually more than one in a large project - that always forces a rebuild of the entire game, every experienced developer has felt that agony. And with more projects using C++ templates it only compounds the rebuild issue, becoming especially relevant towards the end of a production cycle when schedule time grows shorter and rebuild times grow longer as developers begin debugging and making small changes to prepare a shippable product. IncrediBuild also provides benefits after having performed a large “check-in,” or “get” of an home grown API that is constantly updated by your in-house library development team such as that used at Angel Studios. As is evident from the build times there are insignificant returns on small sized projects, but as the project matures the gains can be astronomical.

IncrediBuild is one of those software packages, like MSVC++ itself, or Visual Assist that just “works” and once you’ve used it for a few weeks it disappears in to the background and you no longer think of it anymore except for those points I’ve outlined in the various projects that were tested. You still lament slow compile times, but on a sizable network they are an order of magnitude lower.

The game development world is not made up of Windows only titles, and currently IncrediBuild does not support target platforms other than Windows. Xoreax states that they are addressing issues with the Microsoft Xbox- I suspect it is to do with the Intel Processor Pack and Link Time Optimiser- which it is currently incapable of handling but this still leaves the other two major platforms - Sony PlayStation 2 and Nintendo GameCube - completely unsupported, it would be nice to have the ability to run SN Systems’ ProDG GCC-based compiler in a distributed environment too.

I can understand the issues that Xoreax faces with running unknown code on a remote machine as it opens up a whole can of worms for viruses, Trojans and various other abuses but the support of a general system for distributing anything that works on multiple files and is processor intensive, such as resource & asset exports, that can be farmed out to multiple machines and controlled via a makefile would prove incredibly useful.

In studios creating large-scale professional projects with entrenched development pathways, as found at e.g Activision or Angel Studios, the peculiar needs of each project that have many inter-dependencies on assets, particularly those that are dynamically generated, may prove difficult to integrate. It would be relatively easy to trip up the system with a custom or “clever” makefile.

Once Xoreax fix the Microsoft Xbox issue I’ll be looking to use it on the next Xbox project. For a full list of IncrediBuild issues consult the web site at http://www.xoreax.com/ Maybe Xoreax will consider porting IncrediBuild to the Microsoft Xbox taking advantage of that 700+ MHz debug station that is sat mostly idle.

Xoreax IncrediBuild does a wonderful job for a Windows or cross-platform product where the majority of the development takes place on a Windows host using standard MSVC++ tools and only later cross-compiled to the target platform(s). It makes you almost wish your project were considerably larger so that you could exercise the distributed compiler even more. During use I kept reaching for the “Rebuild All” button just to see it perform a distributed compile. Microsoft? Can you integrate this in to .NET? Are you listening?

For Further Information

Xoreax IncrediBuild

VERDICT

Xoreax Incredibuild

Company: Xoreax Software

Price: $299 per seat.

Rating

8 out of 10

This review originally appeared in the March 2003 issue of Game Developer Magazine.

Visual SlickEdit v8

Sunday, July 10th, 2005

Recipe for Visual SlickEdit v8: Take one whole Microsoft Developer Studio, two Whole Tomato’s Visual Assist, an entire UltraEdit, one WndTabs, a fresh scripting language, and all the great features of every other editor and IDE you may have in your cupboards. Bake for several years through eight versions. Garnish with a steroid injection.

FIRST IMPRESSIONS

With each version of a program the expectation is that it will get slower as features are added. Not so with SlickEdit. What has always been likable is the speed of startup. It’s as fast as Notepad, making it an ideal replacement text editor when you need to jot down a quick note. It even opens Microsoft Developer Studio projects faster than Developer Studio.

PROJECTS & LANGUAGES

SlickEdit has always offered a wide range of support for programming languages and project environments, with new support added for pre- and post-build steps. Without any surprise the IDE now supports IBM PowerNP, Visual Studio .NET solutions, Visual BASIC .NET, C# for UNIX, Apache Jakarta Ant, LEX, YACC, ANTLR, Verilog, SAS and XML schemas along with improved support for Borland’s JBuilder and various flavours of makefiles. XML editing is easy and powerful using a tree view and SlickEdit’s tagging lets you add, remove and search XML elements and XML attributes via either local or HTTP located DTD.

AUTO-COMPLETION

Tagging is SlickEdit’s way of scanning source files in a project directory – the new wildcard feature enables you to insert entire directories in to a project — performing an automated interpretation looking for keywords, function definitions, class declarations in each file and build a navigation map that aids the developer in moving about their project as well as enabling the auto-completion features such as parameter type matching, class/structure member lists, and syntax expansion to operate. As tagging can take several minutes on very large projects scheduled tagging can be executed from the command line at a convenient time. You can add tag files created and maintained by another developer for libraries to which you do not have source code access.

DEBUGGING

The newer versions of SlickEdit support full the Java Debugger for any JVM using the Java Debug Wire Protocol giving debug access to all the usual methods; e.g. single stepping, variable watches, stack dumps and breakpoints,. Added to the Java Debugger in the very latest version is the ability to edit-compile-continue, allowing you to edit source code during a debug session and then continue without restarting the program. The GNU Debugger has not been neglected, extended to facilitate debugging of remote processes.

VERSION, MERGE & DISTRIBUTION CONTROL

Amongst supporting all the major version control systems version 8 offers tighter CVS integration, now allowing the viewing of histories, single & multi-file updates, commits and comparisons all from within the IDE via an easy to understand interface.

For complex merge operations Visual SlickEdit has always offered some of the best tools around which have now been improved with the new three way merge ability displayed in up to four separate windows.

For web development SlickEdit provides, in addition to the usual distribution methods, secure FTP for pushing content to web sites via the OpenSSH client.

SMALL FEATURES

I had gotten used to WndTabs in Microsoft Developer Studio so I was pleasantly surprised to see “Buffer Tabs” added to Visual SlickEdit, performing the same job, displaying a “tab” for each source file that has an open window.

There’s a simple code beautifier for each language that SlickEdit understands enabling you to tidy up a cornucopia of languages with a single click.

Small interfaces changes to the colour coding dialogue, the extension options dialogue and Find/Replace for multi-file operations make everything move a little smoother, though it took me a while to get used to some of the re-arrangements just due to learned keyboard responses on my part.

SUMMARY

Visual SlickEdit continues to improve in leaps and bounds with every version. It is what every other code editor aspires to be, and what every integrated development environment should be. Version 8 supports nine keyboard/mouse emulation modes, more languages and project environments than you can shake a stick at and the powerful Slick-C macro language and plug-in extension architecture ensures custom, project specific features are easily added.

Pricing for Visual SlickEdit isn’t a simple single figure. Upgrades fall between $99 and $149 dependent on platform. New user prices are between $299 and $399. SlickEdit also offers an unusual 50% discount as a “competitive upgrade” incentive for people considering moving from another software package. Check the Visual SlickEdit website for more information.

Several hundred dollars for a “code editor” could be considered expensive by many but you have to realize that Visual SlickEdit is so much more than that, it essentially replaces, lock, stock & barrel, whatever your current editor/IDE of choice is, and then adds a slew of extra features to sweeten the transition. Rather than suffer with a cobbled together solution for Gameboy Advance, Palm Pilot or cell phone development I use SlickEdit as a single, familiar environment. And when I choose to do Win32 or PlayStation 2 development the environment remains the same.

VERDICT

Visual SlickEdit v8

Company: SlickEdit

Rating

10 out of 10

Pros

  1. Makes a good environment for systems that are not well supported, e.g. Gameboy Advance or Palm Pilot.
  2. Works with SN Systems ProDG.
  3. Swiss Army Knife of development environments.

Cons

  1. Doesn’t support Xoreax IncrediBuild without considerable tinkering.
  2. “Non-standard” custom scripting language.
  3. Over achiever application.

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