Saltar al contenido principal

Menú de comandos

Ve a una página o busca en el catálogo

Requiere Unity 2020.3 o posterior · Gratis

Getly Publisher for Unity

Un paquete para el editor de Unity. Comprueba la carpeta de recursos que vas a vender y luego envía la ficha como borrador sin que salgas del editor. Es gratis y es el primer producto que Getly publicó para sí mismo.

El problema, medido

Un .unitypackage es opaco hasta el momento de importarlo, que también es el momento en que ya es tarde. Esta herramienta existe para un fallo en particular: el comprador abre la escena de demostración y todos los objetos dicen «Missing (Mono Script)», porque el autor lo probó en el único proyecto donde esos scripts casualmente existían. Cuando empezamos había 55 archivos .unitypackage en Getly repartidos en 9 tiendas, y ninguno había sido leído nunca por nada.

Cada decisión y lo que costó

01

La comprobación se ejecuta dos veces y solo una mitad decide

Por qué

Dentro del editor ve lo que ningún servidor puede ver: si el GUID de script de un prefab se resuelve de verdad, cómo están los ajustes de importación de una textura, cómo lee el compilador un archivo. Pero se ejecuta en el equipo del vendedor, dentro de un paquete que este puede editar. Fiarnos de su informe significaría que la barrera es lo que diga una copia de nuestro código en el ordenador de otro. Así que el editor aconseja y Getly, leyendo los bytes subidos, decide.

Lo que costó

Dos implementaciones de las mismas reglas, en dos lenguajes, que pueden desviarse. Un catálogo generado y una prueba que falla ante cualquier desviación es el precio de mantenerlas honestas.

02

Seis comprobaciones bloquean la publicación. Diez nunca la bloquean.

Por qué

Una comprobación bloqueante significa que el comprador recibe algo roto; un aviso significa que el recurso funciona y podría ser mejor. Añadir a la lista de bloqueos es decidir rechazar a más vendedores, así que se hace con deliberación y se mantiene en seis. Un vendedor que conoce su recurso mejor que nuestras reglas tiene que poder publicarlo igualmente.

Lo que costó

Cinco de las seis las encuentra el servidor por sí solo. La sexta, un prefab que apunta a un script que no está en el paquete, con la que arranca toda esta herramienta, necesita el editor, porque resolver un GUID solo puede hacerlo Unity. Un vendedor que use la vía sin instalación obtiene las otras cinco y esa no, y preferimos decirlo a dejar que la vía lo dé a entender de otro modo.

03

La barrera solo mira la extensión del archivo y nada más

Por qué

La prueba de Unity es la extensión y nada más, así que solo puede rechazar un .unitypackage y nada más: todas las fichas que ya existían cuando salió quedaron sin afectar, y quien no vendía más que trabajo de Unity no tuvo que aprender ninguna regla nueva nuestra. Ya no es toda la barrera, porque la comprobación de Blender que llegó después tiene que abrir archivos comprimidos, pero la mitad de Unity sigue tocando solo Unity.

Lo que costó

Un recurso de Unity enviado dentro de un .zip no queda cubierto. Lo aceptamos antes que dejar que la barrera empiece a opinar sobre cientos de archivos que no le corresponde juzgar.

04

Puedes cumplirla sin instalar nada

Por qué

La barrera actúa cuando un producto sale a la venta, y había vendedores con recursos de Unity publicados mucho antes de que existiera la herramienta. Hacer de la instalación la única vía habría obligado a quien lleva meses vendiendo a descargar un paquete del editor para publicar una actualización. Por eso la misma comprobación se ejecuta desde la página de edición del producto.

Lo que costó

Dos puntos de entrada al mismo núcleo, y un botón cuyo alcance tenemos que mantener a la par de la barrera, algo que una vez hicimos mal y ahora tiene su prueba.

05

La clave de API vive en las preferencias del editor, nunca en el proyecto

Por qué

Una clave junto a tu trabajo es una clave que acabarás exportando dentro de un paquete y vendiendo. Las preferencias del editor están fuera de la carpeta que estás empaquetando, así que no puede viajar con el recurso por accidente.

Lo que costó

Las preferencias del editor son por equipo y por usuario del sistema, no por proyecto, y la clave está ahí en claro. Un vendedor en un segundo equipo vuelve a iniciar sesión, y cualquiera con esa cuenta del sistema entra como esa tienda. Lo preferimos a una credencial que se puede exportar dentro de un paquete y venderse.

Lo que hicimos mal al principio

Los detectamos antes de que los viera ningún comprador, que es la única razón por la que podemos contarlos. Están aquí porque las decisiones de arriba enseñan menos que los errores.

Escribimos

«Todos los recursos de Unity de Getly se comprueban antes de poder publicarse.»

La verdad

