Тесты для движков шахматных: Шахматные движки — скачать бесплатно, рейтинг движков 2018 – Команда по тестированию шахматных движков

Содержание

Рейтинг шахматных движков 2019: Stockfish, Houdini, Komodo

ДвижокЭЛОИгрыБаллыПобеды %Ничьи %Автор
 1 Stockfish 103551  27653 86.7674.4924.50Romstad, Costalba, Kiiski, Linscott
 2 Houdini 6.023465  16240 80.8164.0833.40Robert Houdart
 3 Komodo 12.33396  40000 73.9356.7934.30Dailey, Kaufman,Lefler
 4 Fire 7.13354  30075 69.4148.6541.50Norman Schmidt
 5 Xiphos 0.53319  19700 66.6646.9539.40Milos Tatarevic
 6 Ethereal 11.253312  24470 65.3344.07
42.50
Andrew Grant
 7 Laser 1.73274  22499 61.9441.8240.20Jeffrey An, Michael An
 8 Shredder 133271  40771 63.9342.0543.80Stefan Meyer-Kahlen
 9 Booot 6.3.13251  17406 53.4327.0252.80Alex Morozov
 10 Andscacs 0.953239  25722 58.2337.8540.80Daniel Jose Queralto
 11 Fizbo 2.03233  33983 56.7437.7937.90Youri Matiounine
 12 Gull 33194  35168 58.2937.0342.50Vadim Demichev
 13 Schooner 2.0.343169  20336 50.21 30.5639.30Dennis Sceviour
 14 Fritz 163159  21943 52.1631.9040.50Chessbase
 15 Equinox 3.303152  27196 54.8633.3942.90Colli, Rocchi
 16 Chiron 43150  27433 51.6229.9043.40Ubaldo Andrea Farina
 17 Critter 1.6a3145  32304 53.6132.4142.40Richard Vida
 18 Rofchade 2.03132  21250 47.4727.6039.70Ronald Friedrich
 19 Nirvana 2.43117  25259 49.3428.8940.90Thomas Kolarik
 20 Pedone 1.93108  18902 45.1426.1538.00Fabio Gobbato
 21 Texel 1.073098  23670 47.3429.0736.60Peter Osterlund
 22 Hannibal 1.73094  27263 46.9226.7440.40Sam Hamilton, Edsel Apostol
 23 Nemorino 5.003093  20484 45.1327.3935.50Christian Gunther
 24 Senpai 2.03074  22396 44.1525.3037.70Fabien Letouzey
 25 Protector 1.9.03062  25684 45.8625.9539.80Raimund Heid
 26 iCE 3.03058  21805 46.8228.7536.10Thomas Petzke
 27 Vajolet 2.2.6 3058  15110 42.4022.9039.00Marco Belli
 28 Chess22k 1.123048  16377 38.1320.1935.90Sander Maassen vd Brink
 29 Arasan 21.33043  2700 33.9118.5630.70Jon Dart
 30 Wasp 3.503030  20812 39.0121.1235.80John Stanback
 31 Smarthink 1.983030  16979 42.6128.4028.40Sergei Markoff
 32 SCTR 1.1f3000  4990 36.4419.5833.70Can Catin, Dogac Eidenk
 33 Naum 4.63000  25742 39.3521.5335.60Aleksandar Naumov
 34 Demolito 2018-10-292980  17426 35.5420.3430.40Lucas Braesch
 35 ChessBrainVB 3.702980  2113 51.1632.2337.90Roger Zuehlsdorf
 36 Pirarucu 2.9.52979  12248 38.3322.1432.40Raoni Campos
 37 Rodent III 0.2732949  12901 35.8319.8931.90Pablo Vazquez, Pawel Koziol
 38 Deuterium 2019.1.36.502947  16266 31.2415.9030.70Ferdinand Mosca
 39 HIARCS 142940  19029 36.5220.6931.70Mark Uniacke
 40 Bobcat 8.02929  16544 32.4116.95
30.90
Gunnar Harms
 41 Hakkapeliitta 3.02928  14833 34.1421.1526.00Mikko Aarnos
 42 Alfil 15.82926  777 45.3725.1040.50Enrique Sanchez Acosta
 43 Amoeba 2.82905  13761 31.5716.7429.70Richard Delorme
 44 Crafty 25.22894  14925 29.6516.4226.50Bob Hyatt
 45 Dirty Cucumber2892  2134 43.0925.6834.80Kannan, Valverde, Bluemers
 46 Cheng 4.392891  17575 30.7716.1229.30Martin Sedlak
 47 Spark 1.02884  18551 31.4416.2830.30Allard Siemelink
 48 Sjeng 20102880  17481 30.0816.0828.00Gian-Carlo Pascutto
 49 Spike 1.42868  19773 29.5015.2728.50Volker Bohm, Ralf Schafer
 50 Atlas 3.912862  12107 25.5813.7023.70Andres Manzanares Campillo

