You are here: Home // Reviews // Leadwerks Engine Review

Leadwerks Engine Review

Not being a close follower of the 3D game engine market, I had gone along assuming that the technology was maturing and that everybody had settled on one game engine or another — most likely one really expensive one and one free one. Then I got a note from Leadwerks telling me that they had something that is quite nice and isn’t too expensive and deserves a second look. And, of course, I was the perfect reviewer for the job given that I have written about 100 lines of C++ in the past ten years and I have never done anything in 3D.

So suffice it to say that this review will be done from the perspective of a 3D programming noob. Leadwerks is implemented as a few DLLs and is designed from the ground-up not to be “married” to a particular language. So, unlike game engines that are themselves virtual machines that execute their own script which talks to their own rendering  pipeline, Leadwerks is a standalone OpenGL-based engine that can be controlled by anything that can talk to a DLL. And this is certainly nothing new, although it seems like most engines nowadays like to take the other approach, making your code something that’s talked to by the engine rather than the other way around. And there are advantages and disadvantages to both approaches. The chief advantage of Leadwerks’ approach is that it can be talked to by anything that can talk to a DLL — even languages that don’t exist yet.

Leadwerks has downloadable bindings to C++, C#, Lua, and BlitzMax. Leadwerks installs with a script editor and interpreter for LUA, and it looks like you are urged to use Lua as the “internal” script language for controlling things like how the models behave, and you can use the other languages to handle the more “big picture” items.

The C++ and C# bindings are handled via Visual C++ or C# Express Edition, and the Visual C++ 2008 Express Edition installer is included with the installation. I did not see any mention of Visual C++ or C# 2010 in the documentation, but I think it is an obvious conclusion that they are working on it. In addition to their video tutorials on their excellent wiki here, they include a small standalone “wizard” that sets up a default project for you.


Figure 1: Leadwerks’ standalone project building wizard

Mind you, this gizmo does not do much more than copy some default project templates into the folder of your choosing and launch Visual C++ or BlitzMax, but it handily takes care of the “how do I get started” problem that is always a bit daunting to people getting started. The default is a little rotating cube with bitmap texture, lighting, camera, and cast shadow. It’s not much, but it’s certainly enough to get you playing around with a project.


Figure 2: The rotating cube from the “wizard-ed” demo (click for a full-size image)

What You Get

In addition to the Wizard and the engine DLLs, the Leadwerks installation includes the following tools:

The Leadwerks Editor – A scene compositing tool that lets you assemble a scene from props that you import. The Editor also spawns the Script Editor, which is Leadwerks’ mini-IDE for Lua scripts. Included are a plenty of sample scripts, some of which are fairly sophisticated like this little car script which I am using to drive around a lumpy non-textured landscape that I spent all of about 30 seconds constructing.


Figure 3: A Lua-scripted jeep driving around on a landscape I made in the Leadwerks Editor. The jeep is fully interactive, with the arrows controlling the driving and the mouse controlling the gun turret on the roof.

The Script Editor is a fairly barebones IDE for Lua. Lua can be used to script individual models (as you saw with my jeep above) or the entire game. As it stands, you will probably want a better scripting environment than this if you plan to write any large scale applications in Lua with Leadwerks, as the script editor is not much more than syntax coloring and a “run” button.


Figure 4: The Leadwerks Script Editor

The Model Viewer is a tool that lets you view and examine the attributes of models. The Leadwerks Model Viewer supports Collada, Autodesk FBX, and Game Model Format (GMF) files.

If the last format sounds unfamiliar, that’s not surprising, as it is Leadwerks’ own binary textured mesh format which is intended to closely model the way graphics cards want to deal with meshes, thus minimizing load times. Converters are available for Collada, Autodesk, Wavefront OBJ, and a couple other minor formats. In addition, they have an exporter written in MAXScript so you can create meshes for Leadwerks in 3ds Max without an intermediate step.


Figure 5: The Model Viewer. This is not an editor and is basically intended to show you how your newly-created GMF-format models will look as rendered by the engine itself.

The Material Editor is a tool that lets you composite together procedural shaders in the MAT format. MAT, like GMF, is a Leadwerks-authored format for shaders. Similarly, DDS is their format for textures. The Material Editor is a fairly simple tool that lets you build shader files that you can then read directly into your Leadwerks content.


Figure 6: The Material Editor showing off a lumpy stone material, same as the one used in the wizard-generated application of Figure 2.

Finally, there is a very handy update utility that checks the Leadwerks site and updates your installation to the latest. I am seeing this kind of thing more and more in applications nowadays, and I am very happy it’s there. Saves me from having to wait for the developers to tell me that there is a new version N.0001 that I can download and reinstall in its entirety.


Figure 7: The Leadwerks updater updating some of the installed bits. You may notice that it failed to install one update, which is an update to the updater itself. Not sure how they are going to tackle that little chicken-egg problem.

