Files
ft/CodexOutput/upserver/阶段4最小真实玩法闭环-范围与接线核查-2026-09-24.md

65 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 最小真实玩法闭环:范围与接线核查
最新状态:用户已确认单账号重启式重登;本核查已收敛为《阶段4最小真实玩法闭环方案-待评审-2026-09-24.md》。以下保留设计准备过程;当前完整R1方案待独立审查,尚未批准新生产改动。 用户已明确选择真实游戏内的一条普通玩法闭环,而非再增加独立验证面板。此文件记录源码事实与收敛方向,不冒充已完成方案评审。
## 目标与代表操作
首选:正常游戏登录→进入已有鱼竿面板→装备另一根已拥有且未锁定的鱼竿→通过KV保存→退出后重新启动游戏登录→装备状态从服务器恢复。使用专用可丢弃测试账号,验收前需明确账号、已有数据备份和允许写入范围;原101/102专用fixture授权不自动覆盖全量业务存档。
不在首轮改变升级、抽奖、付费、扣体力或奖励算法;不做外围迁移、SDK删除、通用回调框架或数据格式重构。现有安全底层和31模块codec继续复用。该闭环不等于正式玩法/G4全部放行,也不能绕过P2-α真实存量档启用门。
## 已核对的真实调用链
| 接入点 | 源码事实 | 对最小方案的约束 |
|---|---|---|
| UI/Rod/FishingRodPanel_Level.cs OnClickEquip | 调用SetEquipRodID后更新UI与成功提示 | 先捕获本次归属;失败不能继续显示保存成功 |
| DataCenter/DataCenter.PlayerData.cs SetEquipRodID | 修改equipRodID、更新红点、调用SavePlayerData | 不能只在最后HTTP请求处判断失效;首轮尽量保留业务顺序和算法 |
| 同文件SavePlayerData | 先发布PlayerData事件;组装19核心字段及vipL/ld/ad/bd/ct/rt;保存整个NewPlayerDataDic | **并非写独立EquipRodID key**,需要完整加载关联状态,不能用默认其他字段覆盖 |
| Core/PlayFabMgr.cs | 旧读写和40秒同步仍走PF/PlayerPrefs;新四入口尚无业务调用者 | 应评估在既有facade统一路由,避免逐个重写81个调用文件;不得PF/KV双写或加载拼接两份档 |
| Services/UserService.cs LoginCore | 仍先PF登录/初始化,再API登录,最后Done | 需要真正调整KV模式加载顺序,不能设置SaveBackend=kv就宣称接通 |
| Services/UserService.KVLoad.cs | 明确拒绝kv;受控对象及验证接收者和正常对象不同 | 验证接口不能直接改名当生产入口;需要最小运行时发布合同 |
| PlayerKVGameLoadCoordinator | LoadedForValidation要求guard持续有效;只开放受控加载 | 释放guard、发布写权限、退出排水必须一起设计,不能只加一个Dispose |
| PlayerKVControlledLoadCapability | 目前工厂只提供Editor合成传输 | 真实会话绑定需明确复用同一次认证Cookie;不得复用合成工厂偷换真实handler |
| PlayerKVEditorValidationHost | 31模块组合在独立容器中构造 | 正常游戏应绑定真实容器既有对象,不再创建平行业务对象或复制31模块算法 |
| UserService.GetPlayLv | PF读取目标玩家Lv | 不能机械改为本人KV;外围身份暂时保留明确分工 |
## 三条路线与当前建议
| 路线 | 改动与效果 | 判断 |
|---|---|---|
| 先按原B/C覆盖全部回调、换号及生命周期 | 完整但首次可运行较晚,业务改动面大 | 不作为默认先行路线 |
| 真实游戏单账号首轮闭环,复用统一facade和完整加载;会话结束后需重启游戏再登录 | 可在一次运行中固定原handle;有机会避免首轮逐业务改写跨账号回调,仍须真实加载/存储失败处理 | **用户已接受首轮单账号、重启式重登;按此约束收敛完整接入方案** |
| 新独立验证入口 | 改动最少但不是用户选择的真实游戏闭环 | 不替代目标 |
单账号限制若采用,必须是代码硬约束:本进程曾发布游戏会话后不再发布第二个账号/epoch,撤销后保持关闭;不能只靠“测试时不换号”。Unity停止Play再进入不必然销毁静态状态,必须明确域重载条件;不能把销毁Root或手动清静态变量冒充彻底重启。用户已确认此产品限制;技术实现仍需纳入完整接入评审。
## 完整方案必须闭合的三处,合并到一次接入评审
1. **启动与加载**:定位真实Root/配置/PlayFabMgr.Awake顺序,明确在任何PF存档初始化及自动写之前固定后端;将已有31模块Decode/Reset/Replace绑定真实对象,列清配置快照、账号资料与启动后自动副作用。失败不Done、不写默认档,不引入第二套加载器。
2. **发布与保存**:明确同一Context/handle的准备→加载→可写→撤销顺序;原有facade签名尽量保留,错误不得伪装为缺档/成功。Equip实际保存整个NewPlayerDataDic,须验证同一次序列化的关联模块字段及事件副作用。普通同步、暂停、退出复用原Owner,不能出现两个定时器或偷偷改用当前账号。
3. **真实运行边界**:落实已获用户确认的单账号重启式重登;测试账号及数据准备/备份/恢复;菜单可达消费和后台回调是否影响该闭环;精确文件白名单及实测验收。不能通过只写一个key却打开全游戏来掩盖其他保存来源。
待这些点落实后,产出一份合并的最小接入方案与提示词,统一审查原B/C首次范围调整和必要生产改动;不再为每个小接口单独新增阶段。当前候选涉及UserService/KVLoad、既有Context/Coordinator、PlayFabMgr、启动/退出接线和鱼竿装备入口;**候选不是修改授权清单**。
## 最小验收结果
- 真实游戏使用专用账号完成上述装备操作,保留原始游戏界面和业务序列化。
- 网络证据确认本账号KV加载与Set,存档路径无PF回退/双写;Accepted和远端Confirmed分别记录。
- 完成Flush后重启,使用新的隔离缓存根读取服务器并恢复装备值;不以同一内存或旧缓存充当重登证据。
- Get/解析/存储/发送失败明确停止该流程;没有空档覆盖、跨账号写或错误成功提示。
- 只运行针对接线变更的必要回归;不因文档更新重跑已通过的全套验证。
正式地址固定http://s101.local:18080/;Unity CLI Loop、不用UnitySkills、暂不打包。进入PlayMode和真实业务写应在接入方案审查及测试数据边界明确后执行;本轮只读核查,没有启动游戏或访问正式服务。
## 设计检查点1:用户确认限制与启动接线事实
用户已接受单账号运行、重启游戏后重登恢复,游戏内重登/换号留后续。无需重复索取该偏好。
进一步核查:SubBoostrap.RegisterServices在第88行AddComponent<PlayFabMgr>,会立刻Awake并开启旧40秒循环;RootCtx已注册IConfig,Boostrap在资源加载后调用RegisterServices再调用AfterAssetUpdate。必须在AddComponent之前锁定本次模式,不能等LoginCore后再阻止旧存档初始化。LoginStage随后注册真实IUserService/业务对象;PFLoginAct或AggLoginAct完成后转入FishingStage,FishingStage.InitData还会调用多模块Init并发布登录事件,这些可能触发普通保存,不能只测装备按钮。
发现可缩小的路线:正常UserService已拥有apiSession,CustomServerMgr已用UseAccountSession绑定同Cookie。可优先评估让该服务直接持有已验收的4A Bridge,复用4B2 Schema/Transaction,避免为了接真实网络去改造B2仅验证用的Capability/Context/Coordinator。该复用需明确构造准备结果所依据的真实认证与快照事实、31模块真实对象绑定、发布顺序和退出先排水后Dispose;不是伪造Prepared结果或新增第二个认证会话。此路线可减少对已关闭底层的改动,但尚未完成方法级设计与评审。
现有Logout会直接Dispose apiSession,401还可能自动LoginApiServer;最小模式须在这两处先撤销普通入口、禁自动重认证,待Bridge.Close后再销毁会话。仅有单账号限制不足以豁免同账号重认证或关闭时序。
后续只围绕上述实际连接点形成完整方案,不先扩展81文件回调改造、身份全迁移或新的通用会话框架。