第 15 章 你现在已经理解了什么(回顾地图)

写到这里,咱们已经一起走了很远。从”电影和游戏的区别”那个最朴素的问题,到你现在已经能拆出”雾中追人”需要哪几套系统协作——这条路,你真的走通了。

这一章不教新概念。我带你把前面所有内容,画成一张概念地图,让你一眼看清”自己到底懂了什么、它们怎么串成一条线”。你以后卡住时,回来扫这张图,就能定位”我缺的是哪一块”。

15.1 一张图:从坐标到组合

下面这张”地图”,每个节点一句话回答”它解决什么问题”。你顺着箭头看,就是一条从”描述世界”到”实时演出世界”的主线:

坐标(第 2 章)
   └─ 解决:物体在虚拟世界"在哪"、怎么在局部/世界/屏幕三套参照间搬家
        ↓
帧率 / 实时(第 1 章)
   └─ 解决:为什么一切都要在十几毫秒里算完,逼出"近似与预计算"
        ↓
三角形 / 网格(第 4 章)
   └─ 解决:弯曲的表面怎么用直的三角形拼出来、面数怎么影响性能
        ↓
纹理 / 材质(第 5 章)
   └─ 解决:三角形表面"长什么样、什么脾气"(颜色图、光滑度等)
        ↓
光照(第 6 章)
   └─ 解决:物体本来的颜色,被光染成多亮多冷暖,世界才有立体感
        ↓
摄像机 / 投影(第 7 章)
   └─ 解决:3D 世界怎么"压扁"进 2D 屏幕、你这帧能看多大范围
        ↓
雾化(第 8 章)
   └─ 解决:远处看不清(真实空气透视)+ 偷性能 + 藏边界 + 造纵深
        ↓
声音采样 / 格式 / 视频(第 9、10、11 章)
   └─ 解决:连续的声音和画面,怎么变数字、怎么压缩、怎么装进文件
        ↓
Unity 音频(第 12 章)
   └─ 解决:那串数字怎么变成"有位置的听感"(三组件 + 距离衰减 + 空间化)
        ↓
组合(第 13、14 章)
   └─ 解决:多系统怎么在同一帧合奏;LOD / 剔除 / 后处理怎么拼出大效果

你看,这条线不是我硬编的。它顺着”做一个能跑的游戏”的自然顺序长出来:先得有空间(坐标),空间里得有形状(三角形/网格),形状得有皮(纹理/材质),皮得被照亮(光照),照亮后得拍下来(摄像机/投影),拍远了得化进雾(雾),同时得有声音(采样/格式/Unity 音频),而全程得在实时(帧率)约束下,用组合招(LOD/剔除/后处理)省着算。

任何一块缺了,游戏就少一条腿。你拿着这张图,去对照你玩过的任何一个游戏,都能指出来:“这儿用的是雾,那儿用的是 LOD,这段脚步是 3D 音频。“

15.2 贯穿全书的哲学:四条你该刻进骨头的话

光记节点不够,节点背后有”魂”。我把全书反复出现的哲学,提炼成四条。这四条比任何参数都重要,因为它们是”你以后遇到没学过的东西,也能自己推”的底层逻辑。

第一条:现实是连续的,计算机要离散

你从第 9 章声音(连续声波→采样量化成离散数字)、第 11 章视频(连续画面→按帧离散)、第 2 章坐标(连续空间→用数字标定位置)一路看到:数字世界对付现实的第一招,永远是把”连续”切断成”离散”。声音采成点、画面切成帧、空间标成数。不离散,计算机存不下、算不了。

第二条:离散后,用”感知弱点”和”相邻重复”两座金矿压缩

切断之后,数据往往巨大(第 9 章算过 1 分钟无损音频约 10MB)。工程师不硬扛,而是利用两件事省钱:

  • 人类感知的弱点:听不见的频段(MP3/OGG,第 10 章)、看不清的高频细节(JPEG)、远处该糊(雾,第 8 章)——统统可以砍。
  • 相邻重复:视频相邻帧几乎一样(第 11 章帧间压缩)、远处物体细节雷同(LOD,第 14 章)——只存差异。

这两座金矿,是多媒体和图形领域最通用的”省钱大招”。你看到任何压缩/近似,先想”它利用了感知弱点,还是相邻重复,还是两者都有”。

第三条:在”实时”铁律下,把贵的提前算,运行时只拼装

第 1 章的”餐厅”是全书总纲。因为一帧只有十几毫秒(帧率约束),完美的真实算不起,所以:

  • 贵的提前做:光照烘焙进贴图、遮挡数据烘焙(第 14 章)、长音频提前流式备好(第 10 章)。
  • 运行时只做便宜的:实时叠加、实时混合、实时衰减。