Шахматный движок и базы партий: используем как профи!

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

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

Сегодня, когда поток информации увеличился, а наша жизнь побила все скоростные рекорды, искусство анализа собственных партий практически утрачено. Да, в нашем распоряжении появилось много новых удобных электронных инструментов, но анализируем свои партии мы, увы, не так хорошо, как наши предшественники. И это касается практически каждого шахматиста, вплоть до уровня GM. Так давайте исправим это!

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

Первое — анализируем партию поэтапно:

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

Конечно, всё зависит от позиции. Однако в большинстве дебютных вариантов важна способность их запоминать и понимать, а не «слушать» то, что показывает шахматный движок.

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

У вас нет шахматных баз или нужны свежие партии?

Скачать Шахматные Базы
Нажмите здесь, чтобы скачать шахматные базы.

Миттельшпиль и эндшпиль:

На данном игровом этапе следует работать с шахматным движком, но – деликатнее!

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

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

Тут очень важно понять природу своей ошибки:

  • Она случилась, потому что вы не анализировали достаточно глубоко?
  • Было что-то, что вы упустили по ходу партии?
  • Вы слишком быстро играли?

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

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

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

Подводя итоги:

Базы данных: смотрим теоретические варианты дебюта, похожие сценарии, модель игры

Шахматный движок: инструмент для анализа. Сначала вы задаете вопрос, а потом применяете движок.

Спасибо за внимание и удачи за шахматной доской!

Примечание: Если вы стремитесь к резкому увеличению шахматного уровня, то необходимо систематически работать над всеми элементами игры:

  • Тактика
  • Позиционная игра
  • Атакующие навыки
  • Техника эндшпиля
  • Анализ классических игр
  • Психологическая подготовка
  • И еще многое другое

На первый взгляд кажется, что предстоит много работы. Но благодаря нашему учебному курсу Ваше обучение пройдёт легко, эффективно и с минимальными затратами времени. Присоединяйтесь к программе обучения «Шахматы. Перезагрузка за 21 День», прямо сейчас!

Шахматный движок — Википедия

Шахматный движок (англ. Chess engine) — компьютерная программа, предназначенная для просчитывания вариантов шахматных ходов.

Большинство шахматных движков не имеют собственного графического интерфейса пользователя (GUI), но существуют дополнительные приложения, которые его формируют, например XBoard под Linux и WinBoard под Windows.

Интерфейс командной строки GNU Chess стал фактически начальным стандартом, названным Chess Engine Communication Protocol, и он впервые был поддержан в XBoard. Когда XBoard был портирован под операционную систему Windows под названием WinBoard, этот протокол был переименован в «Протокол WinBoard». Протокол WinBoard был самостоятельно модернизирован, и две версии протоколов упоминаются как «Протокол 1 WinBoard» (исходная версия) и «Протокол 2 WinBoard» (более новая версия). Есть другой протокол — универсальный шахматный интерфейс (Universal Chess Interface, UCI). Некоторые программы поддерживают оба протокола, но у каждого из них есть свои сторонники. Протокол Winboard в прошлом был популярен, но в настоящее время стандартом де-факто является UCI, множество разработчиков шахматных программ полагают, что универсальный шахматный интерфейс легче использовать. Некоторые интерфейсные программы (например, Arena) поддерживают оба протокола, тогда как другие поддерживают только один и зависят от дополнений, например, такого, как Polyglot[1].

Результаты компьютерных турниров дают возможность сравнения силы шахматных движков. Вероятно, турниры не содержат достаточного количества игр для точной оценки их силы. Для того чтобы сделать достоверные выводы о силе программ, необходимо провести порядка тысячи игр между ними, поэтому на практике в турнирах поступают иначе[2]. Для достижения большей объективности на многих турнирах выдвигаются одинаковые для всех участников требования к аппаратной мощности.

Исторически, наиболее сильными стали коммерческие шахматные движки. В 2007, 2008 и 2009 годах чемпионат мира по шахматам среди компьютерных программ выиграла Rybka, что было в некоторой степени сбывшимся прогнозом. Если любительская программа выигрывает турнир или выступает хорошо, как, например, Zappa в 2005 году, то позже программа может стать коммерческой. Титулы, полученные на турнирах после победы, дают престиж и используются для последующего маркетинга.

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

Существует много факторов, различающих рейтинг-листы шахматных движков:

  • Контроль времени. Более долгий контроль времени, такой, как 40 ходов в течение 120 минут, лучше подходит для определения силы игры в турнире, но отнимает больше времени на тестирование.
  • Используемые аппаратные средства и операционная система: 64-битные или 32-битные аппаратные средства, мультипроцессорные или однопроцессорные системы, быстродействие процессоров и объём памяти. Более быстрые аппаратные средства с большей памятью позволяют сильнее играть.
  • Настройки параметра расчётов (возможность анализа во время хода соперника).
  • Размеры таблиц перестановок (повторяющихся шахматных позиций).
  • Настройки дебютных книг (начал шахматных партий).

