Траектория «Геймдев» · линия A · конспект 2 из 13

Игровые механики

О чём эта тема
Аппарат для точного описания игрового процесса: игровая динамика, игровые циклы, машина состояний и атомарные игровые механики, из которых собираются механики комплексные.
Аннотация
Конспект начинается с разграничения игровой механики и цели игры, затем вводится понятие игровой динамики как производной взаимодействий игрока с игрой и рассматриваются её слои — первичная и вторичные динамики. Далее разбираются циклические процессы: малый цикл (core loop) и цикл геймплея (gameplay loop) — и машина состояний как способ описать смену режимов игрового процесса, с реализацией на C#. Центральная часть — каталог атомарных механик трёх типов: физических, экономических и ментальных. Завершается конспект декомпозицией комплексных механик на атомы и интерактивным разбором нескольких известных игр.
Пререквизиты
Конспект A01: раздел «Игровая механика» дизайн-документа — именно его аппарат этого конспекта позволяет заполнить точно. Код на C# приводится как иллюстрация и подробно разбирается позже, в конспектах A07 и A11.
Мотивация
В A01 мы требовали описывать механики «очень точно», но не сказали, в каких терминах это делать. Фраза «игрок уклоняется от астероидов» кажется элементарной — пока не нужно её программировать. Из чего состоит «уклоняется»? Игрок распознаёт траектории объектов, выбирает стратегию и перемещает корабль — три разные операции, каждую из которых предстоит реализовать отдельно. Язык атомарных механик позволяет разложить любое игровое действие на такие программируемые составляющие.

1. Механика и цель игры

Должна ли игровая механика включать в себя цель игры? Нет — цель является задачей более высокого уровня. В шахматах основная игровая механика — перемещение фигур по определённым правилам. Единичное действие, перемещение фигуры, не приводит к достижению основной цели — поставить мат сопернику (за исключением последнего хода). Механика описывает как игрок взаимодействует с игровыми объектами; цель определяет, зачем он это делает.

2. Игровая динамика

Игровая динамика (game dynamics) определяет отношение воздействий игрока на игровые объекты и событий обратной связи в процессе игры. Важно: динамика — не принцип взаимодействия игрока с игровыми объектами, а производная этих взаимодействий. Динамика означает «отношения» — комплекс взаимодействий игрока и игры, которые активно меняются в процессе: компромисс между временем и ресурсами, между способностью нанести и получить урон, чередование сюжета и игрового процесса, вызова и зоны релаксации. Обобщённо игровая динамика отвечает на вопрос «каково в это играть» (How does it feel to play a game?).

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

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

2.1. Слои динамик

Игра может содержать несколько слоёв динамик. В простых играх обычно используется один уровень; если их два и более, выделяют первичную и вторичные динамики. Первичная, как правило, является основным геймплеем (core gameplay) и имеет более высокий ритм взаимодействия. Вторичные выполняют дополнительную или вспомогательную функцию — как правило, это метагейм (metagame); они менее ритмичны и могут играть роль зон релаксации.

3. Игровые циклы

Большинство игровых процессов имеют циклический характер — как и динамические системы реального мира. Циклы повторения действий помогают игроку довести до автоматизма взаимодействие с игровыми объектами и перейти к решению более высокоуровневых задач.

Три вложенных цикла: внешний Gameplay Loop, внутри него Core Loop и Metagame Loop
Малый цикл и метагейм внутри цикла геймплея.

Игровая механика образует малый цикл (core loop) внутри цикла геймплея (gameplay loop). Масштабы целей у них разные: малым циклом решаются промежуточные задачи, циклом геймплея — высокоуровневая игровая задача. В Diablo малый цикл — перемещение по лабиринту и убийство монстров; цикл геймплея включает, помимо этого, сбор и распределение снаряжения, прокачку навыков и характеристик — то есть и метагейм тоже.

4. Машина состояний

Практически любой игровой процесс подразумевает наличие разных состояний в разные моменты времени. Состояние характеризует определённо настроенный цикл взаимодействий игрока с игровыми объектами в определённый период; если взаимодействие изменилось — изменилось состояние игрового процесса. Изменение бывает кардинальным, когда шаблон взаимодействия меняется полностью, или дополняющим, когда он расширяется новыми циклами. В Pac-Man герой в обычном состоянии поедает горох и уклоняется от привидений; съев большую фасолину, он переходит в состояние охоты — теперь привидения убегают от него. Шаблон взаимодействия сменился, и вместе с ним — мотивация игрока.

Формально смену состояний описывает машина состояний (state machine, конечный автомат): набор состояний, для каждого — свой цикл поведения, и условия переходов между ними. Машиной состояний описывается не только игрок, но и противники:

