Анимация в видеоиграх. Полное руководство для игрового аниматора — страница 41 из 49

Тестирование/модификация элементов по одному

Если причиной ошибки может быть одна из нескольких возможных проблем, нужно проработать все возможные варианты по очереди, а не менять несколько переменных за один раз. Если проблема устраняется после одновременного изменения нескольких переменных, то невозможно с уверенностью утверждать, что причиной ошибки была какая-то конкретная из них.

Поиск решений должен представлять собой процесс исключения, то есть нужно менять по одному элементу за раз. Такой способ поможет вам научиться предотвращать подобные проблемы в будущем и быстро находить решение.

На поздних этапах работы над проектом можно порекомендовать пробовать исправлять по две ошибки в одном ассете за один раз (например, в одной анимации «дерганье» наблюдается в двух местах), однако нежелательно отсылать в систему контроля версий версию с одновременным исправлением нескольких ошибок. Это связано с тем, что одно из этих изменений может «сломать» что-то другое, и тогда вам придется возвращаться, чтобы выяснить, что именно сломано; если же вы отправите все изменения сразу, то, возможно, вам придется и отменять их все сразу, тогда как можно было бы исправить только одно. В целях максимальной эффективности прорабатывайте список ошибок методично, один пункт за другим.

Мало что бывает опаснее ошибки, которая исправляется сама собой, когда вы не знаете, что произошло, потому что эта ошибка, скорее всего, повторится, причем в самый неподходящий момент. Если время поджимает, то можно оставить все как есть, но в противном случае всегда рекомендуется выяснить, что произошло, чтобы в будущем сразу обращаться к соответствующим специалистам. С таким же подозрением относитесь к случаям, когда что-то «должно» нарушаться, но не нарушается, например к названию файла или ассета, не согласующемуся с общими правилами наименования. Скорее всего, ошибки просто еще не произошло, поэтому все несоответствия лучше исправлять заранее.

Комментарии в системе контроля версий

Корректные комментарии в системе контроля версий каждого вносимого изменения (не только при исправлении ошибок, но и при итерации анимации на каждом этапе) позволят без особого труда вернуться к предыдущим версиям, если потребуется внести изменения для исправления ошибок или, что более вероятно, воспользоваться старой анимацией для решения какой-то другой задачи.

Кроме того, всегда существует вероятность «попадания под автобус», когда вы заболеете или по другим причинам будете вынуждены отлучиться с работы в самый ответственный момент, а вашим коллегам именно тогда потребуется обратиться к изменениям в вашей работе. Поэтому не ограничивайтесь простыми комментариями в духе «Обновлено», «В процессе» и прочими бесполезными надписями, а подробно описывайте, что изменилось в данной версии, чтобы помочь себе и другим добраться до нужной версии в случае затруднений.


Полезные комментарии в системе контроля версий позволяют проследить историю изменений

Избегайте инкрементной тонкой настройки

Возьмем для примера смешение, при слишком короткой продолжительности которого появляется «дерганье», а при слишком большой ощущается заторможенность. Если в настоящий момент длина смешения составляет два кадра, то можно просто увеличивать ее на один кадр за раз до тех пор, пока она не будет работать. Дойдя до семи кадров, вы обнаружите, что зашли слишком далеко, но стоит ли возвращаться к шести или к пяти? Еще хуже будет, если вы дойдете до семи и почувствуете, что продолжительность должна быть еще выше, а вы зря потратили все это время на итерации.

В подобных случаях рекомендуется вносить изменения с большим шагом, а затем по принципу «горячо-холодно» решать, в каком направлении двигаться дальше. Например, в приведенном примере быстрее было бы сразу перейти к десяти кадрам. Допустим, мы уверены, что значение выше десяти кадров не потребуется, но на всякий случай нужно исключить этот вариант. Далее мы опускаемся до шести (на полпути между двумя и десятью); качество смешения кажется более высоким, но теперь немного быстрым. Тогда мы переходим к восьми кадрам (на полпути между шестью и десятью), но скорость на этот раз кажется слегка медленной. Так мы понимаем, что наилучшее значение – это семь.

