FileMaker开发人员通过僵持状态创建国际象棋引擎

FileMaker Database应用在游戏平台中占主导地位

作者: eXcelisys FileMaker开发人员 Joe Cellino

在这个世界上,有两件事为我带来欢乐:国际象棋和FileMaker。 我从未想过这两种激情会在我的一生中跨越道路,但是现在,这一天已经到来。

在过去的几年中,我沉迷于技术行业,我已经看到了机器学习的发展速度。 从无人驾驶自动驾驶汽车到Google Assistant(与人类进行的对话非常相似),美国的技术格局正在不断发展。

尽管所有这些技术都令人印象深刻,但我最喜欢的“深度学习”冠军必须是AlphaGo Zero。 AlphaGo是一种机器学习程序。 给AlphaGo制定一套游戏规则,它将反复进行直到自己掌握游戏为止。 换句话说,AlphaGo通过玩自己的游戏来学习,并随着每款游戏的发展而不断提高。

在2017年末,AlphaGo被给予了四个小时的“自我训练”和学习国际象棋的游戏。 然后,AlphaGo发挥了世界上最好的国际象棋引擎Stockfish。 Stockfish多年来一直在国际象棋世界中独领风骚,一直赢得世界象棋引擎冠军。 但是在这场比赛中,Stockfish的表现就像一条没水的鱼。 在参加的100场比赛中,AlphaGo赢得了胜利28场,并在其余比赛中被平局(在此处找到比赛详情)。

受AlphaGo Zero的启发,我想知道是否有可能在FileMaker平台上创建国际象棋引擎。 在使用FileMaker进行开发的五年中,我从未考虑过使用该平台来设计游戏。

我制定了攻击计划:

  1. 创建数据结构
  2. 设置一个板并移动
  3. 开发棋子运动逻辑
  4. 添加更多的规则,例如castling,en passant和check
  5. 添加将死和僵局

数据结构很简单。 每个游戏可以有很多动作。 做完了 设置董事会要困难一些。 最初,我认为我可以利用容器字段的拖放功能来移动棋子并通过脚本触发器来控制游戏。 例如,当单击容器时,OnObjectEnter脚本触发器将确定选择了哪个正方形。 将图像拖放到另一个容器中后,OnObjectModify脚本触发器将处理移动。 这似乎引起了比应有的问题更多的问题,因为脚本触发器不会总是运行,而如果不运行,整个游戏就会毁了。 为了解决此问题,由于它们在运行脚本中的稳定性,我决定改用按钮栏。

我还决定将每张图片保存在“一张桌子”中,而不是直接将它们存储在板上。 这样就可以使用由文本字段驱动的容器计算来显示一块图像,这些文本字段存储了每个块所占的正方形的回车列表。

设置好板并可以移动零件之后,下一步就是为每个零件的移动开发逻辑。 我能够使用脚本和自定义函数来创建每块棋子的运动逻辑,以确定正方形是否被占用和/或可用。 该脚本的工作方式如下:

  1. 玩家选择一个正方形。
  2. 根据正方形中的图像,确定正方形,块和颜色。
  3. 如果选择了一块,该轮到该颜色了,那么确定该块类型可以移动到的所有合法正方形。
  4. 如果玩家选择了合法的方块之一,则通过修改存储棋子位置的适当文本字段来移动棋子。 如果玩家选择其他方块,请再次执行步骤2至4。

Castling和enpassant可以轻松地通过其他脚本和逻辑来处理,但事实证明,与支配国王的交易更加复杂。 我首先创建了一个脚本,该脚本计算了相反颜色的部分正在攻击的所有正方形(即受保护的正方形)。 此脚本在每次移动后运行。 我进行了设置,以使国王无法合法地转移到受保护的广场,并且如果您的国王在回合开始时处于受保护的广场,则您将受到检查。

起初,我以为这足够了,但很快就意识到除了国王以外,您还可以移动其他棋子以进行检查。 因此,在确定每件作品的合法举动时,我必须“检查一下”。 重要的是,在移动任何棋子之后确定检查是很重要的,因为一块棋子可能会将您的国王与对手的棋子区分开,并且如果被移动,也会使您处于对位状态。 这需要更多的处理能力,因为检查检查需要在假设移动了零件之后确定受保护的正方形。

将军和僵局需要向前看。 如果轮到您并且您在检查中并且没有任何合法举动,那么它就是将死。 如果您从第一种情况中删除支票,那么它将处于僵局。 两者似乎都与创建可以采取明智法律行动的AI并驾齐驱,因此我决定将这些功能保留在此版本之外。

采取行动。 直接从eXcelisys博客下载FileMaker Go Zero国际象棋引擎(免费!)。

将来,我的目标是添加计算机AI,该计算机AI能够确定其法律举动并做出明智的选择,以赢得比赛。 看来我拥有正确的脚本结构可以确定法律行动。 从理论上讲,我将必须通过子/父关系链接动作并建立树数据结构,以便查看前进的方向并确定将来的位置是好是坏。 然后也许有一天,我的引擎可以在计算机世界象棋锦标赛中与AlphaGo竞争。 请继续关注我的下一个版本。

如果您陷入数据库的混乱之中,并且需要 FileMaker开发人员 来解决问题,请立即联系 eXcelisys 进行免费咨询。