Aller au contenu
Documentation
Sur cette page

Profils de publication

Un service décrit les niveaux qu'il accepte dans un fichier PublishProfile : licences, sources des ressources, champs obligatoires, limites de taille. Ajouter un service, c'est écrire un fichier, pas modifier l'analyseur

Un profil, ce sont des données

Un profil de publication (PublishProfile) est un modèle qui se sérialise comme n'importe quelle autre racine, avec sa propre génération

Un niveau peut aller dans le Steam Workshop, sur le serveur officiel, sur un serveur communautaire, dans le catalogue d'une version pour store. Chaque endroit répond aux mêmes questions à sa façon. Les réponses changent avec les années, le code non

Ce que décide un profil :

ChampSignification
ProfileKeyde quel service il s'agit, répété dans chaque rapport
AllowedLicensesles valeurs de TypicalLicenseType que le service accepte
AllowedUriTypescomment les ressources peuvent être récupérées. Une liste vide autorise toutes les façons
AllowUnknownLicense, AllowPermissionInsteadsi une licence inconnue ou une autorisation écrite suffit
RequireResourceMeta, RequireResourceUrl, RequireAttribution, RequireAgeRating, RequireLevelAuthors, RequireHashesce qui doit être rempli
MaxResourceBytes, MaxDataFileBytes, MaxTotalByteslimites de taille, 0 signifie sans limite
Sources, UnknownSourceTrustune liste de sites et la note d'un site qui n'y figure pas

Seul le profil décide quelles licences sont acceptables. Cela ressemble à une propriété de la licence, mais c'est en fait une propriété du service qui reçoit le niveau

Quatre profils intégrés

FabriqueProfileKeyPour quoi
CreateOpen()localun niveau sur ton appareil. Rien n'est exigé
CreateStandard()standardun serveur public
CreateWorkshop()workshople Steam Workshop. Toute variante de CC BY passe, les documents manquants ne donnent qu'un avertissement
CreateStrict()strictune version pour store, plus stricte que standard
Quoistandardstrict
licencesCC0 1.0, CC BY 4.0 et 3.0, CC BY-NC 4.0 et 3.0, SIL OFL 1.1, MIT, Apache 2.0, the Unlicensecomme dans standard
provenance des ressourcesdepuis le dossier du niveau, depuis le jeu ou par lien directpas de liens
attribution et hashes-obligatoires
limite par ressource64 Mio32 Mio
limite par fichier de données32 Mio16 Mio
limite par niveau256 Mio128 Mio
Recommandation

N'ajoute pas de fabrique pour ton service. Prends l'un des quatre profils, modifie les champs nécessaires et livre-le sous forme de fichier JSON

Pourquoi ces licences et ces tailles

  • les licences de la famille GPL sont exclues de standard. Une œuvre sous GPL distribuée par l'App Store entre en conflit avec les conditions d'Apple
  • CC BY-SA est exclue : ShareAlike imposerait de changer la licence du niveau lui-même
  • CC BY-ND est exclue : NoDerivatives interdit la modification sur laquelle repose le jeu
  • les tailles strictes sont ce qu'un téléphone peut télécharger sur un réseau mobile

D'où vient une ressource

Le champ de licence dit ce que l'auteur affirme. SourceTrust dit ce que vaut cette affirmation, compte tenu du site d'où vient la ressource :

NoteRésultatExemples
ApprovedpublierKenney, ccMixter, Incompetech
PartiallyApprovedpublier, l'enregistrement mérite un coup d'œilPixabay, SoundImage
RequiresLicenseCheckvérifier la licence sur la vraie pageOpenGameArt, Free Music Archive, Wikimedia Commons
RequiresResourceCheckidentifier d'abord l'œuvre elle-mêmeRawpixel, itch.io
NotAllowedrefuserYouTube, SoundCloud, Spotify
Unknownpas d'enregistrement, UnknownSourceTrust décide-

TrustedSourceCatalog.CreateDefault() renvoie 25 sites. C'est une liste de départ. Chaque opérateur est censé la modifier. Rien n'a donc le droit de compter sur la présence d'un enregistrement

Une liste Sources vide désactive la notation des sources

Les plateformes de streaming sont listées en NotAllowed au lieu d'être omises. Un site absent est noté via UnknownSourceTrust, et dans standard et strict cette note demande une vérification au lieu de refuser

Le catalogue et Politique de licence des niveaux des joueurs décrivent la même chose et se modifient ensemble

Que faire de la réponse

L'appel est ValidationFacade.ValidateForPublish. Plus - Validation

PublishReadinessReport contient :

  • HasErrors - des problèmes dans le groupe Error
  • NeedsManualReview - des problèmes dans le groupe Warning
  • IsReady

Le profil ne décide pas de la suite. Le client bloque l'envoi en cas d'erreurs. Le serveur place le niveau dans une file de vérification au lieu de le publier

La même vérification du côté de l'auteur - Prêt pour la publication