#author("2016-08-01T23:01:37+09:00","","")
[[Trax+FPGA JP]]

* Trax 通信プロトコル [#zc190c74]

** Trax コンテストでの通信の基本 [#d587cd14]

コンテストでは、ホスト PC で動作する審判 (ホスト) プログラムに、 Trax プレイヤーを実装した FPGA ボードやマイコンボード、PC などのクライアントを接続してお互いの手を交換し、対戦を行います。 接続にはシリアル (RS-232C: 通常は USB-シリアルアダプタを使用) や TCP を使用します。シリアルを用いる場合、それぞれのクライアントには、 別々のポートから個別のケーブルを用いて接続します。

*** 通信の流れ [#n3da33b0]

シリアルの場合にはホストを起動した直後に、 TCP の場合にはクライアントと審判プログラムの間の接続が確立された直後に、 それぞれ初期化のコマンドがクライアントへ送信されます。 試合が開始されたら、クライアントはホストへ自分の手を 表す trax notation を送り、 ホストはそれを相手のクライアントに転送します。 相手の手を受け取ったクライアントは、 自分の手を送り返すことで試合を進めていきます。

クライアントは、審判プログラムからコマンドや相手の手を受け取ったら、 所定の制限時間内に応答を送らなければなりません。

*** メッセージのフォーマット [#fd55584d]

ホストとクライアントでやりとりされるメッセージは ASCII 文字で、 メッセージの終わりは newline (0x0a) で示されます。ただし、 このサイトで配布しているプログラムは、carridge return (0x0d) と newline の 2 文字で構成される、 いわゆる改行コードのシーケンスでもメッセージの終わりと認識します (手動の操作での動作チェックを簡単にするためです。)

** 初期化シーケンス [#a0ea5661]

*** プレイヤーIDの送信 (オプション) [#gf008c5a]

ホストプログラムはまず最初に、クライアントに "-T" を送信します。 これを受け取ったクライアントは、 あらかじめコンテストの主催者から割り当てられたプレイヤー ID (ASCII コード2文字) を送信しなければなりません。

このコマンドはオプションとなっており、traxgame.com 版のソフトウェアでは使われません。

*** 先手・後手の指定 [#n1e2d5f9]

先手・後手はホストプログラム (このサイトで配布しているツールの場合は trax-comm) によって決定され、 先手 (白) となるクライアントには "-W" が、後手 (赤、あるいは黒) となるクライアントには "-B" が送信されます。

先手となったクライアントは、"-W" を受信したのち、 制限時間内に自分の初手を Trax notation で送信しなければなりません。 後手となったクライアントは、 相手の初手を受信するまで待機します。

*** ゲームの進行と終了 [#n00721f0]

先手のクライアントが初手の Trax notation を送信すると、 ホストはその Trax notation をそのまま相手クライアントに転送します。 相手の手を受け取ったクライアントは、 制限時間内に自分の手を表す Trax notation をホストに送らなければなりません。

ゲーム終了の場合、TCP ならば接続が接続が切断されます。 シリアルの場合にはゲーム終了の通知はとくにありませんが、 次の試合が開始された場合にはホストから -T, -W, -B などのコマンドが送信されます。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS