Files
ft/CodexOutput/upserver/Gameplay101Validation/首次运行结果与引导阻塞.md

8.6 KiB
Raw Blame History

101首次运行结果与引导阻塞

2026-09-28,主会话。101真实登录与历史档加载成功;动作前发现未完成的EventPotion01活动引导,按已评审方案停止本次玩法。未抛竿、未扣费、未领奖,收鱼和新进程恢复尚未完成。 本轮生产代码零改动,不需要对现有代码重复实施复核;后续若扩大到活动引导业务,须先给出具体路径和最小补充方案。

运行与证据

用户已确认101其他客户端停用;31项受审hash再次一致。进程 90064_639261625195875237 原无run/claim,建立v3许可后仅一次Play。

环节 结果/证据
S0 07:56:11Z KVGameplayLoopTests/backups/20260928T075611Z,10155键与D导入after逐值及UTF8 hash/长度55/55相同,见S0-reconciliation.json。
当前解码 checkpoint0-decode.json:与S0原值相同的PF源在当前配置诊断Valid/0;这是本地合成描述符诊断。后续真实登录加载成功为另一个运行证据。
登录 07:57:46Z ready,PlayerId101,Error=null;实际金币36550472、装备20001,与历史主档相符。固定API检查通过;PF身份登录成功,无本次错误日志。
动作前 07:58:05Z unlockedMag/Strike=true、frequency31、cruise=-1,无collectingTarget/piggy/bargain/challenge;但guideNode/guideGroup均true。
S1 07:58:23Z 101仍55键且当时与S0原值相同;此时登录保存尚未在此快照反映,不能当作登录写已确认的合格动作基线。没有通知用户抛竿。
阻塞定位 checkpoint1-guide-detail-corrected.json:EventPotion01,EventPotionPanel,节点“正确的位置”,按钮root_main/PotionScrollView/Container/Data_Item-0/gild_group/gild1,文本GuidePotion_02。截图Rendering_20260928_155846_096.png另显示签到弹窗,未点击“收下”。
正常退出 07:59:26.7902335Z出现closed,已走QuitStage和bridge drain;未强制停止。
停止后最终快照 07:59:50Z KVGameplayLoopTests/backups/20260928T075950Z。这是失败分支取证快照,不是新进程恢复S3。
最终状态 playing=false、ready=false、Error=null、无permit;Enabled=true为该进程静态运行标志残留,不代表仍可开始业务。11旧claim一致,新claim保留;下一次必须新进程。

采样小片段首次出现JsonConvert重复类型引用及错误的energy成员名,编译阶段未执行;改成既有公开成员的只读匿名结果后成功,原失败证据保留。不是生产代码编译错误或业务运行异常。

为什么停止

原档GuideSaveDataNew已有 EventPotion01|4|0,最终仍保持原值。DataCenter.GuideData.cs 的Init恢复未完成引导,设置curGroupDefine/curDefine;此次只读采样证实运行时恢复了EventPotion01。

UserService.KVFishingReward.cs:58 的CheckRewardGuide要求当前没有活动引导;本包方案§5也明确这一条件。因此主会话在抛竿前停止,没有为了生成拒绝异常再调用钓鱼入口。现有证据不支持把它说成新迁移代码导致的异常,也不证明药水活动引导能在当前活动时间下正常完成。

保存对账与影响

最终101仍55键,仅两键原值不同;其余53键(包括GuideSaveDataNew、全部鱼档及未知键)保持。见final-reconciliation.json。

  • ShopPackBuyCount:{"0":264}→{"0":270}。DataCenter.PlayerShopData.cs:683 InitShopPackData按DayOfYear重置,与本次日期匹配。
  • NewPlayerDataDic:newData的19槽字符串完全不变,所以金币36550472、体力7275、EnergyRM7231、钓鱼31/累计147未变。其内vipL基准337→343、滚动槽平移6天,对应PlayerData.UpdateVIPScoreDic;ad登录统计19由17/264→18/270,对应AchievementDataManager登录日更新;rt活动30301021→30301027,后者配置时间2026/9/27 18:00至9/28 18:00,符合现有AllRefresh活动刷新。未点击签到,不能把这些登录更新算成钓鱼奖励。

游戏审计接受3次保存(ShopPackBuyCount、GuideSaveDataNew、NewPlayerDataDic),最终三个值hash全部等于各自write-attempt;其中GuideSaveDataNew是同值保存。最终cache baseline55键与服务器快照逐值相同,pending=0、activeBatch=null、unknownBatch=null,closed=1,fishing事件=0,见final-save-and-scope-verification.json。接受次数不冒充HTTP Set次数。

