madChess

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

madChess

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

Исходники madChess на GitHub

Что это такое ♟️

madChess — авторский шахматный вариант и одновременно полноценное приложение для Android/Qt. Игра сохраняет узнаваемую шахматную основу: король, ферзь, ладья, слон, конь, пешка, шах, мат и пат остаются понятными. Но стартовая позиция и развитие партии устроены иначе: вместо готовой армии на доске у каждого игрока есть резерв, из которого фигуры постепенно появляются в игре.

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

Главные особенности

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

Как проходит партия

  1. Белые выставляют короля из резерва.
  2. Чёрные выставляют своего короля, не нарушая запрет соседства королей.
  3. После постановки королей белые делают первый обычный ход партии.
  4. В свой ход игрок выбирает: передвинуть фигуру, которая уже стоит на доске, или выставить новую фигуру из резерва.
  5. Партия развивается по обычной шахматной логике: шах, мат, пат, безопасность своего короля и допустимые ходы проверяются игровым ядром.

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

Режимы игры 🎮

Локальная партия

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

Игра против компьютера

В приложении есть PvE-режим: человек играет против встроенного шахматного движка. Для расчёта используется адаптированный Fairy-Stockfish, который умеет работать с шахматными вариантами и был встроен в проект как статическая библиотека.

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

Сетевая игра

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

  • Быстрый матч — приложение создаёт или подбирает подходящее лобби.
  • Поиск лобби — список открытых и парольных комнат.
  • Код партии — вход в конкретное лобби по идентификатору.
  • Зрители — можно наблюдать за сетевой партией.
  • Чат — сообщения в лобби и поверх доски во время сетевой игры.

Архив партий

Партии можно сохранять в архив, давать им названия, открывать позже и просматривать ход за ходом. Для активного сетевого профиля история может синхронизироваться с сервером.

Профили, друзья и общение 👤

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

  • Локальный профиль — можно играть без регистрации.
  • Сетевой профиль — нужен для сетевых функций, истории, друзей и рейтинга.
  • Аватар — можно выбрать встроенный вариант или загрузить своё изображение.
  • Публичная карточка игрока — профиль, рейтинг, статистика и состояние отношений.
  • Друзья — заявки, список друзей, приглашения в лобби и личная переписка.

Интерфейс и оформление 🪵

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

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

  • адаптивная доска и резервы фигур;
  • верхнее меню с быстрым доступом к ходам, настройкам и статусу партии;
  • шторка истории ходов;
  • нижний чат с настройкой прозрачности;
  • экранная клавиатура Qt Virtual Keyboard для Android;
  • мастерская оформления: наборы фигур, текстуры доски, фон приложения и AI-аватары.

Техническая часть ⚙️

Клиент Qt 6, QML/Qt Quick, C++, Qt Concurrent, Qt Network. Основная цель — Android, также в проекте предусмотрена настольная сборка.
Игровое ядро Правила вынесены в C++-движок GameEngine. Он проверяет обычные ходы, выставления из резерва, шах, мат, пат, соседство королей и безопасность собственного короля.
ИИ MadChessAI + FairyStockfishBridge. Позиция преобразуется в формат движка, допустимые действия фильтруются игровым ядром, а расчёт выполняется вне GUI-потока.
Сервер C++20 backend на Drogon, MySQL, systemd, reverse proxy через веб-сервер. Сервер отвечает за профили, сессии, лобби, сетевые партии, друзей, чат, рейтинг и медиа-файлы.
Сеть Клиент обращается к API по HTTPS. Синхронизация сетевой партии в текущем контуре выполняется через периодический REST polling.
Сторонние компоненты Fairy-Stockfish используется как движок для расчёта ходов в шахматном варианте. При распространении сборок важно учитывать требования лицензии GPL.

Сборка из исходников 🛠️

Для сборки удобнее открыть корневой CMakeLists.txt в Qt Creator и выбрать подходящий комплект Qt. Для Android используется Qt 6.x Android Clang, а проверять производительность лучше в конфигурации Release, потому что Debug-сборка QML заметно тяжелее.

git clone https://github.com/madmentat/madChess.git
cd madChess
git checkout release

После первой настройки проекта Qt Creator сам создаст каталог сборки. Старую папку build лучше не переносить между разными версиями Qt, Android SDK/NDK и ABI.

Для кого эта программа

  • для тех, кому нравятся шахматы, но хочется свежей игровой идеи без стандартной дебютной колеи;
  • для экспериментов с шахматными вариантами, резервами и необычной динамикой партии;
  • для разработки на Qt/QML/C++ с Android-сборкой, серверным API и сетевой синхронизацией;
  • для тестирования собственного шахматного клиента, профилей, чатов, лобби и рейтинговой системы.

FAQ ❓

Это обычные шахматы?

Нет. Фигуры ходят узнаваемо, но старт партии и ввод материала отличаются. Главная особенность — постепенное выставление фигур из резерва.

Можно играть без регистрации?

Да. Локальная игра и базовый профиль не требуют сетевой авторизации. Сетевые функции, друзья, рейтинг и синхронизация истории требуют сетевого профиля.

ИИ играет по тем же правилам?

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

Почему не WebSocket?

В текущем рабочем контуре сетевой партии используется REST polling. Это проще для отладки и достаточно для первого сетевого MVP. WebSocket логично добавить как следующий этап развития сетевой игры.

Можно менять внешний вид?

Да. В проекте есть мастерская оформления: можно работать с наборами фигур, текстурами доски, фоном приложения и аватарами ИИ.


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

2026 madmentat