Различия в этих факторах влияют на результат и усложняют прямое сравнение оценок рейтинг-листов.

Рейтинг лучших шахматных движков в различных листах (показаны только лучшие версии для каждой программы):

Рейтинг-листКонтроль
времени
(ходы/минуты)
Год
начала
Последнее
обновление
Кол-во
движков-
платформ
Сыграно
игр
Лучшие три движка
(только лучшие версии)
Рейтинг
CCRL[3]40/40[4]20052 декабря 20171978762 940asmFish 051117 64-bit 4CPU
Houdini 6 64-bit 4CPU
Komodo 11.2 64-bit 4CPU
3425
3412
3398
CEGT[5]40/20[6]200626 июня 20161404940 626Komodo 10 x64 4CPU
Stockfish 7.0 x64 4CPU
Houdini 4.0 x64 4CPU
3348
3346
3206
SSDF[7]40/120198427 июля 2017360142 106Komodo 11.01 MP x64
Deep Shredder 13 x64
Stockfish 6 MP x64
3406
3385
3331

Эти рейтинги не имеют прямого отношения к обычным рейтингам ФИДЕ или другим рейтингам шахматных федераций, хотя и посчитаны с использованием системы рейтинга Эло или подобных расчётных методов. За исключением нескольких шахматистов, игравших против шахматных программ, использованных много лет назад SSDF (которые далеки от сегодняшнего уровня), в настоящее время нет связи между этими рейтинг-листами и пулом игроков. Таким образом результаты, которые отражают разряды и разницу в рейтингах, а не абсолютный уровень в числовых значениях. Помимо этого, каждый список калибрует их рейтинг Эло при помощи других методов. По этой причине никакие сравнения рейтингов Эло невозможно провести по этим рейтинг-листам. Тем не менее, в свете последних матчей людей против машин, как правило, топовые шахматные компьютерные программы должны просчитывать на уровне предела человеческих шахматных возможностей, и, вероятно, значительно выше.

Практически во всех рейтинг-листах отсутствуют данные по программе IPPOLIT и её производных (к примеру, Fire). Хоть это и очень сильные шахматные программы с открытым исходным кодом, их всё же избегают по причине того, что они были созданы с применением обратной разработки программы Rybka[8]. Из-за возникших противоречий все эти движки угодили в черные списки на турнирах и рейтинговых списках. В свою очередь, программе Rybka были выдвинуты обвинения в том, что она нелегально содержала части программы Fruit[9], и в июне 2011 ICGA официально утверждала, что Rybka содержала в себе части программ Fruit и Crafty, за что получила запрет на участие в чемпионате мира по шахматам среди компьютерных программ, а также лишена всех титулов победителя (2007, 2008, 2009, и 2010)[10]. ICGA за такое решение подверглась критике от Dr. Søren Riis, который являлся давним сторонником программы Rybka[11]. Rybka по-прежнему включают во множество ранговых списков.

Тестовые наборы[править | править код]

Движки можно проверять при помощи специально подобранных шахматных позиций. Обычно в таких тестах используются позиции, где существует только один лучший ход. Эти позиции могут быть подобраны с упором на позиционность, тактику или эндшпиль. Тестовый набор Nolot подобран с фокусом на глубокие жертвы[12]. Также есть наборы BT2450 и BT2630, созданные Хубертом Беднорцем (Hubert Bednorz) и Фредом Тонниссеном (Fred Toennissen). Эти наборы призваны прощупать тактические возможности шахматных движков и были использованы, по крайней мере в шахматной программе REBEL. Существует также общий набор тестов, называемый «блеск» (Brilliancy), созданный Даной Турнмир (Dana Turnmire). Этот набор был составлен на основе книги How to Reassess Your Chess Workbook[13].

Тест стратегии (STS) от Шваминатана и Дэна Корбит (Swaminathan and Dann Corbit) проверял силу стратегического мышления движков[14].

Самым трудным современным набором тестов является Nightmare II, подобранный Вальтером Эйгенманном (Walter Eigenmann). В этом наборе содержится 30 чрезвычайно сложных заданий, подобранных специальным образом для шахматных движков[15].

  • Корнилов Е. Н. Программирование шахмат и других логических игр. — СПб.: БХВ-Петербург, 2005. — ISBN 5-94157-497-5.

Рейтинг шахматных движков в таблице


День добрый, дорогой друг!

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

Оболочка (например — Arena, шредер, фритц ) в отличие от движка имеет интерфейс пользователя и позволяет использовать возможности последнего, и даже нескольких.

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

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

Как он работает?

Движок рассматривает динамику игры как дерево расчета. По умолчанию – простой перебор возможных ходов. Каждый ход называется «узлом». Перебор идет, насколько позволяет глубина расчета,заданная для программы.

В каждой позиции число ходов больше, чем может показаться. Около тридцати пяти. Для расчета на шесть ходов машине необходимо перебрать около 2 миллиардов вариантов.

