Unreal Development Kit (UDK) is a powerful toolset for creating 3D games for the Unreal Engine. In this blog I’ll describe my 3 months of experience with the engine.
I have had the pleasure of getting familiar with the UDK when I was working on the game ParaDime (An student game project created with 5 other students). None of us had any previous experience with UDK, so the project started out with doing a lot tutorials (Video tutorials from 3DBuzz and reading ‘Mastering Unreal‘ series). After 3 months of sweat, blood and magic, we managed to create a beta version of our awesome looking (but rather buggy) 1st person puzzle game.
The UDK is available free of charge, but if you want to sell your game you must share the revenue. UDK comes in a new flavor every month (new features, new bugfixes and new bugs) – for the ParaDime we used the UDK-2010-03 version. The UDK is huge, so to keep this review at a reasonable length I have picked my top 5 favorite features along with 5 things I hate.
Best of UDK
- Performance. We didn’t have major performance problems during the project. Pretty amazing considering the huge amount of polys and advanced materials we threw at it.
- Lightning and rendering. Thanks to the UDK’s HDR rendering support and it’s Unreal Lightmass system it is easy to make your game look really good.
- Kismet scripting and Matinee animations. The build in scripting and animations tools makes it really easy for level designers (non programmers) to setup simple scripts to make the levels become more alive.
- Material editor. UDK’s shader programming using the visual material editor is easy. You can see how each shader instruction affects the result.
- Cascade particle editor. With the built-in particle editor you can easily create some good looking particle systems, and instantly see how they look in your game.
Worst of UDK
- Lack of documentation. The auto-generated source code documentation is most often of little or no help. Most often you will find yourself browsing the source code instead – with the risk that you hit a native c++ code block (meaning no source code available). In that case your only change is browsing Internet forums for answers – or try to figure out the problem yourself.
- Lack of support for modern file formats. UDK does not understand formats like PNG, JPEG, MP3. FBX support was recently added – a couple of months back the engine preferred 3D models in an ASCII-format.
- No project folder. Creating a new UDK installation. There is no clear separation between your files and the UDK example files. This makes things really messy when more persons are working on the same game.
- Slow work-flow. UDK does not support hot-swap of UnrealScript code. This means after a code change you have to restart the UDK – this takes around 1-2 minutes.
- Poor debugging support. Debugging is often limited to writing to a log file or in worst case not available at all (this is true for animation and shader programming).
So is UDK good or bad. Short answer: that depends.
If you are a level designer, a world designer or simply just want to create your own Unreal Tournament level, UDK is really a fantastic tool. It is still a complex beast, but after reading the ‘Mastering Unreal’ books and watching the first 100 video tutorials you should have learned enough to create pretty much any level you want in UDK.
If you are a programmer things are a bit more rough. Even though the UnrealScript-language is a fairly easy to learn, the architecture and the API of the engine is not very well documented. If you have no prior experience with game engines there is a lot of stuff to learn the hard way. I recommend programmers with no prior game-engine experience to start out with a simpler and more well documented engine like Unity (C#) .
In other words; It is fairly easy to create a 1st/3rd person shooter game (as a mod of Unreal Tournaments), but if you want to create something different it requires much more insight in how the engine really works.