“预计算换实时流畅”,是一切引擎设计的钥匙。你调任何一个”为什么游戏不用更真的做法”的疑问,答案多半在这条。

第四条:每个效果先问”它对应现实什么、没它会出什么岔、引擎给哪几个旋钮”

这是本教程固定的”溯源学习法”(BRIEF 里写的)。雾对应空气透视、音频对应声波随距离衰减、坐标对应”参照系”——没有现成答案,只有现成的问题模板。你掌握这个模板,看 Unity 任何参数面板都不会发怵:先想现实现象,再想没它的洋相,最后才去拧旋钮。

这四条,第 1 条讲”怎么存”,第 2 条讲”怎么省”,第 3 条讲”怎么快”,第 4 条讲”怎么学”。它们合起来,就是你看懂游戏引擎的”眼镜”。

15.3 你现在能做什么、还不能做什么

诚实交代进度,免得你盲目自信或妄自菲薄。

你已经能做的:

  • 看到任何游戏画面/声音,反推出它大概用了哪些概念(坐标、雾、光照、3D 音频、LOD、剔除、后处理)。
  • 调参时,先定位”这是第几章讲的什么现象”,再去拧对应的旋钮,而不是瞎试。
  • 接到一个新需求(如海底遗迹、末日荒原),拆成”概念清单 + 参数组合”。

你暂时还不能做的(也是下一章的方向):

  • 真在 Unity 里点出这些效果——你懂”为什么”,但还没练”怎么点”。
  • 写 Shader、做物理、写游戏逻辑——这些是”动手层”,建立在你现在的”概念层”之上。
  • 深入数学(矩阵、投影公式、光照方程)——你已有直觉,深入是下一步。

15.4 拿这张地图,去”解剖”你正在玩的游戏

学了地图,最该立刻做的事,是把地图”用起来”——拿它去反推你手头正在玩的任何一款游戏。我给你做个示范,你照着练。

假设你在玩一个赛车游戏。你边玩边在心里拆:

  • 弯道尽头的护栏,离你两公里时看不清、走近才清晰 → 这是第 8 章的雾,加上 14.1 的 LOD(远处护栏是低面数版)。
  • 车窗外掠过的树,背后山丘被山挡住的部分不画 → 第 14 章的遮挡剔除。
  • 引擎轰鸣在你背后时震、超车时变尖 → 第 12 章的 3D 音频距离衰减 + Doppler。
  • 阳光晃眼、车漆反光溢出光晕 → 第 14.3 的 Bloom 后处理 + 第 5 章材质反光。
  • 远处整个画面微微泛蓝、有空气感 → 第 8 章雾色 + 第 14.3 色调。

你每指认一处,就是在”用地图定位概念”。练多了,你看任何游戏都像戴着 X 光镜——表面是画面,底下是你学过的节点在协作。这能力,比记住任何快捷键都珍贵,因为它让你”从玩家变成能造游戏的人”。

我再帮你澄清几个新手最容易有的误解,免得地图用歪:

  • 误解一:“雾就是让画面变白。” 错。雾是按距离把颜色混进某个雾色,雾色常取天空色(第 8 章),所以远处是”溶进天”而非”变白”。你改雾色就能做血色、海底蓝绿。
  • 误解二:“3D 音效就是声音大一点小一点。” 错。3D 音效核心是”有方位 + 有距离”,左右声道分配(方位)和距离衰减(远近)是两回事(第 12 章),只调音量不算真 3D。
  • 误解三:“LOD 和雾是同一个东西。” 错。雾是”视觉上把远处淡化”(不改几何),LOD 是”真把远处模型换糙”(改几何面数)。雾让 LOD 偷工不被发现,但二者动作不同(14.1)。
  • 误解四:“后处理开了画面就高级。” 错。后处理是全屏滤镜,贵且需配合基调;卡通游戏硬加景深反而违和(14.6 反例)。它对应”为什么加”,不是”加了就牛”。

把这四组澄清刻一下,你的地图就不会被常见错觉带偏。

15.5 一张地图,两种用法

最后点明:这张概念地图,你有两种用法。

第一种是”正向”——接到需求,从地图挑节点拼方案(第 14.4 做过)。第二种是”反向”——看到效果,从地图反推用了哪些节点(15.4 刚做)。正向是”创造”,反向是”理解”。一个造游戏的你,这两向都得熟。你练得越多,正向和反向越能打通:看到好效果能复刻,接到需求能拆解。

