Лекция
1. Введение в анимацию
2. Основные виды анимации
3. Базовые принципы анимации (классические 12 принципов Disney, адаптация под игры)
4. Анимация как часть геймплея
5. Animation Pipeline (пайплайн)
6. Animation Systems в игровых движках
Примеры:
7. Интеграция анимации и кода
8. Procedural и динамическая анимация
9. Оптимизация анимации
10. Ошибки и анти-паттерны
11. Кейсы из игр
Примеры:
13. Будущее анимации в играх
14. Заключение
12. Практическая часть
Сделать простую FSM:
Idle → Walk → Run → Attack → Idle
Разберем введение в анимацию в играх так, как это обычно объясняют на лекции, но с упором на практическое понимание.

Анимация в играх — это изменение состояния объектов во времени, которое визуально передает действия, реакции и процессы в игровом мире.
Важно:
в играх анимация — это не просто «движение ради красоты», а система, управляемая игроком и логикой игры.
Примеры:
Ключевая мысль:
анимация = визуальное отображение игровой логики
Анимация напрямую влияет на то, как игрок ощущает игру.
плохая анимация = ощущение input lag
Анимация сообщает игроку:
Примеры:
Игрок должен понимать, что происходит без UI:
Хорошая анимация:
Плохая:

Вот ключевое различие:
| Критерий | Игры | Кино / мультфильмы |
|---|---|---|
| Управление | Игрок | Режиссер |
| Время | Непредсказуемо | Фиксировано |
| Логика | Интерактивная | Линейная |
| Прерывание | Можно (cancel) | Нельзя |
| Цель | Gameplay | Визуальный сторителлинг |
Главная разница
В кино:
анимация = рассказ
В игре:
анимация = инструмент управления
Важный момент
В кино можно:
В игре:

1. Анимация = тайминг
Каждое действие имеет фазы:
это основа боевых систем (например в Dark Souls)
2. Telegraphing (предсигнал)
Анимация предупреждает игрока:
без этого игра кажется «нечестной»
3. Hitboxes и синхронизация
4. Cancel и управление
Игрок может:
5. Game Feel
Анимация создает «ощущение игры»:
Анимация = визуализация геймплея + обратная связь + контроль
Анимация в играх — это:
не просто визуал
не просто «красиво»
Это:
Разберем основные виды анимации в играх — с практическим пониманием, где и зачем каждый используется.
Анимацию в играх можно условно разделить на несколько крупных категорий:


Суть:
Каждый кадр рисуется отдельно.
как мультфильм, только в игре
Суть:
Используется спрайт-лист (sprite sheet) — набор кадров в одной текстуре.
игра просто быстро переключает кадры
Пример:
Плюсы:
Минусы:
Skeletal animation (скелетная)
Суть:
У модели есть
кости (rig) → они двигаются → тянут меш.
основной стандарт в играх
Пример:
Плюсы:
Минусы:
Суть:
Модель хранит несколько вариантов формы → они плавно смешиваются.
деформация меша
Пример:
Плюсы:
Минусы:
Примеры:
Плюсы:
Минусы:
Примеры:
Плюсы:
Минусы:
Примеры:
Применяется в играх типа The Last of Us
Плюсы:
Минусы:
Это следующий шаг после procedural animation.
Суть:
Анимация генерируется один раз на этапе разработки, а потом используется как обычная.
Как используется:
Плюсы:
Минусы:
Суть:
Анимация создается прямо во время игры, в зависимости от ситуации.
Частные технологии:
Плюсы:
Минусы:
Сравнение двух подходов
| Тип | Когда используется |
|---|---|
| Offline AI | ускорение разработки |
| Runtime AI | динамика и адаптация |
Где это уже применяется
Связь с другими типами
ИИ-анимация не заменяет все, а усиливает существующие подходы:
Важная мысль
Раньше:
анимация = заранее записанные клипы
Сейчас:
анимация = данные + алгоритмы + ИИ
Итоговая классификация
| Тип | Где используется |
|---|---|
| 2D покадровая | инди, pixel-art |
| 2D спрайтовая | мобильные, UI |
| Skeletal 3D | почти все 3D игры |
| Blend shapes | лица |
| Procedural | IK, адаптация |
| Physics | ragdoll, разрушения |
| MoCap | AAA реализм |
В реальных играх почти всегда используется комбинация:
Короткая формула
Современная анимация = ключевые кадры + код + физика
Будущее анимации = procedural + physics + AI
Разберем базовые принципы анимации (из классических 12 Disney) и главное — как они адаптируются под игры, где есть управление и геймплей.
Важно: в играх принципы используются не ради красоты, а ради
читаемости, отзывчивости и game feel


