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

Коротко: madChess похожа на шахматы, но партия начинается не с полной доски. Сначала игроки выставляют королей, а затем постепенно вводят фигуры из резерва или ходят уже выставленными фигурами. Из-за этого партия с первых ходов превращается не в заученный дебют, а в живую борьбу за пространство, темп и инициативу.
Что это такое ♟️
madChess — авторский шахматный вариант и одновременно полноценное приложение для Android/Qt. Игра сохраняет узнаваемую шахматную основу: король, ферзь, ладья, слон, конь, пешка, шах, мат и пат остаются понятными. Но стартовая позиция и развитие партии устроены иначе: вместо готовой армии на доске у каждого игрока есть резерв, из которого фигуры постепенно появляются в игре.
Идея простая: меньше зубрёжки дебютов и больше тактических решений прямо за доской. Каждый ход — это выбор между обычным шахматным ходом и выставлением новой фигуры. Поэтому приходится думать не только о том, куда пойти, но и о том, когда вообще вводить в игру новые силы.
Главные особенности
| Постепенное выставление фигур | Игрок может либо сделать ход фигурой на доске, либо поставить новую фигуру из своего резерва на свободную клетку. |
| Новая стартовая фаза | Сначала белые выставляют короля, затем чёрные выставляют своего короля. Первоначальная постановка короля запрещена на четырёх центральных клетках. |
| Запрет мгновенного шаха из резерва | Новую фигуру нельзя поставить так, чтобы король соперника сразу оказался под шахом. Обычный ход уже выставленной фигуры может давать шах. |
| Ограничение по слонам | У одного игрока не может одновременно действовать два слона одного цвета клеток. Это сохраняет смысл разноцветных слонов и не превращает материал в хаос. |
| Пешки из резерва | В хардкорном варианте пешку можно ставить на любую свободную клетку, кроме первой и восьмой горизонтали. В более спокойном варианте пешки выставляются только на своей половине доски. |
| Обычные финалы партии | Нельзя оставлять своего короля под шахом. Мат завершает партию победой атакующей стороны, пат считается ничьёй. |
Как проходит партия
- Белые выставляют короля из резерва.
- Чёрные выставляют своего короля, не нарушая запрет соседства королей.
- После постановки королей белые делают первый обычный ход партии.
- В свой ход игрок выбирает: передвинуть фигуру, которая уже стоит на доске, или выставить новую фигуру из резерва.
- Партия развивается по обычной шахматной логике: шах, мат, пат, безопасность своего короля и допустимые ходы проверяются игровым ядром.
Чем это интересно: в обычных шахматах первые ходы часто идут по известным дебютным схемам. В 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