所以下一章,我带你从”懂概念”跨到”能动手”:先认编辑器,再定一个小目标,最后给一条学习路径。你现在的底子,已经比”只会照教程点按钮”的人厚太多了——因为你随时知道”我点的每个按钮,背后在解决什么”。

15.6 如果只能带三句话离开这本教程

写到这里,我把全书压缩成三句话。你若哪天忘了细节,只要记住这三句,就能把其余推回来。

第一句:游戏是一台在十几毫秒里实时演算世界的机器,不是回放。 这句是总纲(第 1 章),它解释了为什么一切都是近似、为什么大量计算提前做。你以后对任何”为什么游戏不做得更真”的疑问,答案都在”实时”二字里。

第二句:现实连续,计算机离散;离散后用感知弱点和相邻重复压缩,再用预计算换实时流畅。 这句是方法论(第 9、10、11、15 章),它把声音采样、视频帧间压缩、雾、LOD、剔除全串成同一招。你看到任何”压缩/近似/偷工”,先想它用的是感知弱点还是相邻重复。

第三句:每个效果都先问’它对应现实什么、没它会出什么岔、引擎给哪几个旋钮’。 这句是学习法(BRIEF 与全书的溯源学习法),它让你面对任何陌生参数都不慌。旋钮不是孤立的,每个都对准一个你能体会的现实问题。

这三句话,第一句定”约束”,第二句定”手段”,第三句定”心态”。约束逼出手段,手段靠心态去掌握。你把它们焊在一起,就是这本教程的灵魂。细节(Fog Density 多少、采样率多少)会忘,但这三句不会——因为细节是枝叶,这三句是根。根在,枝叶随时能长回来;根不在,背再多参数也是浮沙。

最后送你一个画面:你合上这本教程,去玩下一个游戏。别人看到的是画面和声音,你看到的是坐标在搬、三角形在填、光在染、雾在盖、声在定位。你成了那个”看得见幕后”的人。这,就是概念地图最终给你的东西。

15.8 当你卡住时,回这张地图的哪一格找答案

临了给你一张”问题 → 章节”的速查,你以后真动手卡住了,别瞎搜,先回地图定位:

  • “物体摆不对位置 / 子物体跟着乱跑” → 第 2 章坐标与局部/世界。
  • “画面整体发闷、没立体感” → 第 6 章光照,或第 14.3 色调。
  • “远处太清楚、没有空间感” → 第 8 章雾。
  • “声音没方位、听不出左右” → 第 12 章 Spatial Blend 与声像。
  • “声音远近不对、远处还震耳” → 第 12 章 Min/Max Distance 与 Rolloff。
  • “帧率掉、卡” → 第 14 章 LOD + 剔除 + 后处理,回第 1 章实时账。
  • “想做某种氛围(海底/末日/梦境)” → 第 8 章雾色 + 第 14.3 后处理组合。
  • “过场动画怎么又是画面又是声” → 第 11 章视频 + 第 12 章音频同步。

你看,几乎任何你将来遇见的”不对劲”,都能在这张地图里落到一格。地图不是装饰,是你的”故障排查表”。把它和 16.1 的编辑器窗口对照着用:现象在 Game 视图里看到,根子在对应章节的概念,旋钮在 Inspector 里拧。三处一连线,你就是那个”既能看懂、又能修好”的人。

还有一点务必说清:概念地图不是封死的。你以后学 Shader,会在”上色”(第 5 章)那格下面长出”自定义上色规则”的新枝;学物理,会在”坐标”(第 2 章)下面长出”力与运动”的新枝;学网络同步,会在”实时”(第 1 章)下面长出”多机时间对齐”的新枝。地图是活的,越学越密。你今天记的这张是骨架,未来往上面长肉即可。所以别怕”以后学的和这本对不上”——只要它仍走”现象→问题→方案→参数”这棵树,就都是这张地图的延伸,不是另一套东西。你握住的,是可生长的认知框架,而非一份会过时的笔记。

顺带一句收尾:这章叫”回顾地图”,但真正的地图不在纸上,在你脑子里。你合上书能凭记忆画出”坐标→三角形→纹理→光照→摄像机→雾→音频→组合”的主线,才算真有地图;画不出,就翻回前面的章节再读,直到能默画。默写这张线,就是你对这半本教程的毕业小考。考的不是参数,而是”顺序与因果”——为什么先有坐标、后有雾、再谈组合。能讲清因果,你才算把地图长在了身上。

15.9 概念地图的”可迁移性”:它不只会做游戏

最后点破一件能让你底气更足的事:你这十五章建立的”工程师思维”,并不只用于做游戏。它是一套”如何对付虚拟世界”的通用能力,迁移到很多相邻领域都好使。

