通讯协议定义:AI
Overview
AI 通讯协议是纯二进制编码的整数序列。
基本数据类型:
byte
B
: 8 位无符号整数int
I
: 大端序 16 位有符号整数
下面的通讯协议中,Name:Type
表示类型为Type
名为Name
的数据。注意Name
只是为了协议容易理解,并不会出现在实际数据中。
消息类型(Type)
数据类型:byte
Type | Value |
---|---|
道具列表 | 0x10 |
移动操作-x轴正向 | 0x01 |
移动操作-y轴正向 | 0x02 |
移动操作-x轴负向 | 0x03 |
移动操作-y轴负向 | 0x04 |
融化射线操作 | 0x05 |
分裂操作 | 0x06 |
游戏结束 | 0x11 |
游戏配置
道具列表
移动、融化射线、分裂操作
游戏结束
GameOverType | Value |
---|---|
正常结束 | 0x00 |
玩家断开连接 | 0x10 |
玩家操作不合法 | 0x11 |
玩家数据格式出错 | 0x12 |
评测内部问题 | 0x20 |
总体流程
游戏开始之前给AI发送配置信息,共四个数字,分别为地图的长宽以及最大回合上限、当前玩家编号,格式对应见上。
接下来向AI发送道具列表,以Type=0x10
为起始,紧跟ItemCount:I
为道具总数,之后共ItemCount
个五元组,代表道具的五个属性,具体对应见上。
游戏正式开始之后,逻辑不会向AI发送回合开始信息,需要AI的逻辑处理模块自行完成,之后玩家与逻辑通过上述格式进行操作的交互,当前玩家的回合在玩家发送操作后,逻辑会将操作转发至双方(包括发送者);回合的切换可通过AI中逻辑模块维护实现;操作的格式见上。
正常游戏过程中,需要依次发送每条蛇(按照操作顺序)的操作,在每条蛇操作发送后逻辑会传回该操作或是错误信息。
若接收到Type=0x11
的信息,则代表游戏结束,AI中的逻辑处理模块需进行结束操作。