Well iOS is just as much Obj-C as it is Swift. In fact even more so. Even Apple still writes all of its core apps in Obj-C. I'd love to think Nintendo is going pure Swift but I think they are probably doing it all in Obj-C. Especially since their code base is in C.
Would be great to interview them.
Btw, the new Swift Playground app is written in Swift. Great app!
If you're making games and you're not using Unity, you are making a mistake.
A lot of hardcore devs might say otherwise, Unreal Engine does extremely well for developers who are willing to work with it. Unity may be easy to integrate and develop for, but there are other engines available that may be better suited for what a developer is going for.
Unity is good for a base game engine, it provides an easy learning curve for new game developers without sacrificing it's power. Unreal is best at all things lighting and particles, it's not as easy to learn as Unity but it's not hard if you want to put the time into it. CryEngine is another, although it is not easy by any means, it packs a huge punch in graphics and can really make some great detailed environments.
Saying that one is better than another is case by case. If you are just making a Castle Crashers clone, sure Unity is the one to go with. If you plan on doing something where the main focus is dynamic lighting in a simulated environment (Infinity Blade 3) Unreal might be the way to go. If you want to include a lot of vegetation in an outdoor game without sacrificing FPS then CryEngine might be the way to go.
Each engine has their strengths and weaknesses, it's up to the developer on what they plan to make to choose the best one for their needs.
Unity is preferred by Nintendo because they aren't exactly releasing Sniper: Ghost Warrior (CryEngine) level of foliage, or Gears of War (Unreal) level of lighting in their games.
Performance is no longer the central issue in development in several cases in our times. A lot of companies need the ability to quickly and easily release products for multiple mobile platforms (Android, iOS and Windows Phone, for instance) using a single, common base of code. Unity 3D comes handy in doing this and it's an awesome engine to work with. It supports Javascript and C# and is more than enough for most mobile games, performance-wise, allowing for customized shaders and all that stuff and having the ability to generate releases for a myriad of platforms./Today we are working at a much more logical level, with most of the twiddly bit stuff being done by custom hardware, such as GPUs, or libraries that sit between us and the hardware.
Both C# and Java suffer a hit in performance due to their design: C# program is compiled into IL code which is then re-compiled into system code by a .NET run time. Similar thing happens with Java VM. On the other hand, C++ code is compiled into native code that can be directly run by the system.
Sure, C# and Java can achieve comparable performance in some cases, but if we compare them in terms of complex game engines (Unreal, Cry engine) then they are pretty far apart.
As for performance, to render a game at 60FPS you only have about 16ms of processing time before the next image needs to be ready to be displayed. When you're working under those constraints, things like the memory layout of your data structures starts to make a huge difference. C++ gives you a total control of how you store your resources and data structures in memory, allowing you to optimize their layouts for performance. You can ensure that you do all your resource loading and unloading when appropriate, say when loading a new level and not have to worry about a garbage collector kicking on in the middle of gameplay and causing hitching or slowing down your rendering speed.
On the other hand, you have games going for longevity and micro transactions or having social be a core component of their design (MMO games). These games have very long lifespans and in turn, need to be maintained. This means there will likely be lots of services and tools being built for and around these games and that world is almost entirely high level or dynamic languages.
To digress a little. I found some great info about the differences in languages used in game development and wanted to post here. I'll probably change the thread title to Languages for Game Development.
AAA console and PC game developers tend to use C++ for all engine code.
(Gameplay code might be done in scripting languages.)
Unity - Engine is written mostly in C++ (devs use C# scripting)
Unreal - All C++
Cry - Engine is written with C++ (devs use LUA scripting)
If you want to learn indie / mobile game development the tools you might want to start with C# and Unity.
If you're in the console game industry, C/C++ is the only language supported by the low-level systems.
The languages for native mobile development are Obj-C/Swift and Java.
There is a debate about the performance difference between C++ and C# but it seems that's becoming less relevant as is seen in these Quora posts.
I would guess Nintendo is using Unity. If you go to their developer page for the Wii U or 3DS, they tell you to just use Unity to make your games. A Unity Pro license is included with the Wii U dev kit.
Unless I'm mistaken, Nintendo uses Unity internally to make their own games for their own consoles. Given that they're releasing the same games simultaneously for both iOS and Android, I would guess that they're using Unity to make them.
If you're making games and you're not using Unity, you are making a mistake.
I meant as opposed to rolling your own engine. Teams of people with decades (or centuries) of collective experience made Unity, UE, CE, ID Tech, Source 2, etc. You should know specific shortcomings of existing engines and how to avoid them if you're going to build your own engine. Otherwise just use an existing one.