像素游戏里的光影,多半是骗你的

文本概览:全文约1,914字,阅读约5分钟。说起来,很多人一上来就在立绘上抠侧光、画投影,场景却还是扁的。
其实“看起来像现代像素游戏”那一层,常常不是画死的,是运行时叠上去的假光。我对照了 Orange Pixel 的 Pusca 拆他自己的《Chrono Shard》光影。
他反复用的词就一个:
戏法(trickery)。灯是假的,影也是假的,眼睛照样买单。
先关灯,才知道贵在哪他在演示里把灯光和阴影渲染全关掉。同一条走廊立刻变回你心里那种像素风:干净、开敞,也有点平。
有人会更喜欢这种干净。看多了别的游戏,你又想要一点点 oomph。
那一点点,不一定要真光追。

差距不在底图,而在那一层戏法开没开。
灯光:一堆会混色的圆他的灯不是从灯源朝四面八方打射线。多数时候就是不同颜色、不同透明度的圆精灵,单独占一层叠在场景上。
引擎里混合常试加色或正片叠底,以“脏不脏”为准。单独看这一层很丑:红圈、蓝晕、条状光斑,像半透明贴纸。
关键在和底层像素画布混合。混对了,贴纸变氛围;混错了,整屏脏。
最小实验:先只放一个偏暖的半透明圆在角色头顶,开关这一层截图对比。再试外圈偏冷的大圆套内圈偏暖的小圆,各两三个就够。
他习惯大圆套小圆、多色叠着试。系统多年只微调,观感变好多半是他更会用了。
这套灯最早用在《Space Grunts》,后来带进《Chrono Shard》。

我觉得很多人卡错地方:别盯光层好不好看,盯混合后的最终画面。
视野:反过来画“看得见的地方”常见做法是玩家朝外打线,撞墙就停。360 度每度一条,PC 还行,弱机容易吃紧。
他的戏法是反过来:默认整片偏黑,再把看得见的区域用会淡出的白线画亮。你可以把它想成:黑暗房间里只打开几束手电,手电扫到的才亮。
你以为在画阴影,其实在画可见区。算法大概是:
蒙版先偏黑从玩家朝多个方向做二维射线,撞墙记长度 d每条方向用“中间亮、两端透明”的细条精灵,长度拉到 d(亮条 = 看得见的地方)多条叠起来就是可见区早期逐像素画线偏慢。
后来改成拉伸淡出白线,省的是逐像素,不是魔法。边缘有一点锯齿感,他不介意,还当特色。
对象也挡线的话,道具容易被自己的“影”糊住。试过事后再画一遍道具,观感仍不对,就换策略了。
常见补救是关键道具画在视野层之上,否则窄通道里箱子会糊成一团。

底图还是那张像素图,压迫感靠可见范围说话。
阴影盒有了视野还想再暗一点,他加了阴影盒:按矩形区域甩阴影。箱子、大方块还行;细节多的物件,影子就不像它自己。
两层别糊成一团黑:
视野决定哪里从全黑里被挖亮;
阴影盒是在已经能看见的区域里,再盖半透明黑矩形(常对齐箱子、柱子占地)。叠法可以记成:裸场景 → 灯光 → 视野 → 阴影盒。
他点名对比 Robotality 的《Pathway》:真阴影管线更漂亮,但要改图形管线,还要给资产补尺寸一类数据。独游时间换不起,他就走便宜路。
阴影同样是一堆精灵图。以后可以改形状绘制或上着色器;跨平台时着色器容易别扭,能画精灵就能复制这套戏法,对他更稳。
目前阴影主要从玩家视角算,更像视野延伸,不是每盏灯各投一影。

独游光影的正经问题,不是物理对不对,是你愿不愿意为“更对”多付大半年。
移植会逼你把戏法写快笔记本上顺滑,不等于 Switch 上顺滑。往 Switch 搬时,CPU 上算视野和阴影开始卡帧。
他被迫重写、裁剪:视野还能留,阴影可能要关。老派程序员爱折腾这种优化,他也觉得挺有成就感。
假效果写得可移植,比绑死某块显卡更适合一个人做多年。

能抄进 HTML5、MonoGame 的戏法,比“只在本机好看”的着色器更像长期家当。
你可以怎么偷师如果你在画场景,先问:这一层该画死在图里,还是留给运行时?可复用的顺序是:
先有一张裸像素场景用半透明色圆做氛围灯,盯混合结果,不盯光层本身需要压迫感时,画可见区,别死磕真实投影矩形阴影盒只打在大方块上;细碎物件别硬套真要物理阴影,先算资产与管线成本

底图还是那张像素画。
变贵的是你敢用便宜戏法,并且接受它不够物理。创作改变生活,不一定从“画得更像”开始。
有时是你愿意承认:游戏本来就是屏幕上的戏法,然后把手里那一个戏法做到能发版。参考资料[1]
https://www.youtube.com/watch?
v=j8–lk6frUA:
https://www.youtube.com/watch?v=j8–lk6frUA