Archive for April, 2009

Demo Team

If you have a problem, if no one else can help, and if you can find them, maybe you can hire… The Demo-Team! (cue 80’s awesomeness)

Well ok, we’re not really for hire, we’re actually pretty easy to find, and we’re definitely here to help you make better games with Unity. As the Unity community grows the spectrum of users has widened from the classic bedroom developer up to the large established game studio. Unity’s core philosophy has always been to empower any sized team to make their ideas a reality with an easy to use and powerful tool. Creating top notch documentation, tutorials, and examples goes hand in hand with this philosophy. It facilitates new and veteran users alike to come to grips with new features in Unity as well as how fundamental game concepts are done the “Unity way”.

The relatively new platform of Unity for iPhone has brought a ton of new users to the community and with it a lot of questions about how to develop for this platform effectively. Therefore the first round of demos and tutorials we’ll be doing will be solely focused on getting people up to speed with Unity iPhone. The first one we’re doing is a 3rd person platformer which will teach several techniques for how to control a character as well as the camera. Based upon requests on the forum these will be:

• Touch on the screen to move character to that position in world space.

• “Dual Analog” controls for movement and camera orbit.

• “Single Stick” controls with auto-camera orientation and pinch for zoom in/out.

3rd Person iPhone WIP

As you can see from the screenshot we’re also going to be talking about optimizations for the iPhone including draw calls, lighting, character rigging, and colliders. Hopefully these tutorials will be useful to both artists and coders.

The newly formed Demo Team consists of myself (artist), Amir Ebrahimi (programmer), Charles Hinshaw (designer/writer), and Jeff Aydelotte (programmer/technical artist). I can’t speak for my teammates, but I’m always open to hearing suggestions from the community about what you’d like to see from us in the future. We’re here to get you up to speed making the best games you can so feedback about what you think is important is very valuable to us.

Life at Unity

First, I’ve got to brag about Unity iPhone 1.0.2. The feedback we are getting is great — increased frame rate, audio working a lot better, memory leaks are out the window.  We couldn’t be happier about it!

But so far, most of the Unity bloggers have focused entirely on technical subjects, road maps, and release information… and from our best brains!  But where is the completely irrelevant blogging about the Unity trampoline, my cats, what’s served for lunch at Unity, idiosyncratic server names, and the like? It’s right here!

First scoop: The Unity trampoline. Inspired by the essential-geek-startup-novel Microserfs, we got a Unity trampoline. It was briefly mentioned late one night when Joachim was bouncing restlessly between coding, and he immediately bought one online. A few days later, *VIOLA* (sic), we have a 4m diameter trampoline of death in our back yard.

Unity Tramponauts include Joe, Sam, Alex, David, Nich, me and a few other brave souls.  Joe’s mastered backflips in less than a week.   Because Unity developers are well-trampolined each day, your software is guaranteed to be robust and well-exercised.  How many other game engine developers do you know who rigorously trampoline their dev-team daily?

The Lunch Report:  As you may or may not know, Unity Technology feeds our highly-intelligent action-squad of programmers with nutritious, brain enriching lunches daily.    Most recently, however, our caterer has taken to serving fish and chicken on a daily basis.  It has been theorized that our caterer receives an enormous dump-truck every morning full of chicken.

Today’s lunch: Interestingly, fish was absent.  Mixed salad with arugula, couscous with vegetables, chickpea and chicken blend, and the standard bread with cheese.  Water and napkins were also present.

Unity iPhone 1.0.2 is out there!

iPhone 1.0.2Unity iPhone 1.0.2 is out now, so grab it!

As I’ve mentioned before the key aspects of this release were to reduce memory consumption and make your games more stable. Let’s go over the most important things you will find in 1.0.2:

  • We have halved memory usage for textures! Textures are not longer kept in the memory after being submitted to OpenGL ES. However you will not be able to read or modify texture data from scripts unless the “Enable Get/SetPixels” flag is enabled in the texture import settings. Note: In order to take advantage of this feature for projects created with older Unity iPhone versions make sure to reimport all assets.
  • Memory usage for uncompressed audio is half of what it used to be.
  • Audio respects “mute” button and iPod music playing in the background.
  • Audio continues to play after iPhone receives or rejects a call, text message or alarm.
  • Unity now has much more tidier memory management when it comes to loading new scenes and assets.
  • You can chose from 5 new landscape and portrait splash-screens.
  • We have fixed issues preventing correct usage of .NET sockets and occasional GUI components being stripped away.
  • And on top of that final binary size became smaller!

You can find more details and download here: What’s new in Unity iPhone 1.0.2

While 1.0.2 keeps you entertained, we’re back working on Unity iPhone 1.1.

Unity License Comparison – Reloaded!

