Unity Technologies Blog

A glimpse inside Unity Technologies…

Focus: The Locomotion System

The Locomotion System for Unity has previously been briefly mentioned on this blog, but this post will go more in depth with what exactly it can do to bring more life to your animated characters.

The Locomotion System is all about making walking and running in games look better and more believable without requiring dozens of animations. The system automatically blends your keyframed or motion-captured walk and run cycles and then adjusts the movements of the bones in the legs to ensure that the feet step correctly on the ground. The Locomotion System is available for free when used in a Unity game.

Video Introduction

The best way to understand what the Locomotion System is all about is by watching a short introduction to it:
Read the rest of this entry »

Unity coming to you on faster tubes

Everyone knows the internet is made up of a series of tubes.  Since Unity has such a strong internet component in the webplayer, nothing but the fastest of all tubes are acceptable to deliver Unity webplayers to you and your players.

To harness the power of these tubes, Unity Tech has begun working with a content delivery service called Akamai.  Akamai provides server mirrors with fast connections around the world in order to make sure your downloads are as speedy as possible.  They do this for lots of big, well-known companies that you can see on their web site: http://www.akamai.com/html/customers/index.html

Because this download service affects users globally, we’d like everyone to help us make sure there are no kinks in the system.  If you can spare a moment, we have two tests for you to run.

Test #1: Download the Unity 2.5.0 webplayer installer through Akamai:

 

Test #2: Auto-update from 2.1.0 to 2.5.0 using Akamai

Steps:

  1. Download the 2.1.0 webplayer (not using the Akamai service)
    * For Mac: http://unity3d.com/download_archived_webplayer/2.1.0/webplayer-universal.dmg
    * For Windows: http://unity3d.com/download_archived_webplayer/2.1.0/UnityWebPlayer.exe
  2. Install the 2.1.0 webplayer
  3. Restart your browser
  4. Visit this url to auto-update using Akamai: http://beta.unity3d.com/AkamaiTest/

 

Both test #1 and #2 should be blazing fast.  If you can, please leave a comment about where you’re located and your average download speed, we’d greatly appreciate it!

2.5.1 Webplayer Preview

With Unity 2.5.1 quickly wrapping up development, the last item on our to-do list is verifying webplayer compatibility.  As a team we do systematic testing on a broad range of weplayers.  However, we really want 200% confidence instead of a measly 100%.  So we’re asking for a little help — from you!

If you want to help make Unity 2.5.1 a flawless release, there are two simple things you can do.

1) Auto-update to the 2.5.1 webplayer plugin by visiting this Auto-Update test page.

2) Go play as many webplayers as possible.  Your own or someone else’s, published or unpublished, anything you can find.

Every game you play should look and behave exactly the same as it did before the update.  In fact, if you see any differences (or problems) at all, write us an email at support@unity3d.com.  Include the url of the problematic webplayer, and the OS, browser, and graphics card you’re using.  It’s best to let us know right away so we can fix it immediately!

We already know the Unity community is amazing, and this is your chance to actively participate along with the development team to ship a new version.  Rock ‘n roll, and send your pre-release 2.5.1 webplayer bugs to support@unity3d.com!

iPhone 1.0.3 to the Rescue

iphone-os3

If you’re using compressed audio in your iPhone game, then you should grab Unity iPhone 1.0.3. It is a hot fix release with a single purpose - to improve performance of a compressed audio playback under the iPhone OS 3.0.

Now some technical bits. Previously we have been using the AmbientSound as an audio session category. The AmbientSound category respects silent switch and allows single compressed audio to be played via dedicated hardware decompressor. However since introduction of the iPhone OS 3.0 meaning of the AmbientSound slightly changed. Now this category allows multiple compressed audio sounds to be played, but all of them are decompressed on CPU!

That is not a big deal if you have game without CPU intensive tasks or completely GPU bound game. Otherwise performance may suffer. Instead iPhone OS 3.0 introduced a new audio session category called AmbientSoundSolo which behavior is more like an AmbientSound under the OS 2.x. That is what we need!

Unity iPhone 1.0.3 will detect OS version at the run-time and will pick audio session category for you. It is important to know that this process does NOT require you to explicitly compile for newer OS version. You should use the OS 2.x as a compile target still - it will guarantee wider audience for your game.

Unity Community Meetup in San Francisco

In early April a discussion started about possibly getting some folks from the Unity community together during or just after WWDC. The thread started nicely but then sort of fell off the radar for a bit, but in early May it was given a new breath of life and we pulled it all together and had a great meetup last night (Monday, June 15th). The net result was that we had something like half a dozen people drop by our new San Francisco office around 4pm to hang out for a bit before heading to Mars Bar for an evening of food, drinks and socializing with fellow Unity users. I think that all told we had something close to 20 people stop by over the course of the evening and it seemed that the good times were flowing nicely. The conversations I heard around the table ran the gamut, of course there’s was a lot of game talk and demo giving (laptops and iPhones were out, naturally!), but there was plenty of other chatter as well. All in all I had a fantastic time and I want to thank Paris (that’s both his real name and his forum name) from Secret Lab for kick starting this whole thing back in April (funny that it took a guy from Tasmania to get a San Francisco meetup arranged). I of course want to thank everyone that showed up to make it a fun night, good times people! Let’s do that again.

And now how about some pictures? Real names first, forum handles in parenthesis/quotes, enjoy!

Read the rest of this entry »

iPhone 3G S is Hot!

iphone3gs1