三轮备份工具合计6登录+6Get、KV Set/Delete=0;游戏另外执行PF身份/s101登录、加载和保存,不能声称整个会话无写或无PF访问。未做全流量抓包,不声称完整HTTP请求计数。102三次45键快照逐值相同,未在游戏登录102。

下一步与边界

本次运行结束,101停用窗口到此结束;已退役的许可不复用,不回灌S0覆盖本次合法登录更新。

下一步仍由主会话处理:检查EventPotion01在当前活动周期的正常恢复/完成路径、涉及键和消耗,再形成一次最小补充方案。该范围应覆盖引导处理后继续普通钓鱼和恢复的整个剩余闭环,不再拆成取证、准备、单次点击等小评审。不能直接改GuideSaveDataNew为完成、清空引导指针或放宽钓鱼门。也不应让用户盲点活动或签到来试错。

若需恢复运行,新的起点必须是当前最终服务器存档并重新核对,而非原D导入after。原方案S0等于D-after的前提已经被合法登录写推进,补充方案需明确引用本次最终快照及两键差异。此次没有请求对失败现场再单独开一轮实施复核;完整业务包仍未关闭。

用户拟手动接管(2026-09-28)

用户表示“我来手动操作”;后续界面点击交给用户,不以脚本替代操作。当前编辑器已经退出Play,旧permit退役,不能直接复用90064启动。

只读核查:药水业务SyncData写epdk,该键已在101的55键中;HomeBtnPotion依赖GetEvent(4,5),无活动时隐藏入口;EventPotionPanel.InitGuidance进入面板后才根据关卡状态正常结束/恢复引导。旧档epdk.EventID=40000186;本地cfgData/tbfishingevent.json没有此ID,24条Type4/SubType5记录中最后结束日为2026-04-12。此为本地配置证据,不能在未核游戏实际加载表前断言当前UI必定无入口;不能通过修改活动时间或强开面板来替代真实路径。未重启/建立新permit/进入Play,代码和存档均未修改。

2026-09-28 用户手动Play登录失败诊断

只读CLI实测当前90064已再次Play,Enabled=false/Ready=false/无permit;实际SaveBackend默认playfab,配置CustomID和PlayFabUserService.CustomId均为空,EventApiURL仍正确为http://s101.local:18080/。界面显示“请检查网络连接然后重试/登录失败”,Console Error=0。

PFLoginAct从配置取空ID;UserService.LoginWithBackend在正整数账号检查处直接返回ELoginStep.Api,未进入本次LoginCore网络调用。当前“网络”文字是通用失败提示,根因是手动接管时未恢复正确账号/KV入口。此前101成功登录和药水引导阻塞是另一轮运行,不应混为同一问题。

主会话退役临时许可后未完成手动接管配置,是本次流程衔接缺口。不能只填101让其使用默认PF存档;恢复迁移档操作需正确KV入口及新的进程许可。当前仅诊断,未改代码/配置、未重试登录、未主动停止用户Play。证据:Gameplay101Validation/user-login-question-{state,all-logs,errors,config,cause,screen}.json及Rendering_20260928_161223_576.png。

2026-09-28 用户确认界面无药水引导:实测后台残留

用户说明当前没有药水引导,主会话重新只读检查:账号101已登录,KV ready=true;curDefine/curGroupDefine非空且指向EventPotion01/EventPotionPanel,CurPanelName为空,GetEvent(4,5)=-1。证据no-visible-guide-check.json。界面无引导与后台有历史恢复指针同时成立;此前要求用户手动完成药水引导不准确,不能继续要求用户寻找不存在的活动入口。

具体拦截点是UserService.KVFishingReward.cs的CheckRewardGuide,用任一引导指针非空直接拒绝。GuideDataCenter.Init可恢复历史未完成指针,而TriggerGuideNext会按目标面板匹配才推进,不能简单把非空等价于当前可见引导。最小修正需要同时核对残留指针对钓鱼通知的影响,不能直接删除全部引导保护,也不通过改存档完成标记处理。本轮没有修改代码、引导状态或存档,未触发抛竿。

下一步应由主会话形成并提交针对“不可用活动的不可见残留引导”的最小修正方案,完整评审后编码。当前仍保持已登录主页供用户查看,原业务包未完成,不再等待用户完成药水活动。