Lichess

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:24, 14 января 2019.
Lichess
1200px-Lichess Logo.svg.png
Type of site
Бесплатный, открытый шахматный сервис
Available in Английский
Owner Тибо Дюплессис
Created by Тибо Дюплессис
Editor Сообщество
Website lichess.org
Launched 2010 год
Current status Активное
IP address 37.187.205.99
Lichess - бесплатный, открытый шахматный сервис, созданный французским программистом Тибо Дюплесси (Thibault Duplessis). Программное обеспечение, используемое на сервере, является открытым и распространяемым под свободной лицензией AGPL.

История развития

В 2010 году Тибо Дюплессис начал работу над Lichess как хобби. Сайт был прост в начале, даже не проверяя, являются ли ходы законными. Он создал сайт с открытым исходным кодом, а это значит, что любой может свободно читать исходный код и делать свои вклады. Постепенно сайт улучшался и собрал пользователей в качестве энтузиастов, волонтеров, собранных, чтобы помочь Thibault построить и поддерживать сайт.

Сегодня пользователи Lichess играют более миллиона игр каждый день. Lichess - один из самых популярных шахматных сайтов в мире, оставаясь на 100% свободным. Большинство «бесплатных» сайтов существуют на продаже рекламы или пользовательских данных. Другие делают свои сервисы платными. Lichess ничего из этого не делает и никогда не будет. Без инвесторов, требующих прибыли, персонал Lichess может сосредоточиться на улучшении сайта с единственной целью.

Особенности

  • Игра в шахматы онлайн с другими игроками.
  • Игра с компьютером, другом или случайным противником.
  • Игра с людьми, которые соответствуют вашим желаемым настройкам.
  • Обсуждение на форуме.
  • Регистрация не требуется.[Источник 1]

Несмотря на скромное происхождение Lichess, игра в шахматную игру далека от единственного, что можно делать в Lichess. После окончания игры вы можете запросить компьютерный анализ с использованием новейшего шахматного движка Stockfish и узнать о своих ошибках или сравнить свою игру с массивной базой данных игр шахматных мастеров. Вы можете посмотреть, как лучшие игроки сражаются в прямом эфире и обсуждают игру с друзьями; даже чемпионы мира играют в Lichess! Игроки, желающие улучшить, могут нанять тренера и использовать совместные «исследования» в режиме реального времени, чтобы делиться своими играми и мыслями.

Для сайта размером с Lichess требуется много людей для его поддержания. Это также требует денег для оплаты серверов и других услуг хостинга. Количество людей, которые способствовали этим вещам, трудно точно подсчитать, но они относятся к следующим категориям:

  • Lichess не существовали бы без тысяч человек/часов от добровольцев, как от разработчиков, создающих новые функции и / или ошибки, так и административной команды, которые следят за сайтом и помогают в долгосрочной перспективе.
  • Благотворители обеспечивают постоянный поток доходов на сайт, достаточный для обслуживания наших серверов и обработки расходов.
  • Наконец, игроки, которые приходят в Lichess, веселятся, отдыхают и учатся, без которых все это будет бессмысленно![Источник 2]

Режимы игры

  • Crazyhouse (Можно вернуть захваченные фигуры обратно на стол)
  • Chess960 (Случайное начальное расположение для фигур заднего фланга)
  • Antichess (Игрок выигрывает в том случае, когда потеряет все свои фигуры)
  • Atomic (Когда фигура захвачена, она взрываются, забирая с собой своих соседей)
  • Racing Kings (Первым доберитесь своим королем на другую сторону доски)
  • King of the Hill (Первым доберитесь своим королем до центральной клетки)
  • Three-Check (Необходимо следить шах три раза, чтобы одержать победу)
  • Horde (Обычная шахматная армия против орды пешки)

Алгоритмы работы

Мат за N шагов

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

Следующий этап немного сложнее. Позиция, которая получает оценка «Мат за N шагов», может иметь широкий спектр решений, отделяющихся друг от друга до окончательного решения. Недостаточно просто разобрать позицию на Stockfish (самый мощный шахматный движок) и скопировать-вставить единственное решение, которое оно предлагает, и назвать, это окончательным решением.

Рисунок 1 – Мат за N шагов

Естественно, потребуется использовать рекурсивный алгоритм. В каждом исходном положении необходимо создать список потенциальных ходов. Ходы сдвигаются и новые позиции (ноды) добавляются в древо решений.

На каждом ноде Stockfish запускается в течение пары секунд, при этом параметр multi_pv устанавливается равным 50 (например, Stockfish просят оценить 50 потенциальных ходов). Затем вывод UCI анализируется с помощью регулярного выражения для создания списка потенциальных ходов. Каждый из этих шагов затем индивидуально исследуется Stockfish более глубоко, чтобы установить точную оценку. Движения, которые приводят к мату в минимальном количестве ходов, также являются решениями; ходы, которые приводят к мату в 1 или 2 дополнительных ходах, считаются повторениями, то есть пользователь может сделать еще одну попытку найти правильное решение.

«Почему бы не разрешить пользователям продолжать более длинный мат в N-ходах?», Проблема в том, что очень сложно определить, достигнут ли прогресс. Возможно, ходы, которые они пытаются выполнить, можгут повторяться постоянно. В начальных версиях сценария разрешались более длинные решения для воспроизведения, но это приводило к тому, что скрипт застревал в бесконечном цикле.

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

Игры с материальным преимуществом

Игры с материальным преимуществом значительно сложнее, чем Мат за N шагов и вот несколько причин, почему это так:

  • Конечная точка не определена четко. В какой момент нужно прекратить материальное преимущество?
  • Цель четко не определена. Хорошо, сценарий ищет ходы, где ценность обменивается, это достаточно просто, но когда собрано достаточно ценности? +2, +3, +9 - королева и два слона.
  • Как следует обрабатывать более длинные решения? Возможно, решение достаточно глубокое.
  • Как насчет контратак с компьютера? Должен ли игрок избегать матчей?
  • Возможно, в исходной позиции нет тактической головоломки: как узнать, когда прекратить поиск.*

И это всего лишь несколько причин. Все эти вопросы должны были быть сформированы в уравнения и рассуждения.

Начнем с того, что аналогично Матам за N шагов препроцессор исследует график преимуществ, когда игрок совершает значительную ошибку.

Рисунок 2 – график преимуществ

Ситуация, такая как показано справа, была бы идеальным местом для поиска тактической головоломки. Преимущество изменилось с -5 до +4, так что, вероятно, есть шанс, что белый получит значительное количество ценности обратно.

Создание головоломки

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

Рисунок 3 – Stockfish

Да, это PHP. Нет, это не идеально. Но это делает работу очень красиво.

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

Рисунок 4 – Таблица вариантов

Слева направо:

  • P or C: P = перемещение игрока, C = ответ компьютера
  • Parent -> Child: родительский узел/перемещение и дочерний узел/перемещение, которое оценивается
  • CP Adv: текущая компьютерная оценка положения для стороны, которая играет
  • Plies: сколько слоев осталось до тех пор, пока скрипт не прекратит создание шагов
  • Adv: материальное преимущество игрока, 1 = пешка, 3 = слон или конь, 5 = ладья, 9 = королева
  • Var: сумма материального преимущества изменила этот ход
  • +: проверка сторон на шах
  • T: напряжение, это более слабая часть, такая как пешка, отступающая от захвата слона или ладьи?
  • М: проверка сторон на мат
  • C: является ли следующий шаг захватом, проверяя наиболее оптимальный ход через Stockfish. Если Tension истинно, этот подпроцесс запускается.

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

  • Решение, которое получает достаточную ценности в разумные сроки, является решением.
  • Строка завершена, когда больше ценности не может быть получено; игрок больше не проверяется; нет никакой угрозы мата, и больше ценности не может быть получено.
  • Альтернативные решения - это ходы, которые также получают ценности в достаточное время и находятся в пределах 10% от оценки лучшего хода.
  • Перемещения, находящиеся в пределах 20% от оценки лучшего хода, получают повторные попытки.

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

Упакованное решение

По завершении всей этой обработки окончательное решение дерева превращается в строку JSON и отправляется, чтобы стать доступным для решения.

Рисунок 5 – Пример кода

В традициях открытости и свободы символов этот сценарий является открытым исходным кодом и выпущен под лицензией MIT на GitHub.

Некоторые статистические данные

Этот скрипт создал около 60 000 головоломок. Всего было более 4 миллионов попыток головоломки! В среднем это примерно 70 попыток за головоломку, но некоторые из них были предприняты более 17 000 раз![Источник 3]

Источники

  1. Lichess: Play Online Chess Game Against Computer or Others // MUO [2018]. Дата изменения: 25.11.2010. URL: https://www.makeuseof.com/tag/lichess-online-chess-game-against-computer/ (дата обращения: 03.10.2018).
  2. About lichess.org // lichess.org [2010–2018]. Дата изменения: 01.01.2018. URL: https://lichess.org/about (дата обращения: 03.10.2018).
  3. How training puzzles are generated // lichess.org [2010–2018]. Дата изменения: 04.06.2014. URL: https://lichess.org/blog/U4sjakQAAEAAhH9d/how-training-puzzles-are-generated (дата обращения: 03.10.2018).