Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

回放

回放记录了一场对局,你可以借它查究一个结果,并比较各个模型的行为。找出第一个改变局面的决定:一次本可避免的碰撞、被堵住的出生点、丢失的视野,或一座无人防守的蚁丘。

获取回放

读取 GET /v1/matches/{id},如果响应里有 replay_url,就用它。平台为这个 URL 签发一小时的读取权限。旧链接过期后,重新获取一次对局详情就能拿到新的;请把对局 ID 作为你的稳定引用。

排队中、已取消或失败的对局从未生成回放,其 replay_url 为 null 是正常的。成功对局的详情还会给出地图、种子、引擎摘要、Orion 版本和每个席位的结果。

存储的内容

回放文件是 JSON,包含了从零开始重放这场对局所需的一切:

字段含义
match_id, attempt_token哪场对局,以及对它的哪一次尝试
seed, map_id, map地图。map 带有它的行、列、水域、蚁丘、食物和对称性,所以回放不需要别的任何东西:既不需要赛季,也不需要这张地图在赛季地图列表中的条目,管理员此后可能已经把它停用了
engine_digest, orion_version运行这场对局的卡带,以及运行模型的运行时
max_turns, strike_ceiling这场对局所受的限制
deltas动作流:t 是回合,a 是每个席位一个字符串的列表,每个字符串按该席位的蚂蚁顺序记录各自的方向,- 表示原地不动,m 是这场对局在运行它的波次中的序号,在天梯上总是 0
engine_ranks, scores, reason, turns如何结束
seats每个席位一项:它的 seat 和 model(都是哈希)、strike_ceiling、strikes、forfeited,以及它花在推理上的时间(infer_us_total、infer_us_max、infer_turns)

结果不如意时,先看席位块。有判罚的席位错过了回合;把 infer_us_max 和 1,000 ms 的时限比一比,看看它离错过更多回合有多近。

tinybrains 在你机器上写出的回放有同样的地图、动作流和结果,席位块则更小:一个 label 和它推理过的回合数 seat_turns,没有 attempt_token,也没有判罚上限,因为你机器上没有任何东西会认领对局,也不会判某个席位负。

回放文件存储的是动作。对应的引擎通过重放这些动作重建每个局面,同样的动作每次都得到同样的局面。回放时不运行任何模型,也不会选择新的走法。

engine_ranks 记录的是平台应用判负排名之前的游戏结果。对局记录中的席位名次才是正式的比赛结果;引擎名次用来诊断这局游戏是怎么打的。

观看回放

观看回放有三种方式,每一种驱动的都是运行这场对局的同一个卡带:

  • 网站。对局页面会全屏播放回放。从这里开始。
  • tinybrains view replays/<file>.json 在浏览器中打开一个下载好的回放文件,下方是对局图表,全程不涉及任何服务器。
  • tinybrains conform replays/<file>.json 不绘制回放,而是检查它:仅凭回放文件重建对局,在你的机器上重放一遍,并把地图、种子、引擎、结束方式和每一回合的动作与录像逐一比对,在第一个不同的回合停下。拿你自己参赛模型的回放跑一跑。出现差异意味着两个引擎不一致,这是一个应该报告的 bug。

查看器根据动作流重新模拟,所以它运行的引擎很重要。查看器若运行的引擎与当初对局的不同,不会报任何错误,只会画出一场看似合理却从未发生过的对局。回放文件写明了自己的 engine_digest,你可以拿来比对两者。

引擎交给查看器的每一帧,既说明这一回合发生了什么,也说明当前的局面:每只蚂蚁的 id、这一回合死亡的蚂蚁及击杀它们的敌人,以及被攻陷的蚁丘。查看器把一次死亡画成一个空心圆环,并从每个击杀者引一条线过来(互相击杀的两只蚂蚁画出两条在中点相接的线),把被摧毁的蚁丘画成虚线方框,这样一场战斗一眼就能看懂,屏幕阅读器也能读出谁把什么输给了谁。

回放查看器用运行这场对局的卡带重新模拟记录下来的动作流,所以地图上展示的就是对局当时的样子。下方的图表逐回合跟踪每个席位的蚂蚁、蚁丘或得分;把鼠标悬停在上面即可拖动进度。

本书中的回放示例

凡是一场真实对局有助于说明的地方,本书都在旁边标出了一个计划中的可视化组件。每个示例都必须写明它的回放资源、引擎摘要、相关回合、玩家视角和说明文字。本书不会为这些占位符编造对局 ID 或结果。

全图回放展示的是对局中任何参赛者都看不到的东西。解释模型能从自己的视野推断出什么的页面,需要一个玩家视角的叠加层,并保留文字说明,这样即使没有查看器或回放资源,规则仍然读得通。

从回放中改进

先检查判罚和输出的有效性。再看发展、移动碰撞、战斗支援、侦察和蚁丘防守。在多个种子和地图上比较同一种行为:一场漂亮的胜利说明不了一个修改版是否更强。