チェスエンジンに実装する必要のあるインターフェイスプロトコルはどれですか?


8

私はC ++ https://github.com/RomainGoussault/Deepovでチェスエンジンを書いています

そこにはいくつかのインターフェイスプロトコル(UCI、Winboardプロトコルなど)があり、どちらを実装するかわかりません。次のいずれかをお願いします。

  • エンジンがオンライントーナメントをプレイできるようにします
  • Linux、Windows、iOS用のGUIがいくつかあります
  • ある種のドキュメントがあります

ありがとう


2
なぜJavaなのか?信じてください、あなたがあなたのエンジンをスピードのために最適化しているとき、あなたはそれを後悔するでしょう。
Rafiek 2014

私はJavaをよく知っているからです。また、Javaは他の言語と比較して本当に遅いことも知っています。後でC ++に移植するかもしれません。
ロメイン


1
C ++への移植が完了しました;)
Romain

回答:


9

UCIとWinboardの2つのプロトコルしかありません。Winboardは古いプロトコルであり、現在は実際には使用されていません。Craftyは、Winboardプロトコルを現在もサポートしている唯一の主要なエンジンですが、エンジンが非常に古いためです。UCIは、シュレッダーによって開発された新しいプロトコルであり、Windows、Mac、Linux、Android、iOSなど、あらゆる場所で使用されています。UCIは、検討する必要がある唯一のプロトコルです。

  1. UCIはどこでもサポートされています
  2. xboard以外のすべてのチェスGUIは、Chessbase、Scid、ArenaなどのUCIをサポートしています。xboardでも、Polyglotと呼ばれるものによってUCIエンジンに接続できます。
  3. UCIドキュメントはhttp://wbec-ridderkerk.nl/html/UCIProtocol.htmlにあります

Winboardは、プロトコルがよりクリーンなUCIよりも複雑であるため、時代遅れになっています。Winboardは規定のプロトコルです。つまり、エンジンの状態は以前の反復に依存しますが、UCIは現在のFENまたはムーブリストを提供するだけでよいので、扱いが簡単です。


1
上記のマイナーな修正-ArenaなどのチェスGUIは通常、UCIとのゲーム状態の通信にFENを使用しません。彼らはゲームの最初から移動リストを使用します。これにより、エンジンはFENと十分に通信されないことが多い50の移動ルールやその他のゲーム機能を正しく処理できます。ただし、プロトコルはFENを使用して、任意のゲームポジション、およびムーブリスト全体が不明なポジションをセットアップします。ただし、ポスターは他のすべての点で正しいです。
johnwbyrd 2015

1
@johnwbyrd回答を編集しました。ありがとう。
SmallChess、2015

1
FENは50の移動ルールで正常に機能します。問題を引き起こすのは、3つの繰り返しルールです。
Kef Schecter

1

iOSでGUIまたはエンジンを個別のアプリとして作成することはできないと思います。iOSでは、セキュリティ設定の一環として、1つのアプリが別のアプリを呼び出すことはできません。エンジンの作成者は、App Storeでのリリースの承認をAppleに申請する前に、GUIを記述して、それをエンジンと統合する必要があります。これはWindows RTにも当てはまる場合があります。AndroidにはGUIとエンジンがあります。

UCIおよびCECP(Chess Engine Communication Protocol、つまりwinboard / xboard)とは別に、Chessbaseには独自の独自プロトコルがあります。強力なエンジンの多くはUCIを使用していますが、初心者のプログラマーはCECPをかなり一般的に使用しています。


Windows Phoneにも当てはまります。
SmallChess 2015

-3

ほとんどのGUIサポートエンジンはUCIまたはWinboardのいずれかであり、UCIは最近では標準的で人気のあるものになっています。ただし、通常、エンジンを任意のGUI(WindowsまたはLinux)に簡単にプラグインできるようにする場合は、これらのGUIプログラムで参照できる「exe」または実行可能ファイルが必要です。Javaを使用してエンジンを構築している場合、これをGUIで使用する実行可能ファイルに変換する方法がわかりません。同じことは、オンライントーナメントをプレイできることにも当てはまります。エンジンにWebサービスのようなインターフェイスを提供することを計画している場合でも、エンジンのコンテストに参加することはできないと思います。


いいえ。Javaは.exe上でネイティブに構築できます。Javaは必ずしも仮想マシンで実行する必要はありません。
SmallChess 2014

あなたが話している.exeファイルはエンジンファイルです。エンジンはUCIまたはWinboardをサポートする必要があります。そうしないと、チェスGUIはそれを読み取ることができません。あなたの発言は意味がありません。
SmallChess 2014

私はあなたのコメントを笑わざるを得ません。JREをインストールせずにJavaプログラムを実行してみてください。
Keshav 2014

1
もしあなたがプログラミングをしたなら、あなたは自分で笑うでしょう。Javaはネイティブプログラムにコンパイルできます。
SmallChess 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.