lenec ru

← все посты

Технический артдир в инди: как собрать визуал, когда нет художника

12K

Я три года назад вписался в инди-команду из четырёх человек, где художник был один и работал на полставки. Через полгода он ушёл, мы остались с программистом, дизайнером уровней и мной — техническим парнем, который раньше умел только шейдер на воду написать. Игру нужно было довезти. Доехали. Не идеально, но визуально проект на скриншотах не стыдно показать. Расскажу, как мы это собирали и что я бы сделал иначе.

Это не статья «как нарисовать арт без рук». Это про то, как из ассетов, шейдеров, света и пары сильных решений сделать связный визуал, который не выглядит как франкенштейн.

Сначала — одна референс-палитра, потом всё остальное

Самая частая ошибка, которую я видел в инди — каждый ассет покупается отдельно, у каждого свой автор, своя цветовая температура, свой уровень детализации. В итоге сцена выглядит как помойка. Пусть и дорогая.

Решение скучное и работает: до того как купить первый ассет, выбери палитру и стиль. Не «тёмное фэнтези», а конкретно: 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. Бери оттенки из основной палитры. Серый фон в игре с тёплой палитрой делается слегка коричневатым, не нейтральным.

Пайплайн ассетов: чек-лист, который сэкономил мне нервы

Когда у тебя нет художника, любой новый ассет в проекте — это потенциальная мина. Я завёл документ-чек-лист, через который проходит всё, что попадает в проект:

  1. Размер текстур — кратен 2, не больше 1024 для пропсов и 2048 для основных персонажей.
  2. Альбедо без впечённого освещения. Если есть — пишу заметку, что это ассет «как есть», свет не подкрутить.
  3. Полигонаж — в норме для нашего бюджета. Если меш на 30k полигонов на простой сундук — Decimate в Blender.
  4. UV развёрнуто без сильных растяжений. Можно проверить чекером в Blender или в Unity через debug-материал.
  5. Имя файла и иерархия. SM_Chest_Wooden_01, не Chest final FINAL fix.fbx.
  6. Пивот в нужной точке. У персонажей — между ступней, у пропсов — обычно по нижней грани.

Это занимает 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». Не получится, и не нужно. Целостный, стилизованный, с одной сильной идеей визуал из посредственных ассетов выглядит сильнее, чем разнородный визуал из дорогих ассетов. Это годами проверенная штука, и она не зависит от твоего бюджета.

Комментарии 0

  • Будьте первым, кто оставит комментарий.

Войдите, чтобы оставить комментарий.