《MMO 服务器开发》卷二《单服架构与玩法系统》全 55 篇,是把玩法装进卷一那条管道的一卷。卷一已经让
aegis能登录、能移动、能广播,但那个服务器里没有游戏。卷二从「状态归谁」这一条主线出发,先把分层与实体运行时做出来,再逐个实现玩法域:AOI 与移动、战斗与掉落、背包与属性、任务与成长、聊天与社交、组队与公会、排行榜与邮件、交易与匹配——每一个域都遵循同一套「谁持有状态、怎么改状态、怎么结算、怎么审计」的模板。每一节都写代码,每一节的代码都在本机真跑过,跑出来的结果就是这一节的结论。
本卷不需要任何中间件:排行榜、缓存、队列全部用内存实现,只用 Go 标准库,你可以在任何一台装了 Go 1.26 的机器上把全部 54 节代码原样跑一遍。
本页是《单服架构与玩法系统》的全书目录:按章节顺序列出全部 55 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的学习路径与验收清单。
全书概览
| 项目 | 内容 |
|---|---|
| 书稿 | 《MMO 服务器开发》卷二《单服架构与玩法系统》 |
| 篇数 | 55 篇(正文 18 章 54 节 + 目录篇) |
| 领域 | MMO 单服玩法系统从零实现 |
| 贯穿项目 | 《晨曦大陆》——一款多人在线开放世界小游戏 |
| 从零服务端 | aegis——Go 实现,只用标准库,可本机真跑 |
| 承接 | 复用卷一《网络与并发内核》 的帧格式、命令号与幂等约定 |
| 阅读方式 | 从目录篇 进入按顺序通读,或按查漏场景跳读 |
| 实测环境 | Go 1.26.0、macOS Darwin 25.3.0 |
| 可运行性 | 54 节全部为 L1 纯逻辑或 B 基准,本机实跑,基准数字附原始数据 |
全书目录
前置
| 篇目 | 核心内容 |
|---|---|
| 目录 | 本卷定位、阅读路径、单服可玩验收清单与可运行性口径 |
第一部分:分层与运行时(第 1–3 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 1.1 | gateway / logic / scene / data 分层 | 四层职责边界与数据流向 |
| 1.2 | 状态归谁:防重复发奖与旧数据覆盖 | 单写者、读副本与版本号 |
| 1.3 | 本书范围与站内架构文章的分工 | 与站内 170 篇架构文的四重区隔 |
| 2.1 | entity runtime 与句柄 | 实体存储布局与句柄寻址 |
| 2.2 | 生命周期与对象池 | 生成、销毁与分配压力 |
| 2.3 | 运行时所有权与迁移 | 实体归属与跨实例迁移 |
| 3.1 | 地图数据结构与逻辑坐标 | 网格、阻挡与浮点逻辑坐标 |
| 3.2 | 实例创建与回收 | 实例池与回收时机 |
| 3.3 | 分线、副本与主城/野外 | 三类场景的差异与切换 |
第二部分:空间与战斗(第 4–6 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 4.1 | 九宫格 AOI 从零实现 | 格划分、邻居查询与进出事件 |
| 4.2 | 十字链表 AOI 从零实现 | 双向链表维护与增量更新 |
| 4.3 | 基准:三种 AOI 的 CPU 与带宽对照 | 三种方案的实测对照与选型结论 |
| 5.1 | 服务器权威移动 | 移动指令与位置推进 |
| 5.2 | A* 与导航网格 | 从零实现 A* 与网格寻路 |
| 5.3 | 移动校验与防穿墙 | 速度上限、路径合法性与瞬移检测 |
| 6.1 | 指令投递与执行队列 | 战斗指令的入队与定序执行 |
| 6.2 | 技能与 Buff 建模 | 技能、冷却与 Buff 叠加规则 |
| 6.3 | 战斗结算与防重复发奖 | 结算幂等与奖励只发一次 |
第三部分:资产与成长(第 7–9 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 7.1 | 掉落表服务 | 掉落表结构与权重抽取 |
| 7.2 | 确定性随机与随机种子 | 每实体独立 PRNG 与可复现种子 |
| 7.3 | 保底机制与掉落审计 | 保底计数器与掉落流水 |
| 8.1 | 物品与堆叠模型 | 物品实例、堆叠与格子 |
| 8.2 | 并发修改与事务 | 单写者串行化与原子变更 |
| 8.3 | 装备与强化 | 装备槽位、属性贡献与强化 |
| 9.1 | 属性计算与加成来源 | 基础值、加成与结算顺序 |
| 9.2 | 等级与成长状态机 | 经验、升级与成长节点 |
| 9.3 | 离线推进与体力 | 离线收益与体力恢复 |
第四部分:任务与社交(第 10–12 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 10.1 | 任务依赖图与循环检测 | 前置图与拓扑校验 |
| 10.2 | 事件上报与进度服务 | 事件驱动进度与幂等计数 |
| 10.3 | 每日重置与时区窗口 | 重置边界与跨时区口径 |
| 11.1 | 频道模型与权限 | 频道类型、订阅与发言权限 |
| 11.2 | 敏感词与限速治理 | 词库匹配与令牌桶限速 |
| 11.3 | 好友关系与关系一致性 | 双向关系与状态一致 |
| 12.1 | 队伍状态与入口控制 | 队伍状态机与加入条件 |
| 12.2 | 满员判断与匹配锁定 | 并发入队与锁定 |
| 12.3 | 掉线处理与队长迁移 | 掉线保留与队长接替 |
第五部分:组织与资产流转(第 13–15 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 13.1 | 入会、职位与权限 | 公会成员与权限模型 |
| 13.2 | 公会仓库与捐献流水 | 共享仓库与流水对账 |
| 13.3 | 公会战报名与锁定 | 报名窗口与名单锁定 |
| 14.1 | 为什么不能只用一张表 | 排行榜查询代价与结构选择 |
| 14.2 | 写缓冲与分段榜单 | 跳表、分桶与写合并 |
| 14.3 | 结算与赛季边界 | 赛季切换与发奖 |
| 15.1 | 邮件投递与去重 | 投递幂等与重复抑制 |
| 15.2 | 附件、过期与流拍结算 | 附件领取与过期返还 |
| 15.3 | 红点聚合与离线同步 | 红点计数与离线补偿 |
第六部分:交易、匹配与综合(第 16–18 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 16.1 | 资产冻结与托管 | 上架冻结与托管账户 |
| 16.2 | 竞价并发与异常回滚 | 出价竞态与回滚 |
| 16.3 | 价格索引与经济风控 | 价格指数与异常交易识别 |
| 17.1 | 匹配算法与公平性 | 评分收敛与匹配公平 |
| 17.2 | 大厅生命周期:防幽灵房间 | 大厅创建、超时与回收 |
| 17.3 | 实例分配与回收 | 实例池分配与归还 |
| 18.1 | 把玩法系统接进 aegis | 装配顺序与模块接线 |
| 18.2 | 《晨曦大陆》单服可玩 | 端到端验收脚本与清单 |
| 18.3 | 单服承载数字 | 玩法接入后的真实承载数据 |
怎么用这份索引
- 系统学习:从目录篇 进入,按路径 A 顺序通读 18 章。
- 抓重点:直接跳到第二部分(空间与战斗)和第五部分(组织与资产流转),这两块是玩法系统最容易出事的部分。
- 查问题:用目录篇 末尾的「常见问题速查」表,或按上表标题跳读。
- 配代码:每篇正文的代码块都标了层级与来源文件,L1 的可以直接复制出来在 Go 1.26 上跑。
相关阅读
- 卷一《网络与并发内核》 :协议、KCP、会话、路由、定时器、Actor、同步模型与安全底座
- 游戏服务端专题 :网络模型、同步方案与分布式架构
- 游戏服务端实战专题导航 :170 篇架构设计与取舍
- 游戏引擎实现原理 :从零写一个 3D 引擎的四卷本
- 书稿书架 :全部电子书与创作手记