Développement de jeu pour le marketplace
Référence des erreurs de publication
Chaque code d'erreur que le chemin de publication au marketplace peut renvoyer, avec le déclencheur et le lien vers la correction. Pour les corrections pas à pas, vois Corriger un échec de publication.
| Code | Déclencheur | Correction |
|---|
invalid-repo | Le champ de dépôt que tu as saisi dans la modale de publication ne se parse pas comme owner/name. Publication manuelle seulement | Utilise owner/name ou l'URL complète https://github.com/owner/name |
repo-not-found | Notre récupération de manifeste a renvoyé un 404. Ton dépôt est privé, manquant, n'a pas le topic caputchin-game, ou n'a pas de caputchin.json au chemin attendu | Rends le dépôt public + ajoute le topic + pousse un manifeste |
manifest-error | Ton caputchin.json a échoué à la validation. La chaîne de détail nomme le champ précis. Vois les sous-codes manifest-error | Corrige le champ que le détail nomme |
bundle-fetch-failed | L'URL du bundle épinglée par entry et/ou npm n'a pas pu être récupérée, a renvoyé un non-2xx, ou dépasse 12 Mo | Vérifie l'URL et la taille du bundle |
run-not-conforming | Le test de l'artefact run optionnel (exécuté une fois avec une graine déterministe) n'a pas renvoyé un verdict conforme. Ton jeu est toujours listé, s'affiche juste Non rejouable et ne peut pas gater | Rends ta simulation déterministe |
rate-limited | Trop de requêtes de publication depuis ton IP dans les 60 dernières secondes | Attends 60 secondes et réessaie |
Quand tu reçois une manifest-error, la chaîne de détail commence par le champ en échec. Utilise cette table pour trouver la bonne correction.
| Champ dans le détail | Signification | Correction |
|---|
terms_accepted | Le champ est manquant ou n'est pas le booléen JSON littéral true | Règle-le à true après avoir lu les Conditions de soumission |
license | Manquante, malformée, ou nomme un identifiant SPDX hors de la liste approuvée | Choisis un identifiant de la liste approuvée |
(root) | Le fichier JSON ne se parse pas comme un objet (tu as un tableau, une chaîne ou un null de premier niveau) | Enveloppe-le dans { ... } |
marketplace | Le bloc marketplace est présent mais n'est pas un objet | Soit fais-en un objet, soit retire-le (les jeux auto-hébergés-seulement omettent le bloc) |
marketplace.name / description / preview | Le champ n'est pas une chaîne | Convertis en chaîne ou retire |
marketplace.author | Le bloc est présent mais n'est pas un objet | Utilise la forme { name?, url?, email? } |
marketplace.author.name / url | Le sous-champ n'est pas une chaîne | Convertis en chaîne ou retire |
marketplace.author.email | N'est pas une chaîne OU échoue à la vérification de forme d'e-mail | Corrige l'adresse ou retire le champ |
entry | Un jeu unique n'a ni entry ni npm, ou la valeur contient une traversée (../), des barres obliques absolues, des séparateurs Windows, des chaînes de requête, ou des espaces | Fournis un chemin relatif propre |
npm | N'est pas une chaîne, ou échoue à la regex de nom npm | Utilise un nom de paquet npm valide |
entry/npm+games | À la fois entry/npm et games déclarés au même niveau | Choisis-en un : les jeux uniques utilisent entry/npm ; les wrappers de collection utilisent games |
entry/npm | Un jeu unique n'a ni l'un ni l'autre | Ajoutes-en un |
games | N'est pas un tableau, contient des entrées non-chaînes, contient une traversée/des chemins absolus, ou contient . / ./ (qui s'auto-référencerait à la racine du dépôt) | Corrige le tableau |
games[i] | Un chemin d'enfant précis est invalide | Corrige cette entrée |
run / run.entry / run.modules[i].* | La déclaration de run découpée optionnelle est malformée | Corrige selon le schéma |
Seuls les manifestes caputchin.json dont le champ license s'évalue en un identifiant SPDX sur cette liste passent la barrière de licence. Vois Conditions de soumission au Marketplace section 4 pour la version contraignante.
| ID SPDX | Nom |
|---|
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 |
| ID SPDX | Nom |
|---|
MPL-2.0 | Mozilla Public License 2.0 |
MS-RL | Microsoft Reciprocal License |
| ID SPDX | Nom |
|---|
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 : identifiant nu ; doit apparaître ci-dessus.
MIT OR Apache-2.0 : n'importe quelle branche d'un OR doit apparaître ci-dessus.
MIT AND CC-BY-4.0 : chaque branche d'un AND doit apparaître ci-dessus.
Apache-2.0 WITH LLVM-exception : les clauses WITH ne sont pas acceptées.
LGPL-2.1+ : le suffixe + (ou-ultérieure) n'est pas accepté.
| Catégorie | Exemples | Pourquoi |
|---|
| Copyleft fort | GPL-*, AGPL-* | Viral ; le déclencheur réseau §13 d'AGPL est aigu puisque nous sommes l'hôte réseau. (GPL-2.0-only n'est accepté que pour les jeux maison publiés par Caputchin, pas pour les soumissions tierces.) |
| Copyleft de bibliothèque avec ambiguïté de bundling | LGPL-* | « Transmettre la bibliothèque » se lit de façon ambiguë pour les bundles JavaScript et WebAssembly |
| Share-alike sur les ressources | CC-BY-SA-*, CC-BY-NC-*, CC-BY-ND-* | Le share-alike contamine l'intégration du site intégrateur ; NC exclut le déploiement commercial |
| Source-available (pas OSI) | BUSL-1.1, SSPL-1.0, Elastic-2.0 | Restrictions de champ d'usage, restrictions de redistribution, ou les deux |
Note que BSL-1.0 (Boost Software License) est permissive et acceptée ; BUSL-1.1 (Business Source License) ne l'est pas. Le parseur compare contre la chaîne canonique SPDX verbatim, donc les deux ne se heurtent jamais.