Aller au contenu principal

Menu de commandes

Accédez à une page ou recherchez dans le catalogue

Nécessite Blender 4.2 ou plus récent · Gratuit

Getly Publisher for Blender

Une extension Blender. Elle lit votre fichier comme le fera le Blender d’un acheteur, vous dit ce qui va casser et corrige en une pression ce qui peut l’être. Chaque vérification s’exécute hors ligne, sans compte ; la connexion est une étape distincte et facultative.

Le problème, mesuré

Un .blend stocke des chemins, pas des fichiers. Il s’ouvre parfaitement chez l’auteur parce que ses textures sont toujours sur son disque ; l’acheteur l’ouvre et chaque surface est d’un magenta uni. Aujourd’hui, Getly compte 94 produits Blender en ligne dans 18 boutiques, et 10 fichiers .blend dans tout le catalogue, parce que les vendeurs livrent des archives.

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

01

La barrière ouvre l’archive au lieu de lire l’extension

Pourquoi

93 des 94 produits Blender en ligne sont livrés en .zip. Une barrière fondée sur l’extension, comme celle d’Unity, se serait déclenchée sur presque aucun. Ouvrir l’archive est aussi ce qui rend la vérification principale correcte et pas seulement stricte : une texture non empaquetée dans le .blend n’est pas un défaut quand elle se trouve juste à côté, dans le même téléchargement.

Ce que ça a coûté

Un lecteur de zip, sur des octets envoyés par un inconnu, avec toutes les limites que cela implique. Il ne revendique une archive que lorsqu’un .blend ou un manifeste d’extension s’y trouve réellement, si bien que les centaines de zips ordinaires du catalogue sont lus une fois puis laissés tranquilles.

02

Il corrige, parce qu’un rapporteur perd face à une entrée de menu

Pourquoi

Blender propose depuis des années Report Missing Files, Make Paths Relative et Pack Resources. Un outil qui ne fait que répéter ce qu’ils disent concurrence quelque chose de déjà installé, et perd sur tous les plans, coût d’installation compris. Celui-ci enchaîne ces étapes dans le bon ordre en une pression (chemins rendus relatifs avant l’empaquetage, pour qu’un dépaquetage ultérieur laisse un chemin qui fonctionne plutôt que le chemin absolu de départ) puis dit exactement ce qu’il a modifié.

Ce que ça a coûté

Écrire dans le projet de quelqu’un est une chose sérieuse. Il liste donc ce qu’il va modifier avant de modifier quoi que ce soit, et n’enregistre jamais le fichier : vous regardez le résultat et vous l’enregistrez vous-même.

03

Chaque vérification s’exécute hors ligne, sans compte

Pourquoi

L’outil doit valoir la peine d’être installé pour quelqu’un qui ne vendra jamais rien sur Getly. Un validateur avec une boutique accrochée est une publicité, et le dépôt d’extensions de Blender, un canal officiel et gratuit dans l’application, le lirait comme telle.

Ce que ça a coûté

Nous ne savons rien de qui l’installe ni de ce qu’il trouve, sauf s’il se connecte : la liste des vérifications est donc calibrée sur des fichiers que nous créons nous-mêmes, pas sur ce que les vendeurs rencontrent réellement.

04

Un fichier illisible est « non vérifié », pas un refus

Pourquoi

Un lecteur écrit à la main pour un format autodescriptif finira par rencontrer une version de Blender qu’il ne comprend pas. Ce jour-là, l’échec doit être « nous n’avons pas pu vérifier cela », pas « tous les vendeurs Blender sont refusés ». La seule exception est un fichier qui n’est pas du tout un .blend : Blender ne l’ouvrira pas non plus, et c’est un problème d’acheteur dont il faut le préserver.

Ce que ça a coûté

Un fichier volontairement corrompu passe. Nous préférons rembourser cela plutôt que de mettre la plateforme à l’arrêt pour tous ceux qui vendent du travail Blender la semaine où sort une nouvelle version.

05

Il est GPL, donc les vérifications sont forkables, et c’est pourquoi le serveur décide

Pourquoi

La Blender Foundation considère l’API Python comme une partie de Blender, donc tout ce qui est construit dessus est distribué sous une licence compatible GPL. Notre liste de vérifications et notre flux de connexion sont donc lisibles et forkables par tout le monde. Nous ne l’avons pas contourné : c’est précisément pour cela que Getly relit les octets envoyés au lieu de se fier au rapport d’un programme que le vendeur contrôle.

Ce que ça a coûté

Rien dans le client n’est un avantage défendable. Ce qui reste, c’est le côté serveur et le jugement contenu dans la liste de vérifications, et la licence ne touche ni l’un ni l’autre.

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

Un scanner de chemins qui aurait refusé tous les fichiers bien faits.

La vérité

Le plan était d’analyser les octets décompressés à la recherche de chemins liés à une machine, comme le vérificateur Unity le fait avec les fichiers texte. Mesurer de vrais fichiers l’a tué en une minute : tout .blend écrit par Blender contient un chemin /Users/… qui lui est propre, et une image correctement EMPAQUETÉE enregistre dans le fichier le chemin source absolu de l’auteur. L’analyse se serait déclenchée le plus fort sur un travail irréprochable. Le lecteur analyse désormais la description de types du fichier lui-même et lit des champs nommés dans des structures nommées.

Pour votre fiche

Testez votre idée sur un bon exemple avant de la construire. Si elle se plaint de quelque chose dont vous savez que c’est correct, c’est l’idée qui est fausse, pas l’exemple.

Nous avons écrit

Un lecteur qui plantait sur toute archive créée avec le Finder.

La vérité

