Catlantean 3D 最容易被误读的一点,是它看起来像“把画面压低分辨率,再加一点老游戏滤镜”。
但作者 Staniks 公开的制作流程说明,这件事没那么轻。项目目前仍是开发中版本,作者称计划明年登陆 Steam。现在能讨论的,不是它作为游戏最终好不好玩,而是它怎样把 1990 年代早期 PC 游戏的视觉限制重新搭起来。
我更在意的也在这里:复古画面不是一层遮罩,而是一把铁尺。调色板、光照、渲染、资产输出都要被同一套规则约束,味道才不会散。
它选的是 1993 式限制,但不是 Doom 复刻
Catlantean 3D 被作者称为传统 raycaster。地图由等尺寸 tile 组成,渲染时用 DDA 算法逐列投射射线。射线命中墙面后,画对应的纹理列。地板和天花板再用水平扫描线处理。
这会让人想到 Wolfenstein 3D、Doom、Duke Nukem 3D。联想可以有,但不能直接说它在复刻 Doom 引擎。Doom 的技术路线更复杂,Catlantean 3D 更像是在现代平台上重建早期光栅化游戏的限制感。
作者没有拒绝现代工具。现代编译器和平台抽象层都能用,但抽象层被压得很窄:帧缓冲、键鼠输入、音频缓冲、文件 I/O。渲染自己写,混音自己写,资产也从零做。
| 维度 | 早期 PC 游戏参照 | Catlantean 3D 的选择 | 直接影响 |
|---|---|---|---|
| 分辨率 | VGA Mode 13h 典型是 320x200 | 320x240,更接近 Mode-X 取向 | 作者偏好方形像素,不追求完全复刻历史规格 |
| 色彩 | 256 色索引调色板 | 每个像素只存 1 字节索引 | 画面由颜色限制塑形,不是现代 RGB 随便取色 |
| 渲染 | CPU 光栅化、查表优化 | 手写 raycaster | 视觉、性能和内容都要围绕限制设计 |
| 逻辑 | 老游戏常依赖确定性技巧 | 游戏逻辑用固定点,渲染可用浮点 | 有利于跨平台一致性 |
这个对比很关键。很多复古项目看起来“旧”,只是输出端变旧。Catlantean 3D 的思路更硬:从像素存储方式开始,就让系统不能随便现代化。
对游戏开发者来说,这会改变立项顺序。如果目标是可信的早期 90 年代质感,先定的不是滤镜参数,而是分辨率、调色板、光照模型和资产格式。工具可以现代,输出必须守规矩。
256 色和 colormap,决定画面有没有骨相
作者说的 256 色,不是“少用一点颜色”。它是索引调色板系统。
屏幕上的每个像素只保存 1 个字节。这个字节不是 RGB 值,而是指向调色板里的某个颜色。资产从生成那一刻起,就不能自由使用几百万种颜色。
这会逼着美术做取舍。作者的调色板要预留透明色、纯白、纯黑,还要给血液、红绿蓝钥匙、沙漠色、灰色工业设施和暖调暗色留下位置。颜色不是最后一键压缩出来的,而是在贴图、精灵、光照之间反复试出来的。
更有意思的是 colormap。
在现代 GPU 里,想让颜色变暗,shader 里乘一个系数就行。但在 256 色索引渲染里,像素手里只有调色板索引,没有自由计算 RGB 的空间。
如果运行时每个像素都遍历 256 色,去找一个最接近的暗色,成本太高。Catlantean 3D 的做法是预计算 32 级明暗映射。每一种调色板颜色,都提前找到更暗的近似色,形成二维查表。
运行时只要根据距离得到明暗级别,再拿原始颜色索引去查表。逐像素找近似色,就变成 O(1) 查表。
作者还做了更细的处理:没有只用简单欧氏距离,而是转到 Oklab 色彩空间,并加入偏暖的 hue shifting。这样暗部不容易一路滑成灰色。
这说明老游戏画面的“脏”和“清楚”,不是天然出现的。它来自有限颜色、距离衰减、方向明暗差和查表误差的共同作用。差一点,就会变成廉价像素化;调得对,画面才有秩序。
对像素美术爱好者来说,这里最值得学的不是某个调色板数值,而是工作方式:先接受颜色总量有限,再让贴图、精灵和光照一起妥协。不要先画一张现代高清图,再指望压缩工具替你做审美决定。
现代工具能用,但资产产能才是真成本
原文把不少篇幅给了资产制作。这一点比渲染算法更接地气。
Catlantean 3D 的贴图和精灵主要来自三条路线:Blender 预渲染、手绘、Python 脚本生成的程序化素材。作者有全职工作,业余时间有限。复杂敌人动画如果逐帧手画,返工成本会很高。
所以他会在 Blender 里建模、绑定、做动画,再用 Blender Python API 批量渲染成贴图。问题也跟着来:直接渲染的图像容易模糊、发灰;简单高分辨率下采样,又会丢边缘细节。
作者的折中办法,是用 Blender 合成节点加强对比和清晰度,再交给 Python 脚本做调色板量化。量化后的结果不是普通 PNG 思路,而是把每个像素转成最接近调色板颜色的索引,并打包进游戏自己的 TEX 格式。
这条管线的判断很现实:现代工具不是敌人,失控的现代输出才是敌人。
对独立开发者来说,可执行的动作有两个。一个是尽早把调色板、量化脚本和游戏内显示打通,不要等资产堆满后再统一“复古化”。另一个是把 Blender、Python 这类工具纳入正式管线,用它们降低批处理和返工成本,而不是为了复古去手工硬熬。
对准备关注或购买这类游戏的玩家来说,截图只能说明风格方向。更该看的是完整关卡、敌人数量、动画丰富度和运行稳定性。因为这类项目的风险,往往不在“能不能做出一张好看的复古截图”,而在这套管线能不能支撑完整内容量。
目前最该观察的也就两件事。
一是视觉管线能否支撑更多关卡和敌人资产。二是当项目从技术展示走向可发售游戏时,手写渲染、手写混音和从零资产制作会不会拖慢内容产出。
复古限制能带来风格,也会带来成本。法度森严,才有骨相;但法度本身不会替开发者把内容做完。
