Skip to content

游戏类型与架构选型对照 ​

游戏类型决定了服务端架构的核心约束。不同类型游戏对实时性、一致性、状态规模、并发模型的要求差异极大,选择错误的架构会导致后期返工甚至推倒重来。

按实时性分类 ​

强实时对战(延迟敏感 < 100ms) ​

典型游戏类型:

  • FPS/TPS(CS:GO、使命召唤手游)
  • MOBA(王者荣耀、英雄联盟)
  • 格斗游戏(街霸、拳皇)
  • 竞速游戏(QQ飞车、跑跑卡丁车)
  • 弹幕射击(雷电、飞机大战)

架构特点:

  • 客户端预测 + 服务端权威
  • 帧同步或状态同步
  • 房间制:一局一房间,短生命周期
  • 状态服务进程:单进程承载有限房间
  • 专用战斗服务器(可能物理机部署)

技术选型:

  • 语言:C++/Go/Rust(低延迟要求)
  • 网络:UDP(KCP/QUIC)
  • 同步模型:帧同步(确定性)或状态同步(权威服务端)
  • 数据库:Redis(实时状态)+ MySQL(持久化)

中等实时(延迟容忍 100-500ms) ​

典型游戏类型:

  • 卡牌对战(炉石传说、游戏王)
  • 回合制(梦幻西游、阴阳师)
  • 自走棋(云顶之弈、多多自走棋)
  • 策略对战(文明觉醒、万国醒)
  • 弹幕互动(抖音弹幕游戏)

架构特点:

  • 服务端权威 + 客户端表现
  • 房间制或匹配制
  • 状态可以分阶段更新
  • 对延迟容忍度较高

技术选型:

  • 语言:Go/Java/C++
  • 网络:TCP/WebSocket/长连接
  • 同步模型:回合制同步或状态广播
  • 数据库:MySQL + Redis

弱实时/异步(延迟容忍 > 1s) ​

典型游戏类型:

  • 挂机放置(刀塔能挂机、西游)
  • 模拟经营(开心农场、卡通农场)
  • 卡牌养成(阴阳师、原神抽卡)
  • 策略养成(率土之滨、三国志战略版)
  • 社交休闲(动物森友会)

架构特点:

  • 请求-响应模式为主
  • 状态可以批量更新
  • 后台定时任务驱动
  • 对并发要求相对较低

技术选型:

  • 语言:Go/Python/Java
  • 网络:HTTP/WebSocket
  • 同步模型:请求-响应 + 推送通知
  • 数据库:MySQL + Redis + 定时任务

按玩家规模分类 ​

单服独立(1服1世界) ​

典型游戏类型:

  • 独立手游(单机联网验证)
  • 小型休闲游戏
  • 测试期产品

架构特点:

  • 单进程或少量进程
  • 所有状态在一个数据库
  • 简单部署和运维

技术选型:

  • 语言:Python/Node.js/Go
  • 框架:Skynet/自建轻量框架
  • 数据库:MySQL/SQLite

分服运营(多服独立) ​

典型游戏类型:

  • 传统MMO(传奇、奇迹)
  • 卡牌养成(梦幻西游)
  • 策略游戏(率土之滨)

架构特点:

  • 每个服务器独立运行
  • 玩家选择服务器进入
  • 服务器之间数据隔离
  • 需要合服、滚服机制

技术选型:

  • 语言:C++/Java/Go
  • 框架:MMORPG框架(BigWorld/自建)
  • 数据库:MySQL(分服分库)
  • 缓存:Redis(每服独立)

全服/跨服(1服多世界) ​

典型游戏类型:

  • 现代MMO(原神、幻塔)
  • 大逃杀(和平精英)
  • 开放世界(我的世界服务器)
  • 区块链游戏

架构特点:

  • 全服统一入口
  • 动态分区/分服
  • 跨服匹配、跨服战斗
  • 状态需要全局可见

技术选型:

  • 语言:Go/C++/Java
  • 架构:微服务 + 服务网格
  • 数据库:分布式数据库(TiDB/CockroachDB)
  • 缓存:Redis Cluster
  • 消息:Kafka/NATS

按状态模型分类 ​

房间制(短生命周期状态) ​

典型游戏类型:

  • MOBA/RTS(一局20-40分钟)
  • FPS(一局10-30分钟)
  • 自走棋(一局30-45分钟)
  • 棋牌(一局5-30分钟)

架构特点:

  • 房间创建 → 游戏进行 → 结算 → 销毁
  • 状态在房间生命周期内有效
  • 房间可以动态分配到不同进程
  • 容易做水平扩展

设计要点:

  • 房间管理器:创建、查找、销毁
  • 房间状态机:等待、游戏中、结算
  • 房间分配:负载均衡策略
  • 房间迁移:进程重启时的状态恢复

世界制(长生命周期状态) ​

典型游戏类型:

  • MMO(天龙八部、剑网3)
  • 沙盒(我的世界)
  • 模拟人生(动物森友会)
  • 大逃杀(和平精英)

架构特点:

  • 玩家状态持续存在
  • 地图/场景持久化
  • 实体状态需要跨进程同步
  • 需要 AOI(兴趣区域)管理

设计要点:

  • 地图分区:网格/BSP/动态分区
  • 实体管理:玩家、NPC、怪物、掉落物
  • AOI 管理:九宫格、十字链表、广播树
  • 状态同步:增量同步、快照同步

数据制(状态以数据为主) ​

典型游戏类型:

  • 卡牌养成(阴阳师、原神)
  • 策略养成(率土之滨)
  • 模拟经营(开心农场)
  • 挂机放置(刀塔能挂机)

架构特点:

  • 状态主要在数据库
  • 读多写少
  • 定时任务批量处理
  • 状态一致性要求高

设计要点:

  • 数据分层:热数据/温数据/冷数据
  • 缓存策略:LRU、定时回写
  • 事务处理:关键操作需要事务保证
  • 数据归档:历史数据清理策略

按社交模型分类 ​

弱社交(单人为主) ​

典型游戏类型:

  • 单机手游
  • 挂机放置
  • 解谜游戏
  • 模拟经营

架构特点:

  • 玩家交互少
  • 好友系统简单
  • 排行榜是主要社交
  • 无需跨服交互

中社交(公会/好友) ​

典型游戏类型:

  • 卡牌养成
  • 策略游戏
  • MMO
  • 回合制

架构特点:

  • 公会系统
  • 好友互动
  • 跨服公会战
  • 需要社交状态同步

强社交(实时交互) ​

典型游戏类型:

  • MMO
  • MOBA
  • FPS
  • 大逃杀

架构特点:

  • 实时组队
  • 实时聊天
  • 跨服匹配
  • 大规模社交状态

架构选型决策树 ​

text
游戏类型确定后,按以下顺序决策:

1. 实时性要求
   ├── 强实时(< 100ms)→ UDP + 帧同步/状态同步
   ├── 中等实时(100-500ms)→ TCP/WebSocket + 房间制
   └── 弱实时(> 1s)→ HTTP + 请求-响应

2. 玩家规模
   ├── 单服独立 → 简单架构
   ├── 分服运营 → MMORPG框架 + 分服分库
   └── 全服/跨服 → 微服务 + 分布式

3. 状态模型
   ├── 房间制 → 房间管理器 + 动态分配
   ├── 世界制 → AOI + 地图分区 + 实体管理
   └── 数据制 → 数据分层 + 缓存策略

4. 社交模型
   ├── 弱社交 → 简单好友 + 排行榜
   ├── 中社交 → 公会系统 + 跨服交互
   └── 强社交 → 实时社交 + 大规模同步

常见误区 ​

  • 误区一:所有游戏都用 MMO 架构 → 过度设计,维护成本高
  • 误区二:强实时游戏用 HTTP → 延迟无法保证
  • 误区三:挂机游戏用帧同步 → 资源浪费,复杂度高
  • 误区四:分服游戏不做合服 → 运营后期服务器空置
  • 误区五:全服游戏不做分区 → 性能瓶颈

下一步 ​

选择具体架构前,先回答三个问题:

  1. 玩家最频繁的核心行为是什么?
  2. 哪些状态一旦错就会直接伤害体验?
  3. 哪些故障恢复不了,或者恢复成本远高于预防?

游戏知识体系