Суть:
объект деформируется при движении (сжимается/растягивается)
в реалистичных играх используется очень слабо или незаметно

В играх:
Зачем:
Баланс:

Суть:
движение не останавливается мгновенно → части тела «догоняют»
В играх:
Зачем:
В играх:
часто делается через:

Суть:
сколько кадров длится движение
В играх (КРИТИЧЕСКИЙ принцип):
Зачем:
Пример:
в Dark Souls:
Важно:
timing = не просто анимация
это часть механики
В играх:
Зачем:
Но:
иногда специально убирают easing:


Суть:
движения усиливаются сильнее, чем в реальности
В играх:
Зачем:
Пример:
в Overwatch:
Как это применяют в играх
Главное отличие от классической анимации
в мультфильмах:
в играх:
Баланс принципов
| Принцип | Важность в играх |
|---|---|
| Timing | критично |
| Anticipation | критично |
| Exaggeration | очень важно |
| Easing | зависит от жанра |
| Follow-through | вторично |
| Squash & Stretch | редко (в реализме) |
Практическое правило
если принцип мешает управлению — его убирают
Пример конфликта
Принципы анимации в играх:
Короткая формула
Animation principles → Game Feel → Gameplay
Если хочешь, дальше могу:
Разберем анимацию как часть геймплея — это ключевая тема, где геймдизайн напрямую пересекается с анимацией.
В играх анимация — это не украшение,
а инструмент управления и коммуникации с игроком

Как влияет анимация:
Примеры:
Проблемы:
Решения:

Что важно:
Примеры:

Пример:
в Overwatch
каждый персонаж читается по силуэту и анимации
Суть:
анимация предупреждает игрока о действии
Примеры:
Зачем:
Классика:
в Dark Souls
игра строится на телеграфинге атак
Ошибки:
Элементы:
удар ощущается «пустым»
Примеры:
Зачем:
Баланс:
Реализм:
минус: медленно и менее отзывчиво
Удобство:
минус: менее реалистично
Примеры:
Анимация влияет на:
Главная мысль
Игрок чувствует игру через анимацию
Короткая формула
Animation → Feedback → Control → Game Feel
Разберем Animation Pipeline (пайплайн анимации) — как анимация проходит путь от идеи до работающей механики в игре.
Пайплайн — это цепочка этапов, через которые проходит анимация
от концепта → до работы в игровом движке
Общая схема
Концепт → Риггинг → Анимация → Импорт → Настройка → Геймплей

Суть:
определение как персонаж должен двигаться
Что делается:
Роль геймдизайна:
если концепт слабый → потом переделывают все
Суть:
создание скелета (bones) внутри модели
Что делается:
Результат:
модель можно двигать как «марионетку»
Ошибки:

Суть:
создание движений персонажа
Методы:
Типичный набор:
Важно:

Суть:
перенос анимации в игровой движок
Инструменты:
Что настраивается:
Частые проблемы:
Суть:
связывание анимаций в систему
Основные элементы:
State Machine
Idle → Walk → Run → Jump → Attack
Переходы (Transitions)
Blend Tree
Здесь происходит магия:
анимация становится геймплеем
Аниматор (Animator)
Отвечает за:
Технический аниматор (Tech Animator)
Отвечает за:
Геймдизайнер (Game Designer)
Отвечает за:
Важно:
геймдизайнер говорит:
Где чаще всего возникают проблемы
Pipeline — это:
не просто производство анимации
а превращение ее в игровую систему
Короткая формула
Concept → Rig → Animate → Import → System → Gameplay
Практический совет (важно для разработки)
Если ты делаешь игру (особенно как у тебя с UI/логикой):
думай не «анимация», а:
Input → State → Animation → Gameplay effect
Разберем Animation Systems в игровых движках — это тот слой, где «набор клипов» превращается в управляемую систему поведения персонажа.
Задача системы: по входу (input, скорость, флаги)
выбрать, смешать и проиграть нужную анимацию в нужный момент
Типичный поток:
Input / AI → параметры (speed, isJump, attack) → Animation System → поза/движение

