Add Switch game framework target

This commit is contained in:
2026-06-09 00:52:04 +08:00
parent cc75b94c44
commit b78aaa5cad
10 changed files with 218 additions and 12 deletions
+76
View File
@@ -237,6 +237,64 @@ Frostbite2D Switch smoke test
Press PLUS to exit.
```
### 2.4 编译 Switch 游戏框架 NRO
当前游戏框架已经接入 Switch 构建目标:
```text
Frostbite2DGameSwitch
```
该目标使用:
```text
game\src\switch_game_main.cpp
```
作为 Switch 专用入口,运行同一套 `WhiteboxScene``StageRenderer`
`DebugOverlay``PlayerActor``LevelDefinition` 游戏框架。
构建命令:
```powershell
$env:PATH='C:\devkitPro\devkitA64\bin;C:\devkitPro\tools\bin;C:\devkitPro\msys2\usr\bin;C:\Program Files\CMake\bin;C:\Program Files\xmake;' + $env:PATH
$env:DEVKITPRO='C:\devkitPro'
$env:DEVKITA64='C:\devkitPro\devkitA64'
& 'C:\Program Files\xmake\xmake.exe' f -c -p switch -a aarch64 -m release --toolchain=cross --sdk='C:\devkitPro\devkitA64' --bin='C:\devkitPro\devkitA64\bin' --cross='aarch64-none-elf-' -y
& 'C:\Program Files\xmake\xmake.exe' -b Frostbite2DGameSwitch
```
产物:
```text
build\switch\aarch64\release\Frostbite2DGame.elf
build\switch\aarch64\release\switch_game\NSUnknownGame.nro
build\switch\aarch64\release\switch_game\control.nacp
build\switch\aarch64\release\switch_game\assets\
```
`xmake.lua` 会在构建后自动:
- 复制 `game\assets``build\switch\aarch64\release\switch_game\assets`
- 生成 `control.nacp`
- 调用 `elf2nro` 生成带元数据的 `NSUnknownGame.nro`
Switch 运行时资源目录当前由引擎解析为:
```text
/switch/Frostbite2D/NS Unknown Game/assets
```
在真机 SD 卡或模拟器文件系统中测试完整游戏时,需要确保资源也放到该目录。
构建输出目录中的 `switch_game\assets` 是用于部署的资源副本。
当前已验证:
- `Frostbite2DGameSwitch` 可成功编译为 ELF/NRO
- PC 和 Switch 共用同一套 GLES 300 es shader
- Windows 游戏目标仍可正常编译和启动
## 3. 常见问题
### 3.1 切换平台后编译异常
@@ -267,3 +325,21 @@ Frostbite2D_smoke_meta.nro
不要优先使用裸的 `Frostbite2D_smoke.nro`
### 3.4 Switch 游戏 NRO 启动后资源加载失败
确认资源目录存在:
```text
/switch/Frostbite2D/NS Unknown Game/assets
```
至少应包含:
```text
assets\shaders\shaders.json
assets\shaders\sprite.vert
assets\shaders\sprite.frag
assets\shaders\colored_quad.vert
assets\shaders\colored_quad.frag
assets\character\male\*.png
```