license_comparisonI always thought that the license comparison page on the Unity website was – well, not confusing, but at least not quite as clear as it could be. That’s why I have spent the last few days creating a new Unity License Comparison table with the help of my colleagues, where the differences can be seen absolutely clearly between Unity Pro, Unity Indie, Unity iPhone Advanced, Unity iPhone Basic, and even Unity Wii.

So if you’re in doubt about which features come with which licenses, head straight to:
Unity License Comparison

Blast From the Past

Hi guys. 

I was just going through some old folders sitting in a dusty corner on my hard drive, when I found a backup copy of images I posted to a Danish gamedev forum in the first years of Unity. Thought I should share these:

Unity 0.2 (or thereabouts)

Unity 0.2 (or thereabouts)

This is Unity running in what I believe to be OS X 10.0 – it’s a game Joachim and I made together over a weekend when I visited him while he was still living with his parents. The funny thing is both seeing how much has changed, but also how little: we got ShaderLab in bottom left, Hierarchy view, Project (called Library back then) and the inspector top-right. What did we actually do during all those years? (and yes, that is python gamecode scripts you can see in the Library – this was before we switched to Mono)

Read the rest of this entry »

Unity wishes or product feedback? Use your voice!

As part of our ongoing efforts to improve how we go about our business I’m excited to report that we’ve begun a bit of an experiment to improve how we gather user wish-list items and general product feedback. Until now we’ve only had the Unity Community Forums and more specifically the Wish List area there in particular. While that’s worked well enough, it’s just not the right way to go about things. I say that because it’s hard to pull any quantifiable feedback and it’s very weak in terms of general organization for such an effort. Today we’ve unveiled our experiment and that’s the use of User Voice, a web based feedback tool that lets folks like you post your wishes and use your own voice to vote for those items you think are most valuable to you. Your votes are limited* so use them wisely!

Unity Feedback (for general Unity feedback)
Unity iPhone Feedback (for Unity iPhone specific feedback)

*Some folks have expressed mild dismay at the notion of limited votes, if that wasn’t in place the folks would simply vote on everything and we lose any data about what’s really important to you. So when your votes are capped the challenge is on and you must decide carefully, thus giving us better data.

Bug Reporting and You

Assuring quality is a tricky task, and involves a lot of people — testers, developers, and even you the users! There are thousands of you and only a few of us, so today I want to talk to you about this:

Unity Bug Reporter

If you see this Bug Reporter appear, odds are that you’ve just experienced a problem in Unity. I can honestly say that whatever it is, we want to fix it. As part of our QA processes, the test team (currently: me, Jens, Caitlyn, Rasmus, and Oleg) constantly review “the queue” of publicly submitted bugs in our QA/support database. We can do more with some bugs and less with others, and I want to help everyone understand how to tell us about their problem so we can actually fix it.  When we review bugs, here’s what we think about:

What happened to this user and how did it happen?

Can I force Unity to do it again for me?

If we can answer both of these questions then we have enough information to investigate the issue and communicate our findings to you the user, or to a developer when discussing a fix for the issue. For this reason, the information you write in details 1) and 2) in the bug report is critical in helping us squash the bug forever.

Now, if we can’t understand what happened in the first place then there isn’t much we can do about the problem. So under detail 1) we ask that you thoroughly and completely describe the problem, using as much detail as you possibly can. The worst thing you can do here is write nothing. Writing anything you think is relevant to the problem is always better than writing nothing.

Once we understand the issue, we want to reproduce it. When we try to reproduce it, we perform a series of actions or “repro steps” to make the bug occur again. The first place we look for help determining the right set of repro steps is under detail 2). If the bug you’re reporting is frequently or consistently occurring, the best thing you can do is describe a discreet series of steps that we can take in order to reproduce the bug.

Sometimes a bug is specific to the scripts or assets in your project folder.  In case it is, we ask that you always attach your project folder so we can make our test environment match your development environment as closely as possible. The bug reporter will automatically zip your folder and upload it, even if it’s as large as 500MB. And don’t worry, your project will only be used for testing purposes and it will never be shared outside of the Unity Tech office. If you can isolate the problem down to an extremely simple project folder that contains only the assets and objects relevant to the bug, even better!  Either way, providing a project folder will greatly increase the likelihood that we can successfully reproduce the bug and fix it. But I’ll reiterate: if we cannot reproduce the bug, we cannot fix the bug.  So pretty please with sugar on top, attach your project folder because we hate not fixing bugs.

I hope this has been an insightful look into our QA processes and you understand a bit more about the purpose of the bug reporter. To learn even more about bug reporting and the Unity QA processes, please watch the “How to Get Your Bugs Fixed” presentation video from Unite ‘08.

Resources everyone should see

Platform TutorialI think there are a lot of resources that are important but people might not have seen or skipped over it. So I am putting up a list of the most overlooked but important resources.

