MapFlow

PUBLIC LEARNING ROADMAP

实时高频同步联机游戏服务器(从原理到落地) 学习技能树

由 Skill Tree Engine 确定性生成的只读快照

33 个知识节点 · advanced

发布者:aajh

知识目录

基础概念

游戏后端角色与架构概览

理解客户端/服务端职责划分与房间服/专用服形态,为后续同步模型选型建立全局地图

建议预留 45 分钟

学习目标

  • 区分权威服务器与P2P/客户端权威
  • 理解房间服、网关、逻辑服的分层职责

关键概念

  • 专用服务器
  • 房间服
  • 客户端职责
  • 权威模型概览

为什么学习

  • 作为全栈开发者必须先建立架构全景,才能理解为何动作类选帧同步、竞技类选权威+预测

如何检验理解

  • 能画出客户端/服务端职责边界图并说明专用服与房间服的取舍

基础概念

计算机网络基础(TCP/IP、UDP、Socket)

掌握传输层协议特性与套接字编程,是所有实时同步机制的地基

建议预留 60 分钟

学习目标

  • 理解 TCP 与 UDP 的本质差异
  • 掌握 Socket 编程与数据报边界

关键概念

  • TCP三次握手
  • UDP无连接
  • Socket
  • MTU与分片

为什么学习

  • 目标能力地图首条要求传输层原理熟练,必须理解 UDP 无连接、无重传特性才能设计可靠层

如何检验理解

  • 能用 Node/Go 写一个 UDP echo 客户端与服务端并解释报文边界问题

核心技能

实时游戏的延迟与可靠性权衡

理解 RTT、抖动、丢包对竞技体验的影响,建立可靠/不可靠传输取舍判断

建议预留 40 分钟

学习目标

  • 量化 RTT/抖动/丢包对体验的影响
  • 判断何时用可靠传输何时用原始UDP

关键概念

  • RTT
  • 抖动
  • 丢包重传
  • 感知延迟阈值

为什么学习

  • 是设计可靠UDP与同步模型的核心决策依据,动作/竞技类必须熟练权衡延迟与一致性

如何检验理解

  • 能用 tc/netem 制造丢包延迟并观测对帧同步的影响

核心技能

序列化与二进制协议设计

设计紧凑二进制协议与编解码,降低带宽与 CPU 开销,是状态同步与预测的基础

建议预留 60 分钟

学习目标

  • 熟悉 Protobuf/FlatBuffers 选型
  • 掌握位打包与协议版本演进

关键概念

  • Protobuf
  • FlatBuffers
  • 位打包
  • 协议版本兼容

为什么学习

  • 目标要求二进制协议设计熟练,需能为同步包设计版本兼容的消息格式

如何检验理解

  • 能设计并实现一套带版本号与消息类型的二进制协议编解码器

核心技能

权威服务器模型

服务端为唯一真值源,客户端仅输入与表现,是反作弊与公平对局的根基

建议预留 45 分钟

学习目标

  • 理解服务端权威的意义
  • 区分客户端表现与服务端真值

关键概念

  • 服务端权威
  • 真值源
  • 输入上行/状态下行

为什么学习

  • 动作/竞技类必须权威服务器,理解此模型才能正确设计预测与校正

如何检验理解

  • 能说明客户端篡改位置为何无法作弊并给出服务端校验点

核心技能

高并发 I/O 模型(epoll/kqueue/IOCP)

多路复用与 Reactor 模式,支撑万级连接服务器

建议预留 90 分钟

学习目标

  • 理解多路复用原理
  • 区分 Reactor/Proactor

关键概念

  • epoll
  • kqueue
  • IOCP
  • Reactor
  • C10K

为什么学习

  • 目标要求并发编程模型熟练,需理解事件驱动 I/O 才能选对服务器架构

如何检验理解

  • 能解释单线程 epoll 事件循环如何处理多连接并对比 Node 的 libuv

核心技能

UDP 可靠传输与 KCP/ENet 协议

在 UDP 上实现确认重传、拥塞控制、分片重组,是自研 netcode 的关键底层

建议预留 120 分钟

学习目标

  • 实现序列号+ACK+超时重传
  • 理解快速重传与流控窗口
  • 掌握分片重组

关键概念

  • 序列号
  • ACK/SACK
  • RTO
  • 拥塞窗口
  • 分片重组

为什么学习

  • 目标能力地图要求可靠UDP熟练;学习者需能在项目中改造/使用 KCP 类库并解释其机制

如何检验理解

  • 能集成 KCP/ENet 让一个丢包链路下的消息可靠有序到达并解释RTO计算

核心技能

时间同步与时钟模型

NTP/逻辑时钟与服务端权威时间轴、帧编号,是同步与预测的统一时间基准

建议预留 45 分钟

学习目标

  • 理解逻辑时钟与帧编号
  • 掌握简单时钟同步方法

