For those of us using Unity iPhone, Apple’s new developer licensing terms are cause for concern. Specifically section 3.3.1, which states:
3.3.1. Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
This has widely been interpreted as an attempt by Apple to prevent developers from cross-compiling Flash and/or Google Android games for iPhone. John Gruber has a good analysis of this which is somewhat sympathetic to Apple’s position. For unsympathetic opinions, simply swing a dead cat to hit a few. 🙂
(If Gruber is correct then I have to take issue with Apple’s thinking. If a company like Adobe tries to create their own platform on top of Apple’s, I believe Apple’s best defense is to keep adding popular features. That forces middleware companies to either support those features and become more Apple-like, or fall behind. But that’s a topic for another day.)
So should Unity iPhone developers be concerned? Yes, of course. Unity Technologies is urgently trying to get clarification from Apple on this. But until we know the score, there are many reasons to be hopeful for a favorable outcome.
1. Many of the top iPhone games are from companies like Popcap who release cross-platform casual games all the time. Many of these companies do not write their games from scratch for every platform. They target their own internal framework which itself supports multiple platforms. Apple is going to have a real problem if companies like Popcap and Telltale aren’t allowed to do this.
2. Unity Technologies is heavily invested in this issue. If in the end comes down to a matter of what language the game is scripted in, or some other technicality, they are probably going to find a way to get around it.
3. Disallowing middleware like Unity isn’t straightforward, particularly for games. If the final project is built in XCode, and follows the UI guidelines appropriate for that app’s category (e.g. utilities are generally expected to follow Apple guidelines and use the Cocoa controls; but games almost always use a custom user interface) then the product becomes indistinguishable from “native” code from the user’s point of view. It’s hard to imagine that Apple would reverse-engineer games in order to distinguish Unity iPhone games from others.
Of course, Apple has been willfully arbitrary before, so this argument doesn’t hold THAT much water, but it’s a point to consider.
4. People who use Unity are well-positioned to jump to another market if Apple locks this one down. It’s hard to overstate this point. Competing platforms like Android are going to have a field day with this, as it reinforces their message that Apple’s closed system is bad for developers. Google would welcome disenfranchised iPhone developers with open arms. And an Android edition of Unity is already in the works.
The burden is on Apple now to clarify or possibly revise the policy. Personally I think they are going to interpret it narrowly or possibly even retreat from it. It seems to me like a classic case of lawyers reflexively setting up something that in retrospect is difficult to enforce and hurts Apple more than it helps.
Here’s hoping the situation gets resolved quickly.
Pingback: Tweets that mention Unity iPhone vs. Apple’s Developer License: Time to Worry? | MindTheCube -- Topsy.com
What’s the status on this? I can’t find any current info on the Unity website, nor anywhere else. The matter seems to be on hold, which leaves a lot of iPhone developers in limbo if they are using Unity.
Any current info would be appreciated.
Apple seems to have gone with an option I feared, which is to not commit publicly one way or another. So, yes, we are in a sort of limbo. However, the deadline for adopting the new store terms has come and gone. No Unity games have been rejected by Apple under the new clause; in fact more than one iPhone game built with Unity 3 (still in closed beta) has been accepted as well.
In addition, Unity finally went public with their backup plan, which they posted on their blog. Basically, they put in some work on a way to write native C++ Unity scripts. As far as I know, they have no intention of finishing and shipping that solution unless it becomes necessary (i.e. Apple starts rejecting Unity apps.)
So there is a small possibility of some short-term hiccups, but in the long run Unity iPhone game development looks likely to continue. Obviously it would be better for us if Apple committed publicly to allowing Unity games, but barring that, this is about as good a position as we could hope to be in.
Happily, Apple has just removed the 3.3.1 restrictions from their terms of service:
http://www.apple.com/pr/library/2010/09/09statement.html
There were a lot of reasons to think this would happen, but it’s a relief just the same.