Zum Hauptinhalt springen

Befehlsmenü

Zu einer Seite springen oder den Katalog durchsuchen

Benötigt Unity 2020.3 oder neuer · Kostenlos

Getly Publisher für Unity

Ein Unity-Editor-Paket. Es prüft den Asset-Ordner, den du verkaufen willst, und reicht den Eintrag anschließend als Entwurf ein, ohne dass du den Editor verlässt. Es ist kostenlos, und es ist das erste Produkt, das Getly für sich selbst veröffentlicht hat.

Das Problem, gemessen

Ein .unitypackage ist undurchsichtig bis zum Moment des Imports, und der ist auch der Moment, in dem es zu spät ist. Dieses Werkzeug gibt es wegen eines Fehlers im Besonderen: Der Käufer öffnet die Demo-Szene, und an jedem Objekt steht „Missing (Mono Script)“ - weil der Autor es in dem einen Projekt getestet hat, in dem diese Skripte zufällig vorhanden waren. Als wir anfingen, lagen auf Getly 55 .unitypackage-Dateien in 9 Shops, und keine einzige davon war je von irgendetwas gelesen worden.

Jede Entscheidung, und was sie gekostet hat

01

Die Prüfung läuft zweimal, und nur eine Hälfte entscheidet

Warum

Im Editor sieht die Prüfung, was kein Server sehen kann - ob die Skript-GUID eines Prefabs sich wirklich auflöst, welche Importeinstellungen eine Textur hat, wie der Compiler eine Datei liest. Aber sie läuft auf dem Rechner des Verkäufers, in einem Paket, das er ändern kann. Diesem Bericht zu vertrauen hieße: Das Tor ist das, was eine Kopie unseres Codes auf einem fremden Rechner sagt. Also berät der Editor, und Getly entscheidet, indem es die hochgeladenen Bytes liest.

Was es gekostet hat

Zwei Implementierungen derselben Regeln, in zwei Sprachen, die auseinanderlaufen können. Ein generierter Katalog und ein Test, der bei Abweichung fehlschlägt, sind der Preis dafür, dass beide ehrlich bleiben.

02

Sechs Prüfungen blockieren die Veröffentlichung. Zehn nie.

Warum

Eine blockierende Prüfung heißt, dass der Käufer etwas Kaputtes bekommt; ein Hinweis heißt, dass das Asset funktioniert und besser sein könnte. Die blockierende Liste zu erweitern heißt, mehr Verkäufern abzusagen, also wird das bewusst entschieden und bei sechs gehalten. Wer sein Asset besser kennt als unsere Regeln, muss es trotzdem ausliefern können.

Was es gekostet hat

Fünf der sechs findet der Server selbst. Die sechste - ein Prefab, das auf ein Skript zeigt, das nicht im Paket liegt, genau der Fall, mit dem dieses ganze Werkzeug anfängt - braucht den Editor, denn eine GUID aufzulösen kann nur Unity. Wer den Weg ohne Installation nimmt, bekommt die anderen fünf und diese eine nicht, und das sagen wir lieber, als den Weg etwas anderes nahelegen zu lassen.

03

Das Tor sieht auf die Dateiendung und sonst auf nichts

Warum

Die Unity-Prüfung sieht auf die Dateiendung und sonst auf nichts, sie kann also ein .unitypackage ablehnen und sonst nichts: Jeder Eintrag, der beim Start schon existierte, blieb unberührt, und niemand, der etwas anderes als Unity-Arbeit verkauft, musste eine neue Regel von uns lernen. Das ganze Tor ist sie nicht mehr - die später hinzugekommene Blender-Prüfung muss Archive öffnen -, aber die Unity-Hälfte betrifft weiterhin nur Unity.

Was es gekostet hat

Ein Unity-Asset, das in einer .zip ausgeliefert wird, ist nicht abgedeckt. Das haben wir hingenommen, statt das Tor Meinungen über Hunderte von Archiven bilden zu lassen, über die zu urteilen ihm nicht zusteht.

04

Du kannst es erfüllen, ohne irgendetwas zu installieren

Warum

