Aller au contenu principal

Menu de commandes

Accédez à une page ou recherchez dans le catalogue

Nécessite Unity 2020.3 ou plus récent · Gratuit

Getly Publisher for Unity

Un package pour l’éditeur Unity. Il vérifie le dossier de ressources que vous allez vendre, puis soumet la fiche en brouillon sans que vous quittiez l’éditeur. Il est gratuit, et c’est le premier produit que Getly a publié pour lui-même.

Le problème, mesuré

Un .unitypackage est opaque jusqu’au moment de l’import, qui est aussi le moment où il est trop tard. Cet outil existe pour un échec en particulier : l’acheteur ouvre la scène de démo et chaque objet affiche « Missing (Mono Script) », parce que l’auteur l’a testé dans le seul projet où ces scripts existaient par hasard. Au départ, il y avait 55 fichiers .unitypackage sur Getly, répartis dans 9 boutiques, et aucun n’avait jamais été lu par quoi que ce soit.

Chaque décision et ce qu’elle a coûté

01

La vérification s’exécute deux fois, et une seule moitié décide

Pourquoi

Dans l’éditeur, elle voit ce qu’aucun serveur ne peut voir : si le GUID de script d’un prefab se résout vraiment, quels sont les réglages d’import d’une texture, comment le compilateur lit un fichier. Mais elle tourne sur la machine du vendeur, dans un package qu’il peut modifier. Se fier à son rapport reviendrait à faire de la barrière ce que dit une copie de notre code sur l’ordinateur de quelqu’un d’autre. L’éditeur conseille donc, et Getly, en lisant les octets envoyés, décide.

Ce que ça a coûté

Deux implémentations des mêmes règles, dans deux langages, qui peuvent diverger. Un catalogue généré et un test qui échoue en cas de dérive, c’est le prix pour les garder honnêtes.

02

Six vérifications bloquent la publication. Dix ne la bloquent jamais.

Pourquoi

Une vérification bloquante signifie que l’acheteur reçoit quelque chose de cassé ; un avertissement signifie que la ressource fonctionne et pourrait être meilleure. Allonger la liste des blocages, c’est décider de refuser plus de vendeurs : cela se fait donc délibérément, et la liste est tenue à six. Un vendeur qui connaît sa ressource mieux que nos règles doit pouvoir la publier quand même.

Ce que ça a coûté

Cinq des six, le serveur les trouve seul. La sixième, un prefab qui pointe vers un script absent du package, celle par laquelle tout cet outil commence, demande l’éditeur, car résoudre un GUID, seul Unity sait le faire. Un vendeur qui passe par la voie sans installation obtient les cinq autres mais pas celle-là, et nous préférons le dire plutôt que de laisser cette voie laisser croire le contraire.

03

La barrière ne regarde que l’extension du fichier

Pourquoi

Le test Unity, c’est l’extension et rien d’autre, il ne peut donc refuser qu’un .unitypackage : toutes les fiches qui existaient à sa sortie n’ont pas été touchées, et personne qui ne vendait pas du Unity n’a eu de règle nouvelle à apprendre. Ce n’est plus toute la barrière, puisque la vérification Blender arrivée plus tard doit ouvrir des archives, mais la partie Unity ne touche toujours que Unity.

Ce que ça a coûté

Une ressource Unity livrée dans un .zip n’est pas couverte. Nous l’avons accepté plutôt que de laisser la barrière se forger un avis sur des centaines d’archives qu’elle n’a pas à juger.

04

Vous pouvez la satisfaire sans rien installer

Pourquoi

La barrière agit quand un produit est mis en ligne, et des vendeurs avaient des ressources Unity en ligne bien avant l’existence de l’outil. En faire la seule voie aurait obligé un vendeur actif depuis des mois à télécharger un package d’éditeur pour publier une mise à jour. La même vérification tourne donc depuis la page de modification du produit.

Ce que ça a coûté

Deux points d’entrée vers le même cœur, et un bouton dont il faut tenir la portée alignée sur la barrière, ce que nous avons raté une fois et qui a maintenant son test.

05

La clé d’API vit dans les préférences de l’éditeur, jamais dans le projet

Pourquoi

Une clé posée à côté de votre travail est une clé que vous finirez par exporter dans un package et vendre. Les préférences de l’éditeur sont hors du dossier que vous empaquetez, elle ne peut donc pas voyager avec la ressource par accident.

Ce que ça a coûté

Les préférences de l’éditeur sont propres à la machine et à l’utilisateur du système, pas au projet, et la clé y est en clair. Un vendeur sur une deuxième machine se reconnecte, et toute personne ayant ce compte système est connectée comme cette boutique. Nous avons préféré cela à un identifiant qui peut être exporté dans un package et vendu.

Ce que nous avons d’abord raté

Ces erreurs ont été repérées avant qu’un acheteur ne les voie, ce qui est la seule raison pour laquelle nous pouvons les écrire. Elles sont ici parce que les décisions ci-dessus enseignent moins que les erreurs.

Nous avons écrit

« Chaque ressource Unity sur Getly est vérifiée avant de pouvoir être mise en ligne. »

La vérité