About the only game engine bit that I have not mentioned yet is sound. Leadwerks supports sound in WAV and OGG format, and they use OpenAL internally to handle sound. All of these sound like quite reasonable choices short of making a Leadwerks sound format, as the formats are patent-unencumbered and are supported by plenty of free tools like Audacity.

Putting it all together

Okay, we have scenes and models and materials and sounds and scripting and C++ project wizards. Does that mean we have a game? Well, we certainly have all the parts necessary to make a game. Of course, getting over that final hurdle from having all the component parts to something playable is where the learning curve really comes in. It is a bit like having an acre of land, a hammer, a saw, a pot of nails and a truckload of lumber. While you have all the bits necessary to build a house, you do not have a house yet. And educating yourself in the finest nail-driving techniques will not get you all the way there.


Figure 8: One of the cooler C++ tutorials included with Leadwerks. A few dozen barrels doing that physics thang.

While all the hand-holding in the world will not get you a game, Leadwerks does do its best to show you how to use the tools. Specifically they give you:

  1. The aforementioned project-building wizard.
  2. Ten installed step-by-step tutorials showing you how to build scenes, load models, play sounds, etc.
  3. A couple-dozen more tutorials on their documentation wiki
  4. Lots of people in the same boat as you on their support forum

Leadwerks is not a single “do everything” walled-garden tool like Flash. And this is both bad and good. While Flash gives you virtually everything you need, from drawing to scripting to debugging to packaging and deployment in one EXE file, it also limits you in the tools you can use. If you want to use a different editor or compiler or whatever, you most likely have some kind of ugly grafted-on thing. Leadwerks is designed to merge into many existing programming workflows, even ones that I thought were walled-gardens themselves, like BlitzMax.

But this amount of freedom means you have a bigger learning curve. And a project pipeline to develop. And scripting languages to choose. And modelers to find. This isn’t a tool that you will be using to slap together games in record time, but it is a tool that you will be using to make high quality Windows games for a low price.

And yes I said “high quality Windows games”. While the Mac version is apparently scheduled for some time in the future, this is currently a Windows-only tool, both for development and deployment. So keep that in mind.

The Price

The price, frankly, is terrific. It is $199. Unlike other stuff out there, there are not any pricing tiers, and there won’t be anyone out there with their hand out when your project deploys commercially or sells more than 10,000 copies or gets sold to a bigger company.

Mind you, it’s not a complete programming system and is not everything you need to deploy a complete game, but if you are on a tight budget, you can get everything else free. Visual C++ (or C#) Express is free. Blender 3D is free. Audacity is free. The Gimp is free. Whether or not the free tools will eliminate your need for the top-shelf stuff is a question that only experience can answer, but as far as the capabilities of the engine itself goes, $199 is pretty good.

Conclusion

Leadwerks gives you quite a bit for $199. I fully expected to get low-level “3D hacker” engine for that kind of money, but I was pleasantly surprised to see that I got quite a lot of utilities and hand-holding and sample projects and documentation text/videos for the money. The engine is designed to be call-able from pretty-much any language that can talk to DLLs, although Visual C++ seems to be their programming system of choice. And in the “how much IDE can you get for free” competition, the Visual Express tools are pretty unbeatable, so that’s a good choice.

As for what I would like to see, one thing would be examples of complete deploy-able install-able games done in something other than C++. The documentation states that you can build complete games in Lua or C# or BlitzMax, but it was not as obvious as it should be how to do that. While C# can make standalone executables, I presume that the Lua solution would involve building some kind of EXE bootstrap code in Visual C++ that then lets Lua take over the rest of the work of running the game. There is a lot of documentation in the Wiki, but I would like to see a bit more covering things like that.

Also, I would like to see a bit about deployment. This is, frankly, where most game engines I have seen fall short. While it is great that I can build demos of falling barrels in the Visual C++ IDE on my computer, there is a gulf between that and being to hand someone an installer that puts all that stuff on his computer so he can see falling barrels himself. Visual C++ used to come with a nice little document telling you what the various distributable runtime DLLs were, which ones you should install with your project, and where those DLLs should be installed. Mind you, not everybody took that advice (as evidenced by the number of MSVC DLLs that exist on my system with the debug symbols still attached), but it is good to have.

But these are minor quibbles, they are ones I bring up for other products, and the are ones that can be fixed with documentation or a little time in the support forums. They are certainly not deal breakers.

Post-conclusion

Because my little screenshots and demos above hardly do justice to the quality of Leadwerks’ renders, I decided to include some eye-candy screenshots that they sent me.


figure 9


Figure 10


Figure 11


Figure 12

No related posts.

Tags: ,

Leave a Reply

Copyright © 2009 GMpoint. All rights reserved.
Designed by Theme Junkie. Powered by WordPress.