zakki_logo

皆さんは最近オンラインチェスをやっていて、自分のレーティングが大暴落していませんか?
実は今(2017年 6月16日現在)、僕が利用しているオンラインチェスサイトで悪魔のようなソフトウェアが大流行しているのです。
それは、「ソフト指し発見機能を回避できるソフト指し専用ソフトウェア」です。

「ソフト指し」とは

image_1

「ソフト指し」というのは「まろやかに指す」・・・ことではなく、対戦中に「チェス用ソフトウェア」を使用し、コンピュータが発見した次の手を指す行為です。
もちろん「チート」です。

チェスの「ソフト指し」は 10年以上前から既に問題になっていました。 2006年のチェス世界選手権の「トイレゲート事件」なんかがいい例だと思います。

以前までは「棋譜の検討」や「コンピュータとの対戦用」に使われるソフトウェアをチーターが勝手に応用してソフト指しをしていました。
しかし今、「ソフト指し専用ソフトウェア」というものが作られてそれが大流行しているのです。

チェス用ソフトウェアの仕組み

image_2

「チェス用ソフトウェア」は 2つのソフトウェアの組み合わせで構成されています。

  • エンジン : 与えられた局面から、最善手順を計算するソフトウェア。
  • GUI : グラフィカルにチェスボードを表示し、ユーザーの操作に従って「エンジン」にコマンドを送って操作するソフトウェア。

これら 2つのソフトウェアが「プロセス間通信」をすることで「チェス用ソフトウェア」が実現されています。
「通信用プロトコル (通信でやり取りするコマンドの種類)」は主に「XBoard」「UCI」の 2種類があります。 現在は「UCI」が主流です。
(ちなみに僕が作ったエンジン「Sayuri」も「UCI」です。)

チェス用ソフトウェアは「エンジン」と「GUI」という2つの部分に分かれているので、「GUI」の部分をどう作るかで様々な用途のチェス用ソフトウェアを作ることができます。
・・・・・・そうです、「ソフト指し専用ソフトウェア」も作ることができるのです。

ソフト指し発見機能 (Cheat Detector)

image_3

有名なオンラインチェスのサービスをしているサイトでは「ソフト指し」をできるだけ防ぐために「ソフト指し発見機能 (Cheat Detector)」が搭載されています。

どのようなものかというと、

  1. 対戦後の棋譜を有名なチェスエンジンで分析し、「プレイヤーの指し手」と「エンジンの最善手」を比較する。
  2. 「プレイヤーの指し手」と「エンジンの最善手」の「一致率」が異常に高ければ、そのプレイヤーを「ソフト指し」として判定する。

ってな感じです。

「えっ!? それって冤罪が発生しないの!?」と思うかもしれません。
もちろん「冤罪」でソフト指しのレッテルを貼られたプレイヤーもちょくちょくいると思います。
ただ、有名なエンジンの「最善手順」はあまりにも芸術的で合理的で、人間なら「いくらなんでも無謀すぎるだろ」というような指し手の数々が絶妙に噛み合って完璧に成立しているのです。

そんなわけで、「ソフト指し発見機能」は結構いい精度で「ソフト指し」を見つけることができるのです・・・・・・以前まではね!!

ソフト指し専用ソフトウェア

image_4

最近流行を始めた「ソフト指し専用ソフトウェア」は、その名の通り「ソフト指し」をするためだけに作られたソフトウェアです。
どういうものかというと、

  1. パソコン画面を分析してチェスボードと駒の配置を認識する。
  2. 認識した局面をエンジンで分析し、「有効な手順」をいくつか表示する。

というものです。

このソフトウェアのポイントは 2番目の「いくつか表示する。」という部分です。

オンラインチェスサイトの「ソフト指し発見機能」は「最善手順」と比較して判定します。 裏を返すと「次善手以下の手順」なら「ソフト指し判定」されません。
「ソフト指し専用ソフトウェア」は「次善手以下の手順」も表示されるので、その指し手でソフト指しをすれば「ソフト指し発見機能」を回避しながら「ソフト指し」ができてしまうのです。

Internet Chess Killer

「ソフト指し専用ソフトウェア」の中でも「Internet Chess Killer」(GitHub)というソフトウェアが有名らしいです。
作った人は「Dmitry Morozov」(Chess Programming Wiki)というロシアの FIDE マスターでソフトウェア開発者でもある人です。
(「チェスが好き」で「プログラミングが好き」なら作りたくなる気持ちもすごく分かる。 でも、作らないでほしかった・・・・・・。)

