游戏逻辑通信协议
游戏逻辑会将当前局面信息转换成json格式转发给judger,之后再转发给玩家SDK,由SDK进行解析。
玩家收到的信息格式为\(6+n\),前\(6\)位表示json串的长度。可以参考ai_client中的read_opt、update_game_info函数。
玩家传操作时传的信息格式为\(4+n\),前\(4\)位表示json串的长度。json的格式可参考ai_client中init、summon、move、attack、use、end_round函数。
接收到的信息的具体json格式如下
总体格式
{
"map": {
"units": [
[3, 0, 0, 2, 1, 2, 2, [3, 4], 3, 4, [0, 0, 0], 1, 0, 1, 0, 0, 1, 1] //一个单位
],
"barracks": [-1, -1, -1, -1], //驻扎点占领情况,-1为未占领,否则值为玩家id
"miracles": [30, 30]//双方神迹血量,0号玩家在前
},
"players": [
[//player 0
[//携带神器
[0, 3, 8, 12, 12, 2, 0, [0, 0, 0]]//神器状态
],
1, //剩余法力值
1, //最大法力值
[//生物容量
[0, 2, []],
[2, 3, []]
],
[3]//本回合召唤的单位列表
], [//player 1。下面同上
[],
2,
2,
[],
[]
]
],
"camp": 0,
"round": 0,
}
注:以上信息不一定是合法局面的结果,仅供参考
生物格式
[
3, //生物id,从3开始
0, //生物阵营,同玩家编号
0, //生物类型,0号为弓箭手,具体类型名对照见后面
2, //法力值花费
1, //攻击力
2, //血量上限
2, //血量
[3, 4], //攻击范围
3, //行动力
4, //死亡后的冷却时间
[0, 0, 0], //位置
1, //等级
0, //飞行
1, //对空
0, //迅捷
0, //圣盾
1, //能攻击
1 //能移动
]
神器格式
[
0, //神器id
3, //神器类型,3为风神,对照见后
8, //法力值消耗
12, //使用后冷却时间
12, //冷却时间
2, //神器状态,2为冷却中,对照见后
0, //神器目标类型,0为对坐标,对照见后
[0, 0, 0] //上次使用地点,未使用过则为[-1,-1,-1]
]
生物容量格式
对照表
具体对照表可以参看游戏逻辑中Data.json,逻辑根据此文件执行转换
生物
"UnitNameParsed": {
"Archer": 0,
"Swordsman": 1,
"BlackBat": 2,
"Priest": 3,
"VolcanoDragon": 4,
"Inferno": 5,
"FrostDragon": 6
}
神器
"ArtifactNameParsed": {
"HolyLight": 0,
"SalamanderShield": 1,
"InfernoFlame": 2,
"WindBlessing": 3
}