Das Tor greift beim Übergang in den Verkauf, und es gab Verkäufer mit aktiven Unity-Assets lange bevor es das Werkzeug gab. Wäre die Installation der einzige Weg, müsste jemand, der seit Monaten verkauft, ein Editor-Paket herunterladen, um ein Update zu veröffentlichen. Also läuft dieselbe Prüfung auch von der Produktseite aus.

Was es gekostet hat

Zwei Einstiegspunkte in denselben Kern, und eine Schaltfläche, deren Reichweite mit dem Tor Schritt halten muss - was uns einmal misslungen ist und wofür es jetzt einen Test gibt.

05

Der API-Schlüssel liegt in den Editor-Einstellungen, nie im Projekt

Warum

Ein Schlüssel, der neben deiner Arbeit liegt, ist ein Schlüssel, den du irgendwann in ein Paket exportierst und verkaufst. Die Editor-Einstellungen liegen außerhalb des Ordners, den du paketierst, er kann also nicht versehentlich mit dem Asset mitreisen.

Was es gekostet hat

Die Editor-Einstellungen gelten pro Rechner und pro Betriebssystem-Benutzer, nicht pro Projekt, und der Schlüssel liegt dort im Klartext. Ein Verkäufer an einem zweiten Rechner meldet sich erneut an, und wer diesen Betriebssystem-Zugang hat, ist als dieser Shop angemeldet. Das haben wir einem Zugangsschlüssel vorgezogen, der sich in einem Paket exportieren und verkaufen lässt.

Was wir zuerst falsch gemacht haben

Diese Fehler wurden gefunden, bevor ein Käufer sie gesehen hat - nur deshalb können wir sie aufschreiben. Die Fehler stehen hier, weil die Entscheidungen weiter oben weniger lehren als sie.

Wir schrieben

„Jedes Unity-Asset auf Getly wird geprüft, bevor es live gehen kann.“

Die Wahrheit

Falsch, und wir haben es auf die Seite geschrieben, deren ganzes Argument lautet, dass wir prüfen. Das Tor greift beim Übergang in den Verkauf, die 55 .unitypackage-Dateien, die schon im Katalog hingen, waren also nie gelesen worden. Wir haben es vor dem Start zu „ab jetzt“ umgeschrieben und einen eigenen Zähler dafür ergänzt, wie viele wirklich gelesen wurden - heute 1.

Für deinen Eintrag

Absolute Wörter - jedes, immer, vollständig, garantiert - sind die Stellen, an denen eine Beschreibung am ehesten lügt, und sie sind für einen Käufer am leichtesten zu widerlegen. Sag, was für den nächsten Verkauf stimmt, nicht, was du dir für alle wünschst.

Wir schrieben

Eine Prüfung, die unsere eigene Dokumentation beanstandete.

Die Wahrheit

Die Prüfung auf absolute Pfade schlug bei der Datei an, die die Prüfung auf absolute Pfade erklärt, weil in dieser Datei ein Beispielpfad steht. Genauso hätte sie bei jeder README angeschlagen, die einem Verkäufer sagt, er solle Pfade wie /Users/… entfernen. Drei Korrekturen: Das Muster verlangt jetzt ein Benutzersegment und etwas dahinter, Dokumentationsdateien sind ausgenommen, und die Formulierung enthält keinen vollständigen Pfad mehr.

Für deinen Eintrag

Teste dein Produkt an dem, worauf es am ehesten angewendet wird, nicht an dem, womit du es gebaut hast. Unseres fand sein eigenes Handbuch.

Wir schrieben

Ein Hinweis zu leeren Ordnern, der das Falsche beurteilte.

Die Wahrheit

Er sah auf das Dateisystem. Ein Ordner, der nur eine .gitkeep enthält, ist auf der Platte nicht leer und kommt im Projekt des Käufers leer an, weil Unitys Exporter diese Datei nicht mitnimmt. Maßgeblich musste sein, was der Exporter erzeugt, nicht was der Verkäufer im Finder sieht.

Für deinen Eintrag

Prüfe, was der Käufer bekommt, nicht was du hast. Dein Ordner, dein Projekt und deine Platte sind alles Dinge, die der Download nicht mitbringt.

