制作棋盘游戏AI的技术相互竞争?

时间:2016-05-22 00:35:20

标签: artificial-intelligence protocols game-ai

假设我为特定棋盘游戏设置了多个AI程序,所有这些程序都以不同的语言实现,并且希望让它们在没有人工中介的情况下相互竞争。我该怎么做呢?

我认为这是人工智能研究人员,业余爱好者,游戏比赛等常见问题。

是否有共同的架构?也许AI作为单独的进程运行,并通过套接字与中央“板”进程通信?

2 个答案:

答案 0 :(得分:3)

我认为没有共同的协议。 Michel Quenault和Tristan Cazenave的GGTP, a General Gaming Text Protocol非常有趣,因为您描述了设计一般解决方案时遇到的困难,并且有许多参考文献但它不是

  • 完全实施
  • 众所周知

所以你必须依靠 ad hoc 协议。

对于国际象棋,有Chess Engine Communication Protocol(又名Xboard / Winboard协议)和Universal Chess Interface(UCI)。

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

两者均可免费使用,无需许可证费用。

对于开始,有Go Text Protocol(FTP)

对于检查程序/草稿,有CheckerBoard APIDamExchange Protocol

答案 1 :(得分:1)

套接字是可能的,但我确实使用管道。电路板程序通过AI STDIN发送当前状态(作为字符串),AI通过STDOUT执行操作。棋盘程序更新游戏状态,并且该过程在玩家之间交替。我让学生用这种方式使用Java和C进行竞争。如果您想知道如何在C中执行此操作,那么这是董事会的source codeHere是一个用C编写的示例播放器,以及Java中的here