Два из трёх и плюс один.

В каждом игровом проекте есть три главных кита: производительностьразмер билда и визуал. А ещё есть четвёртый, коварный параметр - время на реализацию. И тут вступает в силу старый закон геймдева: «Выбери два, а потом объясни проджекту, почему сроки поехали».

Звучит знакомо? Ну конечно. Потому что это работает всегда.

Давайте на примере. Представьте: нагруженный проект под Android. Нам нужно 60 противников, у каждого по 3 тысячи полигонов. И всё это должно летать. Классика. Посмотрим, какие есть варианты.

Вариант 1 - быстрый, красивый, но тормозной

Берём скинмеши, натягиваем реальные аниматоры. Получаем: Визуал - глаз радуется Билд - ~70 МБ, терпимо FPS - 15, на топовом флагмане УРА, если 30 Что выбрали? Визуал + размер. А производительность легла под танки. По времени - быстрее всего, да. Но играть в слайд-шоу никто не будет.

Вариант 2 - компромиссный

Режем полигоны, скинмеши превращаем в обычные меши. Стоп, а что с суставами? А суставы прячем под наплечники, наколенники, заглушки. Лишь бы расчленёнку не видно было. Итог: Визуал - уже не тот (прощай, артбук, надо пересогласовывать) Производительность - средняя, на бюджетках до 45 FPS Вес - почти не изменился Выбрали размер + производительность. Визуал пострадал. По времени - среднячок.

Вариант 3 - дорогой, но взрослый

Запекаем анимации в шейдер. Делаем переходы прямо там. И о чудо: Визуал - хороший Производительность - отличная Вес билда - +20 МБ сверху (каждая секунда анимации на 3к полигонов стоит 1-2 МБ) Что в сухом остатке? Визуал + производительность. Размер поплыл. И по времени это самый долгий путь.

Но есть один хитрый приём

Хороший техартист - не тот, кто выбирает две фичи и страдает. Хороший техартист жонглирует всеми тремя режимами на лету. Причём не тремя даже, а сотней мелких подпараметров, но для красоты скажем «тремя».

Вот как это выглядит в бою (личный пример, запись с телефона) - https://youtu.be/n9Oa5LL6mcY https://youtu.be/HMR6nNr_Z9g Мы с геймдизайнером прикинули: чаще всего на экране у нас живые противники. Они бегают, атакуют, уворачиваются. Отлично. Значит, их основную анимацию можно смело запекать в шейдер. Никаких расчётов деформации меша в реальном времени — всё предзаписано, шейдер просто проигрывает текстуру анимации. Быстро, красиво, чуть тяжеловесно.

А когда враг умирает — тут мы делаем финт ушами. Отключаем шейдерную анимацию, синхронизируем состояние объекта и… включаем обычный рэгдолл физики.

Что это даёт? Бесконечное разнообразие анимаций смерти. Каждый противник падает по-своему, камни не летают сквозь кости, а геймплей становится живым и непредсказуемым. И всё это без потери производительности в основной фазе боя.

Как итог

На самом деле никакой дилеммы «выбери два» не существует. Есть понимание, когда и где можно поджать один параметр, чтобы выиграть в двух других. И умение переключаться между подходами прямо во время разработки. Главные уроки, которые я вынес из этой кухни:

1. Не верьте в магию. Хотите всё и сразу? Готовьте время и ресурсы. 2. Договаривайтесь с артами заранее. Если знаете, что будете резать полигоны — предупредите художников в первый же день. 3. Смотрите на сценарий. Если 90% времени враги живые — оптимизируйте жизнь. Смерть можно сделать красивой, даже если она чуть дороже.

И последнее. Не бывает идеального технологического решения. Бывает достаточно хорошее для этого проекта, в эти сроки, на этих устройствах. Техартист потому и «техно», что умеет делать выбор, а потом объяснять его пилой.

А теперь берите свой любимый движок, и пусть ваши 60 противников летают на все 60 FPS. Или хотя бы на 45 — мы же взрослые люди, понимаем бюджет.