Original URL: https://www.theregister.com/2010/09/03/unity_and_the_iphone_and_beyond/

Unity – iPhone code swap approved by Jobs (for now)

Un-Flash eyes world of Google

By Cade Metz

Posted in Software, 3rd September 2010 19:14 GMT

Steve Jobs forbids you from building iPhone applications with a language other than Objective C, C, or C++. If that other language is Adobe Flash. What if it's not Adobe Flash? Are you still forbidden?

The answer is that there is no answer. Apparently, Jobs has yet to make up his mind.

Unity is a cross-platform game development tool with over 200,000 registered users worldwide, including such names as Electronic Arts, Microsoft, Disney, and Lego, and when building iPhone and iPad applications, it uses a language other than those explicitly approved by Jobs. The platform is based on Mono, the open source incarnation of Microsoft's .NET, and it compiles .NET code straight to assembly. Nonetheless, when applications built with Unity are submitted to the Apple App Store, they continue to be accepted.

This would seem to indicate that the Unity platform has somehow won the approval of Jobs and his army. But when the company's founders ask Apple for confirmation, they're met with what amounts to silence.

"We've contacted Apple, but we've still not been able to get an official response," Unity CEO and co-founder David Helgason tells The Reg. "We have friends at the company, and we've talked to them on a lot of different levels...but so far, we have no answer."

Unity was designed on the Mac, and the original incarnation of the tool — for building cross-platform 3D games on the desktop and the web — was launched by Helgason onstage at Apple's June 2005 Worldwide Developer Conference.

Famously, terms of service for the latest iOS SDK decree that "applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine" and that "only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs." The new SDK arrived in April, and Apple began accepting apps based on the kit in June.

In the wake of the SDK's arrival, Jobs made it quite clear the new language would ban applications built with Adobe's iPhone Packager, a tool that converts Flash script directly to machine code. Flash, Jobs said in his sweeping rant against Adobe's platform, was threatening to put the breaks on iOS, the operating system that drives the iPhone, iPad, and iPod touch.

"We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform," Jobs wrote. "If developers grow dependent on third party development libraries and tools, they can only take advantage of platform enhancements if and when the third party chooses to adopt the new features. We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers."

“We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform." – Steve Jobs

Unity is certainly a "third party layer of software between the platform and the developer." It certainly requires developers to code in something other than C. And unlike third-party iPhone dev tools such as Appcelerator's Titanium, it doesn't convert code to Objective C before compilation. But like Titanium, it plugs into Apple's XCode integrated development interface, and you have the option of adding Objective C code around the Unity assembly code.

"We go straight to assembly from this .NET runtime — the Mono open source runtime we use — then we hand off to XCode, and XCode compiles it all into a native binary," Helgason says. "But after you script in .NET — typically with C# or Javascript or Python — you can also write Objective C code that interacts with some of the new APIs we haven't yet supported."

Unity is not Adobe

This does separate Unity from the Adobe iPhone Packager, which bypasses Apple's XCode entirely. "The Packager," Adobe once told us, "allows a Flash developer to compile the ActionScript code down to native iPhone/iPad machine code, in the form of an .ipa file, which is the file that you submit to Apple for approval & inclusion on the App Store." If Jobs is worried that third-party dev platforms won't adopt his APIs as fast as he would like, Unity would seem to offer a means of alleviating that fear.

"The key thing for Apple is they want high-quality content that takes advantage of their features," says Unity chief creative officer Nicholas Francis, another company co-founder. "It's very important to them that developers have access to [their latest APIs]...if you want to use the latest APIs, we make that simple to do."

What's more, the Unity platform benefits from the simple fact that it's not Adobe Flash. Judging from Steve Jobs open letter on Flash, it would seem that his SDK change was an effort to ban Adobe in particular. The letter lists a multitude of Adobe sins, the release of the iPhone Packager being just one.

But Apple has yet to grant Unity its official approval, and one has to wonder if the ban could occur at any time. "It has certainly introduced some FUD, and that's annoying," Helgason says. "But Unity games are selling in the App Store...and I think that Apple is being honest when they say 'We're still thinking.'"

"I think that Apple is being honest when they say 'We're still thinking.'" – Unity

If the ban does come down, Unity has a plan B, which would mean switching all development to C++ — i.e., no .NET code whatsoever. "We haven't committed to actually doing this," he said, "but we will if we have to. We're not going to leave our customers behind."

Whatever Apple decides, Unity is more than just an iPhone development platform. It was originally created to build applications for mass market desktops and the web. And it builds for gaming consoles such as the Nintendo Wii, PlayStation 3, and Xbox 360. Outfits such as BigPoint are using the platform to build browser-based massively multiplayer online games, and game giant Electronic Arts built its web title Tiger Woods Online with Unity.

What's more, the company is on the verge of officially releasing a version for Google Android. Unity for Android is currently in beta, and one title built with the platform has already turned up in the Android Marketplace.

Meanwhile, Google has tapped Helgason and company to help bootstrap that new-age web platform known as Native Client, the Chrome and Chrome OS technology that runs native code inside the browser. At its annual developer conference this May, Mountain View told the world that Unity had developed a version of its game-playing browser plug-in based on Native Client, and it has already demoed a Native Client title from another high-profile customer, LEGO.

Say what you will about Google. It isn't likely to blacklist applications simply because they were written with tools it doesn't approve of. ®