跳到主要内容
实时游戏

本页尚未翻译,当前显示英文版本。

编写机器人大脑

机器人大脑就是普通代码,只回答一个问题:这个机器人下一步做什么。 它想在哪里运行都可以:云函数、你自己的服务、无头客户端。它与房间通信用的接口,和真人玩家的客户端完全一样。本页规定它接入的插口:大脑收到什么、可以回发什么、在什么时候。如何让机器人进入房间,见 Bots。

已经确定的内容,以及现在就能基于它开发的部分

平台不提供游戏 AI。 没有行为树,没有效用系统,也没有导航大脑。边界就在这里:决策归你,模块的任务是让你的决策与玩家的决策无从区分。

机器人大脑不是 hook。 hook 包裹的是我们的某个步骤,而大脑根本不是我们的步骤:它在房间之外按自己的节奏运行,平台也不关心连接是从哪一端发起的。所以大脑可以是云函数、你托管的服务或无头客户端,而且没有哪一种比其他更“原生”。

插口就是感知进、指令出,两端都与玩家完全相同:

含义
感知与坐在该席位(seat)上的玩家收到的完全相同:同样的增量,经过同样的可见性规则。机器人(bot)和玩家一样无法透视。
指令与坐在该席位上的玩家发送的完全相同。不存在特权输入通道。

能看到更多内容的机器人(调试模式、训练模式)是经过声明的范围扩大,而不是身为机器人的副作用。

思考 tick 由声明给出,它不是模拟 tick。 大脑在外部运行,所以按自己的节奏思考。

两次思考之间,沿用最后一条指令

机器人大脑(brain)思考得慢,机器人并不会原地不动,而是继续执行它上一次的决定。设计大脑时要考虑到这一点。

大脑掉线时的行为由声明给出,而且没有默认值。 你按房间类型规定大脑不再响应时会发生什么。“大脑不可用”是一个保留事件,所以后来的订阅者也能了解当前状况,而不只是今后的变化。

机器人特意不能做的事

这些是有意的拒绝,而不是遗漏。

  • 机器人不是玩家,它不拥有权益、购买记录或排行榜记录。如果机器人能持有这些,就等于有了一条凭空制造它们的途径。
  • 机器人标志始终存在,平台也始终能观察到。游戏是否向玩家显示它由你决定,但它是否存在不由你决定。
  • 本模块不记录机器人做了什么决定,也不记录原因。 这是你自己的事,放在你自己的遥测里:平台不是存放 AI 推理过程的地方。