Перейти до основного вмісту

Меню команд

Перейдіть на сторінку або пошукайте в каталозі

Потрібен Blender 4.2 або новіший · Безкоштовно

Getly Publisher for Blender

Розширення для Blender. Воно читає ваш файл так, як його прочитає Blender покупця, каже, що зламається, і одним натисканням виправляє те, що можна виправити. Усі перевірки виконуються офлайн, без акаунта; вхід це окремий необов’язковий крок.

Проблема, виміряна

У .blend зберігаються шляхи, а не файли. В автора він відкривається ідеально, бо його текстури досі на його диску; покупець відкриває, і кожна поверхня стає рівно пурпурною. Сьогодні на Getly є 94 опубліковані товари для Blender у 18 магазинах, і 10 файлів .blend в усьому каталозі, бо продавці надсилають архіви.

Кожне рішення і чого воно коштувало

01

Бар’єр відкриває архів, а не читає розширення

Чому

93 із 94 опублікованих товарів для Blender надходять як .zip. Бар’єр, привʼязаний до розширення, як у Unity, не спрацював би майже на жодному. Відкриття архіву також робить головну перевірку правильною, а не лише суворою: текстура, не запакована в .blend, не є вадою, якщо вона лежить поруч у тому самому завантаженні.

Чого це коштувало

Читач zip, що працює з байтами, вивантаженими невідомою людиною, з усіма обмеженнями, які це передбачає. Він бере архів до розгляду, лише коли всередині справді є .blend або маніфест розширення, тож сотні звичайних zip у каталозі читаються один раз і далі їх залишають у спокої.

02

Він виправляє, бо репортер програє пункту меню

Чому

У Blender роками є Report Missing Files, Make Paths Relative і Pack Resources. Інструмент, що лише повторює їхні повідомлення, конкурує з тим, що вже встановлено, і програє за всіма вимірами, зокрема за вартістю встановлення. Це розширення виконує ці кроки в правильному порядку одним натисканням (шляхи стають відносними до пакування, щоб пізніше розпакування залишало робочий шлях, а не абсолютний, з якого ви починали), а потім точно каже, що змінило.

Чого це коштувало

Писати в чужий проєкт це серйозна річ. Тому воно показує, що змінить, перш ніж щось змінювати, і ніколи не зберігає файл: ви дивитеся на результат і зберігаєте самі.

03

Усі перевірки виконуються офлайн, без акаунта

Чому

Інструмент має бути вартим встановлення для того, хто ніколи нічого не продаватиме на Getly. Валідатор із прикріпленим магазином це реклама, і власний репозиторій розширень Blender, офіційний безкоштовний канал усередині застосунку, сприйняв би його саме так.

Чого це коштувало

Ми нічого не знаємо про те, хто його встановлює і що знаходить, якщо людина не входить в акаунт, тож список перевірок калібрується за файлами, які створюємо ми, а не за тим, на що справді натрапляють продавці.

04

Файл, який ми не можемо прочитати, це «не перевірено», а не відмова

Чому

Читач самоописного формату, написаний вручну, колись зустріне випуск Blender, якого не розуміє. Того дня збій має бути «ми не змогли це перевірити», а не «усім продавцям Blender відмовлено». Єдиний виняток: файл, що взагалі не є .blend, адже Blender його теж не відкриє, і це проблема покупця, від якої його варто вберегти.

Чого це коштувало

Свідомо пошкоджений файл проходить. Ми краще повернемо за це гроші, ніж зупинимо платформу для всіх, хто продає роботи для Blender, у тиждень виходу нового випуску.

05

Він під GPL, тож перевірки можна форкнути, і тому вирішує сервер

Чому

Blender Foundation вважає Python API частиною Blender, тож усе, що на ньому побудовано, постачається з GPL-сумісною ліцензією. Це означає, що наш список перевірок і наш процес входу може прочитати й форкнути будь-хто. Ми не оминали це: саме тому Getly заново читає вивантажені байти, а не довіряє звіту програми, яку контролює продавець.

Чого це коштувало

Нічого в клієнті не є захисним ровом. Залишаються серверна частина і те судження, яке є у списку перевірок, а ліцензія не торкається жодного з двох.

У чому ми спершу помилилися

Це виявили до того, як їх побачив будь-який покупець, і лише тому ми можемо про це написати. Вони тут, бо рішення вище вчать менше, ніж помилки.

Ми написали

Сканер шляхів, який відхилив би кожен добре зроблений файл.

Правда

План був такий: сканувати розпаковані байти на шляхи, привʼязані до комп’ютера, так, як перевірка Unity сканує текстові файли. Вимірювання на справжніх файлах убило цю ідею за хвилину: кожен .blend, який записує Blender, містить власний шлях /Users/…, а правильно ЗАПАКОВАНЕ зображення зберігає всередині файлу абсолютний шлях вихідного файлу автора. Сканування спрацьовувало б найсильніше саме на бездоганній роботі. Тепер читач розбирає опис типів самого файлу й читає іменовані поля з іменованих структур.

Для вашої картки

Перевіряйте свою ідею на хорошому прикладі, перш ніж її будувати. Якщо вона скаржиться на те, що, як ви знаєте, правильне, хибна ідея, а не приклад.

Ми написали

Читач, що падав на будь-якому архіві, створеному через Finder.

Правда

macOS записує файл-супутник для кожного справжнього файлу, коли ви користуєтеся «Стиснути», ховає його в паралельну теку __MACOSX і називає ._вашфайл.blend. Його назва закінчується на .blend, але це не він. Читач підхоплював його і падав, що зламало б перевірку для кожного продавця з Mac на платформі. Синтетичний тестовий архів цього ніколи б не показав; той, що створений справжнім інструментом, показав одразу.

Для вашої картки

Створюйте тестові файли тим інструментом, яким користується ваш покупець, а не тим, що зручний вам. Наш запрацював, лише коли ми перестали збирати архіви вручну.

Ми написали

Файл на 407 КБ, який прочитався як 1 236 байтів і виглядав нормально.

Правда

Blender стискає дані через Zstandard кількома кадрами поспіль. Стандартний розпакувальник повертає перший кадр і зупиняється: без помилки, без попередження, лише заголовок, що виглядає правильно, і майже нічого від файлу. Ми помітили це тільки тому, що тест порівняв стиснену копію з її нестисненим двійником.

Для вашої картки

Найдорожчі збої - ті, що схожі на успіх. Порівнюйте з результатом, який точно правильний, а не з питанням "чи була помилка".

Ми написали

Значок "перевірку пройдено", який міг поручитися за файл, якого ніхто не відкривав.

Правда

Два шляхи зберігають звіт для файлу, який ми свідомо не читали: один через перевищення ліміту розміру, інший, який наш зчитувач не зміг розібрати. Обидва зберігають порожній список знахідок, а "знахідок немає" далі читалося як "усе гаразд". Нікого ще не позначили помилково, але наступний продавець, який натиснув би "Перевірити" на великому пакеті, був би першим. Тепер звіт фіксує, чи ми справді його відкривали.

Для вашої картки

"Ми нічого не знайшли" і "ми не дивилися" мають однакову форму й протилежний зміст. Скрізь, де ваша картка натякає на перевірку, переконайтеся, що вона розрізняє ці два випадки.

Чого він не робить

  • Це не антивірус. У .blend може бути Python, і перевірка повідомляє, коли скрипт позначений на запуск при відкритті: це факт про файл, а не оцінка вас.
  • Він не оцінює, чи хороший ваш ресурс. Лише чи він доходить робочим.
  • Він не може сказати, чи збігається рендер із зображеннями у вашій картці. Зате може сказати, що у файлі немає освітлення, щоб їх відтворити.
  • Він лише для Blender. Є версія для Unity; для Unreal, Photoshop чи Cinema 4D нічого немає.

Як ми самі в цьому переконалися

Кожен тестовий файл написав сам Blender

Жодного тестового зразка не збирали вручну. Увесь ризик зчитувача формату в тому, що формат не такий, як ви припустили, а зразок, зроблений вручну, закладає припущення двічі замість того, щоб один раз його перевірити. Ця дисципліна впіймала три різні помилки ще до того, як хоч одна потрапила в реліз.

Тестів на те, що НЕ можна відхиляти, більше, ніж на те, що можна

Запакований файл, .blend поруч із текою текстур, архів, створений у Finder, процедурний матеріал, бібліотека матеріалів без жодного об'єкта. Довести, що перевіряльник ловить дефекти, - легка половина; довести, що він мовчить на добрій роботі, - та, від якої залежить, чи його взагалі читатимуть.

Сам тестовий стенд одного разу збрехав, і це було варте того, щоб знайти

Він друкував PASSED, поки перевірка не проходила, бо Python-скрипт, що завершується з кодом помилки всередині Blender, не доходить до оболонки. Тест, який не може впасти, гірший за відсутність тесту, тому тепер вердикт - це рядок-маркер, який оболонка шукає через grep (відсутній рядок теж рахується як збій), а сам стенд перевіряється на навмисно зламаній збірці.

Сама картка товару

Опис починається з досвіду покупця, а не з нашого

Він відкривається пурпуровою поверхнею, бо саме її автор для Blender миттєво впізнає і, ймовірно, уже раз випускав. Потім те, що блокує публікацію, а далі чесна відповідь на "у Blender уже є Pack Resources" - заперечення, яке першим висуне будь-який досвідчений продавець.

Обкладинка малює збій, а не інструмент

Лупа може бути з будь-якого маркетплейсу. Тут намальовано текстуру, що втікає з файлу, і маскота, який тягнеться її піймати: це читається навіть у мініатюрі й буквально є тим, чого запобігає продукт. Слово виведено вручну, а не скопійовано як логотип.

Безкоштовно, та ще й під GPL

Усе, що створене на Python API Blender, постачається з GPL-сумісною ліцензією, тож код можна читати й форкати. Брати за нього гроші означало б брати гроші за нашу власну планку якості.

Один архів, зібраний власним білдером Blender

Завантаження створює білдер розширень, який постачається з Blender, а не запаковане вручну. Саме так ми знаємо, що маніфест правильний, адже білдер відмовляється збирати неправильний.

Наш власний перевіряльник знайшов справжню проблему в нашому власному пакеті

Публікація проганяє його через ті самі ворота, що й кожного продавця. Він повернув одну знахідку: в архіві не було readme - це одна з наших дванадцяти рекомендаційних перевірок. Ми виправили пакет, а не перевірку, і readme, який з'явився, тепер показують і картка товару, і репозиторій розширень.