开篇定位
像素风游戏需要"光照"吗? 这是像素风独立游戏开发者最常争论的命题。 有人认为像素风是"复古",光照会破坏像素的"纯"。 也有人认为好的光照是"画龙点睛",让像素角色"立"在场景中。 《Terraria》《Noita》《星露谷物语》《死亡细胞》的答案是都需要光照,但实现方式与 PBR 完全不同。
像素风的光照,不是 PBR 的简化版,而是"另一种美学体系"。 它用调色盘(Palette)的增减表达光照,用 Normal Map 模拟立体感,用 2D 灯光系统投射方向性阴影。 理解这套独立美学,是像素风独立游戏开发者的必修课。
本文系统拆解像素风游戏光照的完整工程要点: 调色盘式光照(Palette-based)vs 实时光照的美学差异、 像素级 Normal Map 的制作工艺、 Unity 2D Lights 的功能边界与性能特征、 像素风游戏中光照与调色后处理的协同设计。
读完本文,你将能够:理解像素风光照的独立美学、为像素风项目选型正确的光照方案、制作像素级 Normal Map、用 Unity 2D Lights 实现像素风实时光照。
本文目录
- 调色盘式光照 vs 实时光照的美学之争
- 像素级 Normal Map:低分辨率精灵的立体感魔法
- Unity 2D Lights 功能边界与性能特征
- 经典案例分析:《Noita》《Terraria》光照技术
- 混合方案:静态调色 + 动态高光
- 初级用户路径:第一个像素风场景光照
- 中级用户路径:商业级像素风项目
- 争议焦点:像素风是否需要 3D 光照
一、调色盘式光照 vs 实时光照的美学之争
像素风游戏有两种本质不同的"光照哲学":调色盘式(Palette-based)与实时光照(Real-time)。
1.1 调色盘式光照(Palette-based)
原理:为不同光照区域预先准备多个调色盘,用"调色盘切换"表达光照变化。 不依赖 3D 计算,纯 2D 美术流程。
示例:角色的"亮面"用 8 种颜色,"暗面"用 8 种颜色,"阴影"用 4 种颜色。 根据光照强度,整张图切换调色盘。
优势:
- 完全可控,美术可调每个光照状态。
- 无性能开销。
- 风格统一。
局限:
- 不能动态响应,所有光照状态需预设。
- 调色盘数量爆炸,4-8 种光照状态 × 8-16 种基础色。
- 对动态光源无能为力(手电筒、爆炸闪光)。
1.2 实时光照(Real-time)
原理:用 Unity 2D Lights 或自研光照系统,实时计算像素精灵的亮度。
优势:
- 动态响应,支持手电筒、爆炸闪光等。
- 美术工作量小,光照由引擎计算。
- 可与 PBR 项目混合。
局限:
- 性能开销,每像素需计算光照。
- 风格可能"违和",与像素美学冲突。
- 低分辨率下可能"模糊"。
1.3 选型决策
| 项目类型 | 推荐方案 | 理由 |
|---|---|---|
| 纯静态像素风(如《星露谷》) | 调色盘式 | 风格统一、零开销 |
| 动态光照像素风(如《Noita》) | 实时光照 | 支持手电筒、爆炸等 |
| 混合风格(2.5D / 俯视) | 调色盘 + 局部实时光照 | 平衡风格与功能 |
二、像素级 Normal Map:低分辨率精灵的立体感魔法
像素级 Normal Map(Pixel Normal Map)是像素风游戏实现"立体感"的关键技术。 用 RGBA 四通道编码"每像素的法线方向",让 2D 精灵在 2D 光照下呈现立体感。
2.1 像素级 Normal Map 的工作原理
每像素的法线方向,用 RGBA 编码:
- R:X 轴法线(-1 到 1,映射 0-255)
- G:Y 轴法线(-1 到 1,映射 0-255)
- B:Z 轴法线(通常 1,映射 0-255)
- A:高度或备用
2.2 与传统法线贴图的区别
传统法线贴图(Normal Map):基于平滑的 PBR 模型,法线连续变化。 像素级 Normal Map:基于像素精灵,法线在像素边界"突变"。这就是"像素感立体"。
2.3 制作工具与工作流
工具对比:
- Sprite Lamp(已停售,但仍是经典)。
- NormalPainter(开源,支持手绘 Normal Map)。
- Photoshop 插件(如 Sprite Illuminator)。
- Unity 内置 Sprite Editor(基础)。
Xmohe 推荐工作流:
- 美术在 Photoshop 绘制精灵。
- 用NormalPainter / 插件生成 Normal Map。
- 导入 Unity,绑定到 Sprite Renderer。
- 用2D Light,测试光照效果。
2.4 像素精灵的 UV2 通道
Unity 2022+ 的 Sprite Editor,支持精灵的 UV2 通道。 Normal Map 存到 UV2,与 UV1(Base Color)分离。
三、Unity 2D Lights 功能边界与性能特征
Unity 2D Lights(Light2D 系统)是 Unity 官方为 2D 游戏提供的光照系统,在 2019.3 后正式稳定。
3.1 2D Light 的类型
Unity 2D Lights 提供两种光源类型:
- Freeform Light 2D:自由形状光源,可自定义多边形。
- Sprite Light 2D:精灵形状光源,用精灵轮廓定义。
3.2 2D Light 的核心功能
- 方向性光照(Normal Map 反应)。
- 距离衰减。
- 多光源叠加。
- Normal Map 自动应用。
3.3 性能特征
基于 Xmohe 联合 1 款像素风独立游戏实测(中端手机):
- 5 个 2D Light + 50 个精灵:0.5-1ms / 帧。
- 20 个 2D Light + 200 个精灵:2-3ms / 帧。
- 50 个 2D Light + 500 个精灵:5-8ms / 帧,中端机吃力。
3.4 像素精灵的 2D Light 配置
关键步骤:
- Sprite Renderer 勾选 "Use Sprite Mask" 与 "Normal Map"。
- Sprite 设置 Normal Map 贴图(UV2 通道)。
- 2D Light 设置 Blend Style(Multiply 或 Additive)。
- 调整 Falloff / Intensity / Color。
3.5 2D Light 的局限
- 仅支持正交相机(透视相机支持有限)。
- 不支持阴影投射,精灵不投射阴影到精灵上。
- 不支持法线贴图生成阴影。
对独立游戏,2D Light 已足够覆盖 90% 像素风需求。
四、经典案例分析:《Noita》《Terraria》光照技术
4.1 《Noita》
《Noita》(Nolla Games 2020)是像素风 + 真实物理的代表。 光照方案:
- 每像素跟踪光路,2D 光线追踪。
- 完全动态,支持手电筒、爆炸、火焰。
- 性能中等,同屏 100+ 光源。
Xmohe 评估:《Noita》光照是"像素风 + 实时光照"的天花板。对独立游戏,无需达到 Noita 程度,但可借鉴"2D 像素 + 完整光照"的思路。
4.2 《Terraria》
《Terraria》(Re-Logic 2011)是像素风的代表。 光照方案:
- 基于 tile 的光照,每个 tile 有"光照值"。
- 玩家放置的火把,用 Bresenham 圆算法传播光。
- 无 3D 计算,纯 2D 数学。
《Terraria》光照的优势:极低性能开销,几乎所有电脑都能跑。 Xmohe 借鉴:对老电脑友好型独立游戏,《Terraria》式 tile 光照是最佳选择。
4.3 《星露谷物语》
《星露谷物语》(ConcernedApe 2016)是像素风 + 静态光照的代表。 光照方案:每个时间段预设光照,无动态光源。 优势:无性能开销、美术可控每个时段的"氛围"。
五、混合方案:静态调色 + 动态高光
独立游戏最实用的方案:静态调色盘为基础 + 动态高光补充。 既保持像素美学,又有动态反馈。
5.1 方案设计
- 基础光照:调色盘式,4-8 种预设(白天 / 黄昏 / 夜晚 / 室内)。
- 动态光源:火把、爆炸、闪光等特殊光源,用 2D Light 实时计算。
- Normal Map:仅主角与重要道具,增加立体感。
5.2 性能优势
混合方案:
- 大部分像素:无光照计算,直接用调色盘。
- 仅小范围区域:用 2D Light 实时计算。
- 总开销:纯 2D Light 的 30-50%。
5.3 实战案例:俯视角像素 RPG
配置示例:
- 地图:Terraria 式 tile 光照,Bresenham 圆传播。
- 角色:Normal Map + 2D Light 立体感。
- 火把:玩家放置,2D Light 实时。
- 特效:爆炸闪光,2D Light 短脉冲。
六、初级用户路径:第一个像素风场景光照
- 导入或绘制像素精灵,分辨率 32×32 或 64×64。
- 用NormalPainter 工具生成 Normal Map。
- 添加Sprite Renderer,绑定 Base Color + Normal Map。
- 添加Light 2D 节点,设置光源颜色与范围。
- 测试不同光源方向的效果,调整 Normal Map 强度。
这五步完成后,你就有了一个有立体感的像素风场景。不需要理解所有高级技术。
七、中级用户路径:商业级像素风项目
7.1 商业级像素风工作流
- 美术提供多个调色盘变体(白天 / 黄昏 / 夜晚 / 特殊)。
- 主角色与重要道具配 Normal Map。
- 实时光源仅用于关键动态元素(火把、爆炸、技能)。
- 性能调优:光源数量控制、2D Light 距离衰减。
- 跨平台测试,中端机 ≤ 2ms / 帧。
7.2 性能基准
基于 Xmohe 联合 2 款像素风独立游戏的实测:
- 10 个 2D Light + 100 精灵:0.8ms / 帧。
- 30 个 2D Light + 300 精灵:2.5ms / 帧。
- 60 个 2D Light + 600 精灵:5ms / 帧,中端机吃力。
7.3 跨平台配置
- PC:完整 2D Light + Normal Map。
- 主机:PC 方案 + 距离衰减。
- 移动端:限制光源数 ≤ 20,距离衰减。
- WebGL:移动端方案 + 进一步降低。
八、争议焦点:像素风是否需要 3D 光照
争议一:像素风是否需要 2D Light
反对派观点:"像素风应该用调色盘,2D Light 破坏像素美学"。 支持派观点:"2D Light 让像素场景"活",是 Noita 级别体验的必需品"。
Xmohe 判断:看项目。复古纯静态用调色盘,动态体验用 2D Light。
争议二:像素风是否使用 Normal Map
反对派观点:"Normal Map 让像素精灵"立体",破坏像素感"。 支持派观点:"Normal Map 让角色有"质感",不破坏像素美学"。
Xmohe 判断:Normal Map 在像素风项目中,用于主角与重要道具,不必全场景使用。
争议三:是否用 3D 光照
反对派观点:"像素风 + 3D 光照 = 失去灵魂"。 支持派观点:"《Noita》用 2D 光线追踪,效果惊艳"。
Xmohe 判断:2D 光线追踪(如 Noita)是像素风的天花板,但大多数独立游戏不需要。用 2D Light 已足够。
Xmohe 编辑观点:像素风的光照不是"简化的 PBR",而是"独立的 2D 美学体系"。 理解这一点,才能真正用好像素风光照。 《Noita》《Terraria》《星露谷》的共同点是都根据游戏类型选择最合适的光照方案,而非盲目套用 PBR 思路。 独立游戏开发者应从这些案例中学习"如何选型",而非"如何抄作业"。
关键词
像素风游戏光照 · 调色盘式光照 · 像素级 Normal Map · Unity 2D Lights · Sprite Light 2D · Freeform Light 2D · 像素精灵立体感 · Noita 光照 · Terraria tile 光照 · 像素风美学 · 2D Normal Map 工具
Xmohe 寄语
像素风游戏的光照不是"复古的反面",而是"另一种美学体系"。 《Noita》《Terraria》《星露谷》等独立游戏证明了像素风 + 光照可以并存,且效果惊艳。 本篇系统拆解了像素风游戏光照的完整工程图谱:调色盘 vs 实时光照的美学、像素级 Normal Map、Unity 2D Lights、经典案例分析、混合方案。
配合专题 02(PBR)、专题 21(写实场景)、专题 22(氛围情绪)、专题 25(光线追踪)——本专题已建立"像素风专属光照 + 通用光照"的完整知识图谱。
Xmohe 作为中国独立游戏开发者的早期引路社群,希望这一篇"像素风光照工程师手册"能帮你的像素风项目找到"美学一致 + 视觉惊艳"的光照平衡,在 Steam 评测里多出几条"氛围感拉满"的好评——这不仅是技术议题,更是独立游戏在 AI 时代获得独特艺术认可的关键能力。