信道系统排查报告
05/035 浏览
汇总分析:信道系统排查报告一、已有基础设施(✅ 可复用)模块能力状态BodyState 信号系统inbox/outbox/history、PushSignal/SendSignal/FlushOutbox、10种信号类型✅ 完整,信号格式已预留 fromPlayer 字段BrainSystem自动评估(血指标→信号)+ ManualSignal() 手动发送✅ 完整,疲劳/到达率机制齐全BrainDashboard信号控制台(MONITOR-B)+ 发送按钮 + 统计面板✅ UI 完整Leaderboard排行榜 + 器官扮演按钮 + 投喂按钮✅ UI 框架在,但数据是 mockFoodPipeline食物队列 CRUD + 器官链转移✅ 逻辑完整,但限于当前玩家BodyState.SaveToCloud/LoadFromCloud整体 body_state 云端序列化/反序列化✅ 可用,但仅自身数据二、6 个关键缺口(❌ 必须补全)缺口 1:clientCloud 是玩家隔离的,无法跨玩家读写
- 当前所有云操作(FoodPipeline、BodyState)都用 clientCloud
- Player B 扮演 Player A 器官后,结果写入 Player B 自己的云,Player A 看不到
- Leaderboard.lua 中使用 math.random(30, 100) 模拟健康度
- 没有从 Player A 的云端拉取真实器官数据的逻辑
- Leaderboard.lua 中使用 math.random(30, 100) 模拟健康度
- 没有从 Player A 的云端拉取真实器官数据的逻辑
- BrainSystem.ManualSignal() 只写入本地 BodyState.inbox
- Player A(大脑)发信号后,Player B(器官玩家)无法收到
- Leaderboard.lua 中使用 math.random(30, 100) 模拟健康度
- 没有从 Player A 的云端拉取真实器官数据的逻辑
- BrainSystem.ManualSignal() 只写入本地 BodyState.inbox
- Player A(大脑)发信号后,Player B(器官玩家)无法收到
- BrainSystem.ManualSignal() 只写入本地 BodyState.inbox
- Player A(大脑)发信号后,Player B(器官玩家)无法收到
- Player B 完成器官关卡后,消化结果、细胞损伤等数据留在本地
- 没有机制将这些数据传回 Player A
- BrainSystem.ManualSignal() 只写入本地 BodyState.inbox
- Player A(大脑)发信号后,Player B(器官玩家)无法收到
- Player B 完成器官关卡后,消化结果、细胞损伤等数据留在本地
- 没有机制将这些数据传回 Player A
- Player B 完成器官关卡后,消化结果、细胞损伤等数据留在本地
- 没有机制将这些数据传回 Player A
- 排行榜投喂功能把食物写入投喂者自己的 food_queue_oral
- 应该写入目标玩家 Player A 的食物队列
- Player B 完成器官关卡后,消化结果、细胞损伤等数据留在本地
- 没有机制将这些数据传回 Player A
- 排行榜投喂功能把食物写入投喂者自己的 food_queue_oral
- 应该写入目标玩家 Player A 的食物队列
- 排行榜投喂功能把食物写入投喂者自己的 food_queue_oral
- 应该写入目标玩家 Player A 的食物队列
- 点击"扮演"按钮直接进入关卡,但不携带"我在扮演谁的器官"这个信息
- 无法确定闯关结果应该发给哪个玩家
- 排行榜投喂功能把食物写入投喂者自己的 food_queue_oral
- 应该写入目标玩家 Player A 的食物队列
- 点击"扮演"按钮直接进入关卡,但不携带"我在扮演谁的器官"这个信息
- 无法确定闯关结果应该发给哪个玩家
- 点击"扮演"按钮直接进入关卡,但不携带"我在扮演谁的器官"这个信息
- 无法确定闯关结果应该发给哪个玩家
- 监听客户端自定义事件,调用 serverCloud.message:Send() 中转
- 消息类型:organ_report、brain_signal、organ_feedback、food_gift
- 同时用 serverCloud:Set(targetUid, "organ_health", data) 更新可被排行榜读取的健康摘要
- 点击"扮演"按钮直接进入关卡,但不携带"我在扮演谁的器官"这个信息
- 无法确定闯关结果应该发给哪个玩家
- 监听客户端自定义事件,调用 serverCloud.message:Send() 中转
- 消息类型:organ_report、brain_signal、organ_feedback、food_gift
- 同时用 serverCloud:Set(targetUid, "organ_health", data) 更新可被排行榜读取的健康摘要
- 监听客户端自定义事件,调用 serverCloud.message:Send() 中转
- 消息类型:organ_report、brain_signal、organ_feedback、food_gift
- 同时用 serverCloud:Set(targetUid, "organ_health", data) 更新可被排行榜读取的健康摘要
- 封装发送/接收跨玩家消息的客户端 API
- 定时轮询 serverCloud.message:Get() 拉取未读消息(或基于 Update 频率低频检查)
- 收到消息后分发到 BodyState/BrainDashboard
- 监听客户端自定义事件,调用 serverCloud.message:Send() 中转
- 消息类型:organ_report、brain_signal、organ_feedback、food_gift
- 同时用 serverCloud:Set(targetUid, "organ_health", data) 更新可被排行榜读取的健康摘要
- 封装发送/接收跨玩家消息的客户端 API
- 定时轮询 serverCloud.message:Get() 拉取未读消息(或基于 Update 频率低频检查)
- 收到消息后分发到 BodyState/BrainDashboard
- 封装发送/接收跨玩家消息的客户端 API
- 定时轮询 serverCloud.message:Get() 拉取未读消息(或基于 Update 频率低频检查)
- 收到消息后分发到 BodyState/BrainDashboard
- 从 clientCloud:GetRankList("organ_health", ...) 读取真实器官健康度
- 扮演按钮携带 targetUserId 上下文
- 投喂走 serverCloud message 而非写入自己的 clientCloud
- 封装发送/接收跨玩家消息的客户端 API
- 定时轮询 serverCloud.message:Get() 拉取未读消息(或基于 Update 频率低频检查)
- 收到消息后分发到 BodyState/BrainDashboard
- 从 clientCloud:GetRankList("organ_health", ...) 读取真实器官健康度
- 扮演按钮携带 targetUserId 上下文
- 投喂走 serverCloud message 而非写入自己的 clientCloud
- 从 clientCloud:GetRankList("organ_health", ...) 读取真实器官健康度
- 扮演按钮携带 targetUserId 上下文
- 投喂走 serverCloud message 而非写入自己的 clientCloud
- 闯关结束时,将消化数据打包为 organ_report 消息发送给 targetUserId
- 数据包含:食物处理结果、器官损伤、指标变化
- 从 clientCloud:GetRankList("organ_health", ...) 读取真实器官健康度
- 扮演按钮携带 targetUserId 上下文
- 投喂走 serverCloud message 而非写入自己的 clientCloud
- 闯关结束时,将消化数据打包为 organ_report 消息发送给 targetUserId
- 数据包含:食物处理结果、器官损伤、指标变化
- 闯关结束时,将消化数据打包为 organ_report 消息发送给 targetUserId
- 数据包含:食物处理结果、器官损伤、指标变化
- ManualSignal 发送后,同时通过 CrossPlayerChannel 发送 brain_signal 给对应器官玩家
- 器官玩家收到后注入本地 BodyState.inbox
- 闯关结束时,将消化数据打包为 organ_report 消息发送给 targetUserId
- 数据包含:食物处理结果、器官损伤、指标变化
- ManualSignal 发送后,同时通过 CrossPlayerChannel 发送 brain_signal 给对应器官玩家
- 器官玩家收到后注入本地 BodyState.inbox
- ManualSignal 发送后,同时通过 CrossPlayerChannel 发送 brain_signal 给对应器官玩家
- 器官玩家收到后注入本地 BodyState.inbox
- 器官玩家可发送 organ_feedback(过载、告急等预设消息)
- 大脑监控室新增反馈面板显示
信道系统排查报告 — 最终汇总一、现状总结已有基础设施 — 本地信号体系完整,但跨玩家通道为零:模块本地能力跨玩家能力BodyState 信号系统✅ inbox/outbox/history + 10种信号 + fromPlayer 预留字段❌ 无BrainSystem✅ 自动评估 + ManualSignal() + 疲劳/到达率❌ 信号只写本地 inboxBrainDashboard✅ 7面板 + 信号发送按钮 UI❌ 数据全部来自本地 GameStateLeaderboard✅ 排行榜 UI + 器官扮演/投喂按钮❌ 健康度 = math.random(30,100),无目标玩家 IDFoodPipeline✅ 食物队列 CRUD + 器官链转移❌ 全部写入自己的 clientCloudBodyState 云同步✅ SaveToCloud/LoadFromCloud❌ 只能读写自己的 body_state二、6 个关键缺口
- clientCloud 玩家隔离 — Player B 扮演 Player A 器官后,所有数据写入 Player B 自己的云
- 排行榜健康度是假数据 — math.random(30,100) 而非真实器官数据
- 无跨玩家信号路由 — ManualSignal 只写本地 inbox,对方收不到
- 闯关结果无上报 — 器官玩家完成关卡后,数据留在本地
- 投喂目标错误 — 食物写入投喂者自己的云,不是目标玩家
- 扮演无目标上下文 — 不知道"我在扮演谁的器官",结果不知该发给谁
- 先做阶段一(纯 clientCloud,改动小,立即可见效果):
- 再做阶段二(需要你确认是否要开启多人模式):
以上是完整的排查报告和补全方案。



