积分时长制落地:登录时兑换、MySQL 账号表与认证协议

计费体系 · 2026-11-10 · datanger.cn

老 MMO 的账号体系只有一张表,重建设计时我们把它升级成积分时长制:积分是唯一余额,游戏时间在登录瞬间按汇率兑换,充值与赠送都只动积分。汇率定 100 积分 = 1 小时,充值 1 元 = 1000 积分 = 10 小时,新注册赠 2000 积分。

为什么在登录时兑换

不在游戏内扣时长,而在认证环节一次性兑换:登录成功的回复里就带着可用时长,客户端按这个值计时。好处是计费逻辑只有一处,游戏服完全无感知;欠费、封禁在认证层就挡住,不进世界:

GET 认证请求(GCC → 计费服务 :3344)
  name + md5(password)
回复:
  200  ok        附带兑换后的剩余时长
  403  欠费      积分不足,提示充值
  400  封禁      uAuthority 置低的账号

表结构

tbl_account(
  name, passhash, phone, points,
  reg_ip, uAuthority, created_at
)

计费服务是一个几百行的常驻进程,实现 GCC 的 auth 协议原样应答——协议不变,实现自研,客户端零改动。官网注册、积分购买与游戏内认证读写同一张表,余额处处一致。

分级测试账号(四级权限)也挂在 uAuthority 上:同一张表、同一个认证口,不同权限进不同的测试通道。