Caputchin
应用市场游戏开发

发布错误参考

应用市场发布路径能返回的每一个错误码,带触发条件和到修复的链接。一步步的修复,见 修复一次发布失败

错误码

触发修复
invalid-repo你在发布弹窗里输入的仓库字段无法解析为 owner/name。仅手动发布owner/name 或完整的 https://github.com/owner/name URL
repo-not-found我们的清单拉取返回一个 404。你的仓库是私有的、缺失的、缺 caputchin-game topic、或在预期路径处没有 caputchin.json把仓库设为公开 + 加上 topic + 推一个清单
manifest-error你的 caputchin.json 没通过校验。详情字符串点名那个具体字段。见 manifest-error 子码修详情点名的那个字段
bundle-fetch-failedentry 和/或 npm 钉住的包 URL 拉取不了、返回一个非 2xx、或超过 12MB核实包 URL 和大小
run-not-conforming可选的 run 工件的冒烟检查(带一个确定性的种子跑一次)没返回一个合规的裁定。你的游戏仍被列出,只是显示不可回放且无法设关卡让你的模拟确定性
rate-limited过去 60 秒里来自你 IP 的发布请求太多等 60 秒再重试

manifest-error 子码

当你收到一个 manifest-error 时,详情字符串以那个失败的字段开头。用这张表找到对的修复。

详情里的字段含义修复
terms_accepted字段缺失或不是字面量 JSON 布尔 true读了提交条款之后把它设为 true
license缺失、畸形、或点名一个批准清单之外的 SPDX 标识符从批准清单里挑一个标识符
(root)这个 JSON 文件没解析为一个对象(你有一个顶层数组、字符串或 null)把它裹进 { ... }
marketplacemarketplace 块存在但不是一个对象要么把它做成一个对象,要么移除它(仅自托管的游戏省略这个块)
marketplace.name / description / preview字段不是一个字符串字符串化或移除
marketplace.author块存在但不是一个对象{ name?, url?, email? } 形状
marketplace.author.name / url子字段不是一个字符串字符串化或移除
marketplace.author.email不是一个字符串 或 没通过邮件形状检查修这个地址或移除这个字段
entry单一游戏既没有 entry 也没有 npm,或这个值含有穿越(../)、绝对斜杠、Windows 分隔符、查询字符串或空白提供一个干净的相对路径
npm不是一个字符串,或没通过 npm-name 正则用一个有效的 npm 包名
entry/npm+games在同一层级同时声明了 entry/npmgames挑一个:单一游戏用 entry/npm;集合包装器用 games
entry/npm单一游戏两个都没有加一个
games不是一个数组、含有非字符串条目、含有穿越/绝对路径、或含有 . / ./(那会自引用仓库根)修这个数组
games[i]一个具体的子路径无效修那个条目
run / run.entry / run.modules[i].*可选的拆分 run 声明畸形按模式修

批准的许可证

只有 license 字段求值为这个清单上一个 SPDX 标识符的 caputchin.json 清单通过许可证关卡。具有约束力的版本见 应用市场提交条款第 4 节

宽松代码许可证

SPDX ID名称
MITMIT License
MIT-0MIT No Attribution
Apache-2.0Apache License 2.0
BSD-2-ClauseBSD 2-Clause "Simplified"
BSD-3-ClauseBSD 3-Clause "New" / "Revised"
0BSDBSD Zero Clause
ISCISC License
Zlibzlib License
UnlicenseThe Unlicense (public-domain dedication)
BSL-1.0Boost Software License 1.0
NCSAUniversity of Illinois / NCSA Open Source License
PostgreSQLPostgreSQL License
Python-2.0Python License 2.0
PHP-3.01PHP License 3.01
RubyRuby License
TCLTcl/Tk License
MS-PLMicrosoft Public License
AFL-3.0Academic Free License 3.0
MulanPSL-2.0Mulan Permissive Software License v2
WTFPLDo What The Fuck You Want To Public License

文件范围弱 copyleft

SPDX ID名称
MPL-2.0Mozilla Public License 2.0
MS-RLMicrosoft Reciprocal License

资源许可证(游戏里捆绑的美术、音频、字体)

SPDX ID名称
CC0-1.0Creative Commons Zero v1.0
CC-BY-3.0Creative Commons Attribution 3.0
CC-BY-4.0Creative Commons Attribution 4.0
OFL-1.1SIL Open Font License 1.1

SPDX 表达式规则

  • MIT:光秃秃的标识符;必须出现在上面。
  • MIT OR Apache-2.0:一个 OR 的任一分支必须出现在上面。
  • MIT AND CC-BY-4.0:一个 AND 的每个分支必须出现在上面。
  • Apache-2.0 WITH LLVM-exceptionWITH 子句不被接受。
  • LGPL-2.1++(或更新)后缀不被接受。

为什么一些许可证被排除

类别例子为什么
强 copyleftGPL-*AGPL-*病毒式;AGPL 第 13 条的网络触发尤其尖锐,因为我们就是那个网络宿主。(GPL-2.0-only 只对由 Caputchin 发布的第一方游戏被接受,不对第三方提交。)
带捆绑歧义的库 copyleftLGPL-*“传递这个库”对 JavaScript 和 WebAssembly 包读起来含义不明
资源上的相同方式共享CC-BY-SA-*CC-BY-NC-*CC-BY-ND-*相同方式共享会污染嵌入站点的集成;NC 排除了商业部署
源可得(非 OSI)BUSL-1.1SSPL-1.0Elastic-2.0使用领域限制、再分发限制,或两者

注意 BSL-1.0(Boost Software License)是宽松的且被接受;BUSL-1.1(Business Source License)不是。解析器逐字对着 SPDX 规范字符串比较,所以两者绝不冲突。

另见

本页内容