Faux, et nous l’avions écrit sur la page dont tout l’argument est que nous vérifions les choses. La barrière agit au passage en ligne, donc les 55 fichiers .unitypackage déjà rattachés dans le catalogue n’avaient jamais été lus. Nous l’avons réécrit en « à partir de maintenant » avant la sortie, et ajouté un compteur séparé pour ceux réellement lus : 1 aujourd’hui.

Pour votre fiche

Les mots absolus (chaque, toujours, entièrement, garanti) sont là où une description a le plus de chances de mentir, et ce qu’un acheteur réfute le plus facilement. Dites ce qui est vrai de la prochaine vente, pas ce que vous voudriez vrai de toutes.

Nous avons écrit

Une vérification qui a signalé notre propre documentation.

La vérité

La vérification des chemins absolus s’est déclenchée sur le fichier qui explique la vérification des chemins absolus, parce que ce fichier contient un exemple de chemin. Elle se serait déclenchée sur n’importe quel README demandant à un vendeur de retirer les chemins /Users/…. Trois correctifs : le motif exige désormais un segment utilisateur et quelque chose après, les fichiers de prose sont exclus, et la formulation ne contient plus de chemin complet.

Pour votre fiche

Testez votre produit sur ce à quoi il sera le plus probablement appliqué, pas sur ce avec quoi vous l’avez construit. Le nôtre a trouvé son propre manuel.

Nous avons écrit

Un avertissement sur les dossiers vides qui jugeait la mauvaise chose.

La vérité

Il regardait le système de fichiers. Un dossier ne contenant qu’un .gitkeep n’est pas vide sur le disque et arrive vide dans le projet de l’acheteur, parce que l’exporteur d’Unity ne transporte pas ce fichier. La source de vérité devait être ce que produit l’exporteur, pas ce que le vendeur voit dans le Finder.

Pour votre fiche

Vérifiez ce que l’acheteur reçoit, pas ce que vous avez. Votre dossier, votre projet et votre disque sont autant de choses que le téléchargement ne contient pas.

Ce qu’il ne fait pas

  • Ce n’est pas un scanner de malwares. Une macro dans un document authentique passe sans être touchée.
  • Il ne juge pas si votre ressource est bonne. Seulement si elle arrive en état de marche.
  • Il ne concerne qu’Unity. Il existe une version pour Blender ; il n’y a rien pour Unreal, Photoshop ou Cinema 4D.
  • Les packages de plus de 150 Mo sont enregistrés comme non vérifiés et peuvent quand même être publiés. Refuser un vendeur à cause de notre propre limite, ce serait lui faire payer notre contrainte.

Comment nous nous en sommes convaincus

Les fichiers de test ont été faits par Unity, pas par nous

Chaque package de test a été produit par l’exporteur d’Unity lui-même, en mode sans interface. Tout le risque d’un lecteur de format, c’est que le format ne soit pas celui qu’on a supposé, et un fichier de test fait main encode l’hypothèse deux fois au lieu de la tester une fois.

Un banc d’essai qui l’installe et appuie sur les boutons

Un script crée un projet, compile l’outil, lance le validateur et sort avec un code non nul si les résultats changent. Les tests unitaires lisent de vrais packages exportés ; le banc d’essai couvre ce qu’un test unitaire ne voit pas : que la chose compile, et que l’appui sur le bouton fait ce que la lecture du code laisse penser.

Un fichier de test propre compte plus qu’un fichier cassé

Il est facile de prouver qu’un vérificateur détecte un défaut et facile d’oublier de prouver qu’il reste silencieux devant un travail soigné. Un validateur qui se déclenche sur une ressource bien faite apprend aux vendeurs à l’ignorer, ce qui est pire que pas de validateur du tout.

La fiche elle-même

La description commence par ce qu’il évite

Pas ce qu’est l’outil, mais ce qui vous arrive sans lui. Le premier paragraphe est l’histoire du « Missing (Mono Script) », parce que c’est la phrase qu’un éditeur Unity reconnaît. Puis la liste complète de ce qui bloque la publication, puis, sans détour, ce qu’il ne fait pas.

La couverture dit ce qu’est le produit en taille vignette

La première version était notre mascotte, ce qui est honnête et n’apprend rien à un acheteur : c’est la même image sur chaque page de ce site. Celle de la fiche dessine maintenant le produit : un package en cours d’inspection, avec le mot dessiné à la main plutôt qu’un logo reproduit, parce que reproduire la marque de quelqu’un dans une image générée est à la fois une question juridique et une déformation garantie.

Il est gratuit, et rien n’y est vendu

Faire payer ce qui rend les ressources des autres vendables reviendrait à faire payer notre propre niveau d’exigence. C’est aussi la porte d’entrée : l’outil vaut plus pour nous installé que vendu.

Un fichier, remplacé plutôt qu’accumulé

Chaque version remplace le téléchargement précédent au lieu d’ajouter une version entre lesquelles personne ne veut choisir. L’acheteur reçoit la version actuelle, et il n’y a aucune page où il doit deviner laquelle l’est.

Il est passé par notre propre barrière, et notre propre barrière l’a refusé

Le publier lance la même vérification que tout vendeur passe : exempter notre propre fiche serait la chose la moins défendable que nous puissions faire. Il est ressorti avec un seul constat consultatif : pas de scène de démo, ce qu’un outil d’éditeur n’a pas. Nous avons laissé le constat en place plutôt que d’ajouter une exception pour nous-mêmes.