Skip to content
On this page

猹引擎

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');
});

不写代码版做法

  1. 明确哪些状态要“全员一致”。
  2. 服务端每次状态变化都下发一次 ui.state
  3. 页面收到后只做展示,不自行计算核心状态。

客户常见错误

  1. 页面自己算倒计时,导致和服务端不一致。
  2. 只给触发者下发,没有给同场玩家下发。
  3. 状态字段名临时改动,页面解析失败。