1

假设我有多个用于特定棋盘游戏的 AI 程序,全部以不同的语言实现,并希望让它们在没有人类中介的情况下相互竞争。我该怎么办?

我想这对于人工智能研究人员、爱好者、游戏比赛等来说是一个普遍的问题。

有没有共同的架构?也许人工智能作为独立的进程运行,并通过套接字与中央“板”进程通信?

4

2 回答 2

3

我不认为有一个共同的协议。GGTP,Michel Quenault 和 Tristan Cazenave 的通用游戏文本协议非常有趣,因为它描述了您在设计通用解决方案时遇到的困难,并且有很多参考资料,但事实并非如此

  • 完全实施
  • 众所周知

因此,您必须依靠临时协议。


对于国际象棋,有国际象棋引擎通信协议(又名Xboard /Winboard 协议)和通用国际象棋接口(UCI)。

随着多年的发展,Xboard 协议已经发展,现在支持标准国际象棋游戏以及各种国际象棋变体,包括世界上主要的国际象棋形式(象棋、将棋、马克鲁克)以及西方变体。

两者都可以免费使用,无需支付许可费。


对于Go,有Go 文本协议(FTP)


对于跳棋/草稿,有CheckerBoard APIDamExchange 协议

于 2016-05-23T22:29:13.890 回答
1

套接字是一种可能性,但我确实使用管道。板子程序通过 AI STDIN 发送当前状态(作为字符串),AI 通过 STDOUT 以动作回答。棋盘程序更新游戏状态,这个过程在玩家之间交替进行。我让学生以这种方式使用 Java 和 C 进行比赛。如果您想知道如何在 C 中执行此操作,这里是该板的源代码。是一个用 C 和Java编写的示例播放器。

于 2016-06-05T10:36:01.973 回答