今天终于下了个Fuego来玩玩。Fuego是很强大的一个围棋程序, 基于GTP(Go Text Protocol)协议。 GTP是一个灵活和易于实现的传输协议,主要是用于两个程序之间进围棋游戏,所以所有支持GTP的围棋程序都能对弈。下面简单介绍一下GTP协议:
这里主要介绍GTP版本2
1.1 Communication Model
GTP协议中主要有两方面,一个是称为Controller,作用是像一个仲裁者或信息转传中介;另一个是Engine,相当于是围棋客户端程序。所以的交互是通过Controller转化为一条条的命令,Engine再对命令做出相应。
1.2 几种不用的使用方式
(1).Regression testing
controller (regression script) ------> engine
这种模式是controller产生一个状态,测试engine是如何走另一步的。
(2).Human vs program.
controller (GUI) ----->engine
其实就是controller按照人的意思产生一条命令,再由engine响应。
(3).Program vs program with arbiter.
engine 1 ----> controller (arbiter) -----> engine 2
两个engine之间通过controller通信。
(4).Program vs program without arbiter.
这种模式是其中一个engine集合了controller的功能。
(5).Connection between go server and program.
go server ----> controller (relay) -----> engine
这种模式貌似是controller和一个什么协议都支持的Go Server进行通信,然后再翻译成GTP中的命令让engine作出响应。
接下来要介绍这个协议的传送内容,留在下次再写