Getting started
The best way to get started if you know nothing about Unity is to go through the 3D Platform Tutorial. With this in-depth tutorial you can learn how to make a 3rd person platform game in Unity, but at the same time you will learn all the basics of Unity that will give you a head start when creating your own game.

Unity Locomotion system
If you are doing a lot of character animation in your game, you must check this out. Rune’s Locomotion system was presented at GDC 2009 in a fully packed session. The great thing about it is that it does stylized IK, meaning that it uses the existing animations to do good looking motions and only minimally adjusts them to place feet on the ground etc. It also scales really well, you can start out with a simple walk cycle and it will automatically synthesize sidestep / run / backwards animations for you. If you provide more animations the animations will simply look better.

Get the project folder here

Watch the Unite 2008 talk here.

Visual Studio Integration
In our roadmap we announced Visual Studio integration for Unity 2.6. However you can already use Unity with Visual Studio very well. Lucas Meijer has a blog post on how to create Visual Studio projects from a Unity Project folder automatically here.

Shaders
Amir’s Unite 2008 Shader talk is the defacto best tutorial on building shaders. He reshot the session into a 2 hour talk so he could go through all the details.

Customizing the asset pipeline
Lucas is really into tightly controlling the asset pipeline and automating every single bit. Fortunately Unity is very extendable, so he has a lot of places where he can plug in. Watch the talk here.

Matthew’s Physics Talk at Unite 2008
I generally love hearing Matthew’s talks. Got to love the pictures. This year on car physics was very useful.

Unity GUI
Nich’s Unite 2007 talk on how to create your own GUI controls is still very relevant.

The wizkid Forest talks about particles
Forest Johnson, a (then) 15 year old kid single handedly programmed the Avert Fate demo, he did some awesome particle effects too and then gave a kickass impromptu particle talk at Unite 2007.

Rune on dynamic walking

Rune on dynamic walking

Amir on shaders

Amir on shaders

Lucas on pipeline

Lucas on pipeline

Matthew on physics

Matthew on physics

Forest on particles

Nich on Unity GUI

Forest on particles

Forest on particles

Blogs about Unity:
The Flashbang guys have an awesome blog about Unity, that contains deep technical information that sometimes even I didn’t know about.

Lucas has a great blog about Unity with a lot of very useful information.

Somebody made  a site collecting video tutorials about Unity.

Unity Roadmap

Woah my first blog post! And I am going to dive right into the roadmap. This time we are taking a look at what is coming up in the near future.

Unity 2.6

Unity 2.6 is our next big release in the Unity 2.x series (And will be available as a free upgrade). We are planning to release Unity 2.6 sometime later this summer. Here’s some of the things to come:

Read the rest of this entry »

Unity iPhone Roadmap

Whooosh! First release candidate of Unity iPhone 1.0.2 just went out to our beta testers. It’s a good time now to overview our planned releases and directions we will be taking in the near future.

Unity iPhone 1.0.2. Based on custom builds we’ve been sending to devs in need, this release will address engine memory leaks and fix other outstanding issues:

  • Physics and audio related memory leaks
  • Asset leaks while reloading scenes
  • .NET sockets and threads
  • Compressed audio related issues
  • Stripping away too much of GUI components
  • Occasional crashes in AOT compiler
  • Support for both portrait and landscape splash screens

Next will be Unity iPhone 1.5. Since the release of 1.0.1 we’ve been working on a number of performance and memory optimizations. Most of the work on 1.5 is finished already and we’re doing an internal bug fixing round before it goes to beta testers too. Along with optimizations this release will include number of important features such as:

  • Binding custom ObjectiveC/C++ functions to C#/Javascript
  • Native on-screen keyboard support and interoperability with Unity GUI
  • Movie playback support
  • Performance optimizations:
    • significant C#/Javascript performance improvements
    • general rendering loop optimizations resulting in less OpenGLES state changes and less CPU work per object
    • number of internal routines were rewritten using VFP coprocessor assembly
    • way much faster mesh skinning utilizing VFP
    • batching small objects, given that they share same material, into single draw call
  • General distribution size optimizations which allows applications below 10Mb
  • Number of significant memory footprint optimizations

We don’t have strict versioning past 1.5 yet. Some of the following features will end up in the next big release and some might find a way to sneak into 1.5:

  • Compressed audio streaming directly from disk
  • 3.0 downloadable content
  • 3.0 bluetooth networking
  • GPS/Location support
  • Vibration support
  • Post-processing and render-targets support
  • Terrain support
  • Per-pixel DOT3 lighting support for skinned meshes
  • Reduce load times
  • Reduce distribution size even further
  • Improve GarbageCollector collection patterns to reduce spikes
  • Prepare a pack with iPhone optimized shaders

Update: Unity iPhone 1.0.2 is released.

Update: Unity iPhone 1.5 is released