赞
踩
众所周知,Nintendo Switch有一条guidline-0123来限制游戏的patch包大小上限是512MiB。
如果你的游戏是使用Unity开发的,只要你不正确合理的使用Assets Bundle/Addressable Assets的话,你将会得到一个包体很大的patch包。
首先,你应该需要了解Nintendo Switch的patching system机制:
Nintendo Switch使用的是基于16字节块二进制匹配的增量打补丁机制。换句话说,如果它找到二进制块完全匹配的话,它将继续使用来自初始的ROM包里的老data;在patch包里仅会包括新版本和初始版本的不同数据块。
所以你需要尽可能的去遵循这条规则,以确保你打出的patch包大小尽可能的小。
我还得指出一点,在打patch包的时候Unity它自己的一些东西的改动会占用patch包32MiB(Unity2020.1以后大约是27.16MiB)的大小。这就只给游戏留下了480MiB(Unity2020.1以后大约485MiB)的大小patch空间。
以下是一些让游戏打出来的patch包大小尽量小的建议:
以下是使用Addressables Analyze功能的示例。
Addressables Analyze窗口:
重新打开以后,就会有一个新的名叫Duplicate Asset Isolation的group。它包含了所有被包含在多个asset groups里的冗余assets。
以下是一个建议在AddressableAssetSettings里asset groups的配置示例:
在你提交游戏初始Nintendo ROM前,尝试修改一个你认为以后可能会改变的asset,然后创建一个patch,并且使用AuthoringEditor或者AuthoringTool.exe来分析这个patch来看看你的游戏现在是否在assets管理方面足够好!
你也可以使用AuthoringTool的"list"命令来列出你的.NSP文件里包含了些什么东西。并且你可以加上 --patched-only-in-detail命令选项来查看哪些文件是在patch包里,哪些文件在初始的ROM包里。
%NINTENDO_SDK_ROOT%\Tools\CommandLineTools\AuthoringTool\AuthoringTool.exe
list (your patch.nsp) --original (your initial.nsp) --patched-only-in-detail
C:\WINDOWS\system32>%NINTENDO_SDK_ROOT%\Tools\CommandLineTools\AuthoringTo ol\AuthoringTool.exe list modified_asset_patch.nsp --original original_v0.nsp --patched-only-indetail add4524cd2c89a9865b182be6f8f9893.nca (55465472 byte) dabf0ac9b8c30e698fbb6e1d15662186.nca (143872 byte) 6ab0afdb77c658f511381977cd4ded79.cnmt.nca (3584 byte) 6ab0afdb77c658f511381977cd4ded79.cnmt.xml (2358 byte) add4524cd2c89a9865b182be6f8f9893.programinfo.xml (154777 byte) dabf0ac9b8c30e698fbb6e1d15662186.raw.AmericanEnglish.jpg (172759 byte) dabf0ac9b8c30e698fbb6e1d15662186.nx.AmericanEnglish.jpg (41328 byte) dabf0ac9b8c30e698fbb6e1d15662186.nacp.xml (12199 byte) 01004b9000490800000000000000000a.tik (704 byte) 01004b9000490800000000000000000a.cert (1792 byte) cardspec.xml (193 byte) authoringtoolinfo.xml (449 byte) ---------------------------------------------** add4524cd2c89a9865b182be6f8f9893.nca/fs0/main (19769316 byte) add4524cd2c89a9865b182be6f8f9893.nca/fs0/main.npdm (1540 byte) add4524cd2c89a9865b182be6f8f9893.nca/fs0/rtld (6790 byte) add4524cd2c89a9865b182be6f8f9893.nca/fs0/sdk (5372429 byte) add4524cd2c89a9865b182be6f8f9893.nca/fs0/subsdk0 (3522324 byte) add4524cd2c89a9865b182be6f8f9893.nca/fs1/Data/globalgamemanagers (58800 byte) [Original] (offset, size)(0, 31024), (31056, 27744) [Patch] (offset, size) = (31024, 32) add4524cd2c89a9865b182be6f8f9893.nca/fs1/Data/level0 (6771144 byte) [Original] (offset, size)(0, 5647200), (5668464, 1057376), (6725872, 45272) [Patch] (offset, size) = (5647200, 21264), (6725840, 32) add4524cd2c89a9865b182be6f8f9893.nca/fs1/Data/sharedassets0.assets (28736932 byte) [Original] (offset, size)(0, 11184), (12240, 15489792), (15502432, 12222736), (27727424, 1009508) [Patch] (offset, size) = (11184, 1056), (15502032, 400), (27725168, 2256) add4524cd2c89a9865b182be6f8f9893.nca/fs1/Data/sharedassets0.assets.resS (199614828 byte) [Original] (offset, size)(0, 172802592), (177005056, 62672), (179801280, 52192), (185339296, 91536), (185443936, 57968), (188189920, 64496), (190986144, 64496) [Patch] (offset, size) = (172802592, 4202464), (177067728, 2733552), (179853472, 5485824), (185430832, 13104), (185501904, 2688016), (188254416, 2731728), (191050640, 8564188) dabf0ac9b8c30e698fbb6e1d15662186.nca/fs0/control.nacp (16384 byte) dabf0ac9b8c30e698fbb6e1d15662186.nca/fs0/icon_AmericanEnglish.dat (41328 byte) 6ab0afdb77c658f511381977cd4ded79.cnmt.nca/fs0/Patch_01004b9000490800.cnmt (356 byte)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。