Такой метод «быстрее/медленнее» (как при игре в «горячо-холодно») гораздо лучше простого угадывания, потому что он позволяет получить правильное значение за минимальное количество итераций. Чем опытнее вы становитесь, тем меньше итераций вам требуется для достижения наилучшего результата.

Устранение неисправностей

Каждый движок отличается по степени надежности и уязвимости, поэтому только опытным путем можно понять, насколько часто анимация может «ломаться» в процессе работы. Однако испортить анимацию в игре можно и независимо от движка. Ниже приведен краткий список того, на что следует обратить внимание и как можно устранить эти проблемы, если они обнаружены.

• Ошибка/несоответствие наименования: дизайнер или программист ожидал одно название, а вы дали ему другое (обычно через опечатку). Это, пожалуй, самый распространенный способ породить якобы «отсутствующую» анимацию, что выражается в появлении Т-позы. Лучше всего проверить экспортированные имена файлов.

• Неверный адрес файла: в некоторых движках игровые файлы должны содержать указание на файл сцены в программе DCC или строиться из него. В этом случае анимация также существует, но указывает на неправильный файл, что приводит к появлению неправильной анимации. Убедитесь, что экспортируемая анимация указывает на правильную сцену и не содержит опечаток в адресе.

• Отсутствующий файл сцены: то же самое, что и выше, но файл либо никогда не существовал, либо был каким-то образом удален. В любом случае, если вы обнаружили, что анимационный ассет указывает на файл, которого просто не существует, то первым делом следует обратиться в систему контроля версий сцены и, возможно, просто запросить ее восстановление.

• Испорченный файл сцены: файл сцены либо испорчен/поврежден, либо содержит то, чего не должно быть, и это мешает экспорту. Скорее всего (особенно если это не относится к ригу/персонажу), непреднамеренно изменен был сам риг, но такая ошибка бывает связанной и с дополнительными скрытыми элементами в сцене.

• Отрывистое движение: в рамках одной анимации персонаж всплывает и двигается подобно роботу, не так, как в исходной анимации. Скорее всего, это вызвано чрезмерным сжатием анимации при экспорте.

• Рассинхронизация кадров: если в отладочной информации игры 15-й кадр анимации в игре выглядит так же, как 25-й кадр анимации в файле сцены, то, скорее всего, вы ввели неправильное количество кадров при экспорте, начав с десятого кадра. Или же недобросовестный дизайнер заскриптовал анимацию, пропустив первые десять кадров.

• Анимация воспроизводится с неправильной скоростью: то же, что и выше, но тут недобросовестный дизайнер ускорил вашу анимацию, не предупредив вас об этом. Узнайте от него значения и измените анимацию так, чтобы она работала в этом же тайминге, а затем любезно попросите дизайнера убрать масштабирование времени.

• Персонаж останавливается не в том месте, где нужно: игра понимает, где находится персонаж, только на основе коллижн-модели, поэтому если анимация заканчивается, а персонаж перепрыгивает, например, обратно в начальную позицию, то, скорее всего, коллижн-модель не следовала за персонажем или была неправильно анимирована. Лучше всего проверить это в файле сцены программы DCC после просмотра отладочного экрана коллизий.

• Весь персонаж «сломан»: анимации, скорее всего, в порядке, но сама модель/риг-актив персонажа была обновлена некорректно. Это наиболее вероятная причина, когда не работают все анимации персонажа. Обратитесь к специалистам по риггингу/персонажам.

