Archive for February, 2012

Wednesday, February 29th, 2012

Unity 3.5 was released and is a game changer even for Unity, download it now!.  There are so many great new features that have already made development faster and cool features to help bring your games to Flash from Unity !

Workflow Improvements

Since I have been using Unity fulltime pretty much on games like SupaSupaCross for SupaSupa Games (pick up a copy at Apple, Amazon or Google for your devices!) and Kimi Raikkonnen IceOne Racing for 24mas while at Impossible Interactive from my *drawlabs game studio, Unity has addressed some major trouble points when doing a full scale multiplatform rollout to mobile (iOS + Android), web and desktop.

Switching Platforms

One major problem was switching platforms and rebuilding the asset cache. Unity now has an Asset Cache server that will minimize library reimports so that it will be easy to switch platforms in minutes.  I can attest that our projects towards the end were really painful switching platforms, no kidding 45+ minutes.  Having that removed is oh so nice when you have 5+ projects that run on all platforms. The horror of accidentally selecting the wrong platform while you have to wait 45 minutes for it to convert one direction and then back is over.  We actually ended having to have the projects on different machines and making two projects hooked to source control that were set to iOS and one to Android to help minimize this.

Occlusion Culling + Lightmapping

Unity updated and replaced the occlusion culling system for speed and better occlusion generation, taking the time down orders of magnitude.  This version also is more precise and you can take the time to do detailed occlusion during development more often.

Lightmapping probes is also a very nice technique to integrate to get what looks like dynamic lights without having dynamic lights and the cost associated.

Source Control for Everyone

A big problem with the pipeline before was having artists work for a day or two and need Unity but they only had the indie version and thus could not participate in our Mercurial and git repositories.  Now even the indie version has source control support (still with .meta files though which is a necessary evil for now — still going to have straggling metas when developers/artists remove/add one they didn’t edit).

Text Based Serialization of Scenes and Prefabs!

This one is epic, I loathe binary formats of old which turn files into blackboxes of repository filling chunks, now you can choose to serialize your scenes and prefabs in text which they have chosen very wisely as YAML.  Perfect use case for YAML and now we can have 2+ people work on the same scene and not end up hating one another when the other has to overwrite all changes since they used to be all binary.

The removal of binary files in game development is very needed and one of the most difficult things to shake with all game engines I deal with.  Binary files for development are bad…  YAML, JSON, even XML is a better way so you can see what changed on each update not just replace the file.

At this point I love Unity for making my day faster…

That isn’t even the really cool stuff like Native Client Support and Flash Player Exporting!

Native Client Support

I feel this could be big if NaCL is adopted widely, this also helps with the Chrome Web store and again taking your game to places that individual development of the engine to do so would be non economical.  Unity knows when to even overlook their own WebPlayer in favor of other players such as Flash and NaCL from Google.

Flash Player Export

note: (Still preview and will require extra license when final)

The big daddy setup to scrape up all the Flash developers.  You can now develop Flash games inUnity using a better programming platform that Adobe was just too protective of Flash old guard to pursue 4 years ago, at least they are now. Flash 11 to Stage3D exporting to lower level Flash was a very smart move for Adobe at this point to keep evolving Flash.  However with them dropping mobile player Flash’s future is still a little shaky as it loses developer mind share, typically that is fatal.  One way to keep great game and interactive developers is what they are doing with Stage3D and Flash 11. Unity is very smart to jump in here and it is a great opportunity for both Adobe and Unity.

2 big pieces missing from the Flash version are terrain export and use of non Flash classes like WWW class.  Unfortunately since this is the only supported Unity WWW class that works across all platforms well this may require some #if defs to route around web/service calls and rewriting web and or networking classes in AS3.

Since this is the first version and has such great potential for overtaking Flash gaming on the web with more native and lower level hardware access, watch this space to grow and be a game changer.

Flash features that are in and out of the current iteration

Supported

  • Lightmapping
  • Occlusion culling
  • Basic scripting
  • Editor scripting (JavaScript / C# / Boo). Note: for JavaScript, use #pragma strict.
  • Custom shaders
  • Animation / skinning
  • Basic audio features, such as AudioSource / AudioListener
  • Physics
  • Navigation meshes
  • Baked substance textures
  • PlayerPrefs
  • UnityGUI, except for text input
  • Realtime shadows

Limited support – features with potential issues

  • Image Effects. Some work, some don’t.
  • Not all parts of .NET scripting work (lambda expressions and LINQ aren’t supported, for example)
  • GUIText will have a dramatic impact on performance
  • The new Particle System (Shuriken) works, but scripts that use the Shuriken API will fail to convert to flash

Not supported

  • Unity profiler
  • Asset bundles
  • Text input in UnityGUI
  • WWW classes. Note that you can write your own ActionScript that uses Adobe networking APIs.
  • Raknet networking (if you need networking, you can write it in Action Script 3 directly, using flash API)
  • Terrain
  • Cloth
  • Using VertexLit shaders in combination with:
    - Specular highlights
    - Spot lights
    - Emissive material color
  • Advanced audio features, such as audio effects. Also pitch manipulation is not supported.
  • Deferred rendering
  • AnimationEvents that carry arguments

More on Unity 3.5