Задача
«Колонисты» стали моей второй задачей на Cristalix после релиза «Морского боя». Нужно было перенести на сервер знакомую механику Catan и встроить её в группу настольных режимов
За основу взял выданное ТЗ и Catan Universe в Steam. При этом требовалось не просто повторить правила оригинала, а адаптировать игру под существующую инфраструктуру нашего проект его интерфейсы и формат матчей
На выходе должен был получиться режим, в котором игроки собирают ресурсы, строят поселения и дороги, торгуются и конкурируют за победные очки
Как устроен режим
В основе лежит понятный игровой цикл:
- игроки получают ресурсы за активные клетки поля;
- используют их для строительства дорог, поселений и городов;
- обмениваются ресурсами между собой;
- развивают свою часть острова и набирают победные очки;
- реагируют на действия соперников и меняют стратегию по ходу матча
Главная сложность здесь не в отдельных кнопках, а в большом количестве связанных состояний. Одно действие меняет баланс ресурсов, доступные постройки, очки, состояние поля и возможности других игроков. Поэтому каждое правило нужно было реализовать так, чтобы оно одинаково работало для клиента, сервера, наблюдателя и игрового бота
Боты для разработки и тестирования
Как и в Морском бое, я использовал систему ботов для разработчика. Во время демонстрации команды заметили, что такой инструмент можно превратить в полноценного игрового соперника, и мне предложили реализовать ботов именно для «Колонистов»
Бот умеет реагировать на события матча и принимать собственные решения на основе математических расчётов. Он не просто нажимает случайные кнопки, а проходит тот же игровой цикл, что и реальный игрок: получает ресурсы, выбирает доступные действия, строит и учитывает последствия своих решений
Игровые боты позволили запускать полноценные партии без постоянного ручного управления вторым игроком
Это заметно ускорило разработку. Я мог быстро проверять начало матча, торговлю, строительство, переходы между этапами и финальное состояние игры. Одновременно стало проще находить ошибки, которые сложно воспроизвести в коротком ручном тесте

Что было сложнее всего
Синхронизация состояния
В режиме много данных, которые должны обновляться согласованно: ресурсы игроков, доступные постройки, занятые участки, текущая фаза хода и результаты действий. Ошибка в одном месте быстро превращается в нечестное преимущество или блокирует матч
Поэтому важные проверки должны выполняться на сервере, а клиенту остаётся корректно показать результат. Это особенно важно для торговли и строительства - игрок должен сразу понимать, почему действие доступно или почему сервер его отклонил
Понятный интерфейс
Игроку нужно одновременно следить за полем, ресурсами, стоимостью построек, ходом соперников и собственными вариантами развития. Если спрятать важную информацию слишком глубоко, темп матча падает. Если показать всё сразу, интерфейс начинает конкурировать с самой игрой
Я выстраивал интерфейс вокруг текущего решения игрока: что можно сделать прямо сейчас, сколько это стоит и к чему приведёт. Такой подход помогает быстрее включиться в матч и не тратить время на изучение лишних экранов
Проверка разных сценариев
Настольные игры особенно чувствительны к редким комбинациям действий. Нужно проверять не только удачный матч, но и отмены, нехватку ресурсов, спорные сделки, смену владельца участка и завершение партии с разными наборами очков
Здесь боты стали не отдельной демонстрационной функцией, а рабочим инструментом разработки. С ними можно было прогонять повторяемые сценарии и быстрее находить проблемы в логике
Что получилось
В результате появился полноценный режим для настольной группы Cristalix, адаптированный под сам Майнкрафт и серверную архитектуру проекта