统一游戏平台 · 01

🏗️ 总体架构:三端拓扑与混合部署

一套服务端管全部游戏(含现有 15 款与未来新款);一个合集小游戏做总入口;一个管理后台做运营。部署采用「中国区 VPS 主链路 + Cloudflare 辅助面 + 国内 CDN」混合方案,兼顾备案合规、成本与后续出海。

1. 设计目标与非目标

✅ 目标

① 统一账号:一个 user_id 贯通所有游戏、双平台;② 云存档:任何游戏进度跨会话/跨设备(v2 M1);③ 一处接入、处处复用:新游戏只需接 SDK + 在游戏库注册一条配置;④ 支撑 v2 变现体系:双货币、分享回流、支付验单、排行榜、签到任务;⑤ 1–5 人团队可运维。

🚫 非目标(明确不做)

① 实时对战/长连接(v2 L3 层级,团队规模不支持);② 每游戏独立服务端(正是要消灭的形态);③ 自建账号密码体系(只用平台 openid 静默登录);④ 第一阶段不做海外版(架构预留即可)。

2. 三端拓扑

┌───────────────────────────── 客户端层 ─────────────────────────────┐
│  合集小游戏(微信 → 抖音)          独立爆款小游戏(从合集拆出)        │
│  ├─ 大厅:游戏库(动态配置下发)      ├─ 单款玩法 + 同一 SDK           │
│  ├─ 用户中心 / 签到 / 任务 / 商店    └─ 与合集互跳导流                 │
│  └─ 15 款游戏分包,统一接 game-sdk.js                                │
└──────────────────────────────┬─────────────────────────────────────┘
                               │ HTTPS(api.example.cn, 备案)
┌──────────────────────────────▼─────────────────────────────────────┐
│                        服务端层(中国区 VPS)                         │
│  Nginx/Caddy ── Hono API ──┬── Postgres:users/saves/orders/…       │
│  (TLS·限流)  (Node 20)   ├── Redis:排行榜 ZSET·会话·限频·缓存      │
│                            └── 平台适配:wx code2session / midas 验单 │
│                                        tt code2session / tt 支付验单  │
└───────┬──────────────────────────────────────────────┬─────────────┘
        │ 每日备份(pg_dump→R2)                           │ /admin/* API
┌───────▼───────────────┐                    ┌──────────▼──────────────┐
│ Cloudflare(辅助面)    │                    │ 管理后台 SPA             │
│ R2 冷备·资产源站        │                    │ CF Pages 托管            │
│ Workers 定时任务·海外预留│                    │ CF Access 登录保护        │
└───────────────────────┘                    └─────────────────────────┘

3. 部署约束:为什么是「VPS 主链路 + Cloudflare 辅助」

约束事实架构结论
小游戏域名白名单微信/抖音要求 request/downloadFile 域名 HTTPS + ICP 备案,且需大陆稳定可达主 API 域名必须解析到国内备案主机(VPS);备案主体与小游戏主体一致
Cloudflare 大陆可达性workers.dev / pages.dev 域名无法备案;CF 全球网络大陆访问不稳定(除中国网络专属方案)红线 CF 不承载小游戏直连流量;只做管理后台(运营自用、可接受科学访问)、冷备、定时任务
静态资源分发小游戏代码包走平台自身 CDN;超包资源需自有 CDN 域名(同样要备案)国内 CDN(腾讯云/阿里云/七牛任一)挂 cdn.example.cn,回源 VPS 或对象存储
数据合规用户数据(openid、存档、订单)产生并服务于境内用户业务数据库落在境内 VPS;CF R2 仅存加密后的备份与非用户资产
未来出海海外版无备案约束,CF 全家桶是低成本首选选用 Hono(同构跑 Node 与 Workers),海外版可把同一套 API 部署到 CF Workers + D1/Hyperdrive,代码零改写

4. 技术选型与理由

选型理由
API 框架Hono(TypeScript)同一套代码可跑 Node(VPS 主链路)与 Cloudflare Workers(海外/辅助),路由+中间件极简,1–5 人团队心智负担小
运行时Node 20 LTS + PM2(或 Docker Compose)单机部署、进程守护、零停机 reload;Docker 便于日后迁移
数据库Postgres 16(存档字段用 jsonb)jsonb 天然适合"每款游戏存档结构不同"的统一存档表;事务保证支付发货一致性。ORM 用 Drizzle(同样兼容 Workers)
缓存/榜单Redis 7排行榜 ZSET(天然 topN/排名查询)、登录会话、接口限频、游戏库配置缓存
反向代理Caddy(自动 HTTPS)或 NginxTLS 终结、gzip、基础限流、静态资源兜底
管理后台Vite + Vue3 + naive-ui/element-plus SPA纯静态产物托管在 CF Pages,CF Access(邮箱白名单)做第一道登录;调 VPS 的 /admin/* API(二道 JWT+RBAC)
对象存储/备份Cloudflare R2零出口流量费;pg_dump 每日加密上传;管理后台构建产物与文档资产也可放这
定时任务VPS cron(主)+ CF Workers Cron(辅)榜单结算/任务刷新等触库任务放 VPS cron;外部巡检(API 探活告警)放 Workers Cron,形成异地监督
监控告警Uptime 探活(Workers Cron)+ 服务器侧 pino 日志 + 每日指标快照入库最小可用监控,不引入重型 APM

5. 双平台适配层

差异全部收敛在两处:服务端 platform/ 适配模块客户端 SDK 适配层(见 04)。业务代码不出现 wx./tt. 字样。

能力微信抖音服务端抽象
登录换取身份jscode2session(openid/unionid/session_key)code2session(openid/unionid)POST /auth/login {platform, code} → identities 表 → 签发自有 JWT
支付虚拟支付 midas(安卓);iOS 按当期政策tt.pay,安卓 IAP 九一开orders 表统一状态机 + 各平台回调验签器(见 03
激励视频createRewardedVideoAdcreateRewardedVideoAd(同名不同参)客户端 SDK 封装;服务端只收 ad_events 埋点与发奖请求
分享shareAppMessage(不可验证是否分享成功)侧边栏/分享能力(另有回流场景值)回流发奖模型,share_records/share_visits 表(见 05
内容安全msgSecCheck(昵称/UGC 文本)对应内容安全接口服务端统一 secCheck(text) 适配器,昵称/留言入库前必过

6. 域名与环境规划

域名(示例)指向用途备案
api.example.cn国内 VPS小游戏主 API(prod)必须
api-test.example.cn同 VPS 不同端口/容器体验版/开发版联调(小游戏后台单独配白名单)必须
cdn.example.cn国内 CDN超包资源、图集、公告图必须
admin.example.comCF Pages + Access管理后台(运营自用,不受备案约束)不需要

7. 安全基线

8. 成本估算(月,人民币,估算·中)

项目规格费用说明
国内 VPS2C4G(起步)→ 4C8G(放量)¥60–100 → ¥200–300API+Postgres+Redis 同机起步;DAU 数万内单机足够
域名 + 备案.cn 域名¥30–60/年备案免费但需 2–4 周周期,是阶段 1 的前置项
国内 CDN按量¥10–50前期流量极小
CloudflarePages/Access/R2/Workers 免费档≈¥0R2 10GB 免费额度内
合计约 ¥100–200/月起步远低于一次小额买量测试的花费

9. 容量与演进

本篇结论:按 L2 轻服务端一步建到位(登录 + 云存档 + 排行榜 + 分享回流 + 支付验单),部署形态「国内 VPS 主链路 + Cloudflare 辅助面 + 国内 CDN」,技术栈 Hono/Postgres/Redis 一套代码兼容未来 Workers 部署。前置行动项只有一个:立即启动域名备案(2–4 周周期)