Current Development Requirements (UE 5.7)
Supported Device Hardware: Nintendo Switch 2
Supported IDE: Visual Studio 2022
SDK Versions:
SDK: 20.5.6
Minimum Firmware Version: 20.1.0-2.2
The Nintendo Dev Interface (NDI) is long deprecated, and can no longer be downloaded from Nintendo. Use the Nintendo Package Manager (NNPM) instead.
Release Notes
All Nintendo
New:
Made a modification to provide a way to separate out the add-on content version from the application version as there may be cases where developers want to update only the add-on content release version without changing the application version.
Implemented CPU overclocking for Nintendo platforms for development purposes on supported hardware.
When ASTC texture compression is enabled, now also enable RDO.
RDO provides better package compression (~5% total package size reduction in large projects) without perceptible loss of quality.
Now implemented ApplicationWillDeactivateDelegate and ApplicationHasReactivatedDelegate. These correspond to when the application enters and leaves the Out of Focus state (not the Background state).
Note that the value of CVarSuspendInBackground affects what information the OS provides to the running application which affects what delegates can be broadcast. See the Nintendo documentation on "Handling Changes in the Focus State" for more information about these states.
Disabled the [[nodiscard]] warning on NintendoSDK functions that define it to ease the transition to SDK 21 (not officially supported). Future UE versions will address the specific instances of this warning.
Bug Fix:
Previously, when launching a package (.NSP) from Target Manager 2, the `IsPackagedExecutable` function might fail to detect this case resulting in the dynamic module loading logic modules from unintended locations. IsPackagedExecutable will now detect this case correctly and dynamic modules will be loaded from the intended location (the package).
Previously the application could hang or become unresponsive if Zen was enabled, but no valid file cache journal size was set. Now if a file cache is used (due to Zen or otherwise) a valid cache journal size is set in GetJournaledBytesBeforeFlush.
Previously, when making a patch, the "Based On" version would not be found, even if it had been created as a "Release Version". Now the Nintendo patching process will look where Release Versions are stored for the corresponding "Based On" version to use when generating a patch. Additionally, extra logging was added for more visibility into the state of the process.
Previously calls to NintendoExports.FindTmFile would not successfully find the NXSymStore.exe file. This can occur while publishing symbols (for example, while making a build). Now this file will successfully be located.
NintendoInputSender
Added a fix to ensure that popup dialog boxes, when initiated by button press, take focus and appear above the main NintendoInputSender window.
Fixed an issue where when changing the devkit startup app (home/dev menu) does not automatically reboot the device into the requested app.
Changing to a new startup app requires confirmation via dialog box instead of immediately actioning on the request.
Previously compilation would fail if NO_LOGGING was set in the Test configuration with an error in NintendoSystemCrashCallbackHandlers.cpp. Now the error will not occur.
Previously, using the Nintendo CPU Profiler to capture an application using the "Test" configuration would report a Critical Issue mislabeling the build as a 'Develop' build. Now, Test builds are no longer misidentified as 'Develop' builds.
Nintendo Switch 2
New:
Improved default INI settings.
The settings are more representative of the settings expected for the increased visual fidelity of a Nintendo Switch 2 app running at 60 fps. As these settings increase visual fidelity, there can be an increase in associated GPU cost. Our measurements place this at, or just under, 1 millisecond; however this can vary and will be content dependent.
For reference, here are the settings changed in BaseSwitch2DeviceProfiles.ini:
sg.ViewDistanceQuality 3 -> 1
sg.ShadowQuality 1 -> 2
sg.GlobalIlluminationQuality 1 -> 0
sg.ReflectionQuality 1 -> 2
sg.PostProcessQuality 1 -> 2
sg.TextureQuality 1 -> 2
sg.EffectsQuality=1 1 -> 2
sg.FoliageQuality 2 -> 3
sg.ShadingQuality 2 -> 3
r.MaxAnisotropy 1 -> 8
The following texture groups were upgraded from Linear to Anisotropic filtering:
World
WorldNormalMap
WorldSpecularCharacter
CharacterNormalMap
CharacterSpecularWeapon
WeaponNormalMap
WeaponSpecularVehicle
VehicleNormalMap
VehicleSpecularCinematicLightmapShadowmapRenderTargetMobileFlattenedTerrain_Heightmap
TerrainWeightmap
For these, MaxAniso was set to 2.
r.Shadow.MaxCSMResolution was increased to 2048 in console modeResolution was increased to 4k in console mode
Added example settings for VRS Engine/Platforms/Switch2/Config/BaseSwitch2Engine.ini.
These settings are disabled by default as in its current form VRS does not always improve performance. Please profile with representative content.
Updated NVN2 RHI to evict least recently used unreferenced samplers from its sampler cache when registering a new sampler would exceed the sampler limit.
Now supports HDR display output.
Enabled support for 120Hz and VRR (Variable Refresh Rate) using existing RHI cvars, added 120Hz and VRR options to editor Switch2 project settings.
Improved performance when Campus is active by setting Switch2.RespondToGraphicsScale=2.
Fixed a crash when hardware ray-tracing is enabled on the platform.
Previously the packaging process assumed that the Nintendo Switch(1) platform was always present, and would fail to package if it was not. The following error would be thrown: "The platform name Switch is not a valid platform name".
This has been resolved and the Switch(1) platform is only required when executing the MergeNSPs mechanism (which does require both Switch(1) and Switch 2 platforms to be present).
Repair Shader SymbolsInfo on Switch2.
Upgrade Notes
Nintendo Switch 2
To enable HDR display output on the platform, enable "Support HDR" setting under Platforms -> Rendering.
To enable 120Hz refresh rate (instead of the standard 60Hz) or VRR (Variable Refresh Rate) for the Switch2 platform, check the Switch2 "Enable display 120Hz refresh rate" and/or "Enable display variable refresh rate (VRR)" project settings check boxes.
Note: Please ensure your application's framerate is consistently >= 40fps before enabling VRR. VRR is currently only supported on the handheld display.