猹引擎
GUI - 多人同步与状态回推
这页解决什么问题
让所有玩家页面看到同一份实时状态,避免“我看见的和队友不一样”。
同步状态项
| 状态 | 说明 |
|---|---|
| 活动倒计时 | 全员统一倒计时 |
| 占点进度 | 同一据点实时进度 |
| 队伍分数 | 多队伍实时积分 |
| Boss 阶段 | 全员同步阶段机制 |
下发数据结构示例
json
{
"action": "activity_state_sync",
"countdown": 178,
"pointProgress": 62,
"teamScore": {
"red": 140,
"blue": 120
},
"bossPhase": "phase_2"
}页面同步模板
js
ChaEngine.onServerData((packet) => {
if (packet.channel !== 'ui.state') {
return;
}
const data = JSON.parse(packet.data || '{}');
if (data.action !== 'activity_state_sync') {
return;
}
renderCountdown(data.countdown);
renderPointProgress(data.pointProgress);
renderTeamScore(data.teamScore || {});
renderBossPhase(data.bossPhase || 'phase_1');
});不写代码版做法
- 明确哪些状态要“全员一致”。
- 服务端每次状态变化都下发一次
ui.state。 - 页面收到后只做展示,不自行计算核心状态。
客户常见错误
- 页面自己算倒计时,导致和服务端不一致。
- 只给触发者下发,没有给同场玩家下发。
- 状态字段名临时改动,页面解析失败。
猹件开发组