Возможности компьютера не безграничны и программисты стараются как-то ограничить этот совершенно неподъемный массив.

Например, разрабатывают способы оценки позиции, которые позволяют отсекать менее выгодные  варианты.

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

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

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

В какую силу они играют?

Лучшие представители семейства движков имеют рейтинги ЭЛО около 3300. Для сравнения – максимальный рейтинг сильнейшего шахматиста никогда не превышал 2900 пунктов.

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

Как сравнивают движки?

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

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

Рейтинги программ

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

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

Листы, в отличие от турниров, обновляются несколько раз в течение года. Турниры же проходят реже – примерно раз в год.

Ниже приведен один из авторитетных рейтингов за 2016г.

shahmatnie-dvizhki

Компьютер против человека… или за?

Поворотным моментом в противостоянии шахматных программ и человека можно считать 1996г., когда движок Дип Блю выиграл одну партию у Гарри Каспарова, уступив в матче одно очко. Через год машина взяла реванш.

Программы совершенствуются, люди тоже не дремлют.

В 2002 году состоялся матч между  Владимиром  Крамником и компом Deep Fritz из 8 партий.

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

Такие «фокусы» компьютер не способен разглядеть в дебрях расчета вариантов, который он использует.

shahmatnie-dvizhki

В дальнейшем было немало матчей и постепенно чаша весов стала склоняться в пользу «железного» шахматиста.

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

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

Компьютер не столько соперник, сколько неизменный спутник сильного шахматиста. Его помощник, инструмент для анализа и спарринг-партнер.

Благодарю за интерес к статье.

Если вы нашли ее полезной, сделайте следующее:

  1. Поделитесь с друзьями, нажав на  кнопки социальных сетей.
  2. Напишите комментарий (внизу страницы)
  3. Подпишитесь на обновления блога (форма под кнопками соцсетей) и получайте статьи к себе на почту.

Удачного вам дня!

shahmatnie-dvizhkishahmatnie-dvizhki

Как компьютер играет в шахматы? / Habr


Хикару Накамура, недавно бросивший вызов компьютеру

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

Если вам интересно, как же устроены шахматные движки — добро пожаловать под кат.


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

Это, несомненно, очень наивное мнение. Новую позицию в шахматах можно получить к десятому ходу. Хоть в шахматах и меньше позиций, чем в го, тем не менее, уже после 3 ходов (ход — это один ход белых и чёрных, полуход — ход только одной стороны) дерево ходов состоит из почти 120 миллионов узлов. Более того, размер дерева после 14 полуходов из начальной позиции энтузиасты считают уже больше года, продвинувшись пока что примерно на треть.

Ещё я думал, что шахматные программы, несмотря на давнюю победу в матче над чемпионом мира, все еще находятся в пределах досягаемости лучших людей. Это тоже не верно.

В недавнем мини-матче человека с машиной, Хикару Накамура, один из сильнейших шахматистов в мире, играл с Komodo, одной из (двух) сильнейших шахматных программ в мире. Программа была запущена на 24-ядерном Xeon’е. Так как на равных соревноваться с компьютером люди уже не могут, гроссмейстер получил фору в каждой из 4 партий:

  • В первой партии — пешка и ход: компьютер играл чёрными и без пешки f7
  • Во второй — только пешка: компьютер играл белыми без пешки f2
  • В третьей — качество (разница между ладьёй и лёгкой фигурой, оценивается примерно в 2 пешки): компьютер белыми без ладьи a1, человек без коня b8 и с ладьёй a8 на его месте.
  • В четвертой — четыре хода: человек играет белыми и вместо первого хода делает 4 любых хода, не пересекая середину доски.

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

Кроме того, партии игрались с контролем 45″+15′, то есть 45 минут на партию и 15 секунд добавления каждый ход. Обычно, более короткие контроли дают дополнительное преимущество компьютеру, в то время как более длинные — несколько повышают шансы человека. Компьютер даже за доли секунды успеет отмести откровенно проигрывающие ходы, в то время как из-за экспоненциального роста дерева вариантов каждое последующее улучшение анализа занимает всё больше времени.

Тем не менее, фора была и человек проиграл в матче 2.5-1.5, сведя в ничью первые 3 партии и проиграв четвёртую. Вместе с тем, слабый гроссмейстер достаточно уверенно выиграл с форой в 2 пешки. Следовательно, преимущество лучших программ над лучшими людьми на данный момент где-то между 1 и 2 пешками форы. Конечно, эта оценка очень грубая, но для точной оценки надо сыграть несколько тысяч партий между людьми и программами, а этим вряд ли кто-то будет заниматься. Обратите внимание, что рейтинг ЭЛО, нередко указываемый для программ, не имеет ничего общего с рейтингом людей.