关键概念

  • 逻辑时钟
  • 帧编号
  • 时钟漂移
  • 服务端时间轴

为什么学习

  • 帧同步与预测回滚都依赖统一帧编号与时钟,需能在实现中正确使用

如何检验理解

  • 能实现客户端-服务端帧编号对齐并解释时钟漂移处理

核心技能

游戏 Tick/Loop 主循环设计

固定步长世界更新循环、逻辑帧与渲染帧解耦,是权威服务器的心跳

建议预留 50 分钟

学习目标

  • 实现固定步长循环
  • 处理逻辑帧与渲染帧解耦
  • 理解定时器精度

关键概念

  • 固定步长
  • 累加器
  • 逻辑帧
  • 抖动补偿

为什么学习

  • 目标能力地图明确要求权威服务器 Tick 循环架构熟练,需能独立设计固定步长循环

如何检验理解

  • 能写出稳定 30/60Hz 固定步长循环并用累加器处理漂移

核心技能

游戏服务器并发编程模型

单线程事件循环、多线程、协程与 Actor 模型选型,决定服务器可扩展性

建议预留 80 分钟

学习目标

  • 理解事件循环模型
  • 理解协程与 Actor
  • 做并发模型选型

关键概念

  • 事件循环
  • 协程
  • Actor模型
  • 单线程房间

为什么学习

  • 目标要求并发模型熟练,JS 背景开发者需理解单线程事件循环的边界与 Actor 思路

如何检验理解

  • 能为一个房间服务器选型并说明单线程循环 vs 多协程的取舍

核心技能

匹配系统(Matchmaking)

基于 MMR/延迟/队伍结构的匹配算法与队列管理

建议预留 80 分钟

学习目标

  • 实现分段匹配算法
  • 管理匹配队列与超时

关键概念

  • MMR
  • 匹配队列
  • 延迟约束
  • 队伍结构

为什么学习

  • 目标能力地图将房间与匹配列为核心熟练项,竞技类上线必备

如何检验理解

  • 能实现一个按 MMR 分段+延迟约束的匹配队列

核心技能

游戏数据持久化与存储选型

Redis/关系库存档与数据落库策略,支撑账号与对局结果

建议预留 60 分钟

学习目标

  • 选型内存库与持久库
  • 设计落库策略

关键概念

  • Redis
  • 关系库
  • 落库时机
  • 会话存储

为什么学习

  • 全栈背景相对熟悉存储,重点在于游戏场景的落库时机与内存库选型

如何检验理解

  • 能用 Redis 存玩家会话并在对局结束落库存档

核心技能

状态同步(State Synchronization)

服务端周期广播世界状态快照,客户端插值渲染,适应大规模与弱一致场景

建议预留 100 分钟

学习目标

  • 实现状态快照广播
  • 实现时间戳缓冲与插值
  • 理解增量快照

关键概念

  • 快照
  • 增量同步
  • 实体复制
  • 插值缓冲

为什么学习

  • 目标核心依赖,需能实现快照广播与客户端插值消费,是权威服务器主线

如何检验理解

  • 能实现服务端周期快照广播 + 客户端插值再现远端实体平滑运动

核心技能

帧同步 / 确定性锁步(Lockstep)

仅同步输入指令、客户端确定性模拟,适配动作类强一致对局

建议预留 100 分钟

学习目标

  • 实现输入收集与帧广播
  • 解决浮点不确定性问题
  • 理解追帧与掉帧

关键概念

  • 确定性锁步
  • 定点数
  • 输入帧
  • 追帧
  • 浮点不一致

为什么学习

  • 目标能力地图要求帧同步熟练;动作类核心模型,必须能实现输入收集与帧对齐

如何检验理解

  • 能用定点数实现确定性模拟并在两客户端上得到完全一致的结果

补充知识

无锁队列与线程安全

环形队列、原子操作与内存序等跨线程通信技术

建议预留 60 分钟

学习目标

  • 认识跨线程通信问题
  • 了解无锁队列与内存序概念

关键概念

  • 环形队列
  • 原子操作
  • 内存序

为什么学习

  • 全栈/JS 背景往往走单线程事件循环,无需深入无锁实现,降级为认识级;需要时再补

如何检验理解

  • 能说明为何单线程房间模型可避免锁竞争并列举无锁队列适用场景

补充知识

实体组件系统(ECS)

数据导向设计,支持大规模实体高效模拟与同步

建议预留 60 分钟

学习目标

  • 理解数据导向设计
  • 认识 ECS 的收益与成本

关键概念

  • 实体
  • 组件
  • 系统
  • 缓存友好

为什么学习

  • ECS 是优化手段而非实时同步核心,先认识概念,落地 demo 可用简单实体表替代

如何检验理解

  • 能说明 ECS 数据导向布局为何缓存友好并判断是否需要引入

核心技能

房间/战斗服分配与调度

专用服动态分配、扩缩容与生命周期管理

建议预留 80 分钟

学习目标

  • 实现房间生命周期
  • 实现战斗服分配
  • 处理玩家加入退出

关键概念

  • 房间生命周期
  • 专用服分配
  • 扩缩容
  • 编排

为什么学习

  • 目标要求房间系统设计熟练,是匹配到开局的必经环节,需能实现房间生命周期管理

如何检验理解

  • 能实现房间创建/分配/销毁与玩家加入退出流程

补充知识

排行榜与社交系统后端

Redis ZSet 排行榜、好友、公会等关系型服务设计

建议预留 40 分钟

学习目标

  • 认识排行榜实现
  • 认识社交系统设计

关键概念

  • Redis ZSet
  • 排行榜
  • 好友系统

为什么学习

  • 与实时同步目标弱相关,降级为认识级,未来做完整产品时再补

如何检验理解

  • 能用 Redis ZSet 实现一个简单排行榜

核心技能

网络插值与外推(Interpolation/Extrapolation)

用缓冲与插值平滑远端实体运动并处理丢包外推,直接决定视觉流畅度

建议预留 70 分钟

学习目标

  • 实现插值缓冲
  • 选择外推策略与上限
  • 处理网络抖动

关键概念

  • 插值缓冲
  • 外推
  • 抖动平滑
  • 快照延迟

为什么学习

  • 状态同步落地必备,需能在客户端正确处理抖动缓冲与丢包外推

如何检验理解

  • 能实现实体插值缓冲并在丢包时用速度外推继续平滑运动

核心技能

客户端预测与服务端回滚

本地预测输入结果、服务端校正并回滚重演,消除操作迟滞感

建议预留 120 分钟

学习目标

  • 实现本地即时预测
  • 实现服务端状态调和
  • 实现输入重演

关键概念

  • 客户端预测
  • 服务端调和
  • 输入历史
  • 回滚重演

为什么学习

  • 目标能力地图将客户端预测与服务端调和列为核心熟练项,是竞技类体验的关键

如何检验理解

  • 实现本地预测 + 服务端校正 + 未确认输入重演,且高延迟下操作无明显延迟感

核心技能

AOI / 兴趣管理(Area of Interest)

九宫格等算法限制同步范围,降低带宽,是大规模状态同步必需品

建议预留 90 分钟

学习目标

  • 实现九宫格/网格AOI
  • 管理进出视野事件

关键概念

  • AOI
  • 九宫格
  • 进出视野
  • 同步范围裁剪

为什么学习

  • 目标能力地图要求状态同步含兴趣管理,是多人在线降带宽的关键落地能力

如何检验理解

  • 能实现九宫格 AOI 并验证只有视野内实体被同步

核心技能

可观测性:监控、日志与压测

指标采集、日志、机器人压测与容量规划,是运维上线必备

建议预留 90 分钟

学习目标

  • 采集 tick/RTT 指标
  • 编写机器人压测
  • 做容量规划

关键概念

  • 指标采集
  • 机器人压测
  • profiler
  • 容量规划
  • 日志

为什么学习

  • 目标能力地图要求压测与性能剖析、可观测性熟练,且明确要求能压测运维

如何检验理解

  • 能写机器人客户端压测并绘制 tick 耗时/RTT/掉线率指标

补充知识

开源框架与引擎网络库实践

Photon、Mirror、Netcode、Nakama、Skynet、Pomelo 等框架选型与快速原型

建议预留 60 分钟

学习目标

  • 了解主流框架同步模型
  • 做技术选型

关键概念

  • Photon
  • Mirror
  • Netcode
  • Nakama
  • Skynet

为什么学习

  • 目标是理解原理并自研,框架以认识为主便于选型与快速搭 demo,不深入源码

如何检验理解

  • 能对比至少两个框架的同步模型并说明何时选用

补充知识

消息中间件与异步解耦

Kafka/RabbitMQ 在日志、事件、跨服中的应用

建议预留 50 分钟

学习目标

  • 认识异步解耦场景
  • 了解消息总线用途

关键概念

  • Kafka
  • RabbitMQ
  • 消息总线
  • 跨服事件

为什么学习

  • 单房间对局 demo 不依赖消息中间件,跨服阶段才需要,降级为认识级

如何检验理解

  • 能说明消息中间件在跨服事件与日志场景的作用

补充知识

游戏服务器集群与网关架构

网关服、逻辑服、登录服与跨服通信消息路由

建议预留 70 分钟

学习目标

  • 理解网关与逻辑服分层
  • 了解跨服通信

关键概念

  • 网关服
  • 逻辑服
  • 消息路由
  • 跨服通信

为什么学习

  • 目标是单服务器/demo 级别先行,集群架构属进阶,认识网关与逻辑服分层即可

如何检验理解

  • 能画出网关/逻辑/登录服分层并说明消息路由走向

核心技能

延迟补偿与命中判定(Lag Compensation)

基于历史状态回溯判定命中,是射击/技能类公平性的核心机制

建议预留 100 分钟

学习目标

  • 实现历史状态回溯
  • 理解服务器重演命中
  • 权衡公平性与体验

关键概念

  • 历史快照
  • 回溯判定
  • 时间轴重演
  • 命中检测

为什么学习

  • 目标能力地图将延迟补偿列为推荐熟练项,竞技类落地需要能实现历史回溯判定

如何检验理解

  • 能实现服务器保存历史快照并回溯到射击时刻做命中判定

核心技能

物理与移动同步(客户端/服务端模拟)

角色移动同步、碰撞与动量模型的服务器实现,是与预测结合的核心玩法层

建议预留 100 分钟

学习目标

  • 实现服务端移动与碰撞
  • 保持客户端/服务端模拟一致

关键概念

  • 角色移动
  • 碰撞检测
  • 动量模型
  • 模拟一致性

为什么学习

  • 动作类核心玩法,需能在服务端与客户端保持一致的移动模型以支持预测

如何检验理解

  • 能实现服务端角色移动与碰撞在客户端预测下不产生漂移

核心技能

网络流量压缩与带宽优化

增量同步、量化/位打包、脏标记与协议裁剪等带宽优化

建议预留 80 分钟

学习目标

  • 实现增量/脏标记同步
  • 实施量化与位打包
  • 做带宽测量

关键概念

  • 增量同步
  • 位打包
  • 量化
  • 脏标记
  • 优先级调度

为什么学习

  • 目标能力地图要求流量优化熟练,与 AOI 配合是实时同步可上线的必要条件

如何检验理解

  • 能用脏标记+位打包把每帧带宽降低并测量对比

核心技能

断线重连与状态恢复

会话保持、快照恢复与重连补偿,实时对局体验的关键韧性能力

建议预留 60 分钟

学习目标

  • 实现会话保持与重连
  • 实现快照恢复与补偿

关键概念

  • 会话保持
  • 快照恢复
  • 重连补偿
  • 超时处理

为什么学习

  • 目标能力地图要求房间含断线重连,且 demo 需能在真实网络下恢复对局

如何检验理解

  • 能在断线后重连并恢复到正确对局状态且不出现明显跳变

核心技能

反作弊与安全防护

服务端校验、输入合法性、防重放与 DDoS 防护,保障公平对局

建议预留 70 分钟

学习目标

  • 实现输入合法性校验
  • 实现防重放与基础加密
  • 了解DDoS防护

关键概念

  • 服务端校验
  • 输入合法性
  • 防重放
  • 加密
  • DDoS防护

为什么学习

  • 目标能力地图反作弊列为推荐入门级,需能在权威服务器上实现基础输入校验

如何检验理解

  • 能实现服务端输入合法性校验并拦截异常移动速度的作弊输入

补充知识

分布式一致性与分区分服

分区分服、无缝大世界与 CAP 权衡

建议预留 60 分钟

学习目标

  • 认识分区与一致性权衡
  • 了解无缝大世界思路

关键概念

  • 分区分服
  • CAP
  • 无缝大世界

为什么学习

  • 与实时同步 demo 目标相关度低,属大型项目议题,降级为认识级不深入实现

如何检验理解

  • 能说明分区分服与 CAP 权衡的基本取舍

补充知识

云原生与全球部署(多区域低延迟)

Kubernetes 编排、边缘节点与就近接入,支撑多区域低延迟对局

建议预留 60 分钟

学习目标

  • 了解容器编排部署专用服
  • 认识全球多区域调度

关键概念

  • Kubernetes
  • 边缘节点
  • 就近接入
  • 全球服调度

为什么学习

  • 目标是能部署运维,Docker 级部署为主;全球多区域属进阶,先认识 K8s 编排思路

如何检验理解

  • 能说明专用服在 K8s 中编排与就近接入的基本方案

项目实战

实时对局服务器完整项目实战

综合实现带匹配、权威同步、预测回滚、持久化与监控的联机对局 demo 并部署压测

建议预留 600 分钟

学习目标

  • 端到端串联传输/同步/预测/房间/运维
  • 独立部署并压测调优

关键概念

  • 权威服务器
  • 预测回滚
  • 匹配房间
  • 压测运维
  • 协议文档

为什么学习

  • 目标明确要求能独立写出可运行的权威服务器与联机 demo,是学习路径的最终交付里程碑

如何检验理解

  • 交付一个可多人实时对局、低延迟、可压测、可部署的运行 demo 与协议/架构文档

前置关系与知识联系

结合互动地图查看具体关系类型,再选择下一步。