Суть:
персонаж всегда находится в одном состоянии, и переходит между ними по условиям.
Пример состояний
Idle → Walk → Run → Jump → Attack → Hit → Death
speed > 0.1 → WalkisJump = true → JumpattackPressed → AttackПочему это важно
Частые ошибки


Пример (скорость)
между ними идет плавный blend
Пример (2D движение)
Зачем:
Ошибки:


Суть:
разделение анимации по частям тела.
Пример:
работают одновременно
Механика:
Зачем:
Ошибки:
Root Motion
Суть:
перемещение персонажа идет из анимации
анимация «двигает» персонажа
Плюсы:
Минусы:
Суть:
анимация «на месте», движение делает код
позицию меняет gameplay-логика
Плюсы:
Минусы:
Практика:
Unity Animator Controller
классическая система
Unreal Engine Animation Blueprint
мощнее, но сложнее
Input (кнопки / AI)
↓
Параметры (speed, jump, attack)
↓
State Machine (выбор состояния)
↓
Blend Tree (смешивание)
↓
Layers (комбинация частей тела)
↓
Root / In-place (движение)
↓
Финальная анимация
Animation System — это:
не просто проигрывание клипов
а движок логики движения персонажа
Ключевая мысль
Animation System = FSM + Blend + Layers + Movement logic
Когда будешь делать систему (даже на JS / локальном движке):
думай так:
state = Idle | Walk | Run | Attack
params = {speed, isJump, attack}
render(animation(state, params))
Анимация не должна просто проигрываться
она должна запускать события, менять состояние и синхронизироваться с физикой
Типичный поток:
Input → State → Animation → Event → Gameplay (урон/эффект)

Суть:
в конкретный кадр анимации вставляется событие, которое вызывает код.
Примеры:
dealDamage()Почему это важно:
геймплей привязан к моменту движения, а не ко времени «в коде»
Ошибка:
В движках:
Урон (Damage)
Фазы атаки:
Реализация:
Суть:
анимация запускает другие события:
Примеры:
Важно:
анимация = часть сценария
Суть:
анимация должна совпадать с:
Примеры:
Варианты:
Проблемы:
Суть:
анимация ≠ геймплей
Примеры:
Причины:
Суть:
задержка между действием и результатом
Причины:
Решения:
Суть:
персонаж одновременно в несовместимых состояниях
Примеры:
Решения:
Интеграция анимации и кода — это:
синхронизация:
Главная мысль
Игрок не видит код
он видит анимацию
и по ней судит, работает ли игра правильно
Короткая формула
Animation Event → Gameplay Action → Feedback
Практический совет (очень важно)
Даже в простом проекте:
// псевдокод
if (animationFrame === "hit") {
dealDamage();
}
Разберем Procedural и динамическую анимацию — это то, что делает движения адаптивными и “живыми”, а не просто проигрываемыми по заготовке.
В отличие от keyframe-анимации (заранее записанной),
procedural создается или корректируется в реальном времени
Общая идея
Keyframe animation + Procedural logic + Physics → Финальное движение

Суть:
мы задаем конечную точку (например, стопу) → система сама рассчитывает положение костей.
Примеры:
Почему это важно:
без IK:
Как работает:
Минусы:
Суть:
персонаж становится физическим объектом с суставами
Примеры:
Плюсы:
Минусы:
Часто используется:
переход:
анимация → ragdoll → обратно в анимацию
Неровный рельеф
Без этого:
Лестницы
Проблема:
обычная анимация не совпадает со ступенями
Решение:
Итог:
ноги точно попадают в ступени

Суть:
процедурная анимация не заменяет, а дополняет обычную
Пример:
Формула:
Финальная поза = keyframe + IK + physics + corrections
Примеры использования:
Основные проблемы
Артефакты
Производительность
Сложность
Procedural анимация:
делает движения адаптивными
убирает «жесткость» keyframe-анимации
улучшает реализм и game feel
Главная мысль
без procedural:
с procedural:
Короткая формула
Keyframe + IK + Physics = Современная анимация
Если хочешь, дальше могу:
Разберем Оптимизацию анимации — как сохранить качество движения, не «убив» FPS. В реальных проектах это постоянный компромисс между визуалом, памятью и производительностью.
Цель: уменьшить нагрузку (CPU/GPU/память),
не потеряв читаемость и «game feel»



Суть:
уменьшаем объем данных анимации.
Как:
Пример:
было:
1000 кадров
стало:
200 кадров + интерполяция
Плюсы:
Минусы:
Практика:
для фона можно сильно сжимать
для героя — аккуратно
Суть:
уменьшаем количество костей и их влияние.
Методы:
Почему это важно:
каждая кость = вычисления
Плюсы:
Минусы:
Практика:

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


CPU (логика)
Обрабатывает:
GPU (рендер)
Обрабатывает:
Баланс:
| CPU | GPU |
|---|---|
| логика | визуал |
| IK | skinning |
| FSM | rendering |
Проблемы:
CPU bottleneck
FPS падает из-за логики
GPU bottleneck
FPS падает из-за графики
Решения:
Оптимизация анимации = баланс:
Главная мысль
Короткая формула
Less data + smart processing = good performance
Практический совет (очень важный)
Если делаешь систему:
герой → максимум качества враги рядом → средне враги далеко → минимум
Разберем Ошибки и анти-паттерны в анимации — это те вещи, из-за которых игра «ломается» в ощущениях, даже если графика выглядит хорошо.
Главная проблема:
анимация начинает мешать геймплею, вместо того чтобы помогать


Суть:
игрок нажал кнопку → персонаж реагирует с задержкой
Причины:
Как это ощущается:
Пример:
Решения:
Суть:
анимации переключаются резко или некорректно
Примеры:
Причины:
Последствия:
Решения:


Суть:
игрок не чувствует результат своих действий
Примеры:
Как это ощущается:
В хороших играх (например Overwatch):
Решения:
Примеры:
Проблема:
Особенно критично:
Решения:
Итог всех ошибок
| Ошибка | Что ломает |
|---|---|
| Input lag | управление |
| Плохие переходы | визуальную целостность |
| Нет feedback | ощущение действий |
| Over-animation | читаемость |
Главная мысль
плохая анимация = плохой gameplay
даже если визуально все красиво
Золотое правило
Сначала gameplay → потом красота
Короткая формула
Clarity + Responsiveness > Realism + Beauty
Практический чек-лист
Перед релизом проверь:

Разберем Кейсы из игр — как разные жанры используют анимацию не «для красоты», а как основу механики и ощущений.
В каждом жанре анимация решает разные геймдизайнерские задачи
Главная роль анимации:
Пример: Dark Souls
Ключевая идея: Telegraphing
Почему это работает:
Важно:
Fighting games (например Street Fighter)
Ключевые элементы:
Роль анимации:
анимация = frame data
Пример:
Вывод:
в файтингах анимация = математика + тайминг
Главная роль:
Пример: Overwatch
Почему анимация важна:
Игрок чувствует:
Ошибки:
Особенность жанра:
приоритет = responsiveness
анимация не должна мешать стрельбе
Главная роль:
Что важно:
Анимация влияет на:
Техники:
Ошибки:
Сравнение жанров
| Жанр | Роль анимации |
|---|---|
| Souls-like | телеграфинг + тайминг |
| Fighting | frame data + cancel |
| Shooter | feedback + responsiveness |
| Platformer | точность + контроль |
Главная идея
анимация подстраивается под жанр
нет универсального решения
Глубокий вывод
Короткая формула
Genre → Animation Role → Game Feel
Практический совет
Когда делаешь механику, спрашивай:
что игрок должен почувствовать?
и под это уже:
Разберем Будущее анимации в играх — это одна из самых быстро развивающихся областей геймдева. Сейчас идет переход от «записанных движений» к генерируемым и адаптивным системам.
Главный тренд:
от статичных анимаций → к живым, генерируемым в реальном времени
Суть:
анимация создается или дополняется с помощью машинного обучения
Что делает AI:
Пример:
вместо:
idle → walk → run
система сама строит движение между ними
Технологии:
Результат:
Суть:
анимация не хранится как клипы, а собирается в момент игры
Примеры:
Отличие от Blend Tree:
Где используется:

