安全
决定构建产物能够访问什么、以及其中封装了什么的两项项目设置
项目设置的安全一节下有两项设置,均按项目保存,作用于打包构建与预览构建,不影响开发模式
Network access(网络访问)
控制游戏可访问的网络范围,按范围由窄至宽分为三档
关闭——新建项目的默认值。游戏被限制在自身的内部协议内,其发出的 HTTP、HTTPS 与 WebSocket 请求一律被取消
白名单——仅允许工程列出的地址,以及插件在 contributes.network 中声明的主机。选中该档后,选择器下方展开白名单编辑器;插件自带的模式会标注其来源插件,因此该列表可以说明某个主机为何可达,而非隐式放行
任意主机——允许游戏请求任意地址。该档与白名单均可使 Network 节点运行
当前构建无法识别的设置值(例如来自更高版本的取值)按关闭处理,而非按范围最宽的一档处理:设置无法被解释的工程,当前构建无法为其提供保证;而拒绝请求属于作者当场即可察觉的失败,不会随构建产物一同发布
该设置在三处校验:设置为关闭时,工程检查将网络节点报为错误;生产构建被拒绝;运行时请求本身被拒绝
该设置在 Web 导出中不生效。其实现依赖桌面构建特有的机制,且通过 HTTP(S) 分发的游戏本身即处于网络环境中,因此网络节点在 Web 构建中仍会运行。构建拒绝规则依然适用,故设置为关闭的项目同样无法产出包含网络节点的 Web 构建
Encrypt assets(加密资源)
控制构建产物内部的内容是否受保护
关闭——游戏文件以普通文件形式分发。任何人打开安装目录均可读取图片、音频、视频,以及剧本文本与插件代码
开启——以下内容在桌面端的打包构建与预览构建中被加密:
- 图片、音频与视频
- 编译后的剧本
- 插件代码
- 玩家存档文件
加密由 NarraLeaf/Encryption 提供,保护强度与 KiriKiri 相当
该设置仅作用于桌面构建。Web 构建始终不启用加密:浏览器需要直接读取这些文件,不存在可供隐藏的环节。Android 与 iOS 构建同样不受保护
该设置的作用范围:使文件无法通过常规工具打开,以阻止随意提取;但不构成对定向攻击的保障,因为运行中的游戏必须能够读取自身内容