Archive for the ‘General’ Category

Unity iPhone App Store Submissions – Problem Solved

Recently some Unity customers who have been very anxious to get their game approved by Apple for listing in the app store have received a disappointing rejection notice by Apple because they use something that was not approved by the Apple rules.
As it turns out, the Unity iPhone application was accessing those non-public functions through the Mono runtime which is a third party piece of code we use. Therefore, some of our customers had the bad experience of seeing their application be rejected.
We have been working on hard on this issue as it stalls and affects our iPhone developer customers. We were able to correct the issue just 2 days after we first heard about it and delivered that fix to those that had reported the problem. Many of them have already resubmitted their application to Apple.
We will be releasing this new version, Unity iPhone 1.5.1, sometime next week. In the meantime, you have a need or concern, please contact support@unity3d.com and request an iPhone build with this issue fixed.
Note that Unity games already on the app store are not affected by this.

Recently, some Unity customers who have been very anxious to get their iPhone game approved by Apple, have received a rejection notice because they use something that was no longer approved by the Apple rules.

We have been working hard on this issue as it stalls and affects our iPhone developer customers. We were able to correct the issue 2 days after we first heard about it and delivered that fix to those who had reported the problem. Many of them have been already resubmitted their application to Apple. The first Unity game to completely pass the App Store Submission Process is “Star Wars: Trench Run”.

We will be releasing this new version, Unity iPhone 1.5.1, publicly on our website sometime next week. In the meantime, if you have an urgent need or concern, please contact oleg@unity3d.com and request an iPhone build with this issue fixed.

Note that Unity games already on the app store are not affected by this.

For those who are interested here are the technical details:

The reason why Unity authored games (amongst other applications) have been rejected is that Apple recently has begun using special tools to check against usage of private APIs. The main reason for restricting private API usage is to avoid problems with applications breaking when Apple releases new versions of the iPhone OS. Unity iPhone 1.5.0 is accessing 2 private functions _NSGetEnviron and exc_server from the .NET runtime Mono.
There has been a lot of confusion about this topic recently. So to be 100% clear, there is zero relation between those 2 private functions and harvesting user information. Harvesting of user information can be done with a public API. The 2 private functions used in Unity, can not be used for this purpose. Neither do we know of any Unity games that performed any kind of harvesting of user information like phone numbers.
So why did we access those 2 private functions? First of all, Mono runtime was ported from OS X where those functions are very commonly used. Actually they have been used for years now. And as those functions didn’t give us any problems during Unity port to the iPhone, we simply continued to use them.

What do those functions actually do?

_NSGetEnviron is used by the Mono runtime to provide an implementation of the .NET core API method: Environment.GetEnvironmentVariable(). On UNIX environment variables are often used to pass arguments to applications. Due to how the function is exposed, it does not let developers do any data collection.

exc_server is used by the Mono runtime to provide graceful NULL reference exception handling. This is useful for developers, when they dereference a null pointer, we can avoid a crash and instead throw an exception and continue the game.

While those functions are useful for debugging purposes, Apple now rejects Apps that use them.

In order for us to solve this problem we simply removed any calls to _NSGetEnviron and exc_server. Update Unity iPhone 1.5.1 was sent out to developers days ago. Most of them have already resubmitted their Apps to the AppStore with the functions removed. Unity iPhone 1.5.1 will go live this week. The first Unity game to completely pass the App Store Submission Process is “Star Wars: Trench Run”.

Doing a Talk at GDC Europe tomorrow.

Hi guys & gals.

I’m giving a talk about the inner workings of immediate-mode GUIs at GDC Europe tomorrow (in Cologne). Looking forward to doing it – it’s been my main Unity development area for the past 2 years, so I guess I somehow ended up being an expert on that subject :) It’s Monday at 2:10 – 3:00 PM

If any of you are there, I hope you come – and if you want to meet up in Cologne, drop me a mail or a PM on our forum, and I’ll try to squeeze you in.

The Unity blogs are now web player enabled!

I interact with the WordPress blog engine both here at work as well as at home for my personal blog. Given that WordPress experience, and the fact that I work at Unity Technologies, makers of the Unity Web Player, I guess it’s only fitting that I created a WordPress plugin to allow blog authors to easily include Unity Web Player content in their posts. My point of shame in this is the fact that I created the plugin last Fall and haven’t really done much with it since, my bad!

Example: The Island
Here is an example file that you developers should recognize, it’s a published version of the Island demo we include when you install Unity:

Description
The plugin is simple to use and requires some straightforward mark-up tags within your blog post. Those tags are read by WordPress when showing the post and the needed page edits will be made to show your Unity Web Player content. The plugin includes support for both Unity Web Player 1.x and 2.x content. The plugin allows you all the same options as the native object/embed tags so you can enable/disable the context menu or the ability to go fullscreen, to use custom loading screen graphics or to specify your own install prompt image and more.

Download
Please feel free to download my WordPress plugin and put it to use right away:

WP_UnityObject

The download contains a readme file with instructions, have fun!

Edit Note (May 20, 2009): the download link has now been changed as the plugin is available from the Resources area on our website.

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

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 »

Zombieville USA + Blush = Cool New Unity Content!

It’s been a busy year already for everyone in the Unity community and the year is still just getting started! Unity 2.5 is around the corner, GDC looms close and as of late there have been a few pieces of Unity content making waves that are well worth your time and attention. Specifically I’m referring to Zombieville USA (Mika Mobile) and Blush (Flashbang Studios).

Read the rest of this entry »

Tweet, tweet, tweeting! I’m now on Twitter…

I remember a long time ago when I first heard of this odd new (at that time) site called Orkut, I readily signed up and started my own person social networking experience. Before long it seemed that Orkut was passe and it was replaced with Friendster. Again I signed up and joined the fray, but I soon grew weary of the experience and dropped off the radar for a bit. Instead of using social networking sites I focused on my own personal website and interest-specific forums for meeting up and interacting with others online. Due to not fully enjoying those early experiences I was slow to get back into things with the advent of LinkedIn, MySpace, Facebook and of course one of the newest entrants into the fray, Twitter.

Slowly but surely I succumbed, ultimately signing up for both LinkedIn (here) and Facebook (here) skipping over and avoiding the whole MySpace experience. As of late I’ve come across lots of folks jumping on the Twitter bandwagon and so I figured that it was finally time to give it a go. So today I finally signed up for a Twitter account, feel free to stalk me… err, “follow” me, if you’d like:

http://twitter.com/higgyb

I’m now following a number of folks, many of whome are coworkers at Unity Technologies or members of the Unity Community. Are you on Twitter? Will I follow you next? <insert evil music here>

Unity on Windows, it’s getting ever so close!

As most of the Unity universe already knows, we recently announced that Unity 2.5 is coming soon, and that among other new features it will most prominently include Unity editor support on Windows. In case you live in a cave or are otherwise out of the loop with respect to Unity news:

Unity: Coming Soon in Unity 2.5

I think it goes without saying that this has caused an incredible stir amongst the game developer community and it’s caused a lot of new eyeballs to look our way. For those of us working on Unity it’s an incredible time to say the least and all signs seem to indicate that this year’s roller coaster ride is just getting started…

Read the rest of this entry »