Суть:
персонаж полностью или частично управляется алгоритмами, а не анимациями.
Возможности:
Пример:
Переход:
от «анимации персонажа»
к симуляции поведения
Суть:
нейросети напрямую управляют движением персонажа.
Возможности:
Пример будущего:
"персонаж устал и ранен" → анимация меняется автоматически
Ограничения:
Как все это объединяется
AI + Physics + Procedural + Keyframe
↓
Полностью адаптивная анимация
Раньше:
аниматор создает каждое движение
Сейчас:
аниматор + алгоритмы создают систему движения
Будущее:
система сама создает движение
Плюсы и риски
Плюсы:
Минусы:
Будущее анимации — это:
не клипы
а поведение
Короткая формула
Animation → Simulation → Intelligence
Практический вывод (важно)
Даже сейчас:
лучшие системы — это гибрид:
Анимация = часть геймдизайна, а не только графики
Главная мысль всей темы:
Анимация в играх — это не про “красиво”, а про “как работает игра”
Почему это важно
В отличие от кино:
Связь с геймплеем
Input → Анимация → Логика → Feedback → Ощущение игры
Как именно:
Пример:
Вывод:
анимация = часть механики
Что она дает:
Игрок чувствует:
Если анимация плохая:
Через что:
Примеры:
Реальные кейсы:
Итог
Анимация в играх — это:
Главная мысль курса
Игрок чувствует игру через анимацию
Короткая формула
Animation = Gameplay + Feedback + Control
Когда делаешь игру:
не думай:
сделать красивую анимацию
что должен почувствовать игрок?
Финальный вывод
Хорошая анимация — это та, которую игрок “не замечает”,
но через нее идеально чувствует игру.
Разберу это как практическую лабораторную работу: что студент должен сделать, какие файлы/компоненты нужны в Unity, какие параметры Animator создать и как связать анимации с кодом.
Сделать простого персонажа с 4 состояниями:
Idle → Walk → Run → Attack → Idle
В Unity это делается через Animator Controller: он хранит animation clips, состояния и переходы между ними. Unity описывает Animator Controller как систему, которая управляет клипами и переходами через state machine.
Персонаж должен:
стоять → идти → бежать → атаковать → вернуться в idle
Управление примерное:
Нужны 4 animation clips:
Idle.anim
Walk.anim
Run.anim
Attack.anim
Можно взять готового персонажа из Mixamo или Unity Asset Store.
В Unity:
Project → Right Click → Create → Animator Controller
Назвать, например:
PlayerAnimator.controller
Затем назначить его персонажу:
Player → Animator → Controller → PlayerAnimator
Открыть окно Animator:
Window → Animation → Animator
Перетащить туда 4 клипа:
Idle сделать стартовым состоянием:
Right Click on Idle → Set as Layer Default State
Вкладка Parameters:
Float Speed
Trigger Attack
Unity Animation Parameters — это переменные Animator Controller, которые можно менять из скрипта и через них управлять state machine.
Unity transitions позволяют переключаться между состояниями и задавать условия переходов через параметры Animator Controller.
Idle → Walk
Condition: Speed > 0.1
Walk → Idle
Condition: Speed < 0.1
Walk → Run
Condition: Speed > 0.6
Run → Walk
Condition: Speed < 0.6
Any State → Attack
Condition: Attack trigger
Attack → Idle
Has Exit Time: true
Для Attack лучше включить:
Has Exit Time = true
Чтобы атака доигрывалась до конца и потом возвращалась в Idle.
using UnityEngine;
public class PlayerAnimationController : MonoBehaviour
{
[SerializeField] private Animator animator;
private void Reset()
{
animator = GetComponent<Animator>();
}
private void Update()
{
float speed = 0f;
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
{
speed = Input.GetKey(KeyCode.LeftShift) ? 1f : 0.4f;
}
animator.SetFloat("Speed", speed);
if (Input.GetMouseButtonDown(0))
{
animator.SetTrigger("Attack");
}
}
// Этот метод вызовем через Animation Event
public void OnAttackHit()
{
Debug.Log("Attack hit frame: нанести урон врагу");
}
}
Открыть клип Attack.
Найти кадр, где оружие должно попасть по врагу.
Добавить событие:
Function: OnAttackHit
В Unity Animation Event добавляется на конкретный момент клипа и вызывает функцию по имени; событие можно добавить двойным кликом по Event Line или кнопкой Event.
Idle
Персонаж ничего не делает, но живой: дышит, немного двигается.
Walk
Медленное движение. Speed примерно 0.4.
Run
Быстрое движение. Speed примерно 1.0.
Attack
Отдельное состояние, запускается триггером Attack.
Главная схема
Input
↓
Script
↓
Animator Parameters
↓
FSM
↓
Animation Clip
↓
Animation Event
↓
Gameplay Logic
Проверка задания
Студент должен показать:
Главная идея практики:
анимация не просто проигрывается,
а управляется кодом и влияет на геймплей
Комментарии
Оставить комментарий
Разработка компьютерных игр, гейм-дизайн
Термины: Разработка компьютерных игр, гейм-дизайн