Unity Comes to New Nintendo 3DS

We announced our intention to support Nintendo’s recently released New Nintendo 3DS platform at Unite Tokyo and we’ve been very busy in the meantime getting it ready. Now we’re pleased to announce it’s available for use today!

The first question people usually ask is “do you support the original Nintendo 3DS too?” To which the answer is a qualified “yes”. We can generate ROM images which are compatible with the original Nintendo 3DS, and there are certainly some types of game which will run perfectly well on it, but for the majority of games we strongly recommend targeting the New Nintendo 3DS for maximum gorgeousness.

We’ve been working very closely with select developers to port a few of their existing games to New Nintendo 3DS. We’ve been busy profiling, optimizing, and ironing out the niggles using real-world projects, so you can be confident your games will run as smoothly as possible. In fact, one game has already successfully passed through Nintendo’s exacting mastering system; Wind Up Knight 2 went on sale at the end of last year!

Wind Up Knight 2 – Japanese Version. (c) 2016 Robot Invader

Unity’s internal shader code underwent a number of significantchangesin the transition from version 5.1 to 5.2. This brought many benefits, including cleaner and more performant code, and also fixed a number of issues we had on console platforms. We’re not able retrofit those fixes to the 5.1 based version, so we shall only be actively developing our shader support from version 5.2 onwards.

We’ve been putting Unity for New Nintendo 3DS version 5.2 through its paces for a few months, and it’ll be made available once it’s proved itself by getting a game through Nintendo’s mastering system too. That should be in the near future, but it’s not something that’s easy to put a date on.

So far, we’ve been in development with a Nintendo 3DS-specific version of the Unity editor, but now we’ve switched our focus towards upgrading to the latest version, with a view to shipping as a plug-in extension to the regular editor. We have a 5.3 based version running internally, and we’re working hard to get it merged into our mainline code-base.

It should be mentioned that some features are not yet implemented in this first public release, notably UNet and Shadow Maps (although Light-Maps are supported). We’re prioritising new features according to customer demand, but right now our main goal is to get into the regular editor.

In common with other mobile platforms, there are some limitations as to what can be achieved with the hardware. For instance, Unity’s Standard Shader requires desktop-class graphics hardware so it’s not something we can support on Nintendo 3DS. However, as with other platforms, if you try to use a shader which is unsupported then Unity will fall-back to a less complex shader that gives the best possible results.

Preparing your game for New Nintendo 3DS

This platform is unique in several ways, so games will need some modification to make best use of its features.

There are two screens, so you will need to redesign your user interface to accommodate the additional display. The lower screen is touch sensitive, so it makes sense to put menus and other interactive UI items there.

The device’s coolest feature is that the picture is 3D, without needing glasses! However, this does mean that the distance of objects is visible to the player in a way that it isn’t on other platforms. So graphical effects which “cheat” to simulate distance won’t work. For example, 2½-D games which use an orthographic projection and parallax layers will show up as completely flat.

There is less memory available than on other platforms, but that’s not as big an issue as it might seem at first. Textures can be down-sized drastically since the screen resolution is much lower than typically found on smartphones and tablets.

Unity for New Nintendo 3DS was one of the first platforms to use our in-house IL2CPP technology exclusively; we don’t use Mono at all. This brings substantial performance benefits, but there are a couple of downsides:

All compilation is done AOT (when the project is built). We don’t support JIT compilation (at runtime).

Various other platforms are also AOT-only, so if you’re porting a game from one of those platforms then you won’t have any problems. However, if you’re porting from a platform which does allow JIT compilation, then you might run into issues. In particular, some middleware JSON parsers which use introspection can be problematic. The good news is that Unity now comes with its own high-performance JSON parser, which doesn’t suffer from such issues.

Opening a celebratory barrel of sake, at Unite Tokyo.

How to Get Involved

Unity for New Nintendo 3DS is available at no charge. Just like with Nintendo’s Wii U, if you sign up to develop games for the platform, you get to use Unity for free!

Re: supporting the old 3ds, I doubt that would use a new version of Unity though (have to seek clarification). Personally I would just support the new 3ds if only because it’s far more capable and you get to use new Unity.

Congratulations to the best multiplatform engine, does making the platform come as an extension module make it possible for us to develop on the platform without Nintendo credentials? and where can we find the new device’s specsheets?
Thanks for great work!