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

Теория игр: стратегии и баланс

О чём эта тема
Минимум теории игр, нужный геймдизайнеру: компоненты и классификация игр, анализ последовательных игр обратной индукцией, платёжная матрица для одновременных ходов и проверка баланса стратегий симуляцией.
Аннотация
Конспект начинается с определения теории игр и шести компонентов, присутствующих в любой игре, затем даётся классификация игр по пяти признакам. Далее разбираются два способа анализа: для игр с последовательными ходами — игровое дерево и обратная индукция, показанные на игре «гонка до 15»; для игр с одновременными ходами — платёжная матрица, доминирующая стратегия в дилемме заключённого и смешанная стратегия в «камень — ножницы — бумага». Завершается конспект методом Монте-Карло для проверки баланса: разбирается кейс карточной игры и приводится C#-код симуляции стратегий.
Пререквизиты
Конспект A02: понятие механики и предупреждение об эксплойтах — здесь оно получает точный смысл. Из математики достаточно понятий вероятности и математического ожидания.
Мотивация
Пусть в игре из вашего дизайн-документа игрок выбирает между агрессивной и осторожной тактикой. Если одна из них выигрывает всегда — выбор мнимый, вторая тактика мертва, баланс сломан. Как это проверить до того, как игру увидят игроки? Ответ теории игр: описать тактики как стратегии, а затем либо проанализировать игру точно (для простых игр), либо столкнуть стратегии в тысячах симулированных партий.

1. Что такое теория игр

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

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

2. Классификация игр

Джон фон Нейман, автор теории, изначально рассматривал только деление по сумме выигрыша; позднейшие авторы дополнили классификацию. Пять основных признаков:

ПризнакРазличие
Нулевая / ненулевая сумма С нулевой суммой — один забирает приз, остальные ни с чем (покер). С ненулевой — часть приза уносит каждый, но победитель получает больше.
Кооперативные / некооперативные В кооперативных участники объединяются и действуют вместе (World of Tanks); в некооперативных каждый сам за себя (стометровка).
Параллельные / последовательные В параллельных ходят одновременно (сетевая стратегия), в последовательных — по очереди (шашки).
Полная / неполная информация При полной информации игрок точно знает ходы соперника; при неполной — не знает или знает частично, как в большинстве жизненных ситуаций.
Симметричные / несимметричные В симметричных у игроков одинаковый набор стратегий: поменяй игроков местами — возможности не изменятся (дилемма заключённого).

Классификация — не формальность: она определяет метод анализа. Последовательные игры с полной информацией анализируются обратной индукцией (раздел 3), параллельные — платёжной матрицей (раздел 4), а сложные игры с неполной информацией — симуляцией (раздел 5).

3. Последовательные игры и обратная индукция

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

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

Игра «гонка до 15». Счёт начинается с нуля; игроки по очереди прибавляют 1 или 2; побеждает тот, кто первым назовёт 15. Рассуждаем с конца. Назвать 15 может тот, кто получил счёт 13 или 14 — значит, позиция 12 проигрышна для того, чей ход: любая прибавка отдаёт сопернику победу. Но тогда выигрывает тот, кто называет 12, и проигрышной становится позиция 9 — и так далее: 12, 9, 6, 3, 0. Стратегия из этого анализа: всегда ходить на число, кратное трём.

Тренажёр · гонка до 15 против обратной индукции

Правила. Счёт один на двоих и начинается с нуля. Ходы по очереди: за ход можно прибавить к счёту 1 или 2. Побеждает тот, кто своим ходом доведёт счёт ровно до 15. Ваши числа на дорожке отмечаются синим, числа компьютера — розовым.

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

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

4. Одновременные ходы: платёжная матрица

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

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

Второй молчитВторой даёт показания
Первый молчит1 / 13 / 0
Первый даёт показания0 / 32 / 2

Что бы ни выбрал второй, первому выгоднее дать показания (0 < 1 и 2 < 3) — такая стратегия называется доминирующей. Оба рассуждают одинаково, оба дают показания и получают по два года — хотя, промолчав, оба получили бы по одному. Индивидуально рациональные решения дали худший общий исход; для геймдизайнера это готовый рецепт напряжения в кооперативных механиках: сделай предательство локально выгодным.

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

Тренажёр · камень — ножницы — бумага против наблюдателя

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

вы
сделайте ход
компьютер
вы0
ничьи0
компьютер0
камень
0
ножницы
0
бумага
0

Полоски — частоты ваших ходов: по ним компьютер и целится.

5. Баланс проверяется симуляцией

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

Разберём кейс: карточная игра, в которой у двух игроков по 5 карт с номиналами от 1 до 10, карты выкладываются вслепую по одной, большая карта приносит очко. Сравнивались стратегии: всегда играть наибольшую карту (PlayHighest), наименьшую (PlayLowest), медианную (PlayMedian), случайную (Random) и другие. Результаты 20 000 партий поучительны:

Пара стратегийПобеды первойПобеды второйНичьи
PlayLowest против Random0,4540,4520,094
PlayHighest против Random0,4490,4560,095
PlayHighest против PlayLowest0,6660,2450,089
PlayMedian против PlayLowest0,6850,2470,069
PlayMedian против PlayHighest0,2810,6520,067

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

Тот же метод на C# — для простоты на разобранной выше «гонке до 15». Стратегия — функция «позиция → прибавка»; симулятор сталкивает две стратегии в серии партий:

using System;

public static class BalanceCheck
{
    // Игра «гонка до 15»: стратегия получает текущий счёт, возвращает прибавку (1 или 2)
    static readonly Random Rng = new Random();

    static int RandomStrategy(int position) => Rng.Next(1, 3);

    static int OptimalStrategy(int position)
    {
        int move = (15 - position) % 3;           // шаг до ближайшей позиции, кратной 3
        return move == 0 ? Rng.Next(1, 3) : move; // из проигрышной позиции любой ход плох
    }

    // Возвращает номер победителя (1 или 2)
    static int PlayGame(Func<int, int> first, Func<int, int> second)
    {
        int position = 0, player = 1;
        while (true)
        {
            Func<int, int> strategy = player == 1 ? first : second;
            int move = Math.Min(strategy(position), 15 - position); // нельзя перескочить 15
            position += move;
            if (position == 15) return player;
            player = 3 - player; // смена хода: 1 → 2, 2 → 1
        }
    }

    public static void Main()
    {
        const int n = 20000;
        int firstWins = 0;
        for (int i = 0; i < n; i++)
            if (PlayGame(RandomStrategy, OptimalStrategy) == 1) firstWins++;

        Console.WriteLine($"Random против Optimal: доля побед первого = {(double)firstWins / n:F4}");
    }
}

Оптимальная стратегия, ходящая второй, не проигрывает ни одной партии — ноль кратен трём, и она с первого же хода занимает проигрышные для соперника позиции. Заменив функции стратегий и правила PlayGame, этот же каркас проверяет баланс любой дуэльной механики вашей игры; в проекте Unity такой класс удобно запускать как консольную утилиту или тест редактора, не дожидаясь готового интерфейса.

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

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

Источники

  1. Нейман, Дж. фон. Теория игр и экономическое поведение / Дж. фон Нейман, О. Моргенштерн ; пер. с англ. — Москва : Наука, 1970. — 708 с.