Исходный размер 600x842

Портфолио Андрея Куклинова

PROTECT STATUS: not protected

Обо мне

post

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

Поступаю в магистратуру ВШЭ «Системный геймдизайн» на роль геймдизайнера.

Outdoors

big
Исходный размер 1152x647
post

Outdoors — простая игра о строительстве города на постепенно открывающейся карте.

Жанр: стратегия-пазл Движок: Unity Команда разработки: 2 человека

Моя роль в команде: — Управление работой — Создание механики игры — Программирование

Ссылка на игру

Задумка

post

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

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

Игровой процесс

post

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

Его очки складываются из двух частей — производство и население.

post

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

post

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

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

post

Итоговый счет игрока равен производство умножить на население.

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

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

Вызов игры — решить, какие здания строить и в каком порядке, чтобы одновременно выполнить две игровые задачи.

post

Еще один вопрос, который игра задает игроку — в какую сторону расширять свою территорию.

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

Таким образом, решения, куда двигаться, и какие здания строить, переплетены.

Трудности и решения

post

Проблема: Как сделать так, чтобы здания взаимодействовали и с клетками случайно сгенерированного поля, и друг с другом, для создания стратегической глубины?

Испробованные решения:

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

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

post

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

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

Ambush

Исходный размер 1152x609
post

Ambush — пошаговая игра для двух человек о формировании боевых построений.

Жанр: стратегия, дуэль Движок: Godot Команда разработки: 2 человека

Моя роль в команде: — Управление работой — Создание механики игры — Программирование

Ссылка на игру

Задумка

post

Изначально Ambush была настольной игрой.

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

post

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

Игровой процесс

post

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

post

Каждая фишка выставляется по своим правилам.

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

post

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

post

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

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

post

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

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

В итоге получается очень короткая и простая, но глубокая и напряженная стратегическая игра.

Трудности и решения

post

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

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

post

Проблема: Как адаптировать настольную игру с необычными правилами в компьютерный вариант?

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

Орбита

Исходный размер 1152x521
post

Орбита — настольная игра со скрытым аукционом о космических гонках.

Жанр: филлер, аукцион Число игроков: 2-4 Время игры: 15-30 минут Команда разработки: 1 человек

Моя роль в команде: — Создание концепта и правил игры — Прототипирование и тестирование

Правила игры Прототип в тейблтопии

Задумка

post

После изучения гоночных игр Heat: Pedal to the Metal и Joyride мне захотелось сделать свою настольную игру о гонках в космосе.

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

Игровой процесс

post

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

post

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

post

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

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

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

Если игрок не может заплатить, его ход пропускается и он восстанавливает 1 топливо.

post

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

Например, синий корабль стоял напротив цифры 3 и подвинется на 3 деления вперед.

post

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

post

Каждый ход игрок должен оценить ситуацию и предугадать действия других игроков.

Чьи корабли стоят напротив большого числа и кто собирается поставить много топлива?

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

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

Трудности и решения

post

Проблема: Как создать игру, передающую ощущение опасных космических гонок?

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

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

post

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

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

Дополнительный опыт

Участие в геймджемах

post

GMTK 2023 Windflow — игра, в которой игрок управляет ветром, чтобы передвигать корабли.

Жанр: экшн Движок: Unity Команда разработки: 2 человека

Моя роль в команде: — Управление работой — Создание механики игры — Программирование

Ссылка на игру

post

GMTK 2024 Colorbelt — игра о строительстве фабрик, производящих цветные цифры.

Жанр: пазл Движок: Godot Команда разработки: 2 человека

Моя роль в команде: — Управление работой — Создание механики игры — Программирование

Ссылка на игру

Настольные игры

post

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

Жанр: set-collection, блеф Число игроков: 2-4 Время игры: 20-30 минут Команда разработки: 1 человек

Моя роль в команде: — Создание концепта и правил игры — Прототипирование и тестирование

post

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

Жанр: контроль территорий, переговоры Число игроков: 2-4 Время игры: 30-40 минут Команда разработки: 1 человек

Моя роль в команде: — Создание концепта и правил игры — Прототипирование и тестирование

post

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

Жанр: блеф Число игроков: 2 Время игры: 10-20 минут Команда разработки: 1 человек

Моя роль в команде: — Создание концепта и правил игры — Прототипирование и тестирование

Программирование

post

Создание игр в движках Unity и Godot.

Разработка на языках C# и Python.

post

Мой дипломный проект — разработка ИИ-соперника для игры Ambush на языке Python.

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

Я научился работать с алгоритмами ИИ для пошаговых игр и выяснил, что моя игра Ambush обладает достаточной глубиной, чтобы не быть полностью решенной простым алгоритмом.

Репозиторий проекта

Портфолио Андрея Куклинова
Проект создан 25.07.2025
Мы используем файлы cookies для улучшения работы сайта НИУ ВШЭ и большего удобства его использования. Более подробную...
Показать больше