• При анимации персонаж «взрывается»: обычно это проблема несоответствия костей в риге, файле анимационной сцены или в программе, из которой персонаж экспортируется. При несовпадении количества костей персонажа и экспортированной анимации, анимация, скорее всего, будет правильно воспроизводиться на неправильных костях, что часто выглядит ужасно. Это связано с тем, что в движках кости часто сопоставляются не по именам, а по индексу или списку. Если список не совпадает хотя бы на одну кость, то это отразится на всех остальных костях в списке, следующих за неправильной. Обычно аниматор не может решить эту проблему в одиночку, поэтому следует привлечь технических аниматоров или программистов. Если анимация выглядит так, что персонаж увеличивается в два раза и все суставы масштабируются вдвое, то это, как правило, проблема аддитивной анимации. Это означает, что вся исходная аддитивная анимация сочетается с базовой анимацией, а не только отображает смещение между аддитивной анимацией и выбранной позой. Обычно это вызвано технической проблеме в скрипте или коде либо неправильной настройкой аддитивной анимации.

• Положение персонажа смещено: анимации воспроизводятся не в том месте, где должны. Чаще всего это вызвано неправильным масштабированием персонажа в движке или в программе DCC, но может быть связано и с поведением игрового движка, меняющего начала координат специфических сцен вроде кат-сцен. Если проблема возникает только в одной сцене, проследите за тем, чтобы в программе DCC все было настроено правильно. Также выталкивать персонажей из окружения или из других персонажей могут коллижн-модели, поэтому их нужно будет исправить или отключить.

• Персонаж вытягивается к началу координат: некоторые вершины персонажа или другого анимированного объекта вытягиваются к началу координат. По всей видимости, неправильно был осуществлен скиннинг этих вершин, даже если у вас в программе DCC они в порядке. Обратитесь к техническим аниматорам или специалистам по персонажам.


Коллижн-модель, ошибочно анимированная в стороне от персонажа

Заранее настройтесь на то, что в процессе разработки не раз что-то пойдет не так. Как говорится, невозможно приготовить омлет, не разбив яйца, а игры – это невероятно сложный омлет. Поэтому не стоит сильно переживать по поводу ошибок, но чем чаще вы будете их исправлять, тем быстрее вы научитесь распознавать проблемы и, в идеале, предотвращать их еще до появления, благодаря чему повысится ваше мастерство анимации в целом.


Из-за отсутствующих вершин или вершин без скина скин персонажа вытягивается к началу координат


• Если несмотря на приведенный выше список вы так и не смогли разобраться в проблеме, то вот несколько советов «на скорую руку», которые помогут вам определить хотя бы направление, в котором стоит искать источник проблем.

• Используйте ассет в другом файле анимации или сцены и посмотрите, повторяется ли ошибка. Если да, то вы знаете, что дело в вашем анимационном активе или сцене, а не в коде/технологии, воспроизводящей их в игре.

• Просмотрите анимацию в доступном инструменте просмотра игры, если он у вас есть; таким образом можно убедиться в том, что сама анимация экспортировалась нормально, и на этот раз, скорее всего, дело в коде/технологии, с помощью которой она воспроизводится в игре.

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

• Более сложный способ заключается в том, чтобы открыть экспортированный файл анимации в текстовом редакторе и сравнить его с аналогичным работающим файлом в поиске несоответствий. Такое сравнение позволит исключить из списка потенциальных проблем средство экспорта.

• Если все остальное не получается и вы по-прежнему не понимаете, что же не так в вашей сцене, но уверены в том, что виновата именно она, уничтожьте старую сцену и переделайте ее с нуля (разумеется, копируя всю анимацию). Такой радикальный способ иногда оказывается быстрее, чем попытки догадаться, с чем связаны проблемы в безобидной на первый взгляд сцене, которая просто не работает.


(Copyright 2007–2017 Ubisoft Entertainment. Все права защищены. Assassin's Creed, Ubisoft и логотип Ubisoft являются товарными знаками Ubisoft Entertainment в США и/или других странах.)

Интервью. Алекс Друэн