Чтобы человек мог играть в шахматы с компьютером, кроме собственно поиска лучшего хода, нужен GUI. К счастью, был придуман универсальный интерфейс (даже два, Winboard и UCI, но большинство движков использует UCI) для связи между GUI и собственно шахматной программой (движком). Таким образом, программисты могут сосредоточиться на самом алгоритме игры в шахматы, не задумываясь об интерфейсе. Обратная сторона монеты — так как создание GUI гораздо более скучное занятие, чем написание движка, то бесплатные GUI заметно проигрывают платным. В отличии от движков, где свободный Stockfish уверенно борется за первую строчку рейтинга с платным Komodo.
Итак, как же устроен современный шахматный движок?

Представление доски


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

Есть два основных способа хранить представление доски — по фигурам или по клеткам. В первом случае мы храним для каждой фигуры её место на доске, во втором — наоборот, для каждой клетки храним что находится там. У каждого метода есть свои преимущества и недостатки, но на данный момент все топовые движки используют одно и то же представление доски — bitboards.

Bitboards


По счастливому совпадению, на шахматной доске 64 клетки. А значит, если для каждой клетки использовать один бит, мы можем хранить всю доску в 64-битном целом числе.
В одной переменной будем хранить все белые фигуры, в другой — все черные, и ещё в 6 — каждый тип фигур по отдельности (другой вариант — 12 битбордов для каждого цвета и типа фигур по отдельности).

В чем преимущество такого варианта?
Во-первых, память. Как мы узнаем позже, при анализе представление доски копируется много раз, и, соответственно, отъедает оперативку. Битборды — это одно из самых компактных представлений шахматной доски.
Во-вторых, скорость. Многие вычисления, например, расчёт возможных ходов, сводятся к нескольким битовым операциям. За счёт этого, например, использование инструкции POPCNT дает ~15% ускорение современным движкам. Кроме того, за время существования битбордов было придумано немало алгоритмов и оптимизаций, как, например, «магические» битборды.

Поиск


Минимакс


В основе большинства шахматных движков лежит алгоритм поиска минимакс или его модификация негамакс. Вкратце, мы спускаемся вниз по дереву, оцениваем листья, а потом поднимаемся вверх, каждый раз выбирая оптимальный для текущего игрока ход, минимизируя оценку для одного (чёрных) и максимизуруя для второго (белых). Отсюда и название. Оказавшись в корне, мы получаем последовательность ходов, оптимальную для обоих игроков. Разница между минимаксом и негамаксом в том, что в первом случае мы по очереди выбираем ходы с максимальной и минимальной оценкой, а во втором вместо этого меняем знак для всех оценок и всегда выбираем максимальную (название сами поняли откуда). Подробнее здесь и здесь.

Альфа-бета


Первая оптимизация — альфа-бета. Идея альфа-беты проста — если у меня уже есть хороший ход, то можно отсечь ходы, которые заведомо хуже. Рассмотрим пример на жуткой картинке слева. Допустим, у игрока А есть 2 возможных хода — a3 и b3. Проанализировав ход a3, программа получила оценку +1.75. Начав оценивать ход b3, программа увидела, что у игрока B есть два хода — a6 и a5. Оценка хода a6 +0.5. Так как игрок B выбирает ход с минимальной оценкой, то он никак не выберет ход с оценкой выше 0.5, а значит оценка хода b3 меньше 0.5, и рассматривать его смысла нет. Таким образом, все оставшееся поддерево хода b3 отсекается.

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

Узлы в альфа-бете делятся на 3 категории:

  1. PV-Nodes — узлы, оценка которых попала в окно (между альфой и бетой). Корень и самый левый узел всегда являются узлами этого типа.
  2. Cut-Nodes (или fail-high nodes) — узлы в которых произошло отсечение по бете.
  3. All-Nodes (или fail-low nodes) — узлы, в которых ни один ход не превысил альфу по оценке.

Сортировка ходов


При использовании альфа-беты, важным становится порядок ходов. Если мы сможем поставить лучший ход первым, то оставшиеся ходы будут проанализированы гораздо быстрее за счёт отсечений по бете.

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

Для взятий может использоваться, например, простая эвристика MVV-LVA (Most Valuable Victim — Least Valuable Aggressor). Мы сортируем все взятия по убыванию ценности «жертвы», а внутри соритруем еще раз по возрастанию ценности «агрессора». Очевидно, что обычно забрать пешкой ферзя выгоднее, чем наоборот.

Для «тихих» ходов используется метод «убийственных» (killer) ходов — ходов которые вызвали отсечение по бете. Это ходы обычно проверяются сразу после ходов из хеша и взятий.

Хеш таблицы или таблицы перестановок


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

Итерационный поиск


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

Эти проблемы решает итерационный поиск. Для начала мы проводим анализ на глубину 1, потом на глубину 2 и т.д. Таким образом, каждый раз мы спускаемся чуть глубже, чем в прошлый раз, пока анализ не будет остановлен. Чтобы уменьшить размеры дерева поиска, результаты прошлой итерации обычно используются, чтобы отсекать заведомо плохие ходы на текущей. Этот метод называется «окно стремлений» (aspiration window) и используется повсеместно.

