Главное Авторские колонки Пресс-релизы Промо Вакансии Вопросы
😼
Выбор
редакции
135 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Почему бесплатный Stockfish — это ещё не готовый шахматный продукт

Когда я начал делать ChessNavio, самый неприятный вопрос оказался не техническим: если Stockfish бесплатный и играет сильнее человека, за что здесь вообще предлагать платить? Вопрос справедливый. Движок можно запустить самостоятельно, а бесплатный анализ партий есть на крупных шахматных сайтах. Продавать ещё одно поле
Мнение автора может не совпадать с мнением редакции

ChessNavio показывает ход и короткое объяснение рядом с доской

Что действительно даёт Stockfish

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

Ссылка на официальный проект: официальный репозиторий Stockfish.

На чистой тестовой странице подключить движок было несложно. Передал позицию, дождался ответа, нарисовал стрелку. Настоящие проблемы начались в обычном браузере.

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

Даже правильный ответ бесполезен, если он рассчитан для соседней доски или для позиции, которая уже успела измениться.

Где заканчивается движок и начинается продукт

Сейчас я делю задачу на несколько частей.

  1. Расширение находит нужную доску и читает позицию.
  2. Отдельная логика определяет контекст страницы и состояние партии.
  3. Движок рассчитывает несколько продолжений.
  4. Интерфейс показывает стрелку, варианты и короткое объяснение.
  5. История сохраняет уже разобранные позиции и партии.
  6. Аккаунт связывает доступ, устройства и облачные данные.

Ни один пункт сам по себе не выглядит особенно впечатляющим. Но если убрать любой из них, пользователь быстро оказывается перед сырым движком, технической ошибкой или подсказкой, которой уже нельзя доверять.

Именно поэтому я перестал считать ChessNavio «оболочкой над Stockfish». Движок здесь важный, но заменяемый компонент. Продуктовая часть находится вокруг него: в контексте, надёжности и коротком пути от доски до понятного ответа.

Как этот сценарий выглядит для пользователя, показано на странице шахматного помощника ChessNavio.

Одного совпадения по клеткам недостаточно: расширение проверяет контекст страницы и участие пользователя

Почему расчёт работает на компьютере пользователя

На раннем этапе казалось логичным отправлять позицию на сервер. Так проще держать одну версию движка, обновлять её и контролировать доступ. Но у этого решения быстро проявились недостатки.

Каждая подсказка превращается в сетевой запрос. Время ответа начинает зависеть не только от расчёта, но и от соединения. Вместе с аудиторией растут серверные расходы, хотя у пользователя уже есть компьютер, способный выполнить ту же работу. Наконец, сервер начинает получать позиции активной сессии, без которых вполне можно обойтись.

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

У такого решения есть приятное экономическое свойство: дополнительный расчёт почти не увеличивает инфраструктурный счёт проекта. Это позволяет оставить бесплатный режим и не считать каждую секунду работы движка как отдельную серверную затрату.

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

За что тогда платить

Я не считаю, что пользователь должен платить за право вызвать Stockfish. Движок открыт, и скрывать это было бы странно. Платная ценность должна оставаться даже в мысленном эксперименте, где завтра вместо Stockfish подключён другой совместимый движок.

Для ChessNavio эта ценность складывается из нескольких вещей:

  1. помощник находится рядом с доской, а не в отдельной вкладке;
  2. позицию не нужно переносить вручную;
  3. можно увидеть не только один сильнейший ход, но и несколько вариантов;
  4. уровни силы нужны для более правдоподобной тренировки, а не для постоянной игры на максимуме;
  5. история и настройки не пропадают при смене устройства;
  6. адаптеры поддерживаются после изменений на шахматных сайтах;
  7. интерфейс объясняет состояние обычным языком вместо вывода кодов движка.

Бесплатный режим здесь нужен не как декоративная кнопка. До оплаты человек должен проверить, распознаётся ли его доска, понятны ли подсказки и подходит ли ему сам способ работы. Если ценность нельзя увидеть до покупки, обещания на лендинге её не заменят.

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

Открытый код не означает отсутствие обязательств

У Stockfish лицензия GPL v3. Она разрешает использовать и продавать программы на основе движка, но при распространении нужно сохранить лицензию и предоставить исходный код точной версии либо понятную ссылку на него. Если движок изменён, соответствующие изменения также должны быть доступны на условиях лицензии.

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

Мне нравится такое ограничение. Оно заставляет сразу отделять открытый компонент от собственной продуктовой логики и не выдавать чужую работу за свою.

Неудобная граница использования

У шахматного помощника есть очевидный риск: движковая подсказка во время рейтинговой партии с человеком считается читерством и запрещена большинством площадок. Переименование функции в «обучение» ничего не меняет.

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

Технически невозможно одним переключателем сделать универсальный инструмент честным или нечестным. Но можно не прятать границу, не строить рекламу на обещании лёгких побед и развивать те режимы, где объяснение позиции действительно помогает учиться.

Что я проверяю сейчас

Сейчас меня интересует не то, насколько глубоко Stockfish умеет считать. С этим как раз всё понятно. Я проверяю более приземлённые вещи.

Понимает ли человек, зачем ему помощник рядом с доской? Достаточно ли одного хода или нужны варианты и объяснение? Нужна ли облачная история, если основная работа идёт локально? Готов ли пользователь установить расширение вручную ради такого сценария?

Ответы на эти вопросы определят продукт сильнее, чем очередное увеличение глубины анализа.

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

Если вы строили коммерческий продукт на основе открытого компонента, в какой момент пользователи начинали воспринимать ценность именно вашего продукта, а не библиотеки или движка внутри него?

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем