167 lines
4.8 KiB
Markdown
167 lines
4.8 KiB
Markdown
*本文仅作技术研究,因为合规原因,本文不提供任何法律敏感和版权相关的诸如SDK的文件。
|
||
|
||
### 1. Nintendo SDK
|
||
|
||
> 这个我不会提供任何文件,或者建议您使用任天堂官方授权的开发套件(笑)
|
||
|
||
准备好Nintendo SDK之后,配置如下环境变量:
|
||
|
||
NINTENDO_SDK_ROOT -> 你的路径\NintendoSDK
|
||
|
||
NINTENDO_SDK_NEX_ROOT -> 你的路径\NintendoSDK-NEX
|
||
|
||
NINTENDO_SDK_NPLN_ROOT -> 你的路径\NintendoSDK-NPLN
|
||
|
||
NINTENDO_SDK_PIA_ROOT -> 你的路径\NintendoSDK-Pia6
|
||
|
||
|
||
### 安装dotnet SDK
|
||
|
||
> 因为Nintendo SDK依赖donetsdk的,在Nintendo Sdk中也直接包含dotnet sdk的安装文件(是doNet6).您也可以自行安装
|
||
|
||
这个建议一定要安装,缺少这个也是Unity打包异常的原因之一,否则你难以查找原因。
|
||
|
||
### Unity Switch Support
|
||
|
||
> 同样,这个我不会提供任何文件,或者建议您使用任天堂官方授权的开发套件
|
||
|
||
准备和SDK对应版本的Unity Switch Support
|
||
|
||
安装Unity-AAAA版本
|
||
|
||
安装UnitySetup-Nintendo-Switch-Support-for-Editor-AAAA-SDK-BBBB-xxxxxxx.exe
|
||
|
||
> 占位符:
|
||
|
||
> AAAA是Unity版本号
|
||
|
||
> BBBB是Nintendo SDK版本号
|
||
|
||
|
||
### 关于Unity License
|
||
|
||
Nintendo Switch 并不需要特殊License或Unity Pro License,有一个License 就行
|
||
|
||
### Unity 开发过程
|
||
|
||
这个就和其他常见Unity游戏开发方式,忽略……
|
||
|
||
有一些,平台差异的踩坑,类似正常的PC,IOS,Android的unity开发过程中一样,不同平台开发,有一些特定的平台兼容问题,或必须的差异做法。Switch也一样,有一些不同的兼容情况需要处理,后续踩坑,会详细讲述。但这个是游戏本身内容开发方面的,本文不在此赘述。
|
||
|
||
### 打包到Switch
|
||
|
||
> 因为Unity是针对官方授权开发而来,NSP是提交给Nintendo,由Nintendo审核签名后分发,才会是一个完整带NCA头文件信息的可安装NSP。
|
||
|
||
> 并不是Android那样,输出.apk,就万事大吉。
|
||
|
||
你大概率是没有Nintendo官方授权的开发套件的,按照官方套件,你打包出来的程序,只能在官方提供的开发机和测试机上运行,零售机是无法运行的。
|
||
|
||
要安装到零售机,切是已经折腾过的零售机(Hacked)
|
||
|
||
而且先决条件是,你提供的NSP是没有NCA签名等基本信息的,解决这个之后,才有安装的可能。
|
||
|
||
不解决的话,通过MTP之类的安装方式,都会报错,无法安装:
|
||
|
||
> Invalid NCA Magic
|
||
|
||
# 正片开始
|
||
|
||
在此之前,请你先确保你Unity开发环境,能够选择Switch平台,成功Build出文件。
|
||
|
||
勾选 Create NSP File 是输入.nsp文件
|
||
|
||
不勾选 则是输出的文件夹形式的你的程序文件
|
||
|
||
若Unity并不能选择Switch平台,请检查你的Switch Support是否准备好并安装,
|
||
|
||
若打包的时候并不能找到SDK,请检查你的Nintendo SDK是否准备好,并配置好环境变量。
|
||
|
||
若IL2CPP问题,请按照Nintendo SDK解决。
|
||
|
||
还有先解决基本问题,比如你的代码,在Build上不要报错,或者Switch的一些宏之类的。
|
||
|
||
能输出文件,好,现在才可以往下看。
|
||
|
||
# 打包使其让零售机(已折腾的)可以安装和运行
|
||
|
||
### 前置1.提取固件Key
|
||
|
||
> 这是敏感操作,本文只是表示我自己的操作,对于操作的影响,本文不负任何责任。
|
||
|
||
你需要提取你SysNADA的key,这个固件密钥,是构建NCA等信息的关键。
|
||
|
||
请不要在网络上寻找key,即便找到也是不可用的。
|
||
|
||
请自行提取。
|
||
|
||
下载 lockpick_rcm.bin,复制到TF卡\bootloader\payloads
|
||
(如果你的折腾机已经整合,可以不下载)
|
||
|
||
hekate界面,选择PayLoad(有些中文汉化了,叫有效载荷)
|
||
|
||
PayLoad中选择lockpick_rcm
|
||
|
||
进入lockpick_rcm之后,音量加减按钮是菜单上下选择,电源键是确定。
|
||
|
||
我们选择 Dump from SysNADA,很快会将你的key保存到SDK上。
|
||
|
||
退出Lockpick
|
||
|
||
在SDK中会有这三个文件,将他拷贝到你的电脑上。
|
||
|
||
sd:/switch/prod.keys
|
||
|
||
sd:/switch/title.keys
|
||
|
||
sd:/switch/dev.keys
|
||
|
||
> 你可以使用它,因为你合法拥有你的switch设备,但请仅自己提取使用,不要再网上分享或传播你的文件。避免一些法律风险,和避免您的设备敏感信息被泄露。
|
||
|
||
### 前置2.确定一个titleid
|
||
|
||
自己定一个titleid,确保和现有所有已发行的游戏或者自制游戏的TitleID不一样,
|
||
|
||
可以去GBAtemp之类的论坛,查重。
|
||
|
||
并在Unity PlayerSetting中设置TitleID
|
||
|
||
# 使用 AxibugNSPTools 重新打包NSP
|
||
|
||
- **这工具由我提供,工具内不提供也不包含任何Nintendo SDK版权相关的任何内容。只是当你合法拥有Nintendo SDK时,本工具全自动化帮你调用**
|
||
- **即本工具调用和操作的任何文件,都是您提供的合法文件,本工具不包含。给合法授权的开发者使用的。请遵守相关规定。**
|
||
|
||
本工具自动化调用您提供的合法Nintendo SDK获取包的详细信息,并基于您提供的合法prod.keys,生成NAC,帮助您调用hacpack,最终repack一个新的NSP,使其可以在已经被折腾的Switch上,成功安装NSP文件。
|
||
|
||
- 拷贝keys
|
||
|
||
AxibugNSPTools 是编写给Unity的工具插件,AxibugNSPTools,到您的项目目录.
|
||
|
||
将您合法提取的prod.keys、title.keys、dev.keys拷贝到Assets/AxiProjectTools/AxiNSPack/switch_keys目录中。
|
||
(注:您的项目若有提交git等公开仓库时,请忽略Assets/AxiProjectTools/AxiNSPack/switch_keys/*.keys , 以免泄露由您设备提取的key)
|
||
|
||
*若没有prod.keys,程序repack时会提示您。
|
||
|
||
- 确保先前配置的Nintendo_SDK_ROOT环境变量
|
||
|
||
*若没有Nintendo_SDK_ROOT环境变量,程序repack时会提示您。
|
||
|
||
#### **功能1.** :RepackNSP(仅重新构建NPS)
|
||
|
||
这个是把现有的Unity 输出的NSP(且无其他任何修改),重新构建,使其repack一个新的NSP,折腾后的零售Switch可以直接安装。
|
||
|
||
Unity Editor菜单上选择:Axibug移植工具/Switch/AxibugNSPTools/RepackNSP(仅重新构建NPS)
|
||
|
||
等待执行完毕
|
||
|
||
通过MTP等方式安装到Switch测试
|
||
|
||
#### **功能2.** :Build With RepackNSP(打包NSP并重新构建NPS)
|
||
|
||
这个是自动调用Unity Build一个NSP之后,再自动调用RepackNSP,重新构建,使其repack一个新的NSP,折腾后的零售Switch可以直接安装。
|
||
|
||
Unity Editor菜单上选择:Axibug移植工具/Switch/AxibugNSPTools/Build With RepackNSP(打包NSP并重新构建NPS)
|
||
|
||
等待执行完毕
|
||
|
||
通过MTP等方式安装到Switch测试
|