macOS écrit un fichier compagnon pour chaque vrai fichier quand on utilise Compresser, rangé dans un dossier parallèle __MACOSX et nommé ._votrefichier.blend. Son nom finit par .blend et ce n’en est pas un. Le lecteur le prenait et échouait, ce qui aurait cassé la vérification pour tous les vendeurs sur Mac de la plateforme. Une archive de test synthétique ne l’aurait jamais montré ; celle construite avec l’outil réel l’a montré aussitôt.

Pour votre fiche

Construisez vos fichiers de test avec l’outil qu’utilise votre acheteur, pas avec celui qui vous arrange. Le nôtre n’a fonctionné que lorsque nous avons cessé d’assembler les archives à la main.

Nous avons écrit

Un fichier de 407 Ko relu comme 1 236 octets et qui avait l’air correct.

La vérité

Blender compresse avec Zstandard en plusieurs blocs successifs. Le décompresseur standard renvoie le premier bloc et s'arrête : pas d'erreur, pas d'avertissement, seulement un en-tête d'apparence valide et presque rien du fichier. Nous ne l'avons repéré que parce qu'un test comparait la copie compressée à son jumeau non compressé.

Pour votre fiche

Les échecs qui coûtent le plus cher sont ceux qui ressemblent à une réussite. Comparez avec un résultat connu pour être bon, pas avec « est-ce que ça a levé une erreur ? ».

Nous avons écrit

Un badge « vérification réussie » qui pouvait cautionner un fichier que personne n'avait ouvert.

La vérité

Deux chemins enregistrent un rapport pour un fichier que nous avons volontairement choisi de ne pas lire : l'un dépasse la limite de taille, l'autre n'a pas pu être analysé par notre lecteur. Les deux stockent une liste de constats vide, et « aucun constat » était lu plus loin comme « rien d'anormal ». Personne n'avait encore été mal étiqueté, mais le prochain vendeur à cliquer sur Vérifier avec un gros paquet l'aurait été. Le rapport indique désormais si nous l'avons réellement ouvert.

Pour votre fiche

« Nous n'avons rien trouvé » et « nous n'avons pas regardé » ont la même forme et des sens opposés. Partout où votre fiche laisse entendre qu'il y a une vérification, assurez-vous qu'elle sait distinguer ces deux cas.

Ce qu’il ne fait pas

  • Ce n’est pas un antivirus. Un .blend peut contenir du Python, et la vérification vous signale quand un script est marqué pour s’exécuter à l’ouverture : c’est un fait sur le fichier, pas un jugement sur vous.
  • Il ne juge pas si votre ressource est bonne. Seulement si elle arrive en état de marche.
  • Il ne peut pas savoir si un rendu correspond aux images de votre fiche. Il peut vous dire que le fichier ne contient aucun éclairage pour les reproduire.
  • Il ne concerne que Blender. Il existe une version pour Unity ; il n’y a rien pour Unreal, Photoshop ou Cinema 4D.

Comment nous nous en sommes convaincus

Blender a écrit chaque fichier de test

Pas un seul jeu d'essai n'a été assemblé à la main. Tout le risque d'un lecteur de format, c'est que le format ne soit pas celui que vous aviez supposé ; un fichier fait main encode l'hypothèse deux fois au lieu de la tester une fois. Cette discipline a attrapé trois erreurs distinctes avant qu'aucune ne soit livrée.

Il y a plus de tests sur ce qui ne doit PAS être refusé que sur ce qui doit l'être

Un fichier empaqueté, un .blend à côté de son dossier de textures, une archive créée par le Finder, un matériau procédural, une bibliothèque de matériaux sans aucun objet. Prouver qu'un vérificateur détecte les défauts est la partie facile ; prouver qu'il reste silencieux devant un bon travail est celle qui décide si quelqu'un continue de le lire.

Le banc de test lui-même a menti une fois, et cela valait la peine de le découvrir

Il affichait PASSED alors qu'une assertion échouait, car un script Python qui se termine avec un code d'erreur dans Blender n'atteint pas le shell. Un test qui ne peut pas échouer est pire que pas de test : le verdict est donc désormais une ligne repère que le shell recherche avec grep (une ligne absente compte aussi comme un échec), et le banc est vérifié avec une version volontairement cassée.

La fiche elle-même

La description commence par l'expérience de l'acheteur, pas par la nôtre

Elle s'ouvre sur la surface magenta, car c'est ce qu'un auteur Blender reconnaît tout de suite et qu'il a sans doute déjà livré une fois. Puis ce qui bloque la publication, puis la réponse honnête à « Blender a déjà Pack Resources », l'objection que tout vendeur expérimenté soulèvera en premier.

La couverture dessine l'échec, pas l'outil

Une loupe pourrait appartenir à n'importe quelle place de marché. Celle-ci dessine une texture qui s'échappe d'un fichier et la mascotte qui tend la main pour la rattraper : c'est lisible en miniature et c'est littéralement ce que le produit évite. Le mot est lettré à la main, ce n'est pas un logo copié.

Gratuit, et en GPL par-dessus

Tout ce qui est construit sur l'API Python de Blender est livré sous licence compatible GPL, le code est donc lisible et duplicable. Le faire payer aurait été faire payer notre propre exigence de qualité.

Une seule archive, construite avec le constructeur de Blender

Le téléchargement est produit par le constructeur d'extensions fourni avec Blender, pas compressé à la main. C'est aussi ainsi que nous savons que le manifeste est valide, puisque le constructeur refuse un manifeste invalide.

Notre propre vérificateur a trouvé un vrai problème dans notre propre paquet

Le publier lui fait passer la même porte que tout vendeur. Il est revenu avec un constat : l'archive n'avait pas de readme, l'une de nos douze vérifications indicatives. Nous avons corrigé le paquet plutôt que la vérification, et le readme obtenu est désormais celui qu'affichent la fiche et le dépôt d'extensions.