First, lets see what is inside new iPhone 3G S. Number of technical sites wrote reviews already (mostly based on well educated guess since real hardware is out of reach for most), so I will be brief:

  • New and shiny ARM Cortex-A8 as main CPU running at 600MHz. New chip maintains 100% backwards compatibility with older ARM1176 chips powering original iPhone family - so no worries here.
  • New PowerVR SGX chip serving as GPU. SGX family is a huge leap over MBX Lite which we saw in original iPhone. It is faster, has pixel and vertex shaders and supports a bunch of features you would normally get only on your desktop GPUs. It comes with OpenGL ES 1.1 and OpenGL ES 2.0 support too.
  • New NEON™ SIMD unit which is a fantastic addition to help in number crunching operations such as mesh skinning.
  • Double the L1 cache size and introduced L2 cache - this means speed.

All this is great great of course, but how could we help to reduce the complexity while supporting full spectrum of old and new devices? Thanks to the desktop origins of Unity engine, we have solved part of this problem even before iPhone was introduced. In order to harness wild variety of Macs and PCs with different GPUs Unity implemented mechanisms to determine capabilities of the graphics device and fallback to less demanding shaders at run-time.

You can learn more about SubShaders and Fallbacks here:

http://unity3d.com/support/documentation/Components/SL-Shader.html

Different graphic cards have different capabilities. This raises an eternal issue for game developers; you want your game to look great on the latest hardware, but don’t want it to be available only to those 3% of the population. This is where subshaders come in. Create one subshader that has all the fancy graphics effects you can dream of, then add more subshaders for older cards. These subshaders may implement the effect you want in a slower way, or they may choose not to implement some details

I’m really looking forward for Unity iPhone 1.1 being released so we can concentrate on adding OpenGL ES 2.0 support to Unity. Meanwhile you will be able to enjoy 8 texture combiners in a single pass available on the new iPhone 3G S devices.

We wrote a number of hand optimized assembly routines to speed up calculations on VFP coprocessor for Unity iPhone 1.1. For example skinning is now several times faster and significantly outperforms GPU! We’re going to continue this trend by harnessing NEON™ capabilities for iPhone 3G S.

One more thing I want to share with you - we have not seen the actual iPhone 3G S device yet. For better or worse, Apple have been really secretive. Right now we’re looking forward to get the devices from the first batch of publicly available ones. That should allow us to implement and test new features ASAP. Meanwhile we’re working close with Apple to verify existent content works fine on iPhone 3G S.

Fixed function T&L in vertex shaders: implemented

Unity roadmap blog post said:

Currently Unity mixes the fixed function pipeline for vertex lit objects and vertex shaders for pixel lit lights. On Direct3D this creates some rendering artifacts on very close or self intersecting surfaces. We want to end this by implementing a full fixed function emulator in vertex shaders. You won’t have to do anything, it will just work!

Well, the good news is that we have done it, and it is definitely coming in Unity 2.6!

It is funny, because the problem seems like a simple one: “there are double-lighting artifacts on close surfaces”. The solution, however, is “we need to implement whole fixed function pipeline manually”, which involves combining shader assembly fragments, doing register allocations, packing vertex pipeline state into bits and other low level hacking.

In other words, it required quite a bit of thinking and implementation effort, so I decided to write up a technical report on how we solved it. If you’re a graphics programmer or love programmer speak or just have nothing better to do: here’s the report.

Unity Tech SF has a new home!

Office Building Panoramic Photo

As Unity Technologies continues to grow in size one of those things we have an increasing need for is office space. Out here in San Francisco that need has been high for quite some time and finally this week we secured a new office and moved into it just this week! For now the office is a bit on the drab side, it’s a turn-key office that came with standard desks/chairs/etc., but that won’t last long as we’re definitely going to tweak it to suit our own tastes. Questions rage like what console system to get, what sort of couch and lounge area to have, what nerf weapons might be appropriate, etc. But no matter what it’s cool to have new digs and I think we’re gonna be happy here for months to come… w00t! If you’re in town for WWDC next week then let me know as we’re just a block away!

Read the rest of this entry »

iPhone Tutorial Update

About a month ago Ethan posted about the Unity Demo Team and the iPhone tutorial that we have been working on. I’m happy to report that the project has been moving along nicely and it’s almost finished. We just wanted to put something up to show everyone what they can expect from our next tutorial.

We’ve included three different types of input:

  • Tap to move : the player character will track toward your finger touch. There is a jump button which you can press to have your character hop up. It also includes gesture recognition so that you can do a pinch to zoom and a twist to rotate.
  • Camera Centric: similar to what you might find in a console platformer, the character will face whatever direction they’re moving and the movement direction is determined by moving the left joystick. The right joystick rotates the camera around the character, and a double-tap on the right joystick makes Penelope jump.
  • Character Centric: all controls are based around the character, and the camera is locked in place behind the character. The left joystick translates her and the right joystick rotates her. Double-tapping the right joystick is jump.

We’re still working on putting some of the finishing touches on the project, but we thought it would be nice to give you a glimpse of the game in its current state. In this video I’ve included a pink dot to show you where the touches are on the screen

We can’t wait to get this game in your hands, and we hope you will have as much fun with this tutorial as we’ve had making it.

What is this Unity anyway?

A bit over four years ago Unity 1.0 entered beta, and was subsequently released June 6th, 2005. Since then we’ve released 20 updates, grown from 3 to 34 people, seen hundreds of games and other products released (as well as thousands of demos and throw-aways).

But what is this all about anyway? Read the rest of this entry »