Saltar al contenido principal

Menú de comandos

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

Requiere Blender 4.2 o posterior · Gratis

Getly Publisher for Blender

Una extensión de Blender. Lee tu archivo como lo hará el Blender de un comprador, te dice qué se va a romper y arregla con una pulsación lo que se pueda arreglar. Todas las comprobaciones se ejecutan sin conexión y sin cuenta; iniciar sesión es un paso aparte y opcional.

El problema, medido

Un .blend guarda rutas, no archivos. Al autor se le abre perfecto porque sus texturas siguen en su propio disco; el comprador lo abre y todas las superficies salen de un magenta plano. Hoy Getly tiene 94 productos de Blender publicados en 18 tiendas, y 10 archivos .blend en todo el catálogo, porque los vendedores envían archivos comprimidos.

Cada decisión y lo que costó

01

La barrera abre el archivo comprimido en lugar de leer la extensión

Por qué

93 de los 94 productos de Blender publicados se envían como .zip. Una barrera basada en la extensión, como la de Unity, no habría saltado casi en ninguno. Abrir el archivo comprimido es también lo que hace que la comprobación principal sea correcta y no solo estricta: una textura sin empaquetar en el .blend no es un defecto si está justo al lado, en la misma descarga.

Lo que costó

Un lector de zip, sobre bytes que ha subido un desconocido, con todos los límites que eso implica. Solo da por suyo un archivo comprimido cuando de verdad contiene un .blend o un manifiesto de complemento, así que los cientos de zips corrientes del catálogo se leen una vez y se dejan en paz.

02

Arregla, porque un informador pierde frente a un elemento de menú

Por qué

Blender lleva años incluyendo Report Missing Files, Make Paths Relative y Pack Resources. Una herramienta que solo repite lo que ellos dicen compite con algo ya instalado y pierde en todos los frentes, incluido el coste de instalarla. Esta ejecuta esos pasos en el orden correcto con una pulsación (rutas relativas antes de empaquetar, para que un desempaquetado posterior deje una ruta que funciona y no la absoluta de la que partiste) y luego dice exactamente qué cambió.

Lo que costó

Escribir en el proyecto de otra persona es algo serio. Por eso lista lo que va a cambiar antes de cambiar nada y nunca guarda el archivo: tú revisas el resultado y lo guardas.

03

Todas las comprobaciones se ejecutan sin conexión y sin cuenta

Por qué

La herramienta tiene que merecer la pena para alguien que nunca venderá nada en Getly. Un validador con una tienda pegada es un anuncio, y el repositorio de extensiones de Blender, un canal oficial y gratuito dentro de la aplicación, lo leería como tal.

Lo que costó

No sabemos nada de quién la instala ni de lo que encuentra salvo que inicie sesión, así que la lista de comprobaciones se calibra con archivos que creamos nosotros y no con lo que los vendedores encuentran en realidad.

04

Un archivo que no podemos leer es «sin comprobar», no un rechazo

Por qué

Un lector escrito a mano de un formato autodescriptivo acabará encontrando una versión de Blender que no entiende. Ese día el fallo tiene que ser «no pudimos comprobar esto», no «se rechaza a todos los vendedores de Blender». La única excepción es un archivo que no es un .blend en absoluto: Blender tampoco lo abrirá, y ese es un problema del comprador del que hay que librarlo.

Lo que costó

Un archivo deliberadamente corrupto pasa. Preferimos reembolsar eso a dejar caída la plataforma para todos los que venden trabajo de Blender la semana en que sale una versión nueva.

05

Es GPL, así que las comprobaciones se pueden bifurcar, y por eso decide el servidor

Por qué

La Blender Foundation considera la API de Python parte de Blender, así que todo lo construido sobre ella se distribuye con licencia compatible con GPL. Eso significa que nuestra lista de comprobaciones y nuestro flujo de inicio de sesión son legibles y bifurcables por cualquiera. No lo esquivamos: es justo la razón por la que Getly vuelve a leer los bytes subidos en lugar de fiarse del informe de un programa que controla el vendedor.

Lo que costó

Nada del cliente es un foso defensivo. Lo que queda es la parte del servidor y el criterio que haya en la lista de comprobaciones, y la licencia no toca ninguna de las dos cosas.

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

Un analizador de rutas que habría rechazado todos los archivos bien hechos.

La verdad

El plan era escanear los bytes descomprimidos en busca de rutas ligadas al equipo, como hace el verificador de Unity con los archivos de texto. Medir archivos reales lo descartó en un minuto: todo .blend que escribe Blender contiene una ruta /Users/… propia, y una imagen correctamente EMPAQUETADA guarda dentro del archivo la ruta absoluta de origen del autor. El escaneo habría saltado con más fuerza ante el trabajo impecable. Ahora el lector analiza la descripción de tipos del propio archivo y lee campos con nombre de estructuras con nombre.

Para tu ficha

Prueba tu idea con un buen ejemplo antes de construirla. Si se queja de algo que sabes que está bien, la idea es la equivocada, no el ejemplo.

Escribimos

Un lector que se caía con cualquier archivo comprimido hecho con el Finder.

La verdad

