Desenvolvimento de jogo de marketplace
Referência de erros de publicação
Cada código de erro que o caminho de publicação do marketplace pode retornar, com o gatilho e o link para a correção. Para correções passo a passo, veja Corrigir uma falha de publicação.
| Código | Gatilho | Correção |
|---|
invalid-repo | O campo de repositório que você inseriu no modal de publicação não faz parse como owner/name. Só publicação manual | Use owner/name ou a URL completa https://github.com/owner/name |
repo-not-found | Nossa busca de manifesto retornou um 404. Seu repositório é privado, está faltando, não tem o tópico caputchin-game, ou não tem caputchin.json no caminho esperado | Torne o repositório público + adicione o tópico + dê push de um manifesto |
manifest-error | Seu caputchin.json falhou na validação. A string de detalhe nomeia o campo específico. Veja subcódigos de manifest-error | Corrija o campo que o detalhe nomeia |
bundle-fetch-failed | A URL do bundle fixada por entry e/ou npm não pôde ser buscada, retornou um não-2xx, ou excede 12MB | Verifique a URL e o tamanho do bundle |
run-not-conforming | A checagem de fumaça do artefato run opcional (rodada uma vez com uma semente determinística) não retornou um veredito conforme. Seu jogo continua listado, só mostra Não reproduzível e não pode proteger | Torne sua simulação determinística |
rate-limited | Requisições de publicação demais do seu IP nos últimos 60 segundos | Espere 60 segundos e tente de novo |
Quando você recebe um manifest-error, a string de detalhe começa com o campo que falhou. Use esta tabela para achar a correção certa.
| Campo no detalhe | Significado | Correção |
|---|
terms_accepted | O campo está faltando ou não é o booleano JSON literal true | Defina-o como true depois de ler os Termos de Submissão |
license | Faltando, malformada, ou nomeia um identificador SPDX fora da lista aprovada | Escolha um identificador da lista aprovada |
(root) | O arquivo JSON não faz parse como um objeto (você tem um array, string ou null de nível superior) | Envolva-o em { ... } |
marketplace | O bloco marketplace está presente mas não é um objeto | Ou torne-o um objeto ou remova-o (jogos só-auto-hospedados omitem o bloco) |
marketplace.name / description / preview | O campo não é uma string | Converta para string ou remova |
marketplace.author | O bloco está presente mas não é um objeto | Use o formato { name?, url?, email? } |
marketplace.author.name / url | O subcampo não é uma string | Converta para string ou remova |
marketplace.author.email | Não é uma string OU falha na checagem de formato de e-mail | Corrija o endereço ou remova o campo |
entry | Jogo único não tem entry nem npm, ou o valor contém travessia (../), barras absolutas, separadores Windows, query strings, ou espaço em branco | Forneça um caminho relativo limpo |
npm | Não é uma string, ou falha na regex de nome npm | Use um nome de pacote npm válido |
entry/npm+games | Tanto entry/npm quanto games declarados no mesmo nível | Escolha um: jogos únicos usam entry/npm; wrappers de coleção usam games |
entry/npm | Jogo único não tem nenhum | Adicione um |
games | Não é um array, contém entradas não-string, contém caminhos de travessia/absolutos, ou contém . / ./ (que autorreferenciaria a raiz do repositório) | Corrija o array |
games[i] | Um caminho de filho específico é inválido | Corrija essa entrada |
run / run.entry / run.modules[i].* | A declaração opcional de run dividido está malformada | Corrija conforme o esquema |
Só manifestos caputchin.json cujo campo license avalia para um identificador SPDX nesta lista passam no portão de licenciamento. Veja a seção 4 dos Termos de Submissão do Marketplace para a versão vinculante.
| SPDX ID | Nome |
|---|
MIT | MIT License |
MIT-0 | MIT No Attribution |
Apache-2.0 | Apache License 2.0 |
BSD-2-Clause | BSD 2-Clause "Simplified" |
BSD-3-Clause | BSD 3-Clause "New" / "Revised" |
0BSD | BSD Zero Clause |
ISC | ISC License |
Zlib | zlib License |
Unlicense | The Unlicense (public-domain dedication) |
BSL-1.0 | Boost Software License 1.0 |
NCSA | University of Illinois / NCSA Open Source License |
PostgreSQL | PostgreSQL License |
Python-2.0 | Python License 2.0 |
PHP-3.01 | PHP License 3.01 |
Ruby | Ruby License |
TCL | Tcl/Tk License |
MS-PL | Microsoft Public License |
AFL-3.0 | Academic Free License 3.0 |
MulanPSL-2.0 | Mulan Permissive Software License v2 |
WTFPL | Do What The Fuck You Want To Public License |
| SPDX ID | Nome |
|---|
MPL-2.0 | Mozilla Public License 2.0 |
MS-RL | Microsoft Reciprocal License |
| SPDX ID | Nome |
|---|
CC0-1.0 | Creative Commons Zero v1.0 |
CC-BY-3.0 | Creative Commons Attribution 3.0 |
CC-BY-4.0 | Creative Commons Attribution 4.0 |
OFL-1.1 | SIL Open Font License 1.1 |
MIT: identificador simples; precisa aparecer acima.
MIT OR Apache-2.0: qualquer ramo de um OR precisa aparecer acima.
MIT AND CC-BY-4.0: todo ramo de um AND precisa aparecer acima.
Apache-2.0 WITH LLVM-exception: cláusulas WITH não são aceitas.
LGPL-2.1+: o sufixo + (ou-posterior) não é aceito.
| Categoria | Exemplos | Por quê |
|---|
| Copyleft forte | GPL-*, AGPL-* | Viral; o gatilho de rede do §13 da AGPL é agudo já que somos o anfitrião da rede. (GPL-2.0-only é aceita só para jogos próprios publicados pela Caputchin, não para submissões de terceiros.) |
| Copyleft de biblioteca com ambiguidade de empacotamento | LGPL-* | "Transmitir a biblioteca" lê de forma ambígua para bundles de JavaScript e WebAssembly |
| Share-alike em ativos | CC-BY-SA-*, CC-BY-NC-*, CC-BY-ND-* | Share-alike contamina a integração do site que embute; NC exclui implantação comercial |
| Source-available (não OSI) | BUSL-1.1, SSPL-1.0, Elastic-2.0 | Restrições de campo de uso, restrições de redistribuição, ou ambas |
Note que BSL-1.0 (Boost Software License) é permissiva e aceita; BUSL-1.1 (Business Source License) não é. O parser compara contra a string canônica SPDX de forma literal, então as duas nunca colidem.