Upcoming Events
GDC Online
10/5 - 10/8 @ Austin, TX

IGDA Leadership Forum
11/4 - 11/5 @ San Francisco, CA

Montreal International Games Summit
11/8 - 11/9 @ Montréal, Canada

GDC China
12/5 - 12/7 @ Shanghai, China

More events...
Quick Stats
4076 people currently visiting GDNet.
2395 articles in the reference section.

Help us fight cancer!
Join SETI Team GDNet!
Link to us Events 4 Gamers
Home » Features » Product Reviews » Software » Virtools
Intel sponsors gamedev.net search:

Product Reviews
Jump to:
Software
All product reviews

Product: Virtools
Developer: Virtools
Reviewer: John Hattan
Posted: February 24, 2005
Rating:
Discuss this review

Virtools
by John Hattan

What is Virtools?

At its heart, Virtools is a 3D application/simulation development environment that bundles together models and code into files that can be played by the Virtools Web Player. If you're familiar with tools like Macromedia Director or Flash, you get the idea. You build your application inside the Virtools development environment, pulling together code, data, and models into a playable simulation (read: game). Once you've got the game working to your satisfaction, you can generate a compact file containing all of the pieces. You then add code to your web-page that loads up the Virtools Web Player browser plug-in. The plug-in then loads up the game-file and plays it, resulting in a playable 3D browser-game with a reasonably seamless user-experience.

Virtools, though, is in a much more exclusive club. While there are several tools that allow you to make 3D apps that run in a browser, Virtools is a complete IDE for 3D development that allows you to lay out your scenes on-screen, attaching code to the bits to create a complete simulation/game. WildTangent's web-driver and 3D-Groove, in contrast, don't have any kind of integrated "design on the screen" development platform. Macromedia Director does support some on-screen 3D development, but its 3D support is in the form of a couple of plug-ins to the designer interface, so it's really more of a 2D tool at heart with 3D stuff grafted onto it. The only other tool that appears to have Virtools' level of integration with a 3D environment is Anark's product, and I haven't given that a close enough look to say which one does it better.

Installing and Starting Up

Virtools is a premium product with a premium price, and that means that its makers have had to take some measures to prevent piracy. Unfortunately for you ("you" in this case meaning "the person who just dropped a few grand on the product"), that means that installing and maintaining the product is a genuine hassle. The first thing you're required to do before installing is to run a utility on your system that gives you a serial number, which is presumably some kind summary of machine specs that can uniquely identify your machine. You then email this number to Virtools, and you're returned a serial number to unlock the installer and a license file to unlock the application itself.

In the software I maintain on a day-to-day basis, I basically deal with five different piracy-avoidance schemes.

  1. Nothing at all. It's the simplest, but it's an open door for piracy.
  2. The simple "name serial number pair" scheme that's used by many Shareware programs. It's simple, but not very secure.
  3. Internet-based product activation used by Windows XP, and now Autodesk and Macromedia products. In my experience, it's a reasonable balance between obtrusiveness and security. It also allows you to (in the case of Macromedia at least) "un-activate" if you get a new machine and want to move the software.
  4. A hardware dongle, which we use for Agtek SiteModel 3D, a piece of very high-end engineering software. It's handier than it sounds because the software itself is freely installable --it just refuses to run without the dongle attached. Unlike product activation, the dongle allows you to have the software installed on more than one machine. For example, we occasionally need to run the software on our laptop for presentations, so we leave the software installed on the laptop and pack the dongle for the presentation.
  5. The scheme used by Virtools, Caligari GameSpace, and I don't know who else. It involves running something on your machine, submitting the "magic number" to the company, and receiving a license key of some kind that'll let you install and run the software.

Frankly, I can't think of a single advantage to the end-user of anti-piracy scheme five. It's a hassle for you because you can't install and run the program immediately. It never seems to work the first time (in the case of both Virtools and GameSpace, I had to email back and forth a couple of times before getting a serial-number combination that worked). If you reinstall the program or buy a new machine, you'll inevitably find yourself convincing the license-provider that you're not trying to run the software on multiple machines.

Also, although it's certainly something that's spelled out in the licensing agreement but still bothers me, it leaves the software company holding all the cards regarding your license. For example, GameDev's software review policy clearly states that we must receive a fully-licensed copy of the software for review, and I received a complete retail-box copy of Virtools. When I applied for my license, however, I was provided with a license file that would expire the software after 21 days and tags all movies with "NOT FOR RESALE VERSION". While 21 days is enough time to review the product, I get the willies from a product for which you pay full price but is then in the hands of the company to decide "how much" product to give you at install-time.

