第一章

为什么需要游戏引擎

根 · 从零写 vs 用引擎 小陈想从零写引擎,被老周拦住了

一、"我要从零写一个游戏引擎!"

立项会上,小陈热血上头:"师傅!为了做咱们的'云间对决',我想从零写一个游戏引擎——用 C++ 自己画窗口、自己写渲染、自己写物理……这才叫真本事!"

老周差点把茶喷出来:"小陈,你知道为什么全世界 99% 的游戏工作室都用现成引擎吗?"

小陈:"……因为菜?"

"因为。"老周笑了,"我给你算一笔账:从零写引擎,光是把'一个窗口 + 画一个三角形'跑起来,就要处理图形 API(OpenGL/DirectX/Vulkan)、窗口系统、输入系统……这还只是'能跑',离'能玩'差着十万八千里。你以为你在写游戏,其实你在写'操作系统的寄件人'。"


二、游戏引擎到底是什么:一栋"毛坯房"

老周在白板上画:

游戏引擎 = 一栋"装修好水电的毛坯房"
  ┌─────────────────────────────────────┐
  │ 引擎(毛坯房,水电齐全)              │
  │  ├── 渲染系统(画图)                 │
  │  ├── 物理系统(碰撞、重力)           │
  │  ├── 音频系统(声音)                │
  │  ├── 输入系统(键盘/触屏/手柄)       │
  │  ├── 资源管理(图片/模型/动画加载)    │
  │  ├── 场景管理(游戏世界组织)         │
  │  └── 脚本系统(让游戏逻辑可编程)      │
  └─────────────────────────────────────┘
       │ 你负责的(软装):
       ▼
  ┌─────────────────────────────────────┐
  │ 游戏内容(家具、装修、布置)          │
  │  ├── 英雄、技能、地图                │
  │  ├── 玩法规则、关卡、数值             │
  │  ├── UI、音效、特效                  │
  │  └── 网络对战逻辑                    │
  └─────────────────────────────────────┘

  引擎提供"基础设施"(水电)
  你负责"内容"(怎么布置这个家)

"游戏引擎(Game Engine)就是一套'做游戏的基础设施'——渲染、物理、音频、输入这些重复劳动,引擎替你做好了;你专注做游戏独有的内容:玩法、数值、美术、剧情。"


三、主流引擎怎么选:Unity、Unreal、Godot

"选引擎是游戏项目第一个'生死决策'。"老周列出对比:

主流游戏引擎对比:
  Unity(Unity 引擎):
    - 最流行,手游之王(王者荣耀的手游版早期就基于它)
    - C# 脚本,2D/3D 通吃,跨平台(iOS/Android/PC)
    - 生态巨大:商店素材多、教程多、招人容易
    - 适合:中小团队、手游、独立游戏

  Unreal(虚幻引擎):
    - 画质天花板,3A 大作首选
    - C++(蓝图可视化),3D 强
    - 适合:主机/PC 大作、追求顶级画质
    - 对手机性能要求高(做 2D 手游大材小用)

  Godot(开源免费):
    - 轻量、免费开源、2D 很舒服
    - GDScript(Python 风格)
    - 适合:独立游戏、2D 游戏、学习入门

  还有:Cocos(国内 2D 手游常用)、CryEngine、自研引擎

云间书店的选择(2D 简化 MOBA):
  → Unity 2D 模式(生态好、团队熟 C#、跨平台稳)
  备选:Godot(免费、轻量、适合学习)
  选型三问:团队会什么?目标平台?画质要求?

"选引擎的原则:不为'面子'选引擎,为'团队 + 平台 + 玩法'选引擎。 我们做 2D 简化 MOBA、要上手机、团队熟 C#——Unity 就是最优解。"


四、引擎帮你做了什么:一次"英雄移动"的解剖

"用引擎和不用引擎,差别有多大?咱们用'英雄走一步'来对比。"老周说:

不用引擎(从零写):
  1. 创建窗口(Win32/X11/Android Surface)
  2. 处理操作系统消息循环
  3. 加载图片(解码 PNG/JPEG)
  4. 调用图形 API 画图(OpenGL 绑定纹理、画四边形)
  5. 写输入处理(键盘/触屏事件)
  6. 自己管理内存、文件、异常
  → 做完这些,英雄还没"走"起来,只是"显示"出来了
  → 大概要 1-2 个月(资深程序员)

用引擎(Unity):
  1. 拖一张图片进场景 → 自动生成精灵
  2. 写 10 行脚本控制位置变化
  3. 点播放 → 英雄动起来了
  → 整个过程:10 分钟

  引擎替你搞定了:窗口、渲染、输入、资源加载、跨平台

"这就是'站在巨人的肩膀上'——引擎省掉的是'和操作系统打交道'的苦力活,让你把精力放在'游戏好不好玩'上。记住:引擎是工具,不是目的。"


五、引擎的代价:没有免费的午餐

"但引擎也不是万能的。"老周强调:

用引擎的代价:
  ① 学习成本:Unity 的 API、组件系统、生命周期……要学
  ② 性能天花板:引擎封装有开销,极限优化受限制
     (王者荣耀最后也做了大量引擎定制/自研)
  ③ 版本/升级坑:引擎升级可能破坏兼容
  ④ "黑盒"风险:底层 bug 你改不了,只能等官方修复

  什么时候需要自研引擎?
    - 玩法需要极特殊渲染(如《我的世界》体素)
    - 性能要求超过引擎极限(3A 大厂)
    - 战略考虑(长期依赖第三方有风险)
  对云间书店:完全没必要自研,Unity 足够

  类比:
    引擎 = 现成的厨房(水电燃气齐全)
    自研 = 从挖地基开始盖厨房
    绝大多数餐厅用现成厨房,只有米其林三星才定制

六、章末:老周的第一章总结

根:为什么需要游戏引擎?
├── 引擎 = 游戏开发的"毛坯房"(水电齐全)
│   渲染/物理/音频/输入/资源/场景/脚本
├── 你负责"内容":玩法、数值、美术、网络
├── 主流引擎:Unity(手游之王)/ Unreal(3A)/ Godot(开源)
├── 选型原则:团队 + 平台 + 玩法(不为面子)
├── 对比:从零写 1-2 个月 vs 用引擎 10 分钟
└── 代价:学习成本/性能天花板/黑盒(小团队别自研)
下一章预告:
  引擎选好了,装好了——但第一次打开 Unity,
  小陈发现世界是"静止"的。怎么让它动起来?
  —— 游戏循环:每一帧都更新、每一帧都渲染。

"小陈,引擎是'毛坯房',但房子不会自己动——游戏里的一切'动',都来自一个永不停歇的循环。 下一章,我们讲游戏开发的灵魂:游戏循环(Game Loop)——理解它,你就理解了'游戏和普通软件最本质的区别'。"

✌ 语言