如果让你在2026年用1993年的技术栈制作一款完整的FPS游戏,你会怎么做?一位独立开发者正在做这件事。他的项目Catlantean 3D是一个从零开始构建的第一人称射击游戏,使用纯软件渲染、256色调色板、320×240分辨率,所有渲染和音频混合都手工完成,不使用任何AI辅助。这篇技术博客在Hacker News上获得了746分的高票,唤起了大量开发者对那个”直接向显存写像素”时代的深情回忆。
这不是一个技术演示,而是一个志在Steam发行的完整商业游戏。开发者的自我设限几乎是”受虐式”的:所有资源从零制作、所有渲染手工实现、所有音频手工混音、256色限制、320×240目标分辨率,连固定点数运算都要保证跨平台确定性行为。唯一的现代奢侈是一个平台抽象层——提供帧缓冲写入、键盘鼠标输入、音频缓冲和文件系统I/O。这种极端的约束不是为了怀旧,而是为了探索在极限条件下创造美的可能性。
技术架构:光线投射与VGA渲染
Catlantean 3D的渲染引擎采用了光线投射(raycasting)技术,这正是Wolfenstein 3D等早期FPS游戏的标志性方案。与Doom使用的BSP引擎不同,光线投射引擎的几何限制更严格:墙壁必须垂直相交,地板和天花板高度恒定。HN用户rob74精准指出,这更像Wolf3D而非Doom的架构——虽然Doom的BSP引擎更加灵活(支持任意角度的墙壁交叉和可变高度),但光线投射在实现上有其独特的美学和性能优势。
开发者深入探讨了VGA图形模式下的调色板管理。320×200的Mode 13h之所以使用非方形像素,是因为64000字节的帧缓冲恰好能放入一个16位段寄存器,使得16位代码可以直接寻址。HN用户mkl回忆道:”90年代初期的图形编程非常有趣——向内存映射的视频RAM写入像素数据,它就出现在屏幕上!一个指向0xA0000的指针就是你需要的全部,不需要任何API。”这种直接控制硬件的纯粹性,正是现代开发者在层层抽象中怀念的东西。
调色板(colormap)系统的设计尤为精巧。在256色限制下,每个像素是一个指向调色板的索引而非RGB值。这意味着可以通过修改调色板来瞬间改变整个画面的视觉效果。HN用户robterrell分享了一个90年代常用的技巧——调色板动画:通过快速切换调色板条目,可以在极低运行时成本下创造出流水、火焰等惊艳效果,这在当时的游戏中被广泛使用。
资源创建:前渲染、手绘与程序生成
文章最精彩的部分之一是对资源创建流程的详细解析。Catlantean 3D的资源分为三类:前渲染精灵(pre-rendered sprites)、手绘精灵与纹理、以及程序化生成的资源。
前渲染精灵的流程令人印象深刻:开发者在Blender中创建高分辨率3D模型,渲染后再用自定义Python脚本将其量化降采样到256色调色板。HN用户hankbond对此惊叹道:”我真的很惊讶渲染到量化精灵后的效果竟然这么好,这种快速转换让它们看起来非常清晰。”这种”现代建模+复古量化”的混合工作流,既保留了手工建模的艺术控制力,又确保了最终效果忠实于1993年的视觉美学。
碎尸(gibs)动画的生成方式尤为有趣。开发者编写了Python脚本来自动生成不同角度和速度的碎片飞溅序列帧,这种半程序化的方法既避免了逐帧手绘的巨大工作量,又保持了视觉一致性。HN用户Teslazar分享了他90年代中期的类似经验,并补充了一个文章中未提及的技巧:在纹理上使用8×8或16×16的光照图来模拟动态光源,比如火炬摇曳和火箭照亮走廊的效果。由于光照图分辨率极低,可以对每个luxel进行实时距离和视线计算。
手绘纹理则展现了开发者在像素艺术方面的扎实功底。在256色的严苛限制下,如何通过有限的颜色创造出有质感的墙面、地板和道具,本身就是一门艺术。HN用户ferguess_k盛赞作者是”10倍工程师同时还能做出好美术”的罕见人才,尤其赞赏其一致的艺术指导方向。另一位用户rob74则注意到了主角的有趣设定:这只猫是三色猫(calico),而三色猫几乎总是雌性——这意味着这可能是少数以女性为主角的射击游戏之一。
社区情怀:对像素时代的集体致敬
这篇文章之所以在HN上引发如此强烈的共鸣,不仅因为技术价值,更因为它触动了一代开发者的集体记忆。corysama分享了用SDL2在C语言中实现软件渲染的最简代码,并推荐了Canvas Cycle等经典调色板艺术演示——这些资源展示了在极致约束下能达到的艺术高度。
许多评论者提到,现在的游戏开发被复杂的引擎和工具链层层包裹,开发者很少有机会真正理解”像素是如何到达屏幕的”。Catlantean 3D代表了一种反叛:不是反对技术进步,而是通过刻意回归最基础的渲染方式,重新发现计算机图形学的本质乐趣。正如一位评论者所说,这不仅是一个游戏项目,更是一封写给1990年代PC游戏黄金时代的情书。
展望与启示
Catlantean 3D计划明年在Steam发行。在一个充斥着AI生成内容和自动化工具的时代,这个完全手工打造的项目显得尤为珍贵。它提醒我们,技术约束不是创造的敌人,而是激发创造力的催化剂。320×240的分辨率、256种颜色、没有GPU加速——在这些”不可能”的限制下,开发者反而找到了现代3A大作中越来越稀有的东西:纯粹的工匠精神和对每一个像素的精心雕琢。
对今天的开发者而言,Catlantean 3D不仅是一个有趣的复古项目,更是一堂生动的计算机图形学历史课。理解光线投射如何工作、调色板如何管理、光照图如何计算——这些基础知识永远不会过时,它们构成了现代图形管线的基石。也许,偶尔回到1993年,用最原始的工具探索创造的边界,这正是技术人文精神的最好体现。
📎 原文链接:https://staniks.github.io/articles/catlantean-3d-blog-1/ | HN讨论:https://news.ycombinator.com/item?id=48459294