Was es nicht tut

  • Es ist kein Malware-Scanner. Ein Makro in einem echten Dokument passiert es unberührt.
  • Es beurteilt nicht, ob dein Asset gut ist. Nur, ob es funktionsfähig ankommt.
  • Es ist nur für Unity. Eine Blender-Version gibt es; für Unreal, Photoshop oder Cinema 4D gibt es nichts.
  • Pakete über 150 MB werden als ungeprüft vermerkt und können trotzdem veröffentlicht werden. Einem Verkäufer wegen unserer eigenen Grenze abzusagen hieße, ihm unsere Beschränkung in Rechnung zu stellen.

Wie wir uns überzeugt haben

Die Testdateien hat Unity gemacht, nicht wir

Jedes Testpaket wurde von Unitys eigenem Exporter im Headless-Betrieb erzeugt. Das ganze Risiko eines Formatlesers liegt darin, dass das Format nicht so ist wie angenommen, und eine handgebaute Testdatei schreibt die Annahme zweimal fest, statt sie einmal zu prüfen.

Ein Prüfstand, der es installiert und die Knöpfe drückt

Ein Skript legt ein Projekt an, kompiliert das Werkzeug, führt den Validator aus und endet mit einem Fehlercode, sobald sich die Befunde ändern. Die Unit-Tests lesen echte exportierte Pakete; der Prüfstand deckt den Teil ab, den ein Unit-Test nicht sehen kann - dass die Sache kompiliert, und dass ein Druck auf den Knopf das tut, was der Code nahelegt.

Eine saubere Testdatei ist wichtiger als eine kaputte

Es ist leicht zu beweisen, dass ein Prüfwerkzeug einen Mangel findet, und leicht zu vergessen zu beweisen, dass es bei guter Arbeit still bleibt. Ein Validator, der bei einem gut gemachten Asset anschlägt, bringt Verkäufern bei, ihn zu ignorieren, und das ist schlimmer als gar kein Validator.

Der Eintrag selbst

Die Beschreibung beginnt mit dem, was es verhindert

Nicht damit, was das Werkzeug ist - sondern damit, was ohne es mit dir passiert. Der erste Absatz ist die „Missing (Mono Script)“-Geschichte, denn das ist der Satz, den ein Unity-Publisher wiedererkennt. Dann die vollständige Liste dessen, was die Veröffentlichung blockiert, dann klar gesagt, was es nicht tut.

Das Titelbild sagt in Thumbnail-Größe, was die Sache ist

Die erste Fassung war unser Maskottchen, was ehrlich ist und einem Käufer nichts sagt - es ist dasselbe Bild auf jeder Seite dieser Website. Das jetzige zeichnet das Produkt: ein Paket, das untersucht wird, mit dem Wort von Hand geschrieben statt einem reproduzierten Logo, denn eine fremde Marke in generierter Grafik nachzubilden ist zugleich eine Rechtsfrage und ein garantierter Murks.

Es ist kostenlos, und nichts daran wird verkauft

Für das Werkzeug Geld zu nehmen, das fremde Assets verkäuflich macht, hieße, für den eigenen Qualitätsanspruch Geld zu nehmen. Es ist außerdem der Einstieg: Installiert ist das Werkzeug für uns mehr wert als verkauft.

Eine Datei, ersetzt statt angesammelt

Jede Veröffentlichung ersetzt den vorherigen Download, statt eine Version hinzuzufügen, zwischen denen niemand wählen möchte. Der Käufer bekommt den aktuellen Build, und es gibt keine Seite, auf der er raten muss, welcher der aktuelle ist.

Es ging durch unser eigenes Tor, und unser eigenes Tor lehnte es ab

Beim Veröffentlichen läuft dieselbe Prüfung, die jeder Verkäufer besteht - den eigenen Eintrag auszunehmen wäre das am wenigsten Vertretbare, was uns zur Verfügung steht. Es kam mit einem Hinweis zurück: keine Demo-Szene, die ein Editor-Werkzeug nicht hat. Wir haben den Befund stehen lassen, statt für uns selbst eine Ausnahme einzubauen.