比如做网页 3D(用 Three.js 这类库)。它没有 Unity 的封装,你得自己管坐标系、自己写投影矩阵、自己处理”近大远小”。这时候第 2 章坐标和第 7 章投影就是你的直接武器——别人被矩阵吓退,你早知道”投影就是把 3D 压成 2D 的那一步”,上手快得多。再比如做数据可视化,把海量数据点画在屏幕上,远处的数据点用低透明度(类似雾的”淡化远处”)、重要的用高亮(类似光照的”聚焦”),底层仍是”用感知弱点分配注意力”的同一哲学(第 15 章第二条)。甚至做增强现实(AR),虚拟物体要”稳稳贴在真实桌面上”,靠的是精确的世界坐标与追踪(第 2 章),声音要从虚拟物体位置传来(第 12 章),你学的全用得上。

这说明什么?你不是在”学一个软件(Unity)的用法”,而是在”学一种描述虚拟世界的语言”。软件会过时、菜单会变,但这套语言(连续变离散、距离换存在感、实时下预计算、现象→问题→参数)长久有效。所以哪怕十年后 Unity 不在了、换了新引擎新工具,你脑子里这张地图照样能平移过去。这是”懂原理”相较”会点按钮”最值钱的地方:前者是资产,后者是消耗品。

我把这章、也把这整本教程,交付给你的,正是这样一份”可生长、可迁移的认知框架”。你合上书,带走的不是几十个参数名,而是一副看透虚拟世界的眼镜,以及一套遇到陌生效果就能自己反推的思维。走到这,你已经完成了”从玩家到创造者”最关键的一跃——剩下的,只是用手把脑子里的世界,一点点敲进屏幕里。

最后留个温柔的提醒:这本教程你读完一遍,不等于”全懂了”。概念地图是要在”用”中反复回看的——你做第一个小项目时,会回来翻第 8 章雾;做音频时,会回来翻第 12 章;卡帧率时,会回来翻第 14 章。它像一本你自己的字典,越翻越熟,越熟越能脱手。所以别追求”一次读透”,追求”常回来看、每次都比上次多懂一点”。知识的真正内化,从来不是一次性的,而是一次次”用到时突然通了”的瞬间累加起来的。你愿意常回来看,这本教程就一直在陪你长大。

【思考题】

  1. 用一句话概括”从坐标到组合”这条主线,它为什么是”自然顺序”而不是乱排的?
  2. 本书四条哲学里,“感知弱点”和”相邻重复”分别在你学过的哪两个例子里出现过?各举一个。
  3. 为什么我说”你懂’为什么’,但还没练’怎么点’“?这两者哪个更不容易被忘、更能迁移到新引擎?
  4. 试着用”溯源学习法”(现实现象→没它的岔子→引擎旋钮)一句话描述”雾化”这件事,当作复习。

【参考答案】

  1. 主线是”先有空间(坐标),空间里放形状(三角形),形状穿皮(纹理),皮被照亮(光照),照亮后拍摄(摄像机),拍远了化雾(雾),同时配声音(采样/格式/Unity 音频),全程受实时约束、用组合招省算”。它是自然顺序,因为做游戏本就”先得有世界框架,才往里填内容,最后受性能约束优化”——缺前一步后一步就无意义,像盖楼先地基后装修。
  2. “感知弱点”:MP3/OGG 砍掉人耳不敏感频段(第 10 章),或雾利用”远处本该看不清”(第 8 章)。“相邻重复”:视频帧间压缩只存相邻帧差异(第 11 章),或 LOD 远处用雷同的低面数模型(第 14 章)。每类至少一例,都是”利用人类/空间的冗余来省”。
  3. “懂为什么”是你现在掌握的”概念层”——知道每个效果对应现实什么、引擎给哪旋钮;“怎么点”是 Unity 编辑器里的具体操作(拖组件、填数值),属”动手层”,下一章学。更不容易忘、更能迁移的是”懂为什么”:概念跨引擎通用(Unity/Unreal 都讲坐标/雾/衰减),而”点哪个菜单”换工具就变。理解原理的人,换任何引擎都能快速上手;只会点按钮的人,换工具就抓瞎。
  4. 雾化:现实现象=空气透视(远山被大气散射冲淡发蓝);没它的岔子=远处清晰暴露”世界尽头”、且白画高清细节浪费算力、画面像沙盘无纵深;引擎旋钮=Fog Mode(Linear/Exp/Exp2)、Fog Color(溶进啥色,常取天空色)、Fog Start/End 或 Fog Density。一句收口即第 8 章全章。