Схема машины состояний противника: wander (патрулировать), attack (атаковать), evade (уклоняться), find aid (искать аптечку), с подписанными условиями переходов
Машина состояний противника: четыре состояния и условия переходов.

Та же схема, записанная на C# в виде скрипта Unity. Каждому состоянию соответствует значение перечисления, каждой стрелке схемы — проверка условия и присваивание нового состояния:

using UnityEngine;

public class EnemyBrain : MonoBehaviour
{
    // Состояния со схемы: патрулирование, атака, уклонение, поиск аптечки
    private enum State { Wander, Attack, Evade, FindAid }

    [SerializeField] private Transform player;        // цель
    [SerializeField] private float sightRange = 8f;   // дальность обнаружения
    [SerializeField] private float health = 100f;

    private State state = State.Wander;

    private void Update()
    {
        switch (state)
        {
            case State.Wander:
                Patrol();
                if (PlayerIsNear()) state = State.Attack;      // player is near
                break;

            case State.Attack:
                AttackPlayer();
                if (!PlayerIsNear()) state = State.Wander;     // player is out of sight
                else if (UnderFire()) state = State.Evade;     // player is attacking back
                break;

            case State.Evade:
                RunAway();
                if (health < 30f) state = State.FindAid;       // healthpoints are low
                else if (!UnderFire()) state = State.Attack;   // player is idle
                break;

            case State.FindAid:
                SeekMedkit();
                if (health >= 100f) state = State.Wander;      // found aid
                break;
        }
    }

    private bool PlayerIsNear() =>
        Vector3.Distance(transform.position, player.position) < sightRange;

    // Поведение внутри состояний — заглушки: их содержание зависит от игры
    private void Patrol() { }
    private void AttackPlayer() { }
    private void RunAway() { }
    private void SeekMedkit() { }
    private bool UnderFire() => false;
}

Метод Update вызывается движком каждый кадр (подробно — в конспекте A07), поэтому автомат проверяет условия переходов непрерывно. Полный разбор ИИ на машинах состояний — в конспекте A11; здесь важно одно: состояния и переходы, нарисованные на этапе дизайна, переносятся в код почти дословно.

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

5. Атомарные механики

Атомарная механика — минимальное, далее не разложимое взаимодействие с игровым объектом. Атомарные механики делятся на три типа:

Атомарные игровые механики
Физические
имитация или симуляция физических эффектов
Экономические
управление игровыми ресурсами
Ментальные
использование возможностей мозга игрока

5.1. Физические механики

Поместить Place Пиктограмма: объект помещается в игровое пространство Помещение объекта в игровое пространство; параметр — координаты размещения. В Тетрисе фигура помещается в верхнюю часть стакана.
Удалить Eliminate Пиктограмма: объект покидает игровое пространство Удаление объекта из игрового пространства. В «три в ряд» удаление фишек с поля — часть ключевой комплексной механики.
Переместить Move Пиктограмма: объект перемещается между точками координат Изменение позиции объекта; подразумевает математический закон перемещения (равномерно, с ускорением, с замедлением). Частные случаи: гравитация (Gravity) — притяжение к точке; прыжок (Jump) — рывковое изменение позиции с гравитацией; лезть (Climb) — вертикальное перемещение с использованием вспомогательного объекта.
Повернуть Rotate Пиктограмма: объект поворачивается вокруг оси Поворот объекта вокруг выбранных осей на заданный угол. Есть игры с механикой поворота в основе кор-геймплея: Superhexagon, Zuma.
Увеличить Enlarge / Grow Пиктограмма: объект растёт по трём осям Увеличение объекта в размере — равномерное или удлинение; закон увеличения влияет на динамику геймплея.
Уменьшить Diminish Пиктограмма: объект сжимается по трём осям Уменьшение объекта в размере; механика, обратная увеличению, с теми же свойствами.
Пересечь Intersect Пересечение с другим объектом; триггерная механика — запускает другие механики (в Unity ей соответствуют коллайдеры-триггеры, конспект A09).
Соединить Merge Соединение нескольких объектов в один.
Разделить Split Разделение одного объекта на несколько.
Морфировать Morph Пиктограмма: куб превращается в сферу Изменение формы объекта; начальная и конечная формы задаются задачей игрового процесса (пример кор-механики — Gish).
Изменить динамику Temporary Временное изменение динамики событий.
Тактировать Alarm Активация механики через установленный промежуток времени.

5.2. Экономические механики