Поиск спокойствия(Quiescence Search)


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

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

Выборочный поиск


Идея выборочного поиска в том, чтобы дольше рассматривать «интересные» ходы и меньше — неинтересные. Для этого используются продления, которые увеличивают глубину поиска в определённых позициях, и сокращения, уменьшающие глубину поиска.

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

Отсечения и сокращения

С отсечениями и сокращениями всё гораздо интереснее. Именно они позволяют значительно сократить размер дерева.

Вкратце об отсечениях:

  • Дельта-отсечение — проверяем, может ли взятие улучшить текущую альфу. Для этого к оценке узла добавим ценность взятой фигуры и еще немного и посмотрим, больше ли получившееся значение, чем альфа. Например, если у белых не хватает ладьи, то взятие пешки вряд ли им поможет, с другой стороны, взятие слона может помочь.
  • Отсечение бесполезности — то же самое, только для не-взятий. Если текущая оценка настолько меньше альфы, что никакое позиционное преимущество не сможет это скомпенсировать, то такие узлы отсекаются. Обычно применяется на низкой глубине (1-2).
  • Историческое отсечение — для каждого хода мы храним, сколько раз данный ход спровоцировал отсечение, независимо от позиции. Ходы с высоким значением этой эвристики отсекаются. Обычно применяется начиная с определенной глубины и не применятся на PV узлы. Иногда объединяется с предыдущим методом.
  • Multi-Cut — если из первых M(например, 6) узлов хотя бы C(например, 3) являются Cut-node, то отсекаем все узлы.
  • Отсечение по null-ходу — если после null-хода (простая передача очереди хода сопернику) оценка все равно выше беты, то отсекаем узел. Проще говоря, если позиция настолько плоха, что даже сделав два хода подряд, игрок все равно не может ее улучшить, то нет смысла рассматривать эту позицию.

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

За счёт качественной сортировки ходов и отсечений, современные движки умудряются достигать коэффициента ветвления ниже 2. За счёт этого, к сожалению, они иногда не замечают нестандартные жертвы и комбинации.

NegaScout и PVS


Две очень похожие техники, которые используют тот факт, что после того как мы нашли PV-node (приусловии что наши ходы достаточно хорошо отсортированы), она скорее всего не изменится, то есть все оставшиеся узлы вернут оценку ниже, чем альфа. Поэтому вместо поиска с окном от альфа до бета, мы ищем с окном от альфа до альфа+1, что позволяет ускорить поиск. Конечно, если в каком-то узле мы получаем отсечение по бете, то его надо ценить заново, уже нормальным поиском.

Разница между двумя методами лишь в формулировке — они были разработаны примерно в одно время, но независимо, и поэтому известны под разными названиями.

Параллельный поиск


Распараллеливание альфа-беты — отдельная большая тема. Я вкратце пройдусь по ней, а кому интересно — почитайте Parallel Alpha-Beta Search on Shared Memory Multiprocessors. Сложность в том, что при параллельном поиске многие Cut-nodes анализируются до того, как другой поток найдет опровержение (установит бету), в то время как в последовательном поиске, при хорошей сортировке многие из этих узлов отсеклись бы.

Lazy SMP


Очень простой алгоритм. Мы просто запускаем все потоки одновременно с одним и тем же поиском. Коммуникация потоков происходит за счёт хеш-таблицы. Lazy SMP оказался неожиданно эффективным, настолько, что топовый Stockfish перешел на него с YBW. Правда, некоторые считают, что улучшение произошло из-за плохой реализации YBWC и слишком агрессивных отсечений, а не из-за преимущества Lazy SMP.

Young Brothers Wait Concept (YBWC)


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

Dynamic Tree Splitting (DTS)


Быстрый и сложный алгоритм. Немного о скорости: скорость поиска измеряется через ttd (time to depth), то есть время, за которое поиск достигает определенной глубины. Этот показатель обычно можно использовать для сравнения работы разных версий движка или движка, запущенного на разном количестве ядер (хотя Komodo, например, увеличивает ширину дерева при большем количестве доступных ядер). Кроме того, во время работы движок отображает скорость поиска в nps (nodes per second). Это метрика гораздо более популярная, но она не позволяет сравнивать даже движок сам с собой. Lazy SMP, в котором нет никакой синхронизации, практически линейно увеличивает nps, но из-за большого объема лишней работы, его ttd не так впечатляющ. В то время как для DTS nps и ttd изменяются практически одинаково.

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

Оценка


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

Компьютер оценивает позицию в пешках: +1.0 означает, что у белых преимущество равноценное 1 пешке, -0.5 означает, что у черных преимущество в полпешки. Мат оценивается в 300 пешек, а позиция в которой известно количество ходов до мата x — в (300-0.01x) пешек. +299.85 значит, что белые ставят мат в 15 ходов. При этом сама программа обычно оперирует целыми оценками в сантипешках (1/100 пешки).

