Saiblo网站的对局支持下载回放文件,回放文件格式为json,包含以下几个字段:

  • game_config字段,代表游戏的配置信息,包括地图长宽length/width、最大回合数max_round、随机数种子random_seed
    { "length": 16, "width": 16, "max_round": 512, "random_seed": 1642262138104 }
    
  • item_list字段,代表游戏开始时生成的道具列表,其中道具的每个字段与Item类(见ADK User Guide)中的成员一一对应。
        [
            { "x": 7, "y": 6, "time": 3, "type": 0, "param": 5 },
            { "x": 8, "y": 6, "time": 16, "type": 2, "param": 512 },
            ...
        ]
    
  • round_info字段,代表每回合开始时的信息,一回合的信息格式如下:
    {
      "gotten_item": [            // 此回合直接生成在蛇身上的道具。item和snake均为对应的id
        {"item": 0, "snake": 1},
        {"item": 2, "snake": 3}
      ],
      "expired_item": [           // 此回合过期的道具,若为地图道具则snake为-1。
        {"item": 1, "snake": 2},
        {"item": 3, "snake": 5}
      ],
      "invalid_item": [],         // 此回合应无效化道具,弃用字段。
      "extra_length": [           // 此回合开始时因为某种原因(直接刷新的长度道具)而让长度银行发生变化的信息,el代表新的长度银行值
        {"snake": 1, "el": 5}
      ]
    }
  • operations字段,代表每个回合的操作以及其附加信息,一回合的信息格式如下:
    {
      // 原操作,type代表类型,snake代表蛇编号,direction代表方向,item_id代表道具编号。
      // 编号为1代表移动,此时direction=0,1,2,3分别代表x轴正向、y轴正向、x轴负向、y轴负向
      // 编号为2代表融化,item_id为使用道具的编号
      // 编号为3代表分裂
      "basic": { "type": 1, "snake": 0, "direction": 0, "item_id": -1 },

      // 以下为移动操作的附加信息
      "dead_snake": [1,2,3], // 因为本操作而消失的蛇的id列表。
      "should_solid": true,  // 执行本操作的蛇是否固化。
      "extra_solid_area": [  // 执行本操作的蛇固化的区域,按x、y升序排序。
          { "x": 2, "y": 1 },
          { "x": 2, "y": 2 },
          { "x": 3, "y": 1 },
          { "x": 3, "y": 2 },
      ],
      "got_item": 4,         // 执行本操作的蛇操作后吃到的道具。-1表示不存在。
      "extra_length": 1,     // “长度银行”剩余长度。

      // 以下为分裂道具的附加信息
      "new_snake_id": 12     // 分裂产生的新蛇的id,没有则为-1。
    }
  • end_info字段,代表结束信息。type为结束类型,winner代表获胜玩家编号,score代表两个玩家的得分,第一个值为0号玩家得分,第二个值为1号玩家得分,err代表错误信息。

若选手出现IA,可查看err错误信息分析原因

"end_info": { "type": "NORMAL", "winner": 0, "score": [71, 47], "err": null }