Among the many announcements made during the two-hour keynote at WWDC yesterday, three were targeted specifically at game developers: SceneKit, new functions in SpriteKit, and Metal, a new framework that opens the door for vastly better performance in higher-end games on iOS, and does it in a way that Google simply can’t respond to because of the way Android works.
For those without a technical background, Metal offers developers a set of functions that are “closer to the metal” than OpenGL, the application programming interface traditionally used on iOS (and Mac, Android, and game consoles not made by Microsoft). That means that they have more direct control over the graphics hardware, enabling faster performance because there’s less overhead for the system to deal with.
In practical terms, this won’t mean much for most developers — only those who really need to get into the guts of their code to boost graphics performance need be concerned. But there’s an entire industry built up around creating “game engines” for developers so that they don’t have to rebuild the wheel every time they start a new project. Getting those developers interested is how Apple gets Metal into most iOS games.
As it turns out, some of those teams have already started building Metal into their engines. Yesterday, Unity3D rendering guru Aras Pranckevičius tweeted that building Metal into the company’s engine was the “fastest port to brand new 3D API ever”:
On his blog, iOS developers and startup consultant Nat Brown points out that this won’t mean that games aren’t going to be built for Android just because developers can get better performance on iOS through Metal. Most won’t even touch it, because it’ll be baked into the tools they use to make their games.
But gamers might start to notice when games built for the platform start to offer significantly better graphics:
That said, of the class of very advanced programmers who will jump on Metal are… the teams that maintain the game engines, frameworks, and toolchains used by 95% (perhaps 99%) of the games for mobile. Unity3D, Unreal Engine, and a few others simply dominate mobile gaming on both iOS and Android and have traditionally targeted a relatively common core of OpenGL ES for both platforms.
Due to this I find it unlikely that the API itself will act to lock anybody into iOS from a classic API perspective – everybody is using an engine or framework and indeed tools much higher up the value chain. But… Metal could very well offer an iOS performance lock-in on mobile.
While there are equivalents of the Metal framework available on other platforms — Mantle on AMD-made graphics chips, and DirectX 12 from Microsoft for Windows and the Xbox platform — neither company has complete control of the ecosystem for which they are building, which complicates things and limits the extent to which they can optimize for specific hardware.
After all, AMD makes a wide variety of graphics cores that can be used in a nearly infinite range of PC hardware configurations, while DirectX has to work with the same range of CPU, RAM, etc., while also accounting for graphics chips from AMD, nVidia and Intel.
That means these frameworks simply can’t optimize for specific hardware in the same way that Apple can, as Anandtech’s Ryan Smith noted this morning:
Of the other low-level APIs we’ve seen so far – AMD’s Mantle and Microsoft’s DirectX 12 – the former is an API established by a hardware vendor who has to ride on top of other companies CPUs and OSes, and the latter is an OS vendor who has to ride on top of third party CPUs and GPUs. Apple on the other hand is in the enviable position of being as close as anyone can be to offering a fully vertical ecosystem. Apple designs their own CPUs, configures their own SoCs, and writes their own OS. The only portion of the chain that Apple doesn’t control is the GPU, and even then the company has exclusively used Imagination Technologies’ PowerVR GPUs for the last 7 years with no signs of this changing.
With the iPhone 5s, iPad Air, and iPad mini all running on the same A7 system-on-a-chip — and this year’s models presumably sharing the A8 — Metal can be optimized specifically for one set of hardware and get the same gains across its range of mobile devices.
While the diversity of Android handsets comes with its own advantages, Google simply can’t create a Metal equivalent that optimizes for every device manufacturer’s hardware. As gamers’ expectations for what their phones are capable of evolve, it’ll be interesting to see how the introduction of Metal shapes the mobile gaming landscape.