Какие параметры компьютер учитывает при оценке позиции?

Материал и мобильность


Самое простое. Ферзь 9-12 пешек, ладья 5-6, конь и слон 2.5-4 и пешка, соответственно, одна пешка. В общем, материал — это достойная эвристика оценки позиции и любое позиционное преимущество обычно трансформируется в конце концов в материальное.

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

Таблицы позиций фигур


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

Пешечная структура


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

Этапы игры


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

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

Прочее


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

Точная оценка или быстрый поиск?


Традиционный спор: что эффективнее, точно оценить позицию или достичь большей глубины поиска. Опыт показывает, что слишком «тяжелые» оценочные функции неэффективны. С другой стороны, более подробная оценка, учитывающая больше факторов, обычно приводит к более «красивой» и «агрессивной» игре.

Дебютные книги и эндшпильные таблицы


Дебютные книги


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

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

Эндшпильные таблицы


Вернемся к введению. Помните идею хранить много позиций в памяти и выбирать нужную. Вот она. Для малого (до 7) количества фигур просчитаны все существующие позиции. То есть в этих позициях компьютер начинает играть идеально, выигрывая в минимальное количество ходов. Минус — размер и время генерации. Создание этих таблиц помогло в исследовании эндшпилей.
Генерация таблиц

Сгенерируем все возможные (с учетом симметрии) позиции с определенным набором фигур. Среди них найдем и обозначим все позиции, где стоит мат. Следующим проходом обозначим все позиции, в которых можно попасть в позиции с матом — в этих позициях ставится мат в 1 ход. Таким образом находим все позиции с матом 2,3,4,549 ходов. Во всех неотмеченных позициях — ничья.
Таблицы Налимова

Первые эндшпильные таблицы, опубликованные в далёком 1998 году. Для каждой позиции хранится результат игры и количество ходов до мата при идеальной игре. Размер всех шестифигурных окончаний — 1.2 терабайта.
Таблицы Ломоносова

В 2012 году на суперкомпьютере Ломоносов в МГУ были посчитаны все семифигурные окончания (кроме 6 против 1). Эти базы доступны только за деньги и это единственные существующие полные семифигурные эндшпильные таблицы.
Syzygy

Стандарт де-факто. Эти базы гораздо компактнее баз Налимова. Они состоят из двух частей — WDL (Win Draw Lose) и DTZ (Distance to zeroing). WDL базы предназначены для использования во время поиска. Как только узел дерева найден в таблице, у нас есть точный результат игры в этой позиции. DTZ предназначены для использования в корне — они хранят количество ходов до обнуляющего счётчик ходов хода (хода пешкой или взятия). таким образом для анализа достаточно WDL баз, а DTZ базы могут пригодиться при анализе эндшпилей. Размер Syzygy гораздо меньше — 68 гигабайт для шестифигурных WDL и 83 для DTZ. Семифигурных баз не существует, так как их генерация требует примерно терабайт оперативной памяти.
Использование

Эндшпильные таблицы используются в основном для анализа, прирост силы игры движков небольшой — 20-30 пунктов ЭЛО. Тем не менее, так как глубина поиска современных движков может быть очень большой, запросы к эндшпильным базам из дерева поиска происходят еще в дебюте.

Прочие интересности


Жираф или нейронные сети играют в шахматы


Некоторые из вас возможно слышали о шахматном движке на нейронных сетях, достигшем уровня IM (что, как мы поняли во введении, не так уж и круто для движка). Его написал и выложил на Bitbucket Matthew Lai, который, к сожалению прекратил работу над ним из-за того, что начал работать в Google DeepMind.

Тюнинг параметров


Добавить новую функцию в движок несложно, но как проверить что она дала усиление? Простейший вариант — сыграть несколько партий между старой и новой версией и посмотреть кто победит. Но если улучшение небольшое, а так оно обычно и бывает после того, как все основные фичи добавлены, игр должно быть несколько тысяч, иначе достоверности не будет.

Stockfish


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

Их решение типично для опенсорса — добровольцы предоставляют свои мощности чтобы прогнать на них сотни тысяч игр.

CLOP


Программа, которая оптимизирует параметры через линейную регрессию, используя результаты игр движка с самим собой с разными параметрами. Из минусов — очень ограниченной размер задачи: оптимизировать сотню параметров (вполне адекватное число для движка) ей не под силу, по крайней мере за адекватное время.

Texel’s tuning


Решает проблему предыдущего метода. Берем большое количество позиций (автор предлагал 9 миллионов позиций из 64000 игр, я брал 8 миллионов из почти 200000), для каждой сохраняем результат партии (победа белых 1, ничья 0.5, поражение 0). Теперь минимизируем ошибку, которая находится сумма квадратов разности результата и сигмоида оценки. Метод эффективный и популярный, но работает не на всех движках.

Stockfish tuning


