[gameprogrammer] Wild Tangent Review

The Wild Tangent game engine at http://www.wildtangent.com/ , is an ATL based game engine that exposes various interfaces to you using Javascript, Java, Visual Basic, C++, and others. It is a full-featured supporting physics, sound, input device access, and of course 3D graphics. Work on it was abandoned several years ago but the developer still provides forum support and licensing. It's a very high level engine that comes with a large set of tools which will enable you make progress extremely quickly.

Wild Tangent was originally designed to run games in a web-page, using a browser plugin. While it will do this if you program in Java or Javascript, it will not do this in other languages. If you wish to publish in a webpage using other languages, you will need an ActiveX launcher to launch your EXE in a webpage. Wild Tangent does this for their own internally developed games, all of which use C++. They will not release the launcher, so if you want to follow the same course you have to publish through Wild Tangent directly. I don't know what kind of terms they offer if you publish through them.

The Wild Tangent API can be downloaded from the WT developer webpage directly, with no forms to fill out or other hurdles to jump. You can see the fees here: http://www.wildtangent.com/downloads/Tech_License.pdf . I believe these are not due until you actually publish.

My efforts over 4 days to contact their sales department resulted in 3 bounced and unanswered emails and 2 emails that were answered, one of which by a form letter that did not really address the question. I was not able to establish meaningful contact regarding licensing by the time of this writing.

There is one C++ sample. There are 13 java/javascript samples. The documentation is sparse but comprehensive. For any other API it wouldn't have been enough - however WT is so easy to use you don't need more than it gives you. I can't speak for the java samples, but the C++ sample does not compile on MSVC7 and took me several hours over two days to get it working correctly. The main reason for this is that the library is ATL based, deriving from IDispatch and using the associated macros. This may not be an issue for an experienced ATL programmer, but for a game programmer like myself it was the source of 4-5 hours of frustration over 2 days. I was able to encapsulate out the ATL with a simple class that derived the callbacks that wild tangent uses:

HRESULT __stdcall OnRender(IWTEvent * eve);
HRESULT __stdcall OnMouse(IWTEvent * eve);
HRESULT __stdcall OnKeyboard(IWTEvent * eve);
HRESULT __stdcall OnException(IWTEvent * eve);
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

Once I got the library working it was amazing how much progress I could make and how quickly. I was able to add music with literally 3 lines of code. I didn't feel like I was programming in C++ so much as scripting high level events, such as setting velocity and orientation. This is a good thing as far as I'm concerned, since with very little effort I am able to make substantial additions and changes to the game. The samples are impressive and take very little code I was able to program a 3D level loader with a flying camera in only 2 hours, most of which was spent learning the interface. There were a few rough spots, but not substantial enough to block my progress.

The library is very high level, taking care of all the 'busywork' and leaving you to deal with high level events. Sort of like scripting. By the same token, when you need the fine degree of control it can be painful. For example, their vector class does not support mathematical operations - it is only a container for 3 floats. There is no matrix class. You will have to write your own, and have your own vector class interpret their COM pointer that serves as their vector class. It's a worthwhile trade off in my opinion. The times when I had to spend extra time to get around not having low level access was far exceeded by the amount of time I saved by using the high level code.

Since I'm writing an FPS, the level editing tool was of particular interest to me. In line with the high level approach of the game, if you want to do indoor levels you must use their level editing tool and the conventions it comes with, such as scale and coordinate axis. It supports Animated actors, particle effects, lighting, portals, linked objects, and BSP culling among other things. You can access most of these in-game by referencing the name of the object. Unfortunately, name mangling is the only way to add properties to an object, such as "Ladder_Climbable_1" and parsing out "Climbable" For simple cases it's good enough in terms of feature set.

The level editing tool falls down on its interface. The interface is buggy, hard to use, and badly designed. It would take the length of this entire review to list every problem I encountered trying to use it. My arm is still sore from dragging the mouse back literally 2 feet across my desk every time I want to back up the camera to see a room. You can't use your own exporter so I wouldn't recommend using Wild Tangent if your game will have indoor levels.

While it's not relevant to the review, I am abandoning Wild Tangent because of the level editor. If I were making a genre of game that did not require indoor levels I would probably take the game to completion. I'm going to investigate the Torque Engine next.

Worth mentioning is that there are complaints on the Internet about Wild Tangent being spyware. This is, according to Wild Tangent, because it sends back to the distributor information about what game you are playing and how long you were playing it for. Wild Tangent claims to use this information only to improve their games and claims to not share it with third parties. I was able to block what I believe was the feedback process using Zone Alarm.

Wild Tangent is a powerful engine that provides very high level functions, letting you work on the game rather than spending time setting up data structures. I don't know of any other tool that can achieve rapid development quite so well. With the exception of the level editor, the extensive set of tools will let you create and import art assets immediately. If you can tolerate poor support and plan to make a small, straightforward game then Wild Tangent is worth investigating.


--------------------- To unsubscribe go to http://gameprogrammer.com/mailinglist.html


Other related posts: