统一游戏平台 · 04

🧩 客户端统一 SDK(game-sdk.js)与 15 款存量改造

一个 SDK 收口所有平台差异与服务端交互:登录、云存档双写、钱包、双通道解锁组件、分享、排行榜、埋点。游戏代码只面对 GameSDK.*,不出现 wx./tt./localStorage/fetch。存量 15 款按本文迁移映射表接入。

1. 形态与运行环境

2. API 表面(全部能力一屏)

// —— 初始化(登录 + 拉配置 + 拉存档,一次完成)——
await GameSDK.init({ gameId: 'g14_mohei' })
GameSDK.user      // { id, nickname, avatar, isNew }
GameSDK.wallet    // { coin, gem, energy }(只读镜像,变更必走接口)

// —— 云存档(双写:本地即时 + 云端节流)——
const save = await GameSDK.save.load()       // 云优先,失败回退本地缓存
GameSDK.save.patch({ level: 3 })             // 内存+本地即时写,不触网
await GameSDK.save.commit()                  // 上云(节流;关键节点可强制)

// —— 经济 ——
await GameSDK.energy.spend()                 // 开局扣体力 → 返回 sessionToken
await GameSDK.energy.refill('ad')            // 渠道: ad | share | pay | item
await GameSDK.wallet.consume('gem', 10, 'consume_revive')

// —— 双/三通道解锁组件(M4 的 UI 落点)——
const r = await GameSDK.unlock.show({
  scene: 'revive',                           // revive|energy|double|hint|signin_fix…
  channels: ['ad', 'share', 'pay']           // 服务端 configs 可远程增减通道
})                                           // → { ok, channel }

// —— 社交与上报 ——
await GameSDK.lb.submit(score)               // 附带 sessionToken,见 03 §5
await GameSDK.share.ask({ scene: 'revive' }) // 回流发奖模型,见 05
GameSDK.track('game_finish', { score })      // 批量缓冲上报 /events

3. 平台适配层(差异收口点)

能力wxtth5(开发)
登录wx.login → codett.login → codemock 固定测试账号
本地缓存wx.setStorageSynctt.setStorageSynclocalStorage
网络wx.requesttt.requestfetch
激励视频wx.createRewardedVideoAdtt.createRewardedVideoAd模拟弹窗(3 秒倒计时)
分享wx.shareAppMessage(带 shareId query)tt.shareAppMessage复制链接到剪贴板
支付midas(安卓)/ iOS 按政策降级tt.pay模拟成功
启动参数wx.getLaunchOptionsSync().query(读回流 shareId)同名 APIURL query
生命周期wx.onShow / wx.onHide同名visibilitychange

4. 云存档双写机制(M1/P11 的客户端半边)

4.1 写路径

game 调 save.patch(delta)
  ├─ 内存态合并 → 本地缓存立即写(掉线也不丢)
  └─ 标记 dirty → 节流器(10s)/ onHide / 关键节点(过关·升级) → PUT /saves
        ├─ 200: version=n+1,清 dirty
        ├─ 1409 冲突: 走合并策略(见 4.2)后重提
        └─ 网络失败: 入离线队列,onShow/网络恢复时重放

4.2 冲突与合并策略

4.3 存档 schema 约定

saves.data = {
  v: 1,                    // 档结构版本(游戏自管迁移)
  core: { ... },           // 玩法进度:关卡/最高分/局内统计(游戏自定义)
  meta: {                  // v2 要求叠加的养成层(结构统一,便于后台读取)
    talents:    { t1: 2, t2: 0 },   // 永久天赋等级
    collection: ["s01", "s03"],     // 图鉴/皮肤已获得
    pity:       { gacha1: 7 }       // 保底计数(P2/R10)
  }
}
// 货币不入档:coin/gem/energy 一律走 wallets(见 02 §4 约定)

5. 存量 15 款:迁移映射表

✅ 实施状态(2026-07):SDK h5 模式已实装为 free/sdk/game-sdk.js(含本表全部旧档迁移映射与货币折算),13 款有 demo 的游戏已按本表接入(体力闸门 + 复活三通道 + 结算翻倍 + meta 天赋);游戏目录已迁至 free/N/。wx/tt 真实适配层按 路线图 阶段 1–2 实装。

首次登录时若云端 version=0 且本地存在旧 key,SDK 自动执行「旧档 → 新 schema → 上云 → 本地标记已迁移」。逐款映射:

#游戏gameId(新)渲染现有本地 key迁移动作
1🗼 全民叠塔g01_dietacanvas新建档;塔高纪录入 core
2🥬 一分不让g02_yifenDOMyfbr_demo(coins, talent)talent → meta.talents;demo 内 coins 按 1:1 折算入统一钱包 coin(一次性,记 currency_txns reason=migrate)
3🔥 别断在我手里g03_biechuan无 demo开发时直接按 SDK 规范实现
4🧐 不对劲g04_buduijin无 demo同上
5💣 谁埋的雷g05_maidileicanvassme_demo_v1战绩/复仇列表入 core;埋雷记录未来走服务端(异步交互)
6🗳️ 人间共识g06_gongshiDOM新建档;答题进度入 core(投票对撞未来走服务端)
7🐲 神兽看管局g07_shenshoucanvas新建档
8🍜 不要香菜g08_xiangcaiDOMbyxc_demo_v1(含 money)money 折算入钱包 coin;关卡进度入 core
9❌ 关不掉g09_guanbudiaoDOMgbd9_save直接包进 core
10📦 说变就变g10_shuobianDOMsbjb_save_v1(xp)xp 入 core;等级换算规则不变
11⏱️ 心里有数g11_youshucanvasxlys_demo_v1直接包进 core
12🍖 吃回本g12_chihuibenDOMchihuiben_v1 + chb_pity留意 两个 key 合并;chb_pity 保底计数必须迁入 meta.pity(丢失=玩家保底进度清零,属资损级事故)
13🫥 转头就忘g13_zhuantoucanvaszttw_demo_v1直接包进 core
14🌙 摸黑回家g14_moheicanvasmhhj_save_v1直接包进 core
15🧾 就差 0.01g15_juechaDOMjd001_v1直接包进 core

6. 通用改造五步(每款游戏 0.5–1.5 天)

  1. 替换存储:删掉自带的 SAVE_KEY/localStorage 读写,改为 save.load() / save.patch() / save.commit();按 §5 写一次性迁移函数。
  2. 接体力闸门:开局前 energy.spend();返回 2001(体力不足)时弹 unlock.show({scene:'energy'})
  3. 接近失复活:把现有"激励视频演示位"占位按钮替换为 unlock.show({scene:'revive', channels:['ad','share','pay']})——这就是 v2 M4 双通道 + 05 篇分享通道的接入点。
  4. 接排行榜与埋点:结算处 lb.submit(score);关键事件 track()(事件字典见 05 §5)。
  5. 叠 meta 养成层(按下表引擎类型):天赋树 UI + 图鉴页,数据落 meta.talents / meta.collection,用软货币升级(货币走钱包接口)。

按引擎类型的 meta 层叠加清单(对应 v2 第 6 节)

引擎类型游戏meta 养成层付费点(M3 选配)
技巧挑战型(记忆/反应/心算)8 / 9 / 10 / 11 / 12 / 13 / 14 / 15永久天赋树:多看 1 秒、容错 +1、提示 +1(软货币升级,付费只买"更快")体力 + 复活双通道 + 局内道具(提示/加时/悔一步)+ 主题皮肤
异步社交型1 / 3 / 5 / 6赛季段位、称号、外观收集(积木皮肤/雷的外观)表达型商品 + 赛季战令 + 排行榜冲刺道具;分享求助/复仇天然自带(05)
谈判/资源型2 / 4 / 7关卡制 + 星级收集 + 章节图鉴道具经济(读心卡/慢放卡/排除卡)+ 章节"免费等级解锁 or 付费提前"
改造纪律:先改 2 款试点(建议选次留最好的 1 款技巧型 + 1 款异步社交型),跑通「登录 → 云存档 → 体力 → 双通道 → 榜单」全链路并小额买量验证后,再按模板批量复制到其余 13 款(见 08 路线图 阶段 2)。