update processor doc
Signed-off-by: szdytom <szdytom@qq.com>
This commit is contained in:
parent
3658b0a39f
commit
6fc3e2d3ab
@ -223,6 +223,8 @@
|
||||
- 函数返回的数据长度(4字节无符号整数);
|
||||
- 函数返回的数据。
|
||||
|
||||
当函数返回的数据长度为 0xFF'FF'FF'FF 时,表示函数调用过程中遇到了异常。
|
||||
|
||||
### 结构化数据编码
|
||||
|
||||
在把一些数据编码为二进制数据时,逐个将其成员按照顺序紧密地放在一起。在编码整数或浮点数时,直接使用小端序的二进制表示。在编码字符串或不定长数组时,首先给出一个 4 字节的无符号整数表示长度,然后逐个给出其成员元素。
|
||||
@ -233,7 +235,7 @@
|
||||
|
||||
- `u8`、`u16`、`u32`、`u64`:无符号 8/16/32/64 位整数;
|
||||
- `i8`、`i16`、`i32`、`i64`:有符号 8/16/32/64 位整数;
|
||||
- `str`:字符串,本质上是 `u8` 数组。
|
||||
- `str`:字符串,本质上是 `u8` 数组,使用 UTF-8 编码;
|
||||
- `T[]`:其中 `T` 是一个类型,表示类型为 `T` 的不定长数组;
|
||||
- `T[n]`:其中 `T` 是一个类型,`n` 是一个正整数,表示类型为 `T` 的长 $n$ 的数组。
|
||||
|
||||
@ -256,6 +258,12 @@
|
||||
| `low` | `u64` | 值的低 64 位 |
|
||||
| `high` | `u64` | 值的高 64 位 |
|
||||
|
||||
**类型** `DateTime`:用于表示一个日期时间,精确到秒。
|
||||
|
||||
| 成员标识符 | 类型 | 含义 |
|
||||
| :---------- | :---- | :----------------- |
|
||||
| `timestamp` | `u64` | 时间的 UNIX 时间戳 |
|
||||
|
||||
**类型** `Player`:用于标识一个玩家。
|
||||
|
||||
| 成员标识符 | 类型 | 含义 |
|
||||
@ -306,7 +314,7 @@
|
||||
| `land` | `u16` | 玩家占领的格子的总数 |
|
||||
| `unit` | `i32` | 玩家拥有的单位总数 |
|
||||
|
||||
**类型** `TeamRanking`:用于表示一只队伍在队伍排名上的信息,该类型用于 `GameState` 的成员。
|
||||
**类型** `TeamRanking`:用于表示一只队伍在队伍排名上的信息,该类型用于 `GameTickState` 的成员。
|
||||
|
||||
| 成员标识符 | 类型 | 含义 |
|
||||
| :--- | :--- | :--- |
|
||||
@ -331,14 +339,14 @@
|
||||
| `y` | `u8` | 此格子的 Y 坐标 |
|
||||
| `value` | `Tile` | 格子上的在视野内的值 |
|
||||
|
||||
**类型** `TeamViewDiff`:用于表示一个队伍的视野差分,该类型用于 `GameState` 的成员。
|
||||
**类型** `TeamViewDiff`:用于表示一个队伍的视野差分,该类型用于 `GameTickState` 的成员。
|
||||
|
||||
| 成员标识符 | 类型 | 含义 |
|
||||
| :--- | :--- | :--- |
|
||||
| `team` | `Team` | 队伍 |
|
||||
| `diffs` | `TileDiff[]` | 有变化的格子 |
|
||||
|
||||
**类型** `GameState`:用于表示一半回合结束时的状态,该类型用于 `tick` 的返回值。
|
||||
**类型** `GameTickState`:用于表示一半回合结束时的状态,该类型用于 `tick` 的返回值。
|
||||
|
||||
| 成员标识符 | 类型 | 含义 |
|
||||
| :--- | :--- | :--- |
|
||||
@ -377,15 +385,16 @@
|
||||
| 成员标识符 | 类型 | 含义 |
|
||||
| :--- | :--- | :--- |
|
||||
| `uid` | `uuid` | 玩家标识符 |
|
||||
| `id` | `u8` | 玩家在游戏内的编号 |
|
||||
| `name` | `str` | 玩家的用户名 |
|
||||
| `id` | `Player` | 玩家在游戏内的编号 |
|
||||
| `team` | `Team` | 玩家在游戏内的队伍 |
|
||||
| `name` | `str` | 玩家的显示名 |
|
||||
|
||||
**类型** `Replay`:用于表示游戏回放。
|
||||
|
||||
| 成员标识符 | 类型 | 含义 |
|
||||
| :--- | :--- | :--- |
|
||||
| `rid` | `uuid` | 回放的标识符 |
|
||||
| `timestamp` | `u64` | 游戏的开始时间的Unix时间戳 |
|
||||
| `start_time` | `DateTime` | 游戏的开始时间 |
|
||||
| `speed` | `i8` | 游戏速度 |
|
||||
| `init_info` | `InitInfo` | 游戏初始化的配置 |
|
||||
| `length` | `u32` | 游戏进行的回合数 |
|
||||
@ -420,7 +429,7 @@
|
||||
| 22 | `popOrderQueue` | 清除玩家的行动队列的最后一项 | `Player` | `void` |
|
||||
| 23 | `setOffline` | 通知玩家掉线 | `Player` | `void` |
|
||||
| 30 | `init` | 初始化 | `void` | `u8[]` |
|
||||
| 31 | `tick` | 执行下一个半回合 | `void` | `GameState` |
|
||||
| 31 | `tick` | 执行下一个半回合 | `void` | `GameTickState` |
|
||||
| 40 | `getKeyFrame` | 返回某一队伍的视野 | `Team` | `Tile[]` |
|
||||
| 50 | `saveReplay` | 保存回放 | `GameInfo` | `Replay` |
|
||||
|
||||
@ -570,7 +579,7 @@ $$
|
||||
|
||||
### 半回合处理回响
|
||||
|
||||
当调用 `tick` 函数时,处理器需按照游戏规则处理游戏逻辑,并算出需要向玩家展示的信息,返回一个 `GameState` 类型。
|
||||
当调用 `tick` 函数时,处理器需按照游戏规则处理游戏逻辑,并算出需要向玩家展示的信息,返回一个 `GameTickState` 类型。
|
||||
|
||||
在每个半回合处理时,处理器应当按顺序执行以下操作:
|
||||
|
||||
|
@ -104,9 +104,10 @@ struct ReplayStep {
|
||||
struct PlayerInfo {
|
||||
uuid uid;
|
||||
Player id;
|
||||
Team team;
|
||||
std::string name;
|
||||
|
||||
OGPC_DECLARE_ASTUPLE(uid, id, name)
|
||||
OGPC_DECLARE_ASTUPLE(uid, id, team, name)
|
||||
};
|
||||
|
||||
struct InitInfo {
|
||||
|
Loading…
x
Reference in New Issue
Block a user