And just to prove I'm not paranoid, I did once have a bad experience with this very thing. I once purchased a shrink-wrapped never-registered Parasoft programming tool at a shop that sold leftovers from deceased dot-coms. Installing the program required me to get a serial number from the company by phone. Upon calling them, though, I was told that the product was out-of-date and they wouldn't give me a number unless I upgraded to the latest version for an "upgrade fee" that happened to be the full retail price of the latest version. Mind you, this was a product that they'd already been paid for (by the deceased dot-com). The license-holder just decided not to honor the license, and since they were controlling the installation, I was out of luck.

I'm not saying that Virtools will be pulling the same dishonest trick. I just don't like protection schemes that give them the ability to do it. And the premium price isn't a good enough excuse, because I use software that's more expensive (specifically SiteModel 3D and the Autodesk products) with less intrusive anti-piracy schemes attached to them.

The Virtools Experience

If you're used to authoring tools like Director or Flash, that experience will provide you with absolutely no help when it comes to Virtools. Here's a shot of the interface designing their rubber-duck physics demo.


Click for a full-size picture

There's a lot going on here, so I'll try to explain.

The toolbar on the far-left is fairly self-explanatory. It's got all the tools to help you manipulate your scene by placing, rotating, and lighting all of your elements. Virtools is not a modeling program. Unlike Flash and Director, which include their own drawing tools, Virtools leaves you to model all of the pieces of your game elsewhere. Virtools comes with exporters that plug in to 3ds max, Maya, and LightWave and allow you to export your models to native Virtools model format. Virtools will also import .3DS and .X files directly if you've got a favorite modeler that's not one of the aforementioned "big three".

The upper-left quarter of the screen is dominated by a preview of your scene. Above the window is a pull-down that chooses which camera is currently active (the current one pointed at the duck). The upper-right quarter of the screen is a big tree of all the "building blocks" available for your app. As you can see by looking at the list, you can control just about everything in your movie using building blocks from this tree. Everything from cameras to responding to user input to physics to lighting to sound to programmatic manipulation of your screen elements is shown in this panel. Above the panel are tabs. These tabs change the panel to show a library of common items (2D/3D sprites, animations, sounds), global elements like global variables, and attributes of the entire production.

The bottom half of the screen is (literally) where the action is, and it requires a bit of explanation. Back in my college heyday of the late-1980's, I was told that the future of programming belonged to CASE (Computer-Aided Software Engineering) tools, and that these tools would be doing for programming what CAD (Computer-Aided Drafting) did for pencil-drafting -- it'd eventually usher in a new era of software development and would supplant hand-coded methods for all but the lowest-level programming tasks. What CASE promised was a method for you to design robust and bug-free programs by connecting together collections of robust and bug-free components, all communicating with each other and virtually eliminating the need to write actual code. The pundits of the time publicly (and embarrassingly) predicted the demise of the classic code-writing programmer because virtually all software development would eventually be given to people who were good at building things with Tinkertoys.

Needless to say, CASE didn't sweep the industry, mainly because building making nontrivial programs out of components required an extremely sophisticated tool, and those tools never materialized. There were (and still are) a few very expensive enterprise tools out there, but they're generally just tools that generate skeletal code from drawn diagrams and don't realize the CASE "vision".

And why all that foreshadowing? Because Virtools has not only implemented the proposed "make a program out of components" metaphor, but they actually got it to work! While Virtools does have a C-knockoff script language, the real power of Virtools comes from making a "schematic" for each object that represents how the object reacts to other objects, user input, etc.

Back to the diagram above, the schematic on the bottom of the screen shows about half of the "building blocks" (as Virtools terms them) representing the duck. In the working program (which you can try here), the duck is a physical object that reacts to the arrow keys to move it about. The square box near the middle of the schematic, for example, is a building block that reacts to arrow keys. If you double-click on the block, you can enter the keys to which it will respond. In this case, it reacts to the four arrow keys and therefore has four "outputs" on the right. Those outputs either apply force (forward and backward for the up and down keys) or torque (positive or negative Y for the left and right keys) to the physical duck object, moving it about the scene.

Getting more sophisticated, you can make specialized blocks out of other blocks, much like in programming you can make a specialized function out of generic library commands to do something more meaningful in your program. For example, in the duck's schematic, there's a block called "Show Wheels" which turns on the duck's wheels (because the physical duck object is amphibious and can drive on land and water). Now then, a "Show Wheels" block is too specialized to be meaningful in the program's panel, but you can build one yourself. Double-clicking on the block expands it so you can see what it does. Here's the expanded "Show Wheels" block.


