madChess

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

madChess

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

ЧТО НОВОГО В 0.45.78

Закрыты замечания аудита безопасности, починен диалог сохранения партии.

Ход компьютера теперь может считаться в облаке. На странице «О программе» рядом с выбором движка появилась кнопка «Облако»: позиция уходит на сервер, ответ приходит за доли секунды, а сложность соперника честно работает и там. Просмотр сохранённой партии стал внятным: аватары и имена игроков по бокам доски, подпись, чей это ход, и последний ход внизу экрана — нажатие открывает полную историю. Название партии, введённое без сети — в метро или электричке, — теперь само доезжает до сервера, как только связь возвращается. Веб-версия на телефоне больше не разваливает окно архива, аватары появляются сразу при запуске, а падение при смене профиля вылечено.

Накопленное к сборке 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. Игра сохраняет узнаваемую шахматную основу: король, ферзь, ладья, слон, конь, пешка, шах, мат и пат остаются понятными. Но стартовая позиция и развитие партии устроены иначе: вместо готовой армии на доске у каждого игрока есть резерв, из которого фигуры постепенно появляются в игре.

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

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

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

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

  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 и собственный движок 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