Zum Inhalt springen
Dokumentation
Auf dieser Seite

Veröffentlichungsprofile

Welche Levels ein Dienst annimmt, steht in einer PublishProfile-Datei: Lizenzen, Quellen der Ressourcen, Pflichtfelder, Größengrenzen. Ein neuer Dienst ist eine Datei, keine Änderung am Analyzer

Ein Profil sind Daten

Ein Veröffentlichungsprofil (PublishProfile) ist ein Modell, das wie jede andere Wurzel serialisiert wird, mit eigener Generation

Ein Level kann in den Steam Workshop, auf den offiziellen Server, auf einen Community-Server oder in den Katalog eines Store-Builds gehen. Jeder Ort beantwortet dieselben Fragen auf seine Weise. Die Antworten ändern sich über die Jahre, der Code nicht

Was ein Profil entscheidet:

FeldBedeutung
ProfileKeywelcher Dienst das ist, wird in jedem Bericht wiederholt
AllowedLicensesdie Werte von TypicalLicenseType, die der Dienst annimmt
AllowedUriTypeswie Ressourcen bezogen werden dürfen. Eine leere Liste heißt: auf jede Art
AllowUnknownLicense, AllowPermissionInsteadob eine unbekannte Lizenz oder eine schriftliche Erlaubnis genügt
RequireResourceMeta, RequireResourceUrl, RequireAttribution, RequireAgeRating, RequireLevelAuthors, RequireHasheswas ausgefüllt sein muss
MaxResourceBytes, MaxDataFileBytes, MaxTotalBytesGrößengrenzen, 0 heißt keine Grenze
Sources, UnknownSourceTrusteine Liste von Websites und die Bewertung für eine Website, die nicht darauf steht

Welche Lizenzen akzeptabel sind, entscheidet nur das Profil. Das sieht wie eine Eigenschaft der Lizenz aus, ist aber in Wahrheit eine Eigenschaft des empfangenden Dienstes

Vier eingebaute Profile

FabrikmethodeProfileKeyWofür
CreateOpen()localein Level auf deinem Gerät. Nichts ist Pflicht
CreateStandard()standardein öffentlicher Server
CreateWorkshop()workshopder Steam Workshop. Jede Variante von CC BY geht durch, fehlende Dokumente erzeugen nur Warnungen
CreateStrict()strictein Store-Build, strenger als standard
Wasstandardstrict
LizenzenCC0 1.0, CC BY 4.0 und 3.0, CC BY-NC 4.0 und 3.0, SIL OFL 1.1, MIT, Apache 2.0, die Unlicensewie bei standard
woher Ressourcen kommenaus dem Levelordner, aus dem Spiel oder per Direktlinkkeine Links
Namensnennung und Hashes-Pflicht
Grenze pro Ressource64 MiB32 MiB
Grenze pro Datendatei32 MiB16 MiB
Grenze pro Level256 MiB128 MiB
Empfehlung

Füge keine Fabrikmethode für deinen Dienst hinzu. Nimm eines der vier Profile, ändere die Felder, die du brauchst, und liefere es als JSON-Datei aus

Warum diese Lizenzen und Größen

  • Lizenzen der GPL-Familie sind aus standard ausgeschlossen. Ein GPL-Werk, das über den App Store verbreitet wird, kollidiert mit den Bedingungen von Apple
  • CC BY-SA ist ausgeschlossen: ShareAlike würde eine Änderung der Lizenz des Levels selbst erzwingen
  • CC BY-ND ist ausgeschlossen: NoDerivatives verbietet die Bearbeitung, auf der das Spiel aufbaut
  • die strengen Größen sind das, was ein Telefon über ein Mobilfunknetz herunterladen kann

Woher eine Ressource kam

Das Lizenzfeld sagt, was der Autor behauptet. SourceTrust sagt, was diese Behauptung wert ist, je nach der Website, von der die Ressource stammt:

BewertungErgebnisBeispiele
ApprovedveröffentlichenKenney, ccMixter, Incompetech
PartiallyApprovedveröffentlichen, der Eintrag ist einen Blick wertPixabay, SoundImage
RequiresLicenseCheckdie Lizenz mit der echten Seite abgleichenOpenGameArt, Free Music Archive, Wikimedia Commons
RequiresResourceCheckzuerst das Werk selbst identifizierenRawpixel, itch.io
NotAllowedablehnenYouTube, SoundCloud, Spotify
Unknownkein Eintrag, UnknownSourceTrust entscheidet-

TrustedSourceCatalog.CreateDefault() gibt 25 Websites zurück. Das ist eine Startliste. Jeder Betreiber soll sie ändern. Daher darf sich nichts darauf verlassen, dass ein Eintrag vorhanden ist

Eine leere Liste Sources schaltet die Bewertung der Quellen ab

Streaming-Plattformen stehen als NotAllowed in der Liste, statt zu fehlen. Eine fehlende Website wird über UnknownSourceTrust bewertet, und in standard und strict verlangt diese Bewertung eine Prüfung, statt abzulehnen

Der Katalog und Lizenzrichtlinie für Nutzerlevels beschreiben dasselbe und werden gemeinsam bearbeitet

Was mit der Antwort zu tun ist

Der Aufruf ist ValidationFacade.ValidateForPublish. Mehr - Validierung

PublishReadinessReport hat:

  • HasErrors - Befunde in der Gruppe Error
  • NeedsManualReview - Befunde in der Gruppe Warning
  • IsReady

Was danach passiert, entscheidet das Profil nicht. Der Client blockiert das Hochladen bei Fehlern. Der Server stellt das Level in eine Prüfwarteschlange, statt es zu veröffentlichen

Dieselbe Prüfung aus Sicht des Autors - Bereit zum Veröffentlichen