Repository navigation
v1.2.1
v1.2.1: Games with no profile can be built from a NUP or a game folder, older-device iPhone fix, build progress that stays across windows, and fixes for tests and CI.
English
New
- Steam Controller (2026): games support the controller over USB-C, Bluetooth and the Puck, with buttons, sticks, rumble, motion and the trackpads. The launcher has per-game keyboard and button mappings and the Steam extras, and the mappings are shared with the in-game mapping panel. Macs need Input Monitoring for direct access, the README says how. Games you built before must be rebuilt to get it. It carries seedds/nxnative#221. Requested in #764. By @thehobbit85 (#764, #731)
- Why a game has no resolution setting: when a game has no render scale row, the Launch options sheet shows a short note and names the closest settings, Console mode and Upscaling. Games with a render scale show no note. By @Haseenesss (#574, #754)
Fixed
- Games with no profile: NUP and game folder: the Mac launcher no longer refuses a Switch 2 NUP or a game folder of a game the engine has no profile for, and the build button is there. When the engine can survey the game itself, the build starts from a provisional profile. An older engine keeps the old message. This only lets the build start. Such a game does not run yet. The first case is Ocarina of Time on Switch 2, and it needs engine work upstream (seedds/nxnative#1299). Reported by @xdgpx (#748, #783)
- Mac host build uses the selected Python: a build run with the app's Python 3.13 could still start the host's shader generator with an old Python 3.6 from the
PATH, and fail after extraction and shader compilation. The host build now gets the exact Python of the pipeline. Reported by @temmiegreen. By @thehobbit85 (#711, #729) - Windows: the Python install chains into the venv: on a PC with no Python, the step after installing Python looked for a file and got a folder, so creating the virtual environment failed until a second click. The launcher now finds
python.exein the install folder (#774) - Italian iPhone and iPad shell texts: 20 texts are reworded by a native speaker. By @zatteogit (#744)
- README requirements: they say that Switch 2 games (a game folder or a
.nupfile) need noprod.keys. By @rivitt (#734) - Compatibility switch for older iPhones and iPads (A15, A16): the switch wrote a key the game never read, and the iOS build removed its environment file. Now it writes
DM_PROF_TEX_BC_CPU=1, the game's framework keepsdm/env.txt, and the shell loads it after the player's own env files, so a file in Documents still wins. The check for a device without native BC textures reads the same setting. Reported by @Sword-Wen. By @thehobbit85 (#719, #723) - Build progress and log across launcher windows: another or a reopened launcher window showed an idle Builds page while a build kept running. All windows now share the running build, its progress, its log and the Stop button. By @thehobbit85 (#405, #724). Reported by @sshuai001
- Low disk space while building the Metal archive: when the engine stops because the build volume is full, both launchers now show a failure row. It names the free space the engine asks for, and tells you to free space or pick a build folder on another drive. The text is in all six languages. Reported in #463. By @thehobbit85 (#725)
DM_PSO_BUNDLE=offon iPhone and iPad: the shell ignored it inDocuments/env.txtwhen a game or framework had apso/folder. Now the launch settings, the game's env file and the shared env file win over the archive the shell finds by itself. The README says how to turn the archive off for one game. This does not fix the Metal crash on iPhone Air (A19 Pro, iOS 27.0) reported in #640. It only makes the switch usable. By @thehobbit85 (#726). Reported by @sheepyd (#640)- Tests and CI: the Tool tests job no longer stays green when an engine test file fails, and the tests it then showed are repaired (#690, #722). A shell test accepts the label
16:9 (Switch)in German, Swedish, French and Italian (#727) and120 fpsin German, Swedish and Italian (#786). The Mac and shell language-row tests now run the synced engine and check its own row, so a new pin cannot change it unseen. The test steps keep a failure when their output goes throughtee(#698, #728). #722, #727 and #728 are by @thehobbit85
Known issues
- Games with no profile do not run yet: the launcher builds them, but a game such as Ocarina of Time on Switch 2 does not run yet. It needs upstream work (seedds/nxnative#1299). The build was not run with a real game or the real engine (#748, #783)
- Qt launcher (Linux and Windows) still refuses games with no profile: only the Mac launcher got the change. The Qt launcher keeps the profile check and shows the old message until a follow-up (#783)
- Preparing the shared iPhone app for a game with a provisional profile: the Mac launcher does not tell the engine's
build_shell.shwhere the profile of the build lives (DM_GAMES_DIR), so the step can stop with "no game profile" for a game whose profile came from the survey. SettingDM_GAMES_DIRto the build'sprofile/folder is the workaround. Not fixed in this release (#757) - Older iPhones and iPads: the switch was tested with synthetic checks only. Nobody tried it on an A15 or A16 device with a real game (#723)
- Low disk space row: checked with the engine's real messages and a synthetic failure. Nobody filled a disk to see it. The Qt launcher was not run (#725)
- Build progress across windows: tested with a synthetic build. Nobody closed and reopened a window during a real game build (#724)
- Steam Controller (2026): the author tested it over Bluetooth, the Puck and USB-C in Pokémon Legends: Z-A and The Legend of Zelda: Tears of the Kingdom. Those tests ran before main was merged into the branch. They were not repeated with the merged code. Holding the middle Steam button opens the quit prompt, and that prompt uses the default Steam A and B layout and not a customized mapping. The French, Italian and Swedish texts of the new controller strings come in a follow-up and show in English until then (#731)
- Metal archive crash on iPhone Air: the switch to turn the archive off works, and the crash itself is not understood (#640)
Requires
- iOS or iPadOS 26 or later
- To build NVN games on a Mac: Xcode 27.2 and macOS 26.6 or later
中文
新增
- Steam Controller(2026):游戏支持这款手柄的 USB-C、蓝牙和 Puck 连接,含按键、摇杆、震动、体感和触控板。启动器提供每个游戏的键盘和按键映射以及 Steam 的额外选项,映射与游戏内的映射面板共用。Mac 需要开启输入监控才能直接访问,README 里有说明。之前构建的游戏必须重新构建才能使用。内容来自 seedds/nxnative#221。需求见 #764。作者 @thehobbit85(#764、#731)
- 游戏为什么没有分辨率设置:游戏没有渲染比例一行时,启动选项面板会显示一条简短说明,并指出最接近的设置:主机模式和放大。有渲染比例的游戏不显示说明。作者 @Haseenesss(#574、#754)
修复
- 没有配置的游戏:NUP 和游戏文件夹:Mac 启动器不再拒绝引擎没有配置的 Switch 2 NUP 或游戏文件夹,构建按钮会显示。引擎能自己勘测游戏时,构建从临时配置开始。旧版引擎仍显示原来的提示。这只是让构建可以开始,这样的游戏现在还不能运行。第一个例子是 Switch 2 上的 Ocarina of Time,它需要上游的引擎工作(seedds/nxnative#1299)。由 @xdgpx 报告(#748、#783)
- Mac 宿主构建使用所选的 Python:用 App 自带的 Python 3.13 构建时,宿主的着色器生成器仍可能被
PATH里的旧 Python 3.6 启动,在解包和着色器编译完成之后失败。现在宿主构建使用流水线实际使用的 Python。由 @temmiegreen 报告。作者 @thehobbit85(#711、#729) - Windows:安装 Python 后接着创建虚拟环境:在没有 Python 的电脑上,安装 Python 之后的步骤把文件夹当成文件查找,导致创建虚拟环境失败,要再点一次才行。现在启动器会在安装文件夹里找到
python.exe(#774) - 意大利语的 iPhone 和 iPad 壳 App 文字:20 条文字由母语者改写。作者 @zatteogit(#744)
- README 的系统要求:说明 Switch 2 游戏(游戏文件夹或
.nup文件)不需要prod.keys。作者 @rivitt(#734) - 老 iPhone 和 iPad(A15、A16)的兼容开关:开关写入的键游戏从不读取,iOS 构建还会删除它的环境文件。现在它写入
DM_PROF_TEX_BC_CPU=1,游戏的框架保留dm/env.txt,壳 App 在玩家自己的 env 文件之后加载它,所以 Documents 里的文件仍然优先。对不支持原生 BC 纹理的设备的检查读取同一个设置。由 @Sword-Wen 报告。作者 @thehobbit85(#719、#723) - 多个启动器窗口之间的构建进度和日志:另开或重开的启动器窗口会显示空闲的构建页,而构建仍在运行。现在所有窗口共用正在运行的构建、进度、日志和停止按钮。作者 @thehobbit85(#405、#724)。由 @sshuai001 报告
- 构建 Metal 归档时磁盘空间不足:引擎因构建磁盘已满而停止时,两个启动器现在都显示失败提示,写明引擎要求的空闲空间,并建议腾出空间或选另一块磁盘上的构建文件夹。文字有六种语言。在 #463 里报告。作者 @thehobbit85(#725)
- iPhone 和 iPad 上的
DM_PSO_BUNDLE=off:游戏或框架有pso/文件夹时,壳 App 会忽略Documents/env.txt里的它。现在启动设置、游戏自己的 env 文件和共用 env 文件优先于壳 App 自己找到的归档。README 说明了如何为单个游戏关闭归档。这并没有修复 #640 报告的 iPhone Air(A19 Pro,iOS 27.0)上的 Metal 崩溃,只是让这个开关可用。作者 @thehobbit85(#726)。由 @sheepyd 报告(#640) - 测试和 CI:Tool tests 任务在引擎测试文件失败时不再显示成功,并修复了因此暴露的测试(#690、#722)。壳 App 的一个测试接受德语、瑞典语、法语和意大利语里的
16:9 (Switch)标签(#727),以及德语、瑞典语和意大利语里的120 fps(#786)。Mac 和壳 App 的语言行测试现在会运行已同步的引擎并检查它自己的行,新的引擎版本不会再悄悄改变它。测试步骤的输出经过tee时也会保留失败(#698、#728)。#722、#727 和 #728 由 @thehobbit85 完成
已知问题
- 没有配置的游戏还不能运行:启动器能构建它们,但像 Switch 2 上的 Ocarina of Time 这样的游戏还不能运行,需要上游的工作(seedds/nxnative#1299)。构建没有用真实游戏或真实引擎运行过(#748、#783)
- Qt 启动器(Linux 和 Windows)仍然拒绝没有配置的游戏:只有 Mac 启动器改了。Qt 启动器保留配置检查,在后续改动之前仍显示旧提示(#783)
- 为配置来自勘测的游戏准备共用 iPhone App:Mac 启动器没有告诉引擎的
build_shell.sh这次构建的配置在哪里(DM_GAMES_DIR),所以这一步可能以「no game profile」停止。临时办法是把DM_GAMES_DIR设为构建的profile/文件夹。本版本没有修复(#757) - 老 iPhone 和 iPad:这个开关只用合成检查测试过,没有人在 A15 或 A16 设备上用真实游戏试过(#723)
- 磁盘空间不足的提示:用引擎的真实消息和合成故障检查过,没有人真的写满磁盘去看它。Qt 启动器没有运行过(#725)
- 窗口之间的构建进度:用合成构建测试过,没有人在真实游戏构建期间关闭并重开窗口(#724)
- Steam Controller(2026):作者在 Pokémon Legends: Z-A 和 The Legend of Zelda: Tears of the Kingdom 里用蓝牙、Puck 和 USB-C 测试过。这些测试在 main 合并进分支之前进行,合并后的代码没有重复测试。按住 Steam 中间键会打开退出提示,这个提示使用默认的 Steam A 和 B 布局,而不是自定义映射。新手柄文字的法语、意大利语和瑞典语版本会在后续改动里提供,在那之前显示英文(#731)
- iPhone Air 上的 Metal 归档崩溃:关闭归档的开关可用,崩溃本身的原因还不清楚(#640)
系统要求
- iOS 或 iPadOS 26 或更高版本
- 在 Mac 上构建 NVN 游戏:Xcode 27.2 和 macOS 26.6 或更高版本
What's Changed
Fixes
- Honor iOS pipeline archive overrides from env files by @thehobbit85 in #726
- Keep build progress and logs across launcher windows by @thehobbit85 in #724
- Fix shell localization test for the numeric Switch aspect-ratio label by @thehobbit85 in #727
- Fix older-device iOS compatibility setting reaching the game host by @thehobbit85 in #723
- launcher: build a NUP or game folder of a game with no profile when the engine surveys it by @v0lumehi in #783
- Docs: say Switch 2 games need no
prod.keysin the README requirements by @rivitt in #734 - Keep the selected Python for Mac host generators by @thehobbit85 in #729
- Shell strings test: list "120 fps" as a cognate by @v0lumehi in #786
Features
- Explain offline Metal archive disk-space failures in both launchers by @thehobbit85 in #725
- Launch options: say why a game has no resolution setting (#574) by @Haseenesss in #754
- it: review the iPhone and iPad shell texts by @zatteogit in #744
- Add Steam Controller 2026 support and per-game mappings by @thehobbit85 in #731
Documentation
Other changes
New Contributors
- @thehobbit85 made their first contribution in #722
- @rivitt made their first contribution in #734
Full Changelog: v1.2.0...v1.2.1