玩家扮演不同器官,需要异步信号传递

05/033 浏览
嗒啦啦:
关键决策:clientCloud 做持久化队列,因为不同玩家扮演不同器官,需要异步传递。结合截图中红框标注的"扮演"按钮,整个测试验证流程就很清晰了:
修正后的架构:基于 clientCloud 的器官间信号管道数据结构设计每个器官有一个独立的 clientCloud 队列 key:Cloud Key                    写入方         消费方
─────────────────────────────────────────────────────
pending_oral                 投喂动作       口腔关卡
pending_stomach              口腔出口       胃关卡
pending_small_intestine      胃出口         小肠关卡
pending_large_intestine      小肠出口       大肠关卡
digest_log                   各器官出口     大脑监控室(图鉴+指标)
每条食物记录的格式:{
  foodKey: "spinach",        -- 对应 FEED_FOODS 的 key
  category: "veggie",        -- 食物类别
  feederId: 1051336128,      -- 谁投喂的
  timestamp: 1714700000,     -- 投喂时间
  processedLevel: 0,         -- 碎裂次数(口腔处理后+1)
  chemTags: ["fiber","iron"] -- 化学标签(酶解后变化)
}
完整信号链路┌─ 投喂(Leaderboard)
│   玩家点"投喂菠菜"
│   → clientCloud.Set("pending_oral", 追加菠菜)
│   → clientCloud.Set("digest_log", 追加记录)  ← 大脑立刻知道吃了什么
├─ 扮演口腔(点排行榜"扮演 口腔")
│   关卡启动时:
│   → clientCloud.Get("pending_oral")
│   → 取出菠菜 → Enemy.Spawn("spinach_veggie")
│   → 玩家操作塔防处理食物(碎裂/唾液淀粉酶)
│   关卡食物出口时:
│   → clientCloud.Set("pending_stomach", 追加已处理的菠菜)
│   → clientCloud.Set("pending_oral", 移除已消费的菠菜)
├─ 扮演胃(点排行榜"扮演 胃")
│   → clientCloud.Get("pending_stomach")
│   → 取出口腔传来的菠菜 → 生成NPC
│   → 胃酸+胃蛋白酶处理
│   → 出口 → clientCloud.Set("pending_small_intestine", ...)
├─ 扮演小肠 → 扮演大肠(同理)
│   → 每个环节产生营养吸收
│   → clientCloud.Set("digest_log", 追加吸收记录)
│   → 指标变化写入:bloodSugar +X, bloodFat +Y ...
└─ 大脑监控室(随时可查看)
    → clientCloud.Get("digest_log") → 食物图鉴更新
    → clientCloud.Get 各指标 → 血糖/血脂/血钠仪表变化
关键设计问题1. 队列的读写并发同一个玩家不会同时扮演两个器官,所以不存在并发写冲突。流程是串行的:投喂 → 退出排行榜 → 扮演口腔 → 打完 → 回排行榜 → 扮演胃 → ...
clientCloud 的 Get → 修改 → Set 在单用户场景下是安全的。2. 食物类型映射(MVP 方案)同意用类别映射做 MVP。60 种食物映射到 5 个 EnemyType 模板:FEED_FOODS.key    →    EnemyType 模板    →    视觉差异
───────────────────────────────────────────────────────
spinach (菠菜)    →    veggie_food       →    绿色 + 🥬
apple (苹果)      →    fruit_food        →    红色 + 🍎
steak (牛排)      →    meat_food         →    棕色 + 🥩
rice (米饭)       →    staple_food       →    黄色 + 🍚
candy (糖块)      →    snack_food        →    粉色 + 🍬
同类别食物共享 HP/速度/chemTag,用 emoji + 名字标签做视觉区分。3. 指标影响时机两个写入点:时机写什么为什么投喂时digest_log(图鉴)大脑"知道吃了什么"不需要等消化完器官出口时血糖/血脂/血钠营养吸收发生在消化过程中,尤其是小肠这符合真实生理:大脑通过感官(口腔味觉)立刻知道吃了什么,但血糖变化要等小肠吸收后才体现。4. 用排行榜"扮演"按钮做测试闭环截图中红框的四个"扮演"按钮正好是完整测试路径:测试步骤:
1. 点"投喂" → 选菠菜 → Toast "已投喂菠菜"
2. 点"扮演 口腔" → 进关卡 → 看到菠菜NPC出现 ✓
3. 打完口腔 → 回排行榜
4. 点"扮演 胃" → 进关卡 → 看到口腔传来的菠菜 ✓
5. 随时进大脑监控室 → MONITOR-G显示"菠菜 ✓" → 血糖等指标变化 ✓
1