Game Development with Unity
Overview
Technicat develops games under the Fugu Games label using the Unity game engine. This page provides some general information on using this engine, for internal reference, guidelines for development partners, and for anyone else who might find it useful.
Other game engines are listed in Tools.
Platforms and Pricing
Unity is a multiplatform 3D game engine targeted largely for indie developers and casual games, although the scope appears to be expanding. The feature set includes vertex and pixel shaders, terrain, HTTP, asset streaming, character animiation....
Unity is priced at $1500 for the Pro version, around $300 for the Indie version (missing 2D image effects, render-to-texture, video, asset streaming, requires standard Unity badge and load screen). iPhone is priced similarly, but requires an existing desktop Pro license. The Wii versions is more expensive. All licenses are royalty-free.
Although supporting multiple targets, the Unity editor runs only on MacOSX. Unity 2.5 will also run on Windows.
Getting Started
The Downloadthe Indie version for a 30-day trial. Play with the sample projects.
Resources
For more complete information, see
- Unity site (in particular the Resources page)
- Unity documentation
- Unity forum
- Unify community wiki
- Unify Developer Magazine
- Wikipedia
And some blogs by Unity developers and users
Assets
Importing
Assets are imported into Unity simply by placing them in the project Assets directory. An automatic import then takes place and the asset then shows up in the Unity editor project display. It is appropriate to change the import settings of an asset within the editor and then reimport. Ideally, content creators will import and examine assets before passing them on for integration into the main project.
Transporting
If source assets are passed along, they have to be reimported. Entire projects folders are relocatable, but subsets of a project can be exported and imported as .unitypackage files.
Animation
Animation is imported as FBX (or Collada?) files. If character animations are set up and imported according to one of the conventions for Importing Character Animation then the resulting character contain a list of the named animations that can be controlled by the script.
Meshes
Officially, several formats are supported, (see Meshes (User Manual) but the most reliable is FBX. For example, OBJ files created by PolyTrans hang during import (and also when run through the Autodesk FBX converter, so no surprise.
Source/Version Control
Unity projects don't behave well with standard source control systems, except the Unity Asset Server
Browser
Examples
System Requirements
Unity games published as web players run on Mac and Windows, but not Linux.
Limitations
- Application.ScreenCapture not supported
Bugs
- Application.LoadUnityWeb doesn't work
Publishing
Any web page can host a Unity web player. Among ad-share sites, Shockwave supports Unity (see forum post)
Windows
System Requirements
XP, Vista
Packaging
I use NSIS with a reusable installer script to generate installers. See Windows versions of Fugu Games for examples.
Publishing
Steam is a possibility, by creating a plugin (see forum post)
Limitations
- No way to specify a custom icon for the executable
Mac
System Requirements
MacOSX 10.3+, Intel and PowerPC
Publishing
Apple software site is a good way to advertise. Big Bang Games and Freeverse sell Unity games in retail. Check MacFun.
iPhone and iPod touch
References
The iPhone section of the Unity manual is in the Components page, but not in the online manual. See also these online resources:
iPhone Specifications
- screen resolution: 320x480 or 480x320, depending on orientation.
- memory: 128MB
- texture memory: 24MB
- max texture size: 1024x1024
- screen refresh rate: 60Hz
- 3D support: OpenGL ES
Asset Format
- Unity will import textures to these formats, in increasing order of performance - 24-bit RGB, 16-bit RGB, 4-bit PVRTC, 2-bit PVRTC
- Uncompressed - AIFF, WAV. Compressed - MP3, MPA (but only one can play at a time)
Performance/Quality Limitations
These limitations are unlikely to change
- OpenGL ES fixed function pipeline (no pixel shaders, expect performance impact with vertex shaders)
- Refresh rate is clamped to 30Hz
- no render to texture (no video, reflective water...)
- terrain unsupported
- no video
Functional Limitations
Missing features that may be supported in future versions.
- Application.ScreenCapture and GL.ReadPixels means no custom screen snapshot capability. Note that pressing Home+Power still works.
- HTTPS
- compressed audio (including streaming)
- OnMouseUp/OnMouseDown
- .NET 2.0 (only 1.1 supported)
Bugs
- Memory leak (scene loading?) sometimes results in crashes
- WWW implementation not approved by Apple?
Features
Features specific to the iPhone version
- Occlusion
- Orientation
Pro Features
- Build stripping
- Application.OpenUrl
- Replacement of Unity splash screen
- Asset streaming
Performance Tips
- Target 7000 static visible triangles (see Unity forum), 3000 animated
- Use PVRTC texture compression whenever possible, 2-bit whenever possible.
- Use occluders
Publishing
App Store. Apple supplies the provisioning (i.e. you upload the app) and takes %30 cut. App can be updated any time. Risk factor - they have final say over submission.
Wii
References
System
Architecture is similar to GameCube, apparently
Publishing
WiiWare. Self-publishing options is not clear, but it's certain that Nintendo has final say over submission.
Unity charges per-title, $30,000 for a retail game, $15,000 for a WiiWare title, and requires becoming an authorized Nintendo developer, which apparently is problematic without an industry track record and secure (as in zoned for business) office.








