Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

patent10021

macrumors 68040
Original poster
Apr 23, 2004
3,539
814
Nintendo will be releasing Pokemon for iOS and I was curious as to how you think Nintendo approaches iOS development? Could they use their already existing C++ in a new Xcode project? Would it all be done in SceneKit/Metal?
 
Last edited:
Well since they will be writing it for iOS my assumption is that they are going to go with re-writing the game in Swift. As far as SceneKit vs Metal, the graphics are simple enough to go with SpriteKit, if it's anything like the 2d version they wrote for Gameboy. If they decide to go 3d they will probably go with Metal unless the battery life is better in SceneKit. Assuming they are concerned with battery life.
 
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!
 
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!

Yeah I've been messing around on it, although I'm pretty excited for message extensions. I could see a lot of good stuff come out for that and have some ideas myself that I will not mention here :D
 
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.
 
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.
 
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.

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.
 
  • Like
Reactions: mildocjr
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.

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.

Good post. Nice digging.
 
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.


It's VERY unlikely that nintendo is using unity for any in-house AAA games. They suggest unity for indie developers for various reasons, but it is not because they use it them self.
For mobile games, with small staff sure, it's entirely possible. But not for flagship Wii U games.

Unity is great for indie developers who don't have the resources to roll out their own engine, and instead want to focus on gameplay, or quickly prototyping. But for AAA games with larger budgets and more extreme visions it just won't do. They need lower level access and more control over the hardware.

Rolling out your engine is also not as insane as it sounds. Sometimes navigating an existing engine and making it do something it wasn't designed for is a lot more work.
With Half life 1, valve used the Quake 1 engine. But by the end of it, they did sooooooo much custom work that it wasn't even the same any more.. In fact, even the original source engine has some of that Quake 1 source code in there still.

Typically, game engines are written in C++. This allows for optimal performance and makes it easier to go cross platform. The game logic, if handled by a different team is done in c#, Lua, Python, java, or even some in house scripting languages.

Now for Pokemon Go, it's definitely possible they used an off shelf platform like Unity, since it's not that complex of a game. But even doing from scratch in C++ wouldn't be that hard. Pokemon go isn't doing anything really ground breaking when it comes to graphics. It's pretty basic AR stuff, and simple graphics.
 
  • Like
Reactions: mildocjr
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.