Click for a full-size picture

As you can see in the picture, the "Show Wheels" block contains four smaller "Show" blocks, one for each wheel. Double-clicking on each "Show" block allows you to choose the item that it will show. In this case, it will show object "Duck Wheel_FL", which is the front left wheel of the duck. Each of those four "Show" blocks controls one wheel, and the "Show Wheels" block contains the four blocks. Beyond the "make a block out of other blocks" method, you can also make blocks using standard programming methods. There are loads of pre-built "community" blocks available for sharing at Virtools' sponsored site, www.theswapmeet.com.

Finally, you've got the "Level Manager" tab to tie all of your bits together into a playable game. This tab allows you to pull together the objects, scripts, and backgrounds required to make a complete "level" of a game. While the duck demo only contains one level, other games could contain lots of different items and level-bits that you pull together to make a complete level.

Using this "make a program out of building blocks" does require a paradigm-shift from standard code-oriented programming, but it is surprisingly easy to follow once you get the hang of it. If you can follow the advice of Yoda and "unlearn what you have learned", you can do some pretty amazing stuff with Virtools. Just about everything that you've seen done with conventional programming tools, from prototyping to coding to debugging (yes, debugging too), you can do with Virtools visual tools.

Is it a real tool, or is it just a toy?

With all of the new game-building tools out there, this is a valid question. About half of the new game-building scripting/modeling environments I've seen look easy and interesting at first glance, but come up very short when it comes to making applications that hold their own against the stuff on the shelves your local software store.

And this is a question I'll let you answer for yourself. Head over to http://www.ballance.org/download.htm and play a couple of the movies of CyParade/Atari's latest "Marble Madness On Steroids" game, Ballance, made with Virtools. If you're still not convinced, download the demo version and play a level. The look, feel, sound, and physics of this game work together flawlessly. If this is an example of the kind of thing that Virtools can author, then Virtools is clearly capable of producing world-class applications.

If you're still not convinced, head over to Virtools' gallery to see a pile of apps, both downloadable and retail, that were done with Virtools.

Support

Support, thankfully, is what you'd expect from a premium product. In addition to quick phone and email support, Virtools has plenty of training programs available. If you're not available for personal training, they've got downloadable training videos available. On top of it all, they've got a very active support forum (moderated and supported by Virtools employees) and a place for downloadable extensions to the product.

Once you've purchased Virtools, you won't be alone in your programming endeavor. You'll have plenty of company help available.

Price and licensing

Virtools is trying to position their product as the premier solution for interactive 3D in a browser, and their license is structured to reflect that. The easiest way to see their licensing structure is on the site here. The most important parts of the diagram are the orange and purple columns on the right. The orange column contains the licenses that are included with purchase of Virtools. The purple column requires you to negotiate a player-license with Virtools.

To make it even simpler, if you want to play your Virtools-written game in a browser, you're golden. Put your game on your website, direct your readers to the free plug-in, and play away. If you want to release your game as a standalone executable (for Windows, OSX, or XBox), you'll have to work with Virtools on a license.

As for price, it lies somewhere in the "if you have to ask, you can't afford it" category. There are a lot of different extensions and servers and such. but if you want enough product to produce a game, you should count on spending about $9,500. It sounds like a lot, but you do get quite a bit for your money. You not only get a commercial-quality 3D engine, but you get a complete game-authoring environment, web-player, and a half-dozen company support options. Even if you budget your time at a few bucks an hour, the development environment and support will likely level the playing field over cheaper solutions.

Conclusion

Virtools is an amazing piece of software. It's a robust and complete 3D engine (web-playable or standalone) with built-in physics, AI, and server communication that runs on Windows, Mac OSX, and XBox. It's a system for pulling together networks of physical objects and interacting with them. It's a programming tool where you can build very sophisticated simulations or games out of prebuilt "building blocks" of code. It's supported with plenty of personal training and company-moderated support forums available.

As far as the quality of the tool and the engine go, Virtools fires on all cylinders.

All that quality, though, comes at a price. Literally and figuratively. Plan on dropping a few grand on the tool itself and a few more if you want to distribute your completed games somewhere other than in a browser-window. The Virtools folks have developed a professional level tool, and it's quite frankly priced out of the range of the hobbyist market.

The other "price" is a downright annoying software piracy-protection scheme that'll guarantee a few calls to tech support.

If you can afford it, Virtools can do amazing things.