Falso, y lo escribimos en la página cuyo argumento entero es que comprobamos cosas. La barrera actúa en la transición a publicado, así que los 55 archivos .unitypackage que ya estaban adjuntos en el catálogo nunca habían sido leídos. Lo reescribimos como «a partir de ahora» antes de lanzar, y añadimos un contador aparte para los que sí se han leído: 1 a día de hoy.

Para tu ficha

Las palabras absolutas (todo, siempre, totalmente, garantizado) son donde una descripción tiene más probabilidades de mentir, y lo más fácil que un comprador puede desmentir. Di lo que es verdad de la próxima venta, no lo que querrías que fuera verdad de todas.

Escribimos

Una comprobación que marcó nuestra propia documentación.

La verdad

La comprobación de rutas absolutas saltó con el archivo que explica la comprobación de rutas absolutas, porque ese archivo contiene una ruta de ejemplo. Habría saltado con cualquier README que le diga a un vendedor que quite rutas /Users/…. Tres arreglos: el patrón ahora exige un segmento de usuario y algo detrás, se excluyen los archivos de prosa y el texto ya no contiene una ruta completa.

Para tu ficha

Prueba tu producto con aquello en lo que es más probable que se use, no con aquello con lo que lo construiste. El nuestro encontró su propio manual.

Escribimos

Un aviso sobre carpetas vacías que juzgaba lo que no debía.

La verdad

Miraba el sistema de archivos. Una carpeta que solo contiene un .gitkeep no está vacía en el disco y llega vacía al proyecto del comprador, porque el exportador de Unity no lleva ese archivo. La fuente de verdad tenía que ser lo que produce el exportador, no lo que el vendedor ve en el Finder.

Para tu ficha

Comprueba lo que recibe el comprador, no lo que tienes tú. Tu carpeta, tu proyecto y tu disco son cosas que la descarga no lleva consigo.

Lo que no hace

  • No es un escáner de malware. Una macro dentro de un documento legítimo pasa sin que la toque.
  • No juzga si tu recurso es bueno. Solo si llega funcionando.
  • Solo funciona con Unity. Existe una versión para Blender; no hay nada para Unreal, Photoshop ni Cinema 4D.
  • Los paquetes de más de 150 MB se registran como sin comprobar y aun así se pueden publicar. Rechazar a un vendedor por un límite nuestro sería cobrarle por una limitación nuestra.

Cómo nos convencimos

Los archivos de prueba los hizo Unity, no nosotros

Cada paquete de prueba lo produjo el propio exportador de Unity en modo sin interfaz. Todo el riesgo de un lector de formatos es que el formato no sea el que supusiste, y un archivo de prueba hecho a mano codifica la suposición dos veces en lugar de ponerla a prueba una.

Un banco de pruebas que lo instala y pulsa los botones

Un script crea un proyecto, compila la herramienta, ejecuta el validador y termina con un código distinto de cero si los resultados cambian. Las pruebas unitarias leen paquetes exportados reales; el banco de pruebas cubre lo que una prueba unitaria no ve: que la cosa compila y que pulsar el botón hace lo que sugiere leer el código.

Un archivo de prueba limpio importa más que uno roto

Es fácil demostrar que un verificador detecta un defecto y fácil olvidar demostrar que calla ante un trabajo bien hecho. Un validador que salta con un recurso bien hecho enseña a los vendedores a ignorarlo, lo cual es peor que no tener validador.

La ficha en sí

La descripción empieza por lo que evita

No qué es la herramienta, sino qué te pasa sin ella. El primer párrafo es la historia del «Missing (Mono Script)», porque esa es la frase que un publicador de Unity reconoce. Luego, la lista completa de lo que bloquea la publicación y, sin rodeos, lo que no hace.

La portada dice qué es el producto en tamaño miniatura

La primera versión era nuestra mascota, que es honesta y no le dice nada al comprador: es la misma imagen en todas las páginas de este sitio. La de la ficha ahora dibuja el producto: un paquete que se está inspeccionando, con la palabra rotulada a mano en lugar de reproducir un logotipo, porque reproducir la marca registrada de otro en arte generado es a la vez una cuestión legal y una deformación garantizada.

Es gratis y no se vende nada de ella

Cobrar por lo que hace vendibles los recursos de otros sería cobrar por nuestro propio listón de calidad. Además es la puerta de entrada: la herramienta vale más para nosotros instalada que vendida.

Un archivo, reemplazado en lugar de acumulado

Cada versión sustituye a la descarga anterior en lugar de añadir una versión entre las que nadie quiere elegir. El comprador recibe la compilación actual y no hay ninguna página en la que tenga que adivinar cuál es la actual.

Pasó por nuestra propia barrera, y nuestra propia barrera la rechazó

Publicarla ejecuta la misma comprobación que supera todo vendedor: eximir nuestra propia ficha sería lo menos defendible que podríamos hacer. Salió con un solo hallazgo de aviso: no tiene escena de demostración, algo que una herramienta de editor no tiene. Dejamos el hallazgo en pie en lugar de añadir una excepción para nosotros.