История о том, как я форсировал развитие шахматных античитов. Пару лет назад кодил специально для chess.com бота, назывался ChessInvader (хаха). Сразу скажу, что кодил из спортивного интереса, и как оказалось собрал неплохой такой стек технологий: Stockfish 9, CefSharp, WPF, JavaScript, C#.
Как это работало? Запускалось Windows приложение с интерфейсом, в которое был встроен браузер на основе Chromium. При старте открывался сайт chess.com на главной странице. Далее ручная авторизация прямо в браузере, начало новой партии, и отдельная кнопка "Invade". Далее начиналось самое интересное - так как программа имела доступ к браузеру и его ресурсам, она в автоматическом режиме могла управлять скриптами JS. Программа тащила со скриптов текущую ситуацию на доске и передавала ее шахматному движку Stockfish, движок находил лучший ход, и далее вызывался триггер ответного хода в JS.
В итоге после долгих проб и ошибок, через неделю программа обладала таким функционалом: определение очередности хода на любом этапе игры, полная автоматизация ходов без вмешательства человека (за исключением обмена пешки на королеву), динамическое изменение силы движка в зависимости от времени игры, эмуляция человеческих задержек.
За один вечер из 15-20 партий рейтинг Эло легко поднимался до уровня гроссмейстеров 3000 и выше. Учёт времени и динамическую силу пришлось ввести против любителей коротких шахмат на 10-30 секунд, так чтобы программа сама рассчитывала время на обдумывание хода в зависимости от номера хода (в середине партии отдавалось больше времени, чем в начале и конце) и оставшегося времени. Играть такой тулзой было довольно скучно, потому что 8 ядер процессора с лёгкостью обыгрывали даже GM из списка топ 100 на коротких шахматах. Пару раз мне попадались и читеры, это было довольно легко понять, когда партия затягивалась в 30+ ходов, а движок при этом не имел весомого преимущества. Познакомился с парой забугорных игроков уровня National Master, которых сильно интересовал неведомый игрок, набирающий за вечер Grand Master. Через неделю таких игр мои фейковые аккаунты начали узнавать в лицо и оперативно банить, поскольку я не скрывал что использую движок. Получается, что я внёс свой непосильный вклад в развитие шахматных античит систем 😊
Ссылки по теме:
https://ru.m.wikipedia.org/wiki/Stockfish
https://ru.m.wikipedia.org/wiki/UCI_(протокол)
https://cefsharp.github.io/