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

Коротко: madChess похожа на шахматы, но партия начинается не с полной доски. Сначала игроки выставляют королей, а затем постепенно вводят фигуры из резерва или ходят уже выставленными фигурами. Из-за этого партия с первых ходов превращается не в заученный дебют, а в живую борьбу за пространство, темп и инициативу.
Закрыты замечания аудита безопасности, починен диалог сохранения партии.
Ход компьютера теперь может считаться в облаке. На странице «О программе» рядом с выбором движка появилась кнопка «Облако»: позиция уходит на сервер, ответ приходит за доли секунды, а сложность соперника честно работает и там. Просмотр сохранённой партии стал внятным: аватары и имена игроков по бокам доски, подпись, чей это ход, и последний ход внизу экрана — нажатие открывает полную историю. Название партии, введённое без сети — в метро или электричке, — теперь само доезжает до сервера, как только связь возвращается. Веб-версия на телефоне больше не разваливает окно архива, аватары появляются сразу при запуске, а падение при смене профиля вылечено.
Накопленное к сборке 0.45.48:
Имя и лицо теперь ваши. Раньше профиль, заведённый через Яндекс, получал никнейм и аватар из аккаунта провайдера, и поменять их было нечем: если в Яндексе имя не заполнено, игрок навсегда оставался «Игроком». Теперь никнейм и аватар меняет любой пользователь, провайдер даёт только первое значение, а повторный вход больше не затирает выбранную картинку.
Свой почтовый адрес виден в профиле — тот самый, которым вы входите. Чужие адреса при этом по-прежнему никому не показываются.
Фильтр по рейтингу при создании лобби стал необязательным. По умолчанию он выключен: комната открыта всем, поля с ограничениями не мешают. Заодно починено поле максимального рейтинга — оно упиралось в 99 вместо 9999, из-за чего верхняя граница работала совсем не так, как задумано.
Видно, кто из друзей в сети — прямо в списке приглашения в комнату. Звать за доску человека, которого нет за экраном, больше не нужно.
Плюс то, что накопилось с прошлой публичной сборки: обратная связь со скриншотом прямо из программы, честный индикатор загрузки вместо декоративного, вменяемая прокрутка длинных страниц, аккуратные карточки меню — и переключение шахматного движка: на странице «О программе» выбирается Fairy-Stockfish или собственный madChessCore. Из APK при этом уехали лишние разрешения: камера, микрофон и доступ к хранилищу больше не запрашиваются.
Рад сообщить, что некоторые этапы прежней дорожной карты успешно пройдены, хоть и с поправками на суровую реальность.
Что уже работает:
Веб-версия запущена и работает в штатном режиме на Linux-сервере. На данный момент это, по сути, полноценная браузерная копия игры, пока без расширенного комьюнити-функционала.
Механизм автообновлений для Windows реализован и проходит активную обкатку. Не буду лукавить, тут пока что весь процесс идет «через жопу», но главное - не топчется на месте и я держу его под контролем. Это позволит избежать зоопарка устаревших версий у пользователей при будущих публичных сборках.
Выпуск версии для устройств Apple по-прежнему отложен на более поздний этап. Так как я не являюсь счастливым обладателем Macbook или iPhone, полноценное тестирование на этих ОС для меня сейчас невозможно.
ROADMAP
Новые приоритеты:
В настоящий момент фокус смещается на более фундаментальные вещи. Главная задача на ближайшее время - защита от бабуинов из Нижнего Интернета. Далее: собственный движок madChessCore уже вышел на паритет по силе с Fairy Stockfish — на контрольном gauntlet против Fairy-Stockfish 11.1 он удерживает результат выше 70% побед, а по числу узлов на ход подтверждённо сильнее базовой линии. Программная прослойка для интеграции уже написана и работает: начиная со сборки 0.45.48 движок переключается прямо в интерфейсе, на странице «О программе», так что Fairy-Stockfish и madChessCore можно сравнивать на одной и той же доске. Тут, кстате, довольно любопытный процесс - это тысячи пробных партий, какие-то выводы - поправики, снова тысячи партий - опять выводы и поправки - и так далее. Такая бесконечная битва роботов.
После завершения данного этапа, ориентировочно через неделю-две, планирую вплотную заняться доработкой самой программы и приведением её в соответствие с требованиями ключевых маркетплейсов, таких как RuStore и Play Market.
Финансовые и юридические нюансы:
Вопрос с приобретением лицензии Qt временно заморожен. Текущая неблагоприятная политическая обстановка делает проведение международных платежей крайне затруднительным, поэтому этот шаг пока откладывается.
Что это такое ♟️
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 и собственный движок madChessCore — какой из двух считает ходы, выбирается на странице «О программе». Позиция преобразуется в формат движка, допустимые действия фильтруются игровым ядром, а расчёт выполняется вне 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
