Marketplace-Spiel-Entwicklung
Publish-Fehler-Referenz
Jeder Error-Code, den der Marketplace-Publish-Pfad zurückgeben kann, mit dem Auslöser und dem Link zum Fix. Für Schritt-für-Schritt-Fixes sieh dir Ein Publish-Versagen beheben an.
| Code | Auslöser | Fix |
|---|
invalid-repo | Das Repository-Feld, das du im Publish-Modal eingegeben hast, parst nicht als owner/name. Nur manuelles Veröffentlichen | Nutz owner/name oder die volle https://github.com/owner/name-URL |
repo-not-found | Unser Manifest-Abruf gab einen 404 zurück. Dein Repository ist privat, fehlt, hat nicht das caputchin-game-Topic oder keine caputchin.json am erwarteten Pfad | Mach das Repository öffentlich + füg das Topic hinzu + pushe ein Manifest |
manifest-error | Deine caputchin.json schlug bei der Validierung fehl. Der Detail-String benennt das spezifische Feld. Sieh dir manifest-error-Sub-Codes an | Beheb das Feld, das das Detail benennt |
bundle-fetch-failed | Die durch entry und/oder npm gepinnte Bundle-URL konnte nicht abgerufen werden, gab einen Nicht-2xx zurück oder überschreitet 12MB | Verifizier die Bundle-URL und -Größe |
run-not-conforming | Die Smoke-Prüfung des optionalen run-Artefakts (einmal mit einem deterministischen Seed gelaufen) gab kein konformes Urteil zurück. Dein Spiel ist trotzdem gelistet, zeigt nur Nicht abspielbar und kann nicht gaten | Mach deine Simulation deterministisch |
rate-limited | Zu viele Publish-Anfragen von deiner IP in den letzten 60 Sekunden | Warte 60 Sekunden und versuch erneut |
Wenn du einen manifest-error empfängst, beginnt der Detail-String mit dem fehlschlagenden Feld. Nutz diese Tabelle, um den richtigen Fix zu finden.
| Feld im Detail | Bedeutung | Fix |
|---|
terms_accepted | Das Feld fehlt oder ist nicht das literale JSON-Boolean true | Setz es auf true nach dem Lesen der Einreichungsbedingungen |
license | Fehlt, fehlerhaft oder benennt einen SPDX-Identifier außerhalb der genehmigten Liste | Wähl einen Identifier aus der genehmigten Liste |
(root) | Die JSON-Datei parst nicht als Objekt (du hast ein Top-Level-Array, einen String oder null) | Wickel es in { ... } |
marketplace | Der marketplace-Block ist vorhanden, aber kein Objekt | Mach es entweder zu einem Objekt oder entferne es (nur-selbst-gehostete Spiele lassen den Block weg) |
marketplace.name / description / preview | Das Feld ist kein String | Stringify oder entferne |
marketplace.author | Der Block ist vorhanden, aber kein Objekt | Nutz die { name?, url?, email? }-Form |
marketplace.author.name / url | Das Unterfeld ist kein String | Stringify oder entferne |
marketplace.author.email | Kein String ODER besteht die E-Mail-Form-Prüfung nicht | Beheb die Adresse oder entferne das Feld |
entry | Einzelnes Spiel hat kein entry und kein npm, oder der Wert enthält Traversierung (../), absolute Slashes, Windows-Separatoren, Query-Strings oder Whitespace | Stell einen sauberen relativen Pfad bereit |
npm | Kein String, oder besteht die npm-Namen-Regex nicht | Nutz einen gültigen npm-Paket-Namen |
entry/npm+games | Sowohl entry/npm als auch games auf derselben Ebene deklariert | Wähl eins: einzelne Spiele nutzen entry/npm; Sammlungs-Wrapper nutzen games |
entry/npm | Einzelnes Spiel hat weder noch | Füg eins hinzu |
games | Kein Array, enthält Nicht-String-Einträge, enthält Traversierungs-/absolute Pfade oder enthält . / ./ (was den Repo-Root selbst-referenzieren würde) | Beheb das Array |
games[i] | Ein bestimmter Kind-Pfad ist ungültig | Beheb diesen Eintrag |
run / run.entry / run.modules[i].* | Die optionale Split-Run-Deklaration ist fehlerhaft | Beheb gemäß dem Schema |
Nur caputchin.json-Manifeste, deren license-Feld zu einem SPDX-Identifier auf dieser Liste auswertet, bestehen das Lizenz-Gate. Sieh dir Marketplace-Einreichungsbedingungen Abschnitt 4 für die bindende Version an.
| SPDX ID | Name |
|---|
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-Widmung) |
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 | Name |
|---|
MPL-2.0 | Mozilla Public License 2.0 |
MS-RL | Microsoft Reciprocal License |
| SPDX ID | Name |
|---|
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: nackter Identifier; muss oben erscheinen.
MIT OR Apache-2.0: jeder Zweig eines OR muss oben erscheinen.
MIT AND CC-BY-4.0: jeder Zweig eines AND muss oben erscheinen.
Apache-2.0 WITH LLVM-exception: WITH-Klauseln werden nicht akzeptiert.
LGPL-2.1+: das + (oder-später)-Suffix wird nicht akzeptiert.
| Kategorie | Beispiele | Warum |
|---|
| Starkes Copyleft | GPL-*, AGPL-* | Viral; der AGPL-§13-Netzwerk-Auslöser ist akut, da wir der Netzwerk-Host sind. (GPL-2.0-only wird nur für hauseigene, von Caputchin veröffentlichte Spiele akzeptiert, nicht für Drittanbieter-Einreichungen.) |
| Bibliotheks-Copyleft mit Bündelungs-Mehrdeutigkeit | LGPL-* | "Die Bibliothek übermitteln" liest sich mehrdeutig für JavaScript- und WebAssembly-Bundles |
| Share-Alike auf Assets | CC-BY-SA-*, CC-BY-NC-*, CC-BY-ND-* | Share-Alike kontaminiert die Integration der einbettenden Seite; NC schließt kommerzielles Deployment aus |
| Source-available (nicht OSI) | BUSL-1.1, SSPL-1.0, Elastic-2.0 | Field-of-Use-Beschränkungen, Redistributions-Beschränkungen oder beides |
Beachte, BSL-1.0 (Boost Software License) ist freizügig und akzeptiert; BUSL-1.1 (Business Source License) ist es nicht. Der Parser vergleicht gegen den SPDX-kanonischen String wörtlich, also kollidieren die zwei nie.