Собрать Collect Пиктограмма: Pac-Man съедает горошину, счёт увеличивается на единицу Увеличение количества игрового ресурса: очки за монетки в Super Mario, за горошины в Pac-Man.
Набор Set Пиктограмма: три ячейки коллекции, одна ещё пуста Сбор определённого набора ресурсов или объектов: сеты оружия и брони в Diablo, коллекции в социальных играх.
Отнять Reduce Пиктограмма: привидение отнимает у Pac-Man одно сердце-жизнь Уменьшение количества ресурса; механика, обратная «Собрать». Параметры: стартовый объём и количество единовременно отнимаемого ресурса.
Случай Random Пиктограмма: сундук с неизвестным содержимым Генерация случайного количества ресурса — в том числе случайный выбор объекта из заготовленного набора при помещении его в игровое пространство.

5.3. Ментальные механики

Распознать шаблон Pattern Recognize Пиктограмма: мозг разгадывает слово по буквам Игрок идентифицирует заранее заданный шаблон — звуковой, графический, символьный или поведенческий. Примеры: уровень-лабиринт; распознавание поведения привидений в Pac-Man.
Создать шаблон Pattern Construction Пиктограмма: задуманная башня строится из блоков Игрок придумывает шаблон и реализует его предоставленными игрой механиками: в Minecraft из кубиков строится практически любой задуманный объект.
Запомнить шаблон Memory Пиктограмма: мозг запоминает последовательность цифр Игрок запоминает предоставленную игрой информацию; простейший пример — игра Memory (парные карточки).
Выбрать Choose Пиктограмма: выбор между ответами «да» и «нет» Игрок делает выбор между вариантами — равнозначными или с подсказками: куда двигаться, как ответить в диалоге, как уклониться от противника.

6. Комплексные механики

Комплексная механика — комбинация атомарных. Разложим механику «уклониться» (Avoid), с которой начинался конспект: игрок распознаёт шаблон движения объектов (Pattern Recognize), выбирает стратегию избегания столкновения (Choose) и перемещает свой объект (Move). Характерный параметр — отображение объектов, относительно которых требуется уклонение. Классический пример — Asteroids.

6.1. Как составить схему механики: «Стрелять» и её варианты

Декомпозиция полезна и в обратную сторону — как инструмент поиска необычных решений. Приём такой: сначала записывается схема механики в базовом виде — цепочка атомов с их параметрами, — а затем варианты получаются изменением ровно одного атома цепочки. Разберём на механике «стрелять» (Shoot). Базовая схема:

Выбрать цель
Choose · ментальная
Поместить снаряд
Place · точка вылета
Переместить
Move · закон полёта
Пересечь
Intersect · попадание
Отнять здоровье
Reduce · урон

Каждый блок — атом с характерным параметром; именно параметры (закон полёта, величина урона) станут числами в дизайн-документе и переменными в коде.

Теперь варианты. В каждом изменён один блок схемы — и этого достаточно, чтобы получить орудие с совершенно другим ощущением игры:

Рельсовая пушка Quake

Выбрать цель
Поместить снаряд
Переместить
Пересечь
Отнять здоровье

Атом Move исключён: снаряд не летит, попадание проверяется мгновенно по лучу (hitscan). Итог — оружие точности: важно только прицеливание, упреждение не нужно.

Скриншот Quake: выстрел из рельсовой пушки, мгновенный луч поражает противника
Рельсовая пушка в Quake.

Гранатомёт Team Fortress

Выбрать цель
Поместить снаряд
Переместить
баллистика + отскоки
Пересечь
Отнять здоровье

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

Скриншот Team Fortress: подрывник с гранатомётом, снаряды летят по дуге
Гранатомёт в Team Fortress.

Superhot

Выбрать цель
Поместить снаряд
Переместить
Пересечь
Отнять здоровье
+
Изменить динамику
Temporary · время

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

Скриншот Superhot: белое окружение, красные противники, застывшее время
Superhot: время течёт вместе с движением игрока.

Схема варианта орудия в дизайн-документе — это базовая цепочка плюс явное указание, какой атом и как изменён. Такое описание однозначно и для программиста: исключён Move — попадание проверяется лучом (Raycast); заменён закон перемещения — меняется расчёт траектории; добавлен Temporary — масштабом времени управляет отдельный скрипт.

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

Выберите игру — тренажёр покажет её малый цикл, метагейм и атомарные механики, из которых собран кор-геймплей.

Цвет метки — тип атомарной механики: физическая экономическая ментальная. Разбиение иллюстративное — выполнено авторами конспекта.

Контрольные вопросы

Источники

  1. Egenfeldt-Nielsen, S. Understanding Video Games: The Essential Introduction / S. Egenfeldt-Nielsen, J. H. Smith, S. P. Tosca. — New York : Routledge, 2008. — 293 p.
  2. Динамические системы : видеолекция // ПостНаука : [сайт]. — URL: https://postnauka.ru/video/73463 (дата обращения: 07.07.2026).