Обо мне

Меня зовут Андрей Куклинов. Я выпускник бакалавриата УрФУ «Фундаментальная информатика и информационные технологии».
Поступаю в магистратуру ВШЭ «Системный геймдизайн» на роль геймдизайнера.
Outdoors


Outdoors — простая игра о строительстве города на постепенно открывающейся карте.
Жанр: стратегия-пазл Движок: Unity Команда разработки: 2 человека
Моя роль в команде: — Управление работой — Создание механики игры — Программирование
Задумка

Эта игра была сделана в качестве университетского проекта. Поставленная задача — за один семестр создать полноценную MVP-версию новой компьютерной игры.
Основная идея Outdoors — использовать механику постепенного раскрытия процедурно-генерируемой карты из серии игр Civilization и сделать на ее основе простую игру про размещение синергирующих зданий.
Игровой процесс

Цель игрока — заработать как можно больше очков. Для этого он вынужден балансировать между конфликтующими задачами.
Его очки складываются из двух частей — производство и население.

Чтобы повышать производство, игрок должен размещать здания рядом с клетками поля такого же цвета.

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

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

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

Проблема: Как сделать так, чтобы здания взаимодействовали и с клетками случайно сгенерированного поля, и друг с другом, для создания стратегической глубины?
Испробованные решения:
- Выдавать игроку ресурсы за строительство зданий рядом с клетками такого же цвета, которые потом используются для строительства других зданий. (Почему нет: игра заканчивается, когда у игрока заканчиваются ресурсы. Если игрок зарабатывает ресурсы в ходе игры, он только отдаляет конец. Это не очень заметно и противопоставлять другим задачам неинтересно)
- Увеличивать дальность эффектов зданий за каждую соседнюю клетку определенного цвета (Почему нет: клетки начинают иметь слишком большое значение, каждое здание оптимально ставить с наибольшим числом подходящих клеток)
Выбранное решение: Выдавать два вида победных очков и перемножать их. Это означает, что игрок должен держать баланс двух целей и всегда видит, с какой он справляется хорошо, а в какой отстает.

Проблема: Если создавать поле абсолютно случайно, то получается слишком много одинаковых клеток.
Выбранное решение: Поделить поле на «чанки», в которых число всех видов клеток одинаковое. Это дает дизайнеру удобный рычаг — размер чанка, позволяющий определить, насколько поле равномерно распределено.
Ambush

Ambush — пошаговая игра для двух человек о формировании боевых построений.
Жанр: стратегия, дуэль Движок: Godot Команда разработки: 2 человека
Моя роль в команде: — Управление работой — Создание механики игры — Программирование
Задумка

Изначально Ambush была настольной игрой.
Основная идея — сделать абстрактную дуэльную игру (наподобие шахмат или улья) с небольшим элементом скрытой информации для уменьшения горизонта планирования.

В качестве университетского проекта, я адаптировал ее в компьютерную игру, чтобы в нее можно было играть по сети.
Игровой процесс

Цель игры — первым выставить все свои 9 фишек на поле.

Каждая фишка выставляется по своим правилам.
Меч можно поставить на одну прямую с уже поставленной фишкой, лук на одну диагональ и щит на соседнюю клетку.

Главный фокус игры — три секретных плана засады, выдаваемые каждому игроку в начале игры.

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

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

Проблема: Как в игру в жанре шахмат добавить скрытую информацию, которая не обесценит стратегическое усердие игроков?
Выбранное решение: Полная колода состоит всего из 9 планов засад. Это означает, что игроки помнят, какие засады бывают в игре, и про каждую могут сказать, что она есть у соперника с вероятностью 50%.

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

Орбита — настольная игра со скрытым аукционом о космических гонках.
Жанр: филлер, аукцион Число игроков: 2-4 Время игры: 15-30 минут Команда разработки: 1 человек
Моя роль в команде: — Создание концепта и правил игры — Прототипирование и тестирование
Задумка

После изучения гоночных игр Heat: Pedal to the Metal и Joyride мне захотелось сделать свою настольную игру о гонках в космосе.
Моей главной идеей было совместить жанры аукцион и push-your-luck. Создать игру, в которой игрок делал бы ставки в аукционе, не зная, насколько много он на самом деле ставит. Таким образом, я хотел создать простую настольную игру, передающую ощущение опасных космических гонок.
Игровой процесс

Цель игры — пролететь два круга по орбите планеты раньше остальных игроков.

В начале игры у каждого игрока есть 8 единиц топлива. Каждый ход игроки втайне выбирают, сколько топлива поставить: от 0 до 8.