macOS escribe un archivo acompañante por cada archivo real cuando usas Comprimir, guardado en una carpeta paralela __MACOSX y con nombre ._tuarchivo.blend. Su nombre termina en .blend y no lo es. El lector lo recogía y fallaba, lo que habría roto la comprobación para todos los vendedores con Mac de la plataforma. Un archivo de prueba sintético nunca lo habría mostrado; el construido con la herramienta real lo mostró enseguida.

Para tu ficha

Construye tus archivos de prueba con la herramienta que usa tu comprador, no con la que te resulta cómoda. La nuestra solo funcionó cuando dejamos de montar archivos comprimidos a mano.

Escribimos

Un archivo de 407 KB que se leyó como 1 236 bytes y parecía correcto.

La verdad

Blender comprime con Zstandard en varios fragmentos seguidos. El descompresor estándar devuelve el primer fragmento y se detiene: sin error, sin aviso, solo una cabecera de apariencia válida y casi nada del archivo. Solo lo detectamos porque una prueba comparó la copia comprimida con su gemela sin comprimir.

Para tu ficha

Los fallos que más cuestan son los que parecen un éxito. Compara con un resultado que sabes que es bueno, no con "¿lanzó un error?".

Escribimos

Una insignia de "comprobación superada" que podía avalar un archivo que nadie había abierto.

La verdad

Dos rutas guardan un informe de un archivo que decidimos no leer a propósito: uno por superar el límite de tamaño y otro que nuestro lector no pudo analizar. Ambas guardan una lista de hallazgos vacía, y "sin hallazgos" se estaba leyendo después como "no hay nada malo". Todavía no se había etiquetado mal a nadie, pero el próximo vendedor que pulsara Comprobar en un paquete grande habría sido el primero. Ahora el informe registra si realmente lo abrimos.

Para tu ficha

"No encontramos nada" y "no miramos" tienen la misma forma y significados opuestos. Allí donde tu ficha dé a entender que hay una comprobación, asegúrate de que pueda distinguir entre esos dos casos.

Lo que no hace

  • No es un antivirus. Un .blend puede llevar Python, y la comprobación te avisa cuando hay un script marcado para ejecutarse al abrir: es un dato sobre el archivo, no un juicio sobre ti.
  • No juzga si tu recurso es bueno. Solo si llega funcionando.
  • No puede saber si un render coincide con las imágenes de tu ficha. Sí puede decirte que el archivo no tiene iluminación con la que reproducirlas.
  • Solo funciona con Blender. Existe una versión para Unity; no hay nada para Unreal, Photoshop ni Cinema 4D.

Cómo nos convencimos

Blender escribió cada archivo de prueba

Ni una sola muestra se armó a mano. Todo el riesgo de un lector de formatos es que el formato no sea lo que supusiste, y una muestra hecha a mano codifica la suposición dos veces en lugar de ponerla a prueba una. Esa disciplina detectó tres errores distintos antes de que ninguno saliera a producción.

Hay más pruebas sobre lo que NO debe rechazarse que sobre lo que sí

Un archivo empaquetado, un .blend junto a su carpeta de texturas, un archivo creado con el Finder, un material procedural, una biblioteca de materiales sin ningún objeto. Demostrar que un verificador detecta defectos es la parte fácil; demostrar que calla ante un buen trabajo es la que decide si alguien sigue leyéndolo.

El propio banco de pruebas mintió una vez, y valió la pena descubrirlo

Imprimía PASSED mientras una aserción fallaba, porque un script de Python que termina con un código de error dentro de Blender no llega a la terminal. Una prueba que no puede fallar es peor que no tener ninguna, así que ahora el veredicto es una línea marcadora que la terminal busca con grep (si falta la línea, también cuenta como fallo) y el banco se comprueba con una compilación rota a propósito.

La ficha en sí

La descripción empieza por la experiencia del comprador, no por la nuestra

Abre con la superficie magenta, porque es lo que un autor de Blender reconoce al instante y que probablemente ya ha publicado alguna vez. Luego, lo que bloquea la publicación y, después, la respuesta honesta a "Blender ya tiene Pack Resources", que es la objeción que cualquier vendedor con experiencia plantea primero.

La portada dibuja el fallo, no la herramienta

Una lupa podría ser de cualquier marketplace. Esta dibuja una textura que se escapa de un archivo y a la mascota estirándose para atraparla: se lee bien en miniatura y es literalmente lo que el producto evita. La palabra está rotulada a mano, no es un logotipo copiado.

Gratis, y además GPL

Todo lo que se construye sobre la API de Python de Blender se publica con licencia compatible con GPL, así que el código se puede leer y bifurcar. Cobrar por ello habría sido cobrar por nuestro propio nivel de exigencia.

Un solo archivo, creado con el constructor de Blender

La descarga la genera el constructor de extensiones que incluye Blender, no se comprime a mano. Así sabemos también que el manifiesto es válido, porque el constructor rechaza uno que no lo sea.

Nuestro propio verificador encontró un problema real en nuestro propio paquete

Al publicarlo pasa por la misma puerta que cruza cualquier vendedor. Devolvió un hallazgo: el archivo no tenía readme, una de nuestras doce comprobaciones orientativas. Arreglamos el paquete, no la comprobación, y el readme resultante es el que ahora muestran tanto la ficha como el repositorio de extensiones.