02-游戏类型演化
游戏类型演化——赛车、马里奥、格斗、冒险格斗各自的演化流程
一句话
游戏系统论讲通用演化(空窗口→方块→角色→关卡→完整游戏);本线讲具体游戏类型的演化分支——每类游戏的核心对象不同,演化顺序也不同:赛车先有世界和相机,格斗先有动作和判定,冒险格斗先让角色走起来再打起来。
一、四类游戏的核心演化区别
1 | 赛车: 方块 → 车 → 赛道 → 驾驶 → 相机 → 比赛 |
格斗游戏最重要的第一个「不是车也不是地图」,而是先让两个方块在屏幕上产生攻击和反馈。 冒险格斗最核心的开发顺序:先让角色在世界里走起来,再让角色打起来,最后让世界丰富起来。
二、赛车游戏
赛道流式加载:近景赛道怎么做
赛车游戏里「往前只有近景的赛道」通常不是把整条赛道提前建出来,而是采用动态加载 + 视野范围内生成的方式。
不是没有远处,而是不让远处作为高成本对象存在。
通常组合:赛道分块 + 提前加载 + LOD + 远景假模型 + 卸载旧区域。
方案 1:分块加载(最常用)——把赛道切成小块:
1 | [已加载][已加载][当前][未来][未来][未加载] |
每 100 米一个赛道块,玩家进入 C 区域:加载 D、E,卸载 A,保留 B、C。内存中永远只有「当前区域 ± 几百米」,而不是整个 20 km 赛道。
方案 2:赛道预定义 + 动态激活——设计师提前做 Track01(Start → Road Segment → Bridge → Tunnel → Finish),运行时:
1 | if(distance(player, segment) < load_distance) Load(segment); |
远景怎么办?—— LOD(Level Of Detail):
1 | 100米内:高模汽车/高模树/高精度路面/碰撞 |
高速赛车为什么不会穿模?——提前预测:
赛车速度 300 km/h = 83 m/s。加载距离 = 速度 × 加载时间 × 安全倍数 ≈ 83 × 2 × 3 ≈ 500 米。
无限赛车(无尽模式):
1 | [12][13][14][15][16] → 删除12,生成17 → [13][14][15][16][17] |
道路段来自 Segment Pool(直路/弯路/坡道/隧道/跳台)随机组合。
AI 赛车: AI 不需要真实道路,使用 AI spline(道路中心线)——position = spline(t),每辆车只沿着路径参数移动。
赛车游戏的演化开发流程
主要问题:相机系统不应该放太后——车、场景、输入、相机实际上是一套系统。优先建立:
1 | 对象系统 → 坐标系统 → 输入 → 相机 → 内容制作 |
推荐的 12 阶段路线:
1 | ① 游戏框架(窗口+游戏循环) ② 画测试对象(World坐标→Camera→Screen) |
路面影响(车辆与道路交互的细节):
1 | 草地:speed *= 0.5 |
关键教训:不要直接画在屏幕坐标,应该建立 Car.position = {100,50}(World 坐标)而不是 DrawRect(300,200)——否则以后加相机会全部重写。
三、复刻马里奥(横版闯关)
两种阶段划分
系统版 14 阶段(面向系统组装):
1 | ① 游戏框架 → ② 角色对象 → ③ 二维世界坐标 → ④ 移动与物理 → ⑤ 碰撞检测 |
前 1~8 阶段基本就是一个最小可玩版本(MVP)。
视觉演化版 14 阶段(从空白界面逐步演化):
1 | ① 空白窗口 → ② 绘制测试方块 → ③ 让方块移动 → ④ 让方块跳跃 |
核心演化链:
1 | 空窗口 → 方块 → 可移动方块 → 会跳的方块 → 角色 → 地面 → 关卡 → 敌人 → 完整游戏 |
四、格斗游戏(街霸、拳皇类)
17 阶段演化路线:
1 | ① 空白窗口 → ② 两个测试方块 → ③ 角色移动(左右/跳跃/蹲下) |
整体演化链:
1 | 空窗口 → 方块 → 两个方块移动 → 人物图片 → 人物动作 → 攻击动作 |
五、冒险格斗游戏(双截龙、热血物语、忍者龙剑传)
冒险格斗 = 横版闯关的地图成长 + 格斗游戏的动作系统。
18 阶段演化路线:
1 | ① 空白窗口 → ② 测试方块角色 → ③ 角色移动 → ④ 角色图片 |
整体演化链:
1 | 空窗口 → 方块 → 可移动方块 → 角色动画 → 地面场景 → 横版地图 |
六、流式加载的推荐架构
一个最小版赛车地图流式系统其实几十个类就能搭出来:
1 | Game World |
核心:
1 | class TrackManager { |
如果之前研究过 CLI/静态库架构,这个也很适合作为一个独立模块设计:TrackStreamer.dll + Renderer + Physics + AI。
开放城市(极品飞车类)则更复杂:World Streaming、Async Loading、Object Pool、LOD、Occlusion Culling。
与其他线的关系
- 与游戏系统论:游戏系统论讲通用演化(两层演化、世界建模、设计系统、ECS);本线讲具体游戏类型的演化分支
- 与过程与流程线:本线是「演化流程」在游戏类型上的实例——过程固定(能力逐渐形成),每类游戏的流程不同
- 与拆解与组织主题:TrackManager/Segment/ResourceManager 是拆解与组织在赛车场景的应用;流式加载是动态加载/卸载的实例(对应拆解与组织 04 的注册机制/运行时可扩展思想)
- 与服务器线:赛道流式加载(分块+提前加载+LOD+卸载)与服务器/开放世界的流式加载是同一个思想