Затем все игроки раскрывают свой выбор. Те, кто поставили самое большое число, выигрывают аукцион и могут подвинуть свой корабль ближе к цели.
Но вот главная особенность игры: игрок должен потратить не столько топлива, сколько он поставил, а разность между его ставкой и следующей по величине.
Например, если самая большая ставка — 7, а следующая за ней — 5, то победитель должен потратить всего 7 минус 5, то есть 2 топлива.
Если игрок не может заплатить, его ход пропускается и он восстанавливает 1 топливо.

Все кто смог заплатить цену в топливе двигают свой корабль по часовой стрелке на число шагов, указанное напротив деления, где сейчас находится их корабль.
Например, синий корабль стоял напротив цифры 3 и подвинется на 3 деления вперед.

Когда все победители аукциона подвинули свои корабли, планета поворачивается на одно деление против часовой стрелки. То есть даже если игрок не двигался, напротив его корабля окажется новое число.

Каждый ход игрок должен оценить ситуацию и предугадать действия других игроков.
Чьи корабли стоят напротив большого числа и кто собирается поставить много топлива?
Стоит ли пытаться выиграть аукцион прямо сейчас, или стоит подождать, пока рядом с кораблем окажется другое число?
Задача игрока — вовремя сделать достаточно большую ставку, чтобы подвинуть свой корабль на большое расстояние; но при этом не слишком сильно превзойти ставки других игроков, чтобы не остаться без топлива на полпути к финишу.
Трудности и решения

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

Проблема: Ставки игроков постепенно повышаются. Чем больше людей играют высокие числа, тем безопаснее становится играть высокие числа. Как сделать так, чтобы высокие ставки сохраняли ощущение опасности до конца партии?
Выбранное решение: Ставки, которые делает игрок — карты в его руке. Сыграв карту, игрок больше не может ее использовать, пока не сыграет 0. Таким образом, опции игрока постепенно сужаются, пока он не выберет ставку 0. Это означает, что в любой ход игроки могут опасаться появления низкой ставки, и выбор в пользу высокой карты всегда остается напряженным.
Дополнительный опыт
Участие в геймджемах

GMTK 2023 Windflow — игра, в которой игрок управляет ветром, чтобы передвигать корабли.
Жанр: экшн Движок: Unity Команда разработки: 2 человека
Моя роль в команде: — Управление работой — Создание механики игры — Программирование

GMTK 2024 Colorbelt — игра о строительстве фабрик, производящих цветные цифры.
Жанр: пазл Движок: Godot Команда разработки: 2 человека
Моя роль в команде: — Управление работой — Создание механики игры — Программирование
Настольные игры

Остров — настольная игра о пиратах, собирающих сокровища. Каждый ход игроки взакрытую выбирают, какой столбец или строку сокровищ с острова они хотят забрать себе. Но если игрок, который ходит позже, выбирает такой же срез как и вы, то он может вас ограбить, и вы останетесь ни с чем.
Жанр: set-collection, блеф Число игроков: 2-4 Время игры: 20-30 минут Команда разработки: 1 человек
Моя роль в команде: — Создание концепта и правил игры — Прототипирование и тестирование

Месопотамия — настольная игра о зарождении цивилзиации и торговле ресурсами. Игроки имеют руку карт, которые позволяют выставлять фишки на поле. Однако игрок не может разыгрывать карты прямо со своей руки, а вместо этого должен выменивать их у других игроков.
Жанр: контроль территорий, переговоры Число игроков: 2-4 Время игры: 30-40 минут Команда разработки: 1 человек
Моя роль в команде: — Создание концепта и правил игры — Прототипирование и тестирование

Лжепокер — настольная игра для стандартной колоды игральных карт. Цель игры — накопить как можно меньше карт к концу игры. Однако, у каждого игрока есть секретный набор карт, которые он обязан взять. Если соперник угадает эти карты, то игрок получает штраф. Поэтому игрок пытается взять как можно меньше карт, но иногда берет лишние, чтобы оппонент не догадался, какие он взял недобровольно.
Жанр: блеф Число игроков: 2 Время игры: 10-20 минут Команда разработки: 1 человек
Моя роль в команде: — Создание концепта и правил игры — Прототипирование и тестирование
Программирование

Создание игр в движках Unity и Godot.
Разработка на языках C# и Python.

Мой дипломный проект — разработка ИИ-соперника для игры Ambush на языке Python.
Моей целью было создать бота, способного бросить вызов человеку. Получилась программа, побеждающая опытного игрока примерно в 30% партий.
Я научился работать с алгоритмами ИИ для пошаговых игр и выяснил, что моя игра Ambush обладает достаточной глубиной, чтобы не быть полностью решенной простым алгоритмом.




