Технический артдир в инди: как собрать визуал, когда нет художника
Я три года назад вписался в инди-команду из четырёх человек, где художник был один и работал на полставки. Через полгода он ушёл, мы остались с программистом, дизайнером уровней и мной — техническим парнем, который раньше умел только шейдер на воду написать. Игру нужно было довезти. Доехали. Не идеально, но визуально проект на скриншотах не стыдно показать. Расскажу, как мы это собирали и что я бы сделал иначе.
Это не статья «как нарисовать арт без рук». Это про то, как из ассетов, шейдеров, света и пары сильных решений сделать связный визуал, который не выглядит как франкенштейн.
Сначала — одна референс-палитра, потом всё остальное
Самая частая ошибка, которую я видел в инди — каждый ассет покупается отдельно, у каждого свой автор, своя цветовая температура, свой уровень детализации. В итоге сцена выглядит как помойка. Пусть и дорогая.
Решение скучное и работает: до того как купить первый ассет, выбери палитру и стиль. Не «тёмное фэнтези», а конкретно: 6–8 цветов в палитре, фиксированная насыщенность, понятный диапазон контраста. Возьми lospec.com или сделай свою в Affinity/Krita.
Дальше всё, что попадает в проект, либо проходит через эту палитру, либо отбраковывается. Текстуры — пропускаешь через color grading, освещение — настраиваешь под палитру, UI — рисуешь только в этих цветах.
В Unity 6 это удобно делать через Volume + Color Adjustments + Channel Mixer + Shadows/Midtones/Highlights. В URP можно ещё накинуть Color Lookup с собственной LUT-текстурой. Один LUT на всю игру, и сразу 70% единства визуала бесплатно.
Покупка ассетов — как работать со стора, чтобы не получить кашу
Главное правило: лучше один пак на всю сцену, чем десять разных. Я смотрю в первую очередь на:
- PBR-настройки. Если в одном паке Albedo с уже впечённым освещением, а в другом — чистые альбедо для PBR, они никогда не подружатся под одним светом.
- Масштаб текстурных деталей. У одних авторов texel density 1024 на метр, у других — 256. На крупном плане это сразу видно.
- Стилизация. Hand-painted с нарисованными бликами не сочетается с фотореалистичными нормалмапами. Никогда. Не пытайся.
Если уже взял ассеты с разными temperaturами — переэкспортируй текстуры через скрипт. Я писал маленькую утилитку на C#, которая прогоняет все Albedo через ColorMatrix в редакторе:
[MenuItem("Tools/Art/Apply Color Grade To Selected")]
private static void ApplyGrade()
{
foreach (var obj in Selection.objects)
{
if (obj is not Texture2D tex) continue;
var path = AssetDatabase.GetAssetPath(tex);
var importer = (TextureImporter)AssetImporter.GetAtPath(path);
importer.isReadable = true;
importer.SaveAndReimport();
var pixels = tex.GetPixels();
for (var i = 0; i < pixels.Length; i++)
{
pixels[i] = ApplyGradeToPixel(pixels[i]);
}
var output = new Texture2D(tex.width, tex.height, TextureFormat.RGBA32, true);
output.SetPixels(pixels);
output.Apply();
var bytes = output.EncodeToPNG();
File.WriteAllBytes(path.Replace(".png", "_graded.png"), bytes);
}
AssetDatabase.Refresh();
}
Не идеально, но за вечер можно нормализовать палитру всего проекта.
Свет вытаскивает что угодно
Если ассеты у тебя средние, спасает свет. Это самое дешёвое улучшение визуала на единицу усилий. Я бы на месте каждого инди-разработчика сначала разобрался с лайтингом, а потом уже думал о моделях.
Пара вещей, которые я узнал слишком поздно:
Bake почти всё, что не двигается
В URP/HDRP запеки лайтмапы для статичной геометрии. В реальном времени оставь только ключевые источники: солнце/луна и пара акцентных. Остальное — Mixed или Baked. Это и производительность вытягивает, и картинка резко становится «дороже»: правильный AO в углах, цветной отскок света от стен, мягкие тени.
Не используй default skybox
Любой готовый HDRI с PolyHaven сразу делает картинку профессиональнее. Только не забудь подкрутить Exposure в Volume — иногда HDRI выжигает сцену.
Пост-процесс — твой главный инструмент
Bloom, Vignette, Chromatic Aberration в небольших дозах, Color Adjustments — это не «эффекты для красоты», это то, что объединяет разнородные ассеты под одним стилем. Используешь Volume в URP/HDRP, профиль на сцену, и не правишь по объекту.
Тон и контраст важнее количества деталей
Сцена с пятью моделями и хорошим контрастом смотрится сильнее, чем сцена с пятидесятью моделями и серой кашей. У человека глаз цепляется за светлые/тёмные пятна, а не за полигоны.
Шейдеры — где они окупаются
Я не предлагаю писать кастомный physically based shader с нуля. Но один-два авторских шейдера дают игре лицо.
Что обычно делает разницу:
- Стилизованный outline. Чёрная или цветная обводка моделей сразу превращает «купленный ассет» в «единый стиль». В URP делается через Renderer Feature.
- Дитеринг и пиксельный фильтр. Если бюджета на детали нет, downsample → upscale через шейдер с pixel-art фильтром. Получается стилизованно и скрывает кривизну текстур.
- Toon-shading с рампой. Один шейдер на всех персонажей, где освещение читает рампу-текстуру. Меняешь рампу — меняешь стиль. Бесплатно.
- Vertex animation для травы и листвы. Делает сцену живой, стоит копейки.
Базовый toon-шейдер на Shader Graph за вечер — и у тебя уже есть собственный визуальный язык. Я в одном проекте просто заменил Standard на toon с рампой, и сцена сменилась радикально, без правки моделей.
UI — место, где инди обычно валится
Купленные модели и ландшафт можно обмазать пост-процессом, но UI выдаёт инди-проект мгновенно. Дефолтные шрифты Unity, плоские прямоугольники, иконки разных стилей.
Что я делаю:
- Один шрифт на весь проект, максимум два (один для заголовков, один для тела). Бесплатные шрифты для геймдева — на Google Fonts и DaFont, но с лицензией смотри внимательно.
- Иконки из одного icon set'а. Game-icons.net (CC BY) — спасение. 4000+ иконок в одном стиле, под фэнтези/sci-fi.
- 9-slice панели вместо отдельных картинок на каждый размер. UI Toolkit в Unity 6 здесь приятнее старого UGUI: USS-стилизация ближе к веб-вёрстке, легче поддерживать единый стиль.
- Никаких чистых белых и чистых чёрных в UI. Бери оттенки из основной палитры. Серый фон в игре с тёплой палитрой делается слегка коричневатым, не нейтральным.
Пайплайн ассетов: чек-лист, который сэкономил мне нервы
Когда у тебя нет художника, любой новый ассет в проекте — это потенциальная мина. Я завёл документ-чек-лист, через который проходит всё, что попадает в проект:
- Размер текстур — кратен 2, не больше 1024 для пропсов и 2048 для основных персонажей.
- Альбедо без впечённого освещения. Если есть — пишу заметку, что это ассет «как есть», свет не подкрутить.
- Полигонаж — в норме для нашего бюджета. Если меш на 30k полигонов на простой сундук — Decimate в Blender.
- UV развёрнуто без сильных растяжений. Можно проверить чекером в Blender или в Unity через debug-материал.
- Имя файла и иерархия.
SM_Chest_Wooden_01, неChest final FINAL fix.fbx. - Пивот в нужной точке. У персонажей — между ступней, у пропсов — обычно по нижней грани.
Это занимает 5 минут на ассет, экономит часы потом.
Анимация — где не сэкономишь, но можно сжульничать
Mixamo до сих пор — лучший друг инди. Бесплатные анимации, ретаргетинг на любой гуманоид. С Unity 6 + Animation Rigging можно тонко поправить позы под свою игру: целиться руками в цель, ноги ставить по неровной поверхности через IK.
Если стиль игры стилизованный, Mixamo может выбиваться (там реалистичные тайминги). Здесь спасает Animator Speed и Animation Curves: ускорил движение в полтора раза, добавил небольшое сжатие на приземлении — и анимация уже выглядит «своей».
Для второстепенных NPC я использую один сет анимаций (idle, walk, run, hit, die) и небольшие вариации позы через Animation Rigging для разных архетипов. Со стороны игрока это работает.
Один сильный визуальный приём важнее, чем десять средних
Когда у тебя нет ресурсов делать всё хорошо, выбери одну вещь, которую делаешь отлично, и сделай её фишкой. Примеры из реальных инди-игр:
- Return of the Obra Dinn — дитеринг 1-bit. Это, по сути, один шейдер. Но он определяет всё.
- Hyper Light Drifter — пиксель-арт с насыщенной палитрой и грамотным светом. Не каждая комната нарисована подробно, но цвет и силуэты тянут.
- Cult of the Lamb — стилизованные плоские формы, цвета из узкой палитры, несколько ярких акцентов. Простая основа, сильное настроение.
Подумай, что у тебя такое. Может быть, это уникальный угол камеры. Или необычный ритм светотени. Или интересный материал персонажей. Главное — определись и держи это через всю игру.
Что я сделал бы по-другому, если бы начинал сейчас
Сначала собрал бы block-out серой геометрией всю первую локацию и поставил свет. Только когда серая сцена выглядит хорошо по композиции и свету, начинал бы накатывать материалы и модели. У меня в первой попытке всё было наоборот: сначала купили ассеты, потом пытались поставить свет — и переделывали по три раза.
Ещё бы рано завёл моодборд в Miro или Figma и не давал команде покупать ассеты вне его. Не «вот красиво», а «вот наша палитра, наш масштаб деталей, наш уровень стилизации». Без моодборда каждый член команды тащит в проект свой вкус, и через полгода это уже не починить без полной переделки.
Что почитать и посмотреть
Если ты в этой ситуации — без художника, с задачей собрать визуал — посмотри на YouTube туториалы Игорь Ильницкого по Shader Graph и каналы вроде Acerola и Daniel Ilett: они объясняют шейдеры без воды и со ссылками на математику. Книжек именно по teхническому артдиру в инди мало; ближайшее по духу — Color and Light Джеймса Гёрни, и старый блог What Games Are.
Главное — не пытайся сделать «как в AAA». Не получится, и не нужно. Целостный, стилизованный, с одной сильной идеей визуал из посредственных ассетов выглядит сильнее, чем разнородный визуал из дорогих ассетов. Это годами проверенная штука, и она не зависит от твоего бюджета.