When a studio is seeking to develop a property for every major desktop, mobile, and console platform, only one full-featured engine can currently lay claim to that capability.
The Unity Engine, currently at version 3.5, starts with base functionality for Windows and Mac development (including a downloadable web player), but can be licensed to support Flash, iOS, Android, Wii, PS3, and Xbox 360.
Update: Check out what the newly-announced Unity 4 will bring with its newest update.
The engine is designed to support single-source authoring with multiple platform targeting to simplify cross-platform work. In reality, there will always be specific tweaks needed for individual platforms, but Unity's common toolset/project support for all platforms simplifies this process greatly.
- Deferred Renderer: Available on non-mobile platforms with Shader Model 3.0 or better support.
- Lightmapping: Uses the Beast lightmapping engine.
- Light probes: Pre-computed light probes which give the illusion of dynamic lighting on dynamic meshes.
- Dual lightmapping: Optimized for near versus far viewing distance.
- Screen Space Ambient Occlusion: An ambient occlusion approximation pass, rendered as a post-process effect.
- Shaders: 100 built-in shaders, Strumpy Shader Editor is a free plugin by a Unity developer.
- Surface Shaders: A high-level programming approach which is compiled into low-level HLSL, Cg, or GLSL.
- Post-processing: A large selection of post-process effects is available. See the documentation for full list.
- Occlusion Culling: Uses the Umbra toolset for pre-computed visibility, and functions on all platforms.
- LOD Support: Standard LODGroupstyle support.
- Graphics API support
- Desktop: DirectX, OpenGL
- Mobile: OpenGL ES: Unity has built a custom GLSL optimization path to overcome inherent issues in the current generation of mobile graphics drivers.
- Substances: Support for Allegorithmic substances, which are parametrically-controlled combination shader/physical materials. Due to their mathematical and not texture-based nature, they are highly optimized for small memory footprints.
Unity utilizes the NVIDIA PhysX physics engine, which supports:
- Soft and rigid-body interactions
- Joint systems
- Wheel collision system
- Terrain Painting
- Detail Texture Painting
- Tree Creator
Unity has a number of built-in features to facilitate creation of standard multiplayer games.
- State Synchronization
- Real-time Networking
- Remote Procedure Calls
- Backend Connectivity
- Web integration: Allow the game to communicate with container web pages and services.
Massive Multiplayer Online: Development requires additional work by the developer or the addition of one of several third-party software packages designed for that purpose.
Unity is powered by the FMOD audio engine and toolset. One of the two most widely-used sound engines, it is a major selling point of the engine for some developers.
- Live previews
- Curve-based sound attenuation editing
- Pro version: Audio filter support
Preview Functionality/Target Platform Previews
The editor features live preview functionality to simulate gameplay on PC. There are also mobile preview tools which allow the developer to test the build directly on the target device.
Unity is somewhat unique in supporting several high-level languages for scripting, which are compiled into native code to enhance performance:
- Boo (a Python derivative)
The game logic runs on Mono, based on .NET standards, and integrates with MonoDevelop.
- Debugger integration: Step through code, breakpoints, inspect variables, etc.
- Profiling: Unity features a built-in profiling tool.
- Particles: The Shuriken editor was added in Unity 3.5, and allows for visual editing of complex particle systems.
- Animation: There is no built-in animation or cinematic system at this time. The <iTween Visual Editor> plugin is the closest to this functionality currently.
- Shaders: A third-party, free plugin is available. (See above.)
- Visual Scripting: Third-party plugins are available, such as
- UV Unwrapping
- Beast lightmap baking
- An advantage to this system is that Beast runs in background, allowing the developer to continue work while Beast calculates the lighting.
- Pathfinding: Unity can automatically generate NavMeshes for baking into the level, then relies on pathfinding and crowd algorithms at runtime.
- External package support: Unity automatically detects saves made to asset files in external applications (3D Studio MAX, Photoshop, etc)
- TrueType font support
A major advantage to Unity users is the Asset Store, which is a unified marketplace for purchasing additions to the engine, as well as game assets for use in development.
Team License & Source Control
An additional feature available for purchase is the Team License, which enables easier sharing of code and assets among team members basic version control by way of a basic version control system.
Pros & Cons
Unity has a lot going for it: straightforward cross-platform development, a marketplace of assets and plugins to give new projects an extra boost, common programming language support, a powerful sound engine, and many other features.
Balancing that is the feeling that a lot of functionality that could be built into the engine, isn't. The free shader editor is maintained by a Unity employee, but not integrated into the core engine. There are multiple visual scripting and state machine alternatives available, but Unity hasn't chosen to hire/integrate them into the code tree. Beast supports network-distributed lighting calculation, but that functionality is not exposed to developers. (Notably, this is offset somewhat by it running as a background process.) There is no built-in system for handling cinematics or animation of dynamic objects.
Are these issues enough to stop someone from developing a quality title? Certainly not. There are many, MANY quality games running on Unity out there. The costs, however, do add up.
What you have to evaluate, cost-wise, is that while a Unity-based title will cost you more up-front to develop for multiple platforms, they have no royalties or per-title license fees, versus other engine alternatives. If you plan on only creating a game or two and want to use all the features of a Pro license (or develop for iOS and Android), then Unity may not be the engine for you.
However, if you plan to keep developing games until you make your fortune and retire, it's an engine that you should definitely consider.
Disclaimer: Unity has provided an evaluation license for the purposes of demoing their engine.