試しに一人用のコンピュータチェスチェスボードの画像を対象に「Internet Chess Killer」のデモ版を少し触ってみました。
感想は・・・

  • シンプルでハッキリとした駒のグラフィックならしっかりと認識される。
    • 駒に「影」などの装飾が付いていると認識されない。
    • 「WinBoard」のような古臭いグラフィックの駒は認識されない。
  • 「有効な手順」を最大 5個まで表示することができる。 (設定で変更可能)
  • 「有効な手順」がかなり目まぐるしく変化するため、慣れるまでは迷ってしまい、意外と時間がかかる。
  • 常にウィンドウが全面に出ているため、ウェブブラウザなどのクライアントソフトがフォーカスを失わない。 (「ソフト指し発見機能」に「フォーカスを失う頻度」が判定に入っている可能性があるから。)

これは「Internet Chess Killer」の名の通り、マジでオンラインチェスを殺すための悪魔のツールです。

ちなみに YouTube にこのソフトウェアの使用動画がいくつか投稿されています。

「ソフト指し」のプレイスタイル

image_5

僕の経験上、チェスの「ソフト指しプレイヤー」は、例外なく以下のような特徴をもっています。

  • 危なくなるギリギリ寸前までキャスリングしない。
  • オープニングの原則を無視する傾向がある。
  • 「マイナーな定跡」や「定跡外」のオープニングばかりする。
  • ポーンブレイクしてこない。 (相手が仕掛けてくるまでひたすら待つ。)
  • 対局後、棋譜を検討すると、どんな複雑な局面でも全て「好手」。
  • マナーが良い。

「ソフト指しプレイヤー」は、とりわけオープニングに特徴が多いです。
おそらくオープニングでエンジンの「次善手以下の候補手」を選んだ結果、そのような特徴になるのだと思います。

最も目立つ特徴として、キャスリングするのが「気持ち悪いくらい異様に遅い」のですが、全くそれを咎めることができません。
どんなにセンターに置きっぱなしの敵キングに迫っても、芸術的に美しく合理的に完璧に防がれてしまいます。

もし対戦相手がなかなかキャスリングしてこなければ「負け」を覚悟したほうがいいと思います。

僕が考えた最強(?)の「ソフト指し専用ソフトウェア」対策

image_6

前述の「Internet Chess Killer」を試していると、「画像認識機能」の柔軟性があまり良くないみたいです。
なので僕はいくつか対策を考えてみました。

  • 表示されるチェスボードの形を、「正方形」ではなく、ランダムに少し歪めた「台形」や「平行四辺形」にする。 (「長方形」は画像認識が簡単なのでダメ。)
  • 駒に「ドロップシャドウ」のエフェクトを追加し、ランダムにシャドウの「強さ」「角度」「距離」「ぼかし」を変更する。
  • 駒を自動生成されたランダムな「幾何学図形など」で装飾する。

たぶん現在(2017年 6月16日)の「Internet Chess Killer」ならこれでなんとかなりそうな気がします。
しかし開発者がパターン認識技術をもっと習得すれば、いずれこれらも通用しなくなると思います。

「ボット」型の「ソフト指し専用ソフトウェア」

image_7

ウェブブラウザで行うオンラインチェスではウェブブラウザの「アドオン」「プラグイン」としてインストールされる「ボット」型の「ソフト指し専用ソフトウェア」もあるみたいです。

これは「特定のオンラインチェスサイト」に特化していて、プレイヤーは何も操作することなく自動で次々と手を指していってくれるものです。
とくに「バレット」のような超短時間の持ち時間のゲームで利用されるみたいです。

ただ、これはさすがにチーターにも人気は出ないと僕は思います。
なぜなら「あまりにもユーザーが介入する余地がなさすぎる」からです。
「オレがしてやった」感があまりにもなさすぎるので「悪の楽しみ」もなく、すぐに飽きるんじゃないかと思います。
こういったものは金銭のやりとりが発生しない限り流行らないと思います。
(それに「ソフト指し発見機能」で発見しやすそうですし・・・・・・。)


最後に

今の所(2017年 6月16日現在)、「ブリッツ」や「バレット」といった短時間の持ち時間のゲームでは「ソフト指し」は少ないように思います。
しかし「ラピッド」や「スロウ」といった 10分以上の持ち時間があると「ソフト指し」が一気に増えている気がします。
おそらくチートをしない人達が「ソフト指し」を避けるために「ラピッド」「スロウ」をやらなくなった結果、「ソフト指し」だらけになったのだと思います。

とりあえずオンラインチェスをしたいならメインは「ブリッツ」「バレット」にして、「ラピッド」「スロウ」は「コンピュータ相手のトレーニング」として利用したほうがいいかもしれません。