Коротко: якість оточень обмежена тим, що художники можуть знайти менш ніж за хвилину. За кількома тисячами ассетів дисципліна папок перестає масштабуватися, пошук плюс теги перебирають на себе, мініатюри вирішують швидкість сканування, дублікатам потрібна політика, а не чистка, а міграція має бути опортуністичною, а не героїчною. Ось система, що переживає зростання, з конкретними угодами, які варто скопіювати, і причинами, чому кожна важлива в масштабі.
Бібліотека — не купа книжок, а книжки плюс система пошуку. Ваша колекція ассетів: бібліотека лише тоді, коли друга частина існує; інакше це дуже дорога купа.
Справжня ціна безладної бібліотеки
Коли пошук потрібного каменя займає чотири хвилини, художники кидають шукати після одного, сцени сходяться на тих самих двадцятьох запам'ятаних ассетах, поки тисячі куплених паків лежать нерозпакованими.
Шкода видима на екрані: повтор, що гравці відчувають, гроші, витрачені на паки, які ніколи не виходять, і тихий податок на кожну годину дрессингу. Є гостріший спосіб сформулювати правило: ассет, який неможливо знайти приблизно за хвилину, фактично не існує. Ви заплатили за нього, зберігаєте, бекапите, а він ніколи не з'явиться в рівні. Знаходимість — не хатня робота; це верхня межа вашого візуального розмаїття. Дві студії з однаковими бюджетами ассетів випустять видимо по-різному виглядні ігри, якщо одна може знайти свої ассети, а інша ні.
Іменування: нудне, сортоване, однозначне
Угода працює лише, якщо корисно сортується в пласкому списку, префікс типу, категорія, матеріал або вид, розмір, індекс. Без пробілів, без «final_v2_NEW».
Перевірена форма:
SM_Rock_Granite_Large_01 (static mesh)
SM_Rock_Granite_Large_01_LOD1
T_Rock_Granite_D / _N / _R (textures: diffuse, normal, roughness)
M_Rock_Granite (material)
MI_Rock_Granite_Mossy (material instance)
Правила, що тримають це в масштабі: одне слово на поняття (Rock, не Rock/Stone/Boulder упереміш), ставте поле, за яким найчастіше фільтрують, рано, щоб сортування корисно групувало, доповнюйте індекси нулями (01, не 1), щоб 10 не сортувався перед 2, і напишіть угоду на одній сторінці, яку всі читають першого дня. Точна схема важить набагато менше, ніж наявність рівно однієї, і почати сьогодні, за будь-якого розміру, бо заднім числом надівати імена на 50 000 файлів, проєкт, який ніхто ніколи не завершує й про відкладання якого всі шкодують.
Папки кажуть одне; теги кажуть решту
Файл живе в ОДНІЙ папці, але має багато властивостей, папки мають кодувати власність і пайплайн (який пак, який проєкт), теги кодують усе, за чим ви б шукали: біом, матеріал, настрій, розмір, стиль.
Боротьба з багатовимірністю глибшими деревами папок породжує класичне кладовище Props/Nature/Trees/Dead/Moss/, де ніщо більше не знаходиться, бо замшіла мертва береза належить п'ятьом папкам одразу й може жити лише в одній, тож завжди в неправильних чотирьох. Робочий поділ робить пошук головним шляхом усередину, а дерево папок — лише трубопроводом.
Словник тегів, що покриває більшу частину роботи над оточеннями, менший, ніж очікують команди: біом (ліс, пустеля, місто…), матеріал (дерево, граніт, іржавий…), стан (бездоганний, зношений, зруйнований), клас розміру і стиль, п'ять осей, може, сорок термінів, узгоджених раз і впроваджених. Дисципліна в тому, щоб тримати словник закритим: кожен новий синонім, що хтось вигадає («вивітрений» поруч зі «зношений»), удвічі знижує цінність обох тегів, бо пошук одного минає інший.
Мініатюри вирішують якість пошуку
Список імен файлів — не бібліотека; узгоджені мініатюри (той самий кут, нейтральне світло) дають оку сканувати сотні кандидатів за хвилину, що і є реальна швидкість, потрібна дрессингу.
Людський зір оцінює сітку мініатюр набагато швидше, ніж розбирає імена; саме узгодженість змушує це працювати, бо відмінності в ассеті лишаються видимими, коли подача ідентична. Камінь, знятий з випадкового кута у випадковому світлі, ховає власну форму; той самий камінь у стандартному ракурсі три чверті під нейтральним світлом розкриває її миттєво. Рендерте їх пакетно, пайплайн мініатюр окупається в перший тиждень будь-якого великого проєкту.
Мініатюри також рівно там, де масштаб болить: гортати сто тисяч вимагає віртуалізації, кешування і пайплайна, що рендерить у фоні, а не змушує редактор стопоритися, наздоганяючи. Ця інженерна задача, буквально причина, чому ми вбудували контент-браузер у Numivo, що лишається плавним на мільйоні ассетів, з миттєвими мініатюрами й опційним ШІ-теггінгом, що перетворює «той замшілий шматок скелі десь» на пошук із двох слів. Проблема браузера й проблема іменування, та сама проблема на різних шарах: обидві про схлопування відстані між «мені потрібна річ» і «я дивлюся на річ».
Проблема дублікатів, зроблена фізичною: тисячі майже однакових одиниць. Майстерність: тримати одну знаходиму канонічну версію й тихо понижувати решту, а не видаляти те, на що стіна ще спирається.
Дублікати: один лишити, решту тегувати
Не видаляйте майже-дублікати з ходу (посилання ламаються), оберіть канонічну версію, тегуйте решту duplicate, відфільтруйте їх із пошуку за замовчуванням і по-справжньому виведіть з обігу, коли ніщо їх не референсує.
Кожен довговічний проєкт накопичує перекривні паки: чотири гранітні валуни від чотирьох постачальників, три бочки, що різняться лише ручкою. Двокрокова політика (понизити зараз, видалити пізніше) ловить виграш знаходимості одразу за нульового ризику поломки, дублікати зникають з пошуку, але лишаються на диску для будь-якої сцени, що вже їх референсує. Проганяйте посилальний обхід щокварталу; шість місяців без посилань зазвичай безпечно розчищають кладовище гуртом.
Режим збою, якого треба уникати, — видаляти дублікати в день їх знахідки: щось завжди референсує той, що ви видалили, рівень ламається, і команда вчиться боятися прибирання, після чого ніхто нічого не прибирає. Понизити-потім-видалити тримає прибирання безпечним, а безпечне прибирання — єдине, що триває далі.
Міграція: від хаосу до системи
Ніколи не ставте продакшн на паузу заради прибирання одним махом, застосовуйте угоду до всього НОВОГО від сьогодні, потім мігруйте старий контент опортуністично: що рівень втягує, перейменовується й тегується по дорозі.
Опортуністичне правило має гарну властивість: ассети, що важать, мігрують першими, за визначенням, бо вони й є використовувані. Усе недоторкане після року належить холодному сховищу, не результатам пошуку, і ніколи не потребувало міграції. Команди, що натомість намагаються героїчне прибирання вихідного, зазвичай народжують наполовину перейменовану бібліотеку, строго гіршу за будь-яку крайність, бо тепер результати пошуку мішають дві угоди й жодній не можна довіряти.
Польові цифри, які варто вкрасти
- Бюджет знаходимості: менше 1 хвилини, інакше ассет функціонально не існує
- Словник тегів, що покриває роботу над оточеннями: ~5 осей, ~40 закритих термінів
- Швидкість сканування мініатюр за узгодженого рендеру: сотні за хвилину
- Політика дублікатів: понизити негайно, видалити через ~6 місяців без посилань
- Іменування: індекси з провідними нулями, одне слово на поняття, одна сторінка правил
Міні-FAQ
Чи достатньо добрі ШІ-теги, щоб замінити ручний теггінг? Достатньо, щоб замінити більшу частину, автоматичні теги несуть основну масу (предмет, матеріал, колір), а люди додають оцінкові рішення (відповідність стилю, проєктні терміни). Комбінація б'є кожне поодинці, тому ШІ-теггінг найкраще працює як опційний допоміжний шар, а не повна заміна.
Одна спільна бібліотека чи по проєктах? Спільна джерельна бібліотека, попроєктні імпорти. Бібліотека тримає все з повними тегами; проєкт втягує лише те, що випускає, тримаючи білди поджарими, а часи cook короткими. Якщо змішати обидва, тобто мати проєкт, що референсує всю бібліотеку, розміри білдів роздуваються саме так.
А версіонування бінарних ассетів? Бібліотека, сад, не архів: версіонуйте джерельні файли у вашому DCC-пайплайні, тримайте бібліотеку як лише-поточне-найкраще. Історичні версії, що живуть у результатах пошуку, — шум з іменною табличкою, і вони сповільнюють кожен пошук для всіх.
Як змусити команду реально дотримуватися угоди? Зробіть правильне легким: шаблон збереження/імпорту, що попередньо заповнює патерн імені, крок лінту, що позначає файли поза угодою, і мініатюри, що роблять узгоджені ассети знаходимими, а неузгоджені — невидимими. Угода, впроваджена інструментами, тримається; впроваджена нудьгуванням — ні.
Почніть негарно, почніть зараз: односторінковий аркуш імен, десять ключових тегів і узгоджені мініатюри б'ють красиву таксономію, що почнеться наступного кварталу. Бібліотеки, сади: постійне дрібне прополювання, ніколи одне героїчне прибирання.