At the core of many of today's AAA games is Epic Games' Unreal Engine. Epic has made that same technology available to independent developers for free, paving the way for the next generation of high-quality indie titles, through the Unreal Development Kit (UDK).
UDK's primary area of support is Windows and Xbox 360 game development, but that is rapidly expanding. Epic can currently claim in-development or full support for: Adobe Flash, Apple iOS (for mobile devices), Google Android, Mac iOS, Sony PS3, Sony PS Vita, and the Nintendo Wii U.
The Unreal Engine 3 renderer technology that UDK uses is one of the keystone features of the engine. Included in UDK is a visual editor for real-time shaders, capable of creating visuals which approach pre-rendered quality. Additional features include:
- DirectX 9 and DirectX 11 feature set support, with additional enhancements for DirectX 11-capable hardware, such as Full-Screen Anti-aliasing via MSAA and Screen Space Subsurface Scattering for effects such as realistic rendering of human skin.
- 64-bit color HDR rendering pipeline with gamma correction and linear color space rendering.
- Per-pixel lighting and rendering with support for normal-mapping, Phong and per-material lighting with anisotropic effects, virtual displacement maps, light attenuation, and pre-computed shadow masks, and directional light maps.
- Volumetric environmental effects, with opacity handled on a per-pixel level, including fog layering and density adjustment.
- Texture streaming for management of larger texture sets than will fit into memory simultaneously.
- The aforementioned shader editor supports cross-platform compilation of shaders, enabling the developer to create a shader once for multiple platforms (bearing in mind limitations of mobile, previous-generation, or console hardware).
NVIDIA's PhysX technology powers the UDK physics system. The system controls many aspects of the gameplay visuals that players experience, by offering a wide set of features.
- Unreal PhAT, the physics modeling tool in the Unreal Editor (UnrealEd), provides a visual interface for tuning physics performance without the use of external applications or code.
- Physics system support: PhysX supports cloth, soft and rigid-body interactions, ragdolls, joint systems, elastics, and dismemberable objects.
- Clothing support: Using the NVIDIA APEX Clothing system, defined cloth objects interact realistically with character animations.
- Animation blending of physical interactions and pre-defined animations to create realistic interactions with the environment.
- Environmental destruction: UnrealEd contains a fracture tool that works with static mesh geometry and the NVIDIA APEX Destruction system to allow damage to objects within the world.
- Crowd systems: Epic claims support of hundreds of characters within a scene, using flocking algorithms.
- Vehicle physics support and sample code simplifies the process for developers of getting wheeled vehicles in-game and playable.
The terrain system in UDK was recently overhauled, with a new system, Landscape, providing many requested features to developers.
- New landscape tools, supporting painting via mouse or pressure-sensitive tablet to sculpt the terrain in 3D.
- Erosion systems: Both thermal and hydraulic erosion is simulated, to create realistic weathering.
- Support for the shader graph editor to create terrain materials, with multiple layers, capable of being painted by the artist as desired.
- DirectX 11 support for tessellation and displacement mapping to add more realism to each layer.
- LOD streaming system: Streams in and out terrain pieces, allowing for huge worlds by managing memory, as well as the streaming of high-resolution textures as-needed for additional detail.
UDK supports a variety of networking methods, with both local (LAN) and internet-play capabilities.
- Client-server architecture for reliability and scalability.
- Support for non-dedicated server hosts (this allows a person to host and play the game in a client-server architecture).
- Auto-downloading and caching of server-based content, allowing for easier distribution of bonus content, mods, and maps.
The audio system in UDK is very flexible at a basic level, but is generally regarded as one of the weaker points in an otherwise fully-featured engine. While the source code license to Unreal Engine 3 used by large studios has the ability to plug in professional sound engines such as FMOD or Wwise, UDK is unable to do so. Current features include:
- Audio compression methods for all supported platforms.
- Audio compression and decompression support using an optimized Ogg Vorbis encoder/decoder.
- Multi-channel playback, including 5.1 stereo, with 3D sound positioning via spatialization and attenuation.
- Batch control of sound playback based on category, sound type, or several other supported parameters.
- Debugging tools for resource utilization. (This is particularly key on mobile platforms, as audio is very expensive, memory-wise.)
- Visual Sound Cue Editor: permits control of levels, sequencing, looping, filtering, modulation, pitch shifting, and randomization of playback order.
Preview Functionality/Target Platform Previews
UDK has a variety of methods for previewing gameplay as well as visuals on target platforms.
- Preview in live editor windows: UnrealEd has a preview function for the 3D preview window which presents the PC gaming experience, or by spawning a local game session directly.
- Mobile Previewer: Simulates a mobile (OpenGL ES) game experience, with support for remote control via mobile device.
- Play on Mobile: UDK creates and signs a package for play on an actual device, without going through the full, high-quality content baking and compression process.
The version of the Unreal Engine that is contained within UDK does not contain source code for the core game engine components, but it does contain the full script code for gameplay, and the ability to hook into DLLs on the PC.
The script code contained in the UDK distribution is UnrealScript, which is a C-like script language designed specifically for the purposes of gameplay code.
The editor, UnrealEd, is the key piece of UDK that makes the engine so popular, featuring:
- Unreal Content Browser: Graphical browser for the viewing and selection of in-game assets
- Unreal Kismet: Flow-based graphical scripting system
- Unreal Matinee: Animation tool for in-game scenes and cinematics
- Animation editor: Combine externally-created animations with scripted events
- Unreal Facade: Procedural building creation
- Performance and memory optimization tools
- Unreal PhAT: Physics Asset Tool for binding physical properties to game assets
- FaceFX Studio: Facial animation
- Mesh editor: For previewing and editing attributes, UV mapping, generating LODs, and more
- Landscape: Terrain editor
- SpeedTree: Create realistic foliage
- Sound Editor: Control basic properties and playback of audio
- Attachment editor: Graph-based object relationship editor
- Texture and material editor: Control many properties of textures and materials
Version Control Integration
As of the July 2012 version of UDK, Perforce has been formally integrated into the codebase, as well as distributed with the UDK installer. See this article for instructions on use.
- Scaleform UI: Using the Flash-based Scaleform toolset, UDK has the capability for high-quality UI systems.
Pros & Cons
UDK is a complete package, and continues to evolve. While its audio system may not be the best available, the other tools that it contains mean that even non-programmers have the ability to create an impressive game from scratch, which is, frankly, a remarkable feat.
Be sure to check out our First Look at Unreal Engine 4, which shows the next generation of the engine.