《游戏服务端编程实践》目录
《游戏服务端编程实践》——章节大纲文档
第一篇 基础与准备篇:从 0 到 1 认识游戏服务端
第 1 章 游戏服务器的本质
1.1 游戏服务器的定义与职责
- 1.1.1 为什么需要服务器
- 1.1.2 客户端与服务端的职责划分
- 1.1.3 状态保持与逻辑权威
1.2 游戏类型与服务端架构
- 1.2.1 单机、局域网与在线游戏对比
- 1.2.2 MMO、SLG、FPS、休闲类服务端差异
- 1.2.3 实时性与一致性需求分析
1.3 游戏服务器的生命周期
- 1.3.1 启动、注册、服务发现
- 1.3.2 运行期事件与资源管理
- 1.3.3 停服与数据回收
1.4 典型架构演进
- 1.4.1 单体架构
- 1.4.2 分布式与微服务
- 1.4.3 云原生架构演进
第 2 章 服务端的编程模型
2.1 I/O 模型基础
- 2.1.1 阻塞与非阻塞 I/O
- 2.1.2 Reactor 模式与事件循环
- 2.1.3 多线程与协程的差异
2.2 并发模型与任务调度
- 2.2.1 Actor 模型详解(Akka / Erlang)
- 2.2.2 Channel 通信与消息投递
- 2.2.3 线程池与任务分发策略
2.3 服务端框架对比
- 2.3.1 Netty(Java)
- 2.3.2 Go net/http + goroutine
- 2.3.3 Skynet(Lua)
- 2.3.4 Rust Tokio + Actix
2.4 实战与选型建议
- 2.4.1 语言选择与性能对比
- 2.4.2 单线程事件驱动 vs 多线程任务池
- 2.4.3 实战:实现简易 Echo Server
第 3 章 通信协议与数据序列化
3.1 网络协议基础
- 3.1.1 TCP / UDP / WebSocket 对比
- 3.1.2 游戏中的连接保持与心跳机制
- 3.1.3 延迟与丢包问题分析
3.2 数据序列化方案
- 3.2.1 Protobuf 与 FlatBuffers
- 3.2.2 JSON、MsgPack、Cap’n Proto
- 3.2.3 序列化性能与内存占用对比
3.3 协议设计与消息封装
- 3.3.1 消息头与命令号设计
- 3.3.2 封包拆包、粘包与断线重连
- 3.3.3 消息路由与分发策略
3.4 实战:构建简易通信协议栈
- 3.4.1 客户端请求与响应模型
- 3.4.2 通用消息封装结构
- 3.4.3 调试与协议日志分析
第二篇 核心系统篇:构建可运行的游戏后端
第 4 章 账号与认证系统
4.1 玩家身份模型
- 4.1.1 账号、角色、租户与设备
- 4.1.2 多角色与跨区机制
- 4.1.3 账号绑定与安全策略
4.2 登录认证机制
- 4.2.1 Session 与 Token 模型
- 4.2.2 JWT 认证流程
- 4.2.3 Refresh Token 与黑名单机制
4.3 第三方登录与集成
- 4.3.1 微信 / Steam / Google OAuth 登录
- 4.3.2 SDK 集成与安全验证
- 4.3.3 第三方账号绑定
4.4 实战:构建通用登录服
- 4.4.1 API 设计
- 4.4.2 JWT 生成与校验
- 4.4.3 登录态存储与踢下线机制
第 5 章 网关与分发系统
5.1 网关架构角色
- 5.1.1 网关的定义与作用
- 5.1.2 连接管理与认证中转
- 5.1.3 消息路由与负载均衡
5.2 消息转发策略
- 5.2.1 玩家绑定与连接会话
- 5.2.2 基于 PlayerID / RoomID 的路由
- 5.2.3 动态转发与广播
5.3 性能优化与扩展
- 5.3.1 长连接优化与 KeepAlive
- 5.3.2 Gateway 横向扩展策略
- 5.3.3 性能压测与 QPS 指标
5.4 实战:构建游戏网关服务
- 5.4.1 消息转发核心代码示例
- 5.4.2 Redis / gRPC / Akka 通信实现
- 5.4.3 压测与连接池管理
第 6 章 玩家与角色系统
6.1 玩家数据模型
- 6.1.1 Player 基础字段设计
- 6.1.2 属性系统与动态扩展
- 6.1.3 多角色与跨服机制
6.2 数据持久化方案
- 6.2.1 ORM(GORM / Hibernate)使用
- 6.2.2 缓存层(Redis + 本地缓存)
- 6.2.3 数据同步与脏写防护
6.3 实战:角色系统实现
- 6.3.1 创建角色流程
- 6.3.2 数据加载与保存
- 6.3.3 异步任务与保存队列
第 7 章 世界与地图系统
7.1 地图与世界模型
- 7.1.1 世界分区与逻辑坐标
- 7.1.2 地图加载与分片机制
- 7.1.3 实时区域广播
7.2 寻路系统
- 7.2.1 A*、Dijkstra 算法原理
- 7.2.2 地图阻挡与通行数据
- 7.2.3 客户端与服务端同步路径
7.3 实战:实现一个地图服
- 7.3.1 地图数据结构设计
- 7.3.2 区域广播算法实现
- 7.3.3 实时位置信息同步
第 8 章 战斗系统设计
8.1 战斗模型类型
- 8.1.1 回合制与实时制对比
- 8.1.2 帧同步与状态同步机制
- 8.1.3 战斗状态机
8.2 战斗逻辑实现
- 8.2.1 指令投递与执行队列
- 8.2.2 Buff / 技能系统建模
- 8.2.3 战斗日志与回放
8.3 实战:帧同步战斗
- 8.3.1 帧号与预测机制
- 8.3.2 同步策略与丢帧补偿
- 8.3.3 重连与状态恢复
第 9 章 任务、背包与经济系统
9.1 背包系统设计
- 9.1.1 物品与堆叠模型
- 9.1.2 装备系统与强化
- 9.1.3 背包扩展与持久化
9.2 任务系统
- 9.2.1 任务状态机
- 9.2.2 触发条件与事件总线
- 9.2.3 日常任务与成就系统
9.3 游戏经济系统
- 9.3.1 货币模型与汇率
- 9.3.2 产出与消耗平衡
- 9.3.3 商城与交易系统
第 10 章 聊天与社交系统
10.1 聊天系统架构
- 10.1.1 私聊 / 公聊 / 频道模型
- 10.1.2 消息队列与转发
- 10.1.3 过滤与审查机制
10.2 社交系统设计
- 10.2.1 好友关系与黑名单
- 10.2.2 公会 / 联盟模块
- 10.2.3 社交互动与排行榜
10.3 实战:Redis Pub/Sub 聊天服
- 10.3.1 消息通道与订阅模型
- 10.3.2 实现群聊与频道广播
- 10.3.3 负载均衡与消息分片
第三篇 架构与性能篇:从单服到分布式集群
第 11 章 分布式与微服务架构
(略部分示例结构,以下章同样层级展开)
- 11.1 架构拆分与职责边界
- 11.2 RPC 框架与消息总线
- 11.3 服务注册与发现机制
- 11.4 微服务间通信模式(同步/异步)
- 11.5 实战:服务间事件调度系统
第 12 章 数据与状态管理
- 12.1 实时状态与快照策略
- 12.2 Redis + MySQL 混合持久化
- 12.3 状态一致性与幂等性
- 12.4 数据分片与多租户模型
第 13 章 并发与性能优化
- 13.1 Goroutine/Actor 调度优化
- 13.2 无锁结构与内存复用
- 13.3 CPU/内存 Profiling
- 13.4 Benchmark 案例分析
第 14 章 高可用与容错
- 14.1 心跳与健康检查
- 14.2 重试、断路器与回退机制
- 14.3 状态恢复与副本同步
- 14.4 实战:服务重启不中断设计
第四篇 运营与服务篇
第 15 章 数据分析与监控
- 15.1 游戏指标体系设计
- 15.2 埋点与日志系统
- 15.3 ELK / Loki / Prometheus 集成
- 15.4 实战:构建游戏监控看板
第 16 章 GM 与后台工具
- 16.1 GM 权限与命令系统
- 16.2 配置中心与动态参数
- 16.3 实战:构建后台管理系统
第 17 章 版本更新与热更机制
- 17.1 客户端资源热更流程
- 17.2 服务端脚本热更(Lua/WASM)
- 17.3 回滚与安全策略
第 18 章 安全与防作弊
- 18.1 网络加密与签名
- 18.2 封包验证与篡改检测
- 18.3 行为分析与外挂防控
第五篇 实战项目篇
第 19 章 项目规划与模块划分
- 19.1 服务划分与部署拓扑
- 19.2 模块职责说明
- 19.3 技术栈与工具链
第 20 章 实战:SLG 游戏服务端
- 20.1 世界地图模块
- 20.2 资源产出与建筑系统
- 20.3 战斗与调度系统
- 20.4 排行榜与社交模块
- 20.5 部署与监控全流程
第 21 章 未来方向与生态
- 21.1 云原生游戏后端趋势
- 21.2 AIOps 与自动化部署
- 21.3 Serverless 与 WASM 新范式
- 21.4 AI 驱动的游戏逻辑与测试
附录
- 附录 A:常用框架与工具清单(按语言分类)
- 附录 B:性能调优 Checklist
- 附录 C:示例项目目录结构
- 附录 D:参考资料与社区索引