保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
6.6 KiB
M2 PlayFab能力由KV承接:需求重申与一次性接线核查
用户已确定的需求
客户端KV模式把原PlayFab相关能力平移到KV管理器,原业务流程、规则、顺序及异常语义保留。等级榜、公开资料、好友列表、匹配都是旧PlayFab调用涉及的现有功能,是迁移范围内的工作,不是新需求。无需用户再次裁决数据存哪里、是否迁移这些功能。PF/AGG原提供方仍按已定范围保留。
此前主会话把“客户端尚未完成等价接线”直接表述为“主要工作在服务端侧”不够准确,现撤回这个工作归属结论。当前工作首先在客户端方案核对侧;不能把当前客户端包装器没有入口,直接推断成线上服务没有能力或要求服务端新开发。
本轮只读源码证据
| 原调用 | 客户端位置 | 本次迁移要求 |
|---|---|---|
| UpdatePlayerStatisticsAsync / GetLeaderboardAsync | DataCenter.LeadboardData.cs:169/186 | KV承接原分数保存与榜单读取,保留原排名/地区/展示流程;不得用跳过调用当完成 |
| GetUserDataAsync / GetPlayerProfileAsync | UserService.cs:814/874 | 原公开资料/等级调用平移到KV能力,新ID沿用已裁决身份 |
| GetFriendsListAsync | FriendService.cs:145 | KV承接原好友关系与资料读取,原friend/*业务不重做 |
| Create/Get/CancelMatchmakingTicket / GetMatch | EventFishingDuelPanel.cs:658/692/740/817 | 核对KV管理器对应能力接线,保留旧匹配流程与结果消费 |
当前KVMgr.cs仅暴露当前原handle的ReadKV、WriteKV、FlushKVAsync、WaitForKVTicketAsync;PlayerKVClient.cs目前实现playerdata/Get、Set、Delete,请求没有对方ID、榜单或匹配参数。这证明“当前客户端适配未齐”,不证明线上端没有已有接口,更不构成把整个任务转交服务端的依据。个人KV存档方向已确定,不再讨论。
审核端是否需要介入
2026-09-30 补充:PlayFabClientAsyncAPI 全量调用核对
用户再次明确:KV模式必须移除这些SDK调用,并从KV取得原业务需要的对应值。只换UserID、删除调用、返回空列表或仅保留缓存,均不等于完成迁移。本次全量检索 Client/Assets/**/*.cs 得到15处名称引用,其中2处是登录重试包装,实际SDK操作13处;9处位于原PlayFabUserService,4处位于共用业务。PF提供方仍保留其有效实现;验收目标是KV运行路径不进入PF SDK。
| 调用/位置 | KV必须承接的原数据或行为 | 当前核查结论 |
|---|---|---|
| UserService.cs:381/398/411/422 登录 | 新账号认证及登录返回PlayerId | 已由独立KV登录接线承接;原PF登录不删除 |
| UserService.cs:460 本人资料 | 昵称、头像、地区等原资料 | KVUserService从本人KV加载DisplayName、AvatarUrl、ContinentCode等;缺失值不伪造为完整资料 |
| UserService.cs:708/732 改昵称/头像 | 保存DisplayName、AvatarUrl并沿用业务通知 | 已有KVUserService.SaveProfile;保留PF分支 |
| DataCenter.LeadboardData.cs:169/186 | 保存LevelB及地区榜分数;读取原榜单的玩家ID、分数、名次、昵称、头像和地区 | 两处共用调用仍直连PF,待替换;保留原等级乘100000加建筑等级算法、分页及展示流程。仅把分数写本人KV不代表榜单读取完成 |
| FriendService.cs:145 | 好友关系、对方UserID、昵称、头像、LevelB统计、LastLogin | 共用调用仍直连PF;C3b测试覆盖普通friend请求身份兼容,不覆盖该SDK列表读取 |
| UserService.cs:814/874 对方等级/资料 | 按对方UserID取得Lv、昵称、头像,沿用原缓存与GetClubPlayInfoEvent通知 | 原PF方法保留;KVUserService仅有本人/缓存读取,未命中时没有等价远端读取,属于未完成 |
| TileNewsManager.cs:28 公告(本次补入) | 公告Title、Body、Timestamp及原列表首项顺序 | 共用调用仍直连PF;NoticePopupPanel.cs:31实际发布TitleNewsEvent。保留原缓存、红点、时间比较及UI读取时序,不顺带修复异步展示 |
这四处共用调用没有KV分流;在对应业务执行时会调用PF,当前场景闸并非替换实现。匹配使用PlayFabMultiplayerAPI,虽然不计入上述13处,仍保留在同一迁移批次。
实现前需在同一份接线方案中给出上述未完成项的准确KV读取范围、键/操作和结果映射。现有PlayerKVClient的Get只有keys,使用固定本人认证会话,不能把它当作任意玩家或全局榜单读取接口;也不据此推断线上没有相应能力。不得猜测新接口或用本人数据冒充他人数据。沿用已批准纯平移方向,不再询问用户是否迁移这些功能。
本检查点仅补齐调用和数据清单,未修改生产/测试代码,未执行线上请求或新增送审;并未宣称上述替换已完成。
已审个人存档和同合同调用替换无需再审。上述剩余SDK能力尚未形成完整等价接线,编码前需要一次集中核查/裁决;审核对象是具体旧调用到KV管理器的映射与最小实施差异,不是重新审核产品需求,也不是一功能一轮。
给原审核AI的一次性核查输入:
- 以“原PlayFab能力由KV承接,保持原业务”为既定前提,核对上表及既有KV管理器合同。若相关能力已在既有资料中明确,给出准确文档位置和客户端调用映射,避免再次列为未知。
- 区分只是客户端漏接、复用现有游戏服调用即可、确有可证实能力缺口三类;不能因当前KVMgr没有包装方法就默认要服务端新开发。
- 对实际缺口一次列出旧操作、输入/结果语义、缺少的最小能力及证据。不给用户重新出存储方向、ID或邮件逻辑选择题,不要求客户端查看服务器源码。
- 如需变更原已审合同,集中给最小完整方案、精确文件与验证边界;禁止顺带业务修正、重构、等待云端才展示等奖励时序变化。
- 不重复评审C2d已验证的同合同平移。报告明确哪些工作客户端可立即继续、哪些具体能力仍需外部事实,不能笼统回答整个工作转服务端。
本文件是本次澄清与核查材料,尚未收到新审核结论,也未向外部发送消息。真实首场景存在残余PF调用的静态事实仍成立,不能因需求重申就标成验证通过或提前撤两闸。
本轮操作边界
只更新AGENTS规则、当前入口状态和日志,不改生产源码、原测试、服务器或配置,不重写C2d/C3a历史hash。AGENTS的本次用户授权增量单独记录;不再声称冻结基线内AGENTS仍相同。正式地址、仅CLI Loop、暂不打包继续遵守。