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!
Unity’s internal shader code underwent a number of significant changes in 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.
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!
Of course, you will need some development hardware too. Devkits and testing units can also be purchased via Nintendo’s Developer Portal.
* Conditions apply, see site for details.