Caputchin
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.

Error-Codes

CodeAuslöserFix
invalid-repoDas Repository-Feld, das du im Publish-Modal eingegeben hast, parst nicht als owner/name. Nur manuelles VeröffentlichenNutz owner/name oder die volle https://github.com/owner/name-URL
repo-not-foundUnser Manifest-Abruf gab einen 404 zurück. Dein Repository ist privat, fehlt, hat nicht das caputchin-game-Topic oder keine caputchin.json am erwarteten PfadMach das Repository öffentlich + füg das Topic hinzu + pushe ein Manifest
manifest-errorDeine caputchin.json schlug bei der Validierung fehl. Der Detail-String benennt das spezifische Feld. Sieh dir manifest-error-Sub-Codes anBeheb das Feld, das das Detail benennt
bundle-fetch-failedDie durch entry und/oder npm gepinnte Bundle-URL konnte nicht abgerufen werden, gab einen Nicht-2xx zurück oder überschreitet 12MBVerifizier die Bundle-URL und -Größe
run-not-conformingDie 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 gatenMach deine Simulation deterministisch
rate-limitedZu viele Publish-Anfragen von deiner IP in den letzten 60 SekundenWarte 60 Sekunden und versuch erneut

manifest-error sub-codes

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 DetailBedeutungFix
terms_acceptedDas Feld fehlt oder ist nicht das literale JSON-Boolean trueSetz es auf true nach dem Lesen der Einreichungsbedingungen
licenseFehlt, fehlerhaft oder benennt einen SPDX-Identifier außerhalb der genehmigten ListeWä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 { ... }
marketplaceDer marketplace-Block ist vorhanden, aber kein ObjektMach es entweder zu einem Objekt oder entferne es (nur-selbst-gehostete Spiele lassen den Block weg)
marketplace.name / description / previewDas Feld ist kein StringStringify oder entferne
marketplace.authorDer Block ist vorhanden, aber kein ObjektNutz die { name?, url?, email? }-Form
marketplace.author.name / urlDas Unterfeld ist kein StringStringify oder entferne
marketplace.author.emailKein String ODER besteht die E-Mail-Form-Prüfung nichtBeheb die Adresse oder entferne das Feld
entryEinzelnes Spiel hat kein entry und kein npm, oder der Wert enthält Traversierung (../), absolute Slashes, Windows-Separatoren, Query-Strings oder WhitespaceStell einen sauberen relativen Pfad bereit
npmKein String, oder besteht die npm-Namen-Regex nichtNutz einen gültigen npm-Paket-Namen
entry/npm+gamesSowohl entry/npm als auch games auf derselben Ebene deklariertWähl eins: einzelne Spiele nutzen entry/npm; Sammlungs-Wrapper nutzen games
entry/npmEinzelnes Spiel hat weder nochFüg eins hinzu
gamesKein 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ültigBeheb diesen Eintrag
run / run.entry / run.modules[i].*Die optionale Split-Run-Deklaration ist fehlerhaftBeheb gemäß dem Schema

Genehmigte Lizenzen

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.

Freizügige Code-Lizenzen

SPDX IDName
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-Widmung)
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

Datei-bezogenes schwaches Copyleft

SPDX IDName
MPL-2.0Mozilla Public License 2.0
MS-RLMicrosoft Reciprocal License

Asset-Lizenzen (Kunst, Audio, Schriften, im Spiel gebündelt)

SPDX IDName
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-Ausdrucks-Regeln

  • 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.

Warum manche Lizenzen ausgeschlossen sind

KategorieBeispieleWarum
Starkes CopyleftGPL-*, 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-MehrdeutigkeitLGPL-*"Die Bibliothek übermitteln" liest sich mehrdeutig für JavaScript- und WebAssembly-Bundles
Share-Alike auf AssetsCC-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.0Field-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.

Siehe auch

Auf dieser Seite