Appearance
游戏执行流程
面向对象:服务器管理员(主控/GAME_ADMIN) | 前置条件:已完成游戏准备流程
概述
本文档涵盖一场逃走中游戏的完整执行生命周期:开始→运行中管理(暂停/恢复/倒计时冻结)→终止结算。
游戏状态一览
| 操作 | 指令 | 权限 | 状态变化 |
|---|---|---|---|
| 开始 | /nfa basic start | MASTER_ADMIN / CB | IDLE → RUNNING/NORMAL |
| 暂停 | /nfa basic pause | MASTER_ADMIN / CB | NORMAL → PAUSED |
| 恢复 | /nfa basic resume | MASTER_ADMIN / CB | PAUSED → NORMAL |
| 终止 | /nfa basic stop | MASTER_ADMIN / CB | RUNNING → IDLE(触发结算) |
| 冻结倒计时 | /nfa rfm round countdown_freeze start | MASTER_ADMIN / CB | NORMAL → COUNTDOWN_FROZEN |
| 解冻倒计时 | /nfa rfm round countdown_freeze stop | MASTER_ADMIN / CB | COUNTDOWN_FROZEN → NORMAL |
执行流程总览
mermaid
flowchart TD
A["准备就绪"] -->|"/nfa basic start"| B["RUNNING/NORMAL<br/>倒计时运行中"]
B -->|"团灭/超时/stop"| F["结算+清理"]
B -->|"pause"| C["RUNNING/PAUSED<br/>完全冻结(禁止行动)"]
B -->|"countdown_freeze"| D["RUNNING/FROZEN<br/>仅冻结倒计时(允许行动)"]
C -->|"resume"| B
D -->|"countdown_freeze stop"| B
F --> G["IDLE<br/>可开始新一局"]
subgraph Manage["运行中管理"]
Coin["金币 add/sub/set/clear"]
Res["复活 resurrect"]
Ab["弃权 abstain"]
Tr["叛节者 traitor set/clear"]
Tw["标题打字机 titlewriter"]
Pair["结对 pairing"]
end
B -.-> Manage一、开始游戏
指令方式
/nfa basic start中控面板方式
中控面板 → 游戏控制 → 设置总时长(默认 3600 秒 = 60 分钟)→ 点击"开始"
startGame() 内部流程
- 快照当前在线逃走者 UUID(锁定参战者名单)
- 清空警报列表
- 重置所有侦测方块
- 恢复逃走者状态(
eliminated=false等) - 重置猎人回合数据
- 随机分配猎人出生点(如已设置)
- 红石触发器全部断电(复位到默认输出)
- 全服同步游戏状态与 HUD
二、运行中管理
2.1 暂停与恢复
适用场景:处理技术问题 / 调整游戏参数 / 等待断线玩家重连
暂停期间效果:
- 倒计时冻结
- 硬币停止发放
- 玩家行动被阻止(伤害事件被拦截)
/nfa basic pause
/nfa basic resume注意:暂停前会自动结算该时段已产生的金币,玩家不会损失。
2.2 倒计时冻结
与暂停的关键区别:冻结仅停止倒计时和硬币产出,玩家仍可自由移动。
典型场景:猎人装置复活环节(自动触发冻结)。
/nfa rfm round countdown_freeze start
/nfa rfm round countdown_freeze stop2.3 金币管理
| 操作 | 指令 | 说明 |
|---|---|---|
| 调整产出率 | /nfa rfm coin rate <50|100|200|500> | 调整每秒金币产出 |
| 增加总币 | /nfa rfm coin add <玩家> <数量> | 增加跨局累计总币 |
| 减少总币 | /nfa rfm coin sub <玩家> <数量> | 减少总币 |
| 清零回合币 | /nfa rfm coin clear <玩家|all> | 仅清零本局回合币 |
| 设置总币 | /nfa rfm coin set <玩家> <数量> | 直接设置总币值 |
2.4 玩家状态管理
| 操作 | 指令 |
|---|---|
| 复活逃走者 | /nfa rfm resurrect <玩家> |
| 设为弃权 | /nfa rfm abstain <玩家> |
| 设为叛节者 | /nfa rfm traitor set <玩家> |
2.5 游戏内通知
- 手动发送:中控面板 → 通知管理 → 选中通知 → 发送
- 红石触发:
notice_sender方块收到红石上升沿时自动发送 - 手机推送:自动推送到目标玩家的逃走中 APP
2.6 特殊事件
| 事件 | 指令 |
|---|---|
| 启动警报响铃 | /nfa rfm alarm start <分钟> <秒> |
| 播放标题动画 | /nfa rfm titlewriter start <玩家> <文件ID> <组> |
| 猎人装置复活 | /nfa rfm round resurrect_device start [目标数] |
| 启用侦测 | /nfa rfm detect start |
三、终止游戏
3.1 主动终止
/nfa basic stop或中控面板 → 游戏控制 → 终止。
3.2 自动终止条件
| 条件 | 触发效果 |
|---|---|
| 倒计时归零 | 自动结算 → 清理 |
| 所有逃走者被淘汰(团灭) | 自动结算 → 清理 |
| 仅剩叛节者存活(叛节者胜利) | 自动结算 → 清理 |
3.3 结算流程
终止时按两阶段执行:
第一阶段 — 结算(settleRoundAndBroadcast()):
- 读取每人本局回合币
- 应用结对调整(COIN 模式取双方较高值 / LIFE 模式双方相加)
- 回合币转为总币(
addCoinsByMap) - 写入 JSON 结算备份(
nfa_rfm/coin.json) - 全服广播结算排名
第二阶段 — 清理(executeGameEnd()): 6. 清理全部游戏状态,恢复至 IDLE
四、常用操作速查
| 场景 | 操作 |
|---|---|
| 玩家断线重连 | 自动恢复,无需手动操作 |
| 调整游戏时长 | 暂停 → 中控面板重新设置 → 恢复 |
| 紧急停止 | /nfa basic stop |
| 查看存活人数 | 猎人/NPC 的 HUD 左上角 |
| 查看剩余时间 | 猎人/NPC 的 HUD 左下角 |
| 停止警报 | /nfa rfm alarm stop |
| 停止侦测 | /nfa rfm detect stop |
注意事项
- start 前必须处于 IDLE:无法从 PAUSED 或 COUNTDOWN_FROZEN 直接开始新游戏
- stop 始终触发结算:主动终止也会走完整的结算流程
- PAUSED ≠ FROZEN:PAUSED 禁止玩家行动,FROZEN 仅暂停倒计时,玩家仍可移动
- 暂停前自动结算金币:该时段已产生的金币不会丢失
- HUD 仅猎人和工作人员可见:逃走者无法通过 HUD 看到倒计时和存活人数