Еще одна методика от лидера. Берем параметр равный x, и сравниваем (в нескольких десятках тысяч партий) движок с параметром равным x-sigma и x+sigma. Если победил движок с большим параметром, сдвигаем немного вверх, иначе — немного вниз, и повторяем.

Соревнования движков


Из всех проводимых тестирований соревнований хотелось бы отдельно выделить TCEC. От всех остальных он отличается мощным железом, тщательным подбором дебютов и длинным контролем. В последнем финале было сыграно 100 партий на 2 x Intel Xeon E5-2690v3 с 256 гигабайтами RAM с контролем 180’+30″. В таких условиях количество ничей огромно, и результативными было всего 11 партий.
Вот так вкратце в этой длинной статье я примерно рассказал об устройстве шахматных движков. Многие подробности остались не раскрытыми, о чем-то я просто не знал или забыл сказать. Если у вас остались вопросы, пишите их в комментарии. Кроме того, посоветую вам два ресурса, которые вы наверняка заметили, если тщательно открывали все ссылки, раскиданные по статье:

Шахматный движок stockfish: как правильно использовать?


День добрый, дорогой друг!

Сегодня разберем еще одного программного «монстра»- шахматный движок stockfish. В дословном переводе — вяленая рыба. Откуда такое название, не берусь судить. Знаю только, что в некоторых интеллектуальных играх фишОм (рыбой) называют слабого игрока.

Однако, применительно к Стокфишу такое сравнение не совсем уместно. Разве что «по приколу» так назвали разработчики.
stockfish-logo

Что это за программа?

Stockfish – шахматный движок с открытым исходным кодом. Историю своего развития ведет с 2008 года.

Разработчики программы — Торд Ромстад, Марко Косталба, Йоона Кииски и Гарри Линскотт. Еще около сотни (точнее 126) программистов внесли свой посильный вклад в течение 9 лет ативного развития движка.

Движок поддерживает 32-битный и 64-битный режимы,

В последние лет 6-7 борьба за первенство в основном проходит под знаком соперничества движков  Komodo и Stockfish, Борьба проходит с переменным успехом.

В 2014 году (Сезон 6) чемпионский титул завоевал  Stockfish  обыгравший  Komodo 35.5 :28.5

В конце этого же года (Сезон 7) Комодо реваншировался.

В сезоне 8 (ноябре 15 года) очередной матч и снова впереди  Komodo.

В 9 сезоне (декабрь16 года) Стокфиш в финале обыгрывает Гудини (Houdini) – 17 побед, 8 поражений, 75 ничьих.

2016 год стал прорывным в истории развития движка. Сегодня по многим параметрам Stockfish  опережает своих извечных соперников в последние годы  Komodo и Houdini.

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

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

В рейтинге по версии CCRL Стокфиш занимает 2 строчку. stockfish-logo

Где скачать?

Сайт разработчика: https://stockfishchess.org/

Как уже говорилось, программа совершенно бесплатная.

Последняя версия -8. Скачать можно здесь: https://stockfishchess.org/download/

stockfish-logo

Также имеются версии для Mac, Android, Linux.

stockfish-logo

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

Обновление тестовых версий здесь http://abrok.eu/stockfish/

Как можно использовать движок?

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

Из известных мне топовых движков собственный интерфейс имеет только Шреддер.

Для удобного использования Стокфиш можно установить на бесплатные графические интерфейсы, например:  Arena, SCID, Winboard.

Разумеется, пойдут и платные программы, такие как Chessbase или Fritz.

Важно: оболочка, интерфейс, — должны поддерживать UCI протокол.

Подключить движок можно в несколько кликов. Как это сделать – показано в этом видео:

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

Многие шахматисты поступают следующим образом, цитирую:

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

Особенности стиля и сила игры

Stockfish имеет двадцать уровней сложности.

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

Например, считается, что в сравнении с Комодо, сильной стороной которого является позиционная игра, Стокфиш делает больший упор на тактику.

Можно ли использовать движок в практических партиях?

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

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

Тем не менее, такие попытки предпринимались еще со времен появления первых движков.

stockfish-logo

Иногда успешно, но чаще всего, — все эти манипуляции заканчивались для игрока печально. А именно дисквалификацией и не только на текущий турнир, но и пожизненно.

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

В игре онлайн также не все так просто. Например в блице использовать программу затруднительно из-за дефицита времени.

Кроме того, на серьезных порталах установлены античитерские программы. В случае подозрений на читерство вас могут забанить без особых церемоний.

А самое главное: зачем это вам нужно? Это все равно, что сесть «на иглу». Мы с вами знаем, что последствия зависимостей разного рода всегда не самые приятные.

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

Благодарю за интерес к статье.

Если вы нашли ее полезной, сделайте следующее:

  • Поделитесь с друзьями, нажав на кнопки социальных сетей.
  • Напишите комментарий (внизу страницы)
  • Подпишитесь на обновления блога (форма под кнопками соцсетей) и получайте статьи к себе на почту.

Удачного дня!

stockfish-logostockfish-logo

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *