TechnicatGame DeveloperOpen SourceSoftware Essays
 

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

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

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

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

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.