Vibe Coding 挑战极限:16 KB 塞进完整 3D 声呐射击游戏

开发者用 AI 辅助编码在 16KB 内完成声呐题材 FPS,探索 Vibe Coding 的底层优化边界。
文章介绍了开发者以 Vibe Coding 方式制作的 16KB 完整第一人称射击游戏 Blind Sector,使用了 Fable 5 负责规划、Opus 5.5 负责实现与优化。游戏设定在地下黑暗中,玩家依靠三种频率的声呐脉冲短暂照亮环境,而每次脉冲本身也是噪音,会暴露位置,形成信息获取与风险承担的双刃剑机制。技术上,作者采用 64×64 网格的 2D DDA 射线投射、单次绘制调用与零 uniform 的纹理传参、SDF 敌人建模、Crinkler 300MB 哈希表压缩以及 LCG 程序化生成音乐等极端手段。文章认为该实验表明 AI 能胜任高难度的系统级优化,但人类的方向选择、美学判断与架构决策仍是不可替代的核心价值。
一个 16 KB 的完整 FPS 游戏是如何诞生的
Reddit 上有开发者分享了一次别开生面的实验:用 Vibe Coding(氛围编程/AI 辅助编码)的方式,制作一款通常需要深厚 demoscene(演示场景)功底才能完成的超小型程序——一个 16 KB 的完整第一人称射击游戏。
作者的动机很直接:想测试 AI 辅助编码能把这种极度依赖底层技巧和手工优化的领域推到多远。他使用了不同的 AI 模型分阶段工作——Fable 5 High 负责初始规划,Opus 5.5 High 负责实现、打磨和优化。最终成品名为 Blind Sector,已开源在 GitHub。这一实验为 Vibe Coding 的能力边界提供了一个有趣的数据点:AI 不仅能写业务逻辑代码,还能在极端约束下辅助完成挑战性的系统级优化任务。

Demoscene 是起源于 1980 年代西欧的一个亚文化,参与者(称为 demosceners)在极其严格的体积限制下(常见的有 4KB、16KB、64KB 等类别)创作实时运行的视听演示程序。这类程序通常不使用任何外部资源文件,所有图形、音乐、纹理都必须由代码在运行时程序化生成,因此极度依赖汇编语言、链接器技巧和压缩算法。一个 16KB 的可执行文件能容纳完整的 3D 游戏,意味着它的信息密度远超常规软件。Demoscene 的价值观与商业软件截然不同:体积越小、效果越惊艳,作品获得的评价越高,这种“以约束激发创造力”的传统正是理解本文实验价值的关键背景。
核心玩法:用声音狩猎,也被声音狩猎
游戏设定在地下,玩家处于失明状态。你唯一的感知工具是声呐扫描器,可以发射三种频率的脉冲。
每次脉冲会短暂地点亮墙壁和敌人,随后地图迅速消退回模糊的残影。这种机制让玩家不得不在黑暗中摸索前进,靠瞬间的视觉反馈建立空间记忆。
更具压迫感的设计是:每一次脉冲本身就是噪音,而地下的一切生物都靠声音狩猎。这意味着你获取信息的每一次尝试,都在暴露自己的位置。这个机制把“探测”和“风险”绑定在一起,形成了天然的紧张感循环。
(其中“脉冲既照亮又暴露”的双刃剑机制是本次演示最受关注的设计亮点之一。)
技术优化:极端约束下的工程艺术
在 16 KB 的限制下,每一字节都弥足珍贵。作者分享了一系列令人惊叹的优化手段,展示了如何用 AI 辅助完成本属于极客手工领域的底层技巧。
射线投射与阴影
关卡是一个 64×64 的网格,在片段着色器中用 2D DDA 算法进行射线投射。这一设计释放了约 430 字节的空间,这笔预算随后被用来实现脉冲阴影、伪环境光遮蔽(fake AO)和程序化墙壁纹理。
有符号距离场(SDF) 是一种用数学函数描述物体表面的方法:对于空间中任意一点,SDF 返回该点到物体表面的最短距离,正数表示在物体外部、负数表示在内部、零表示恰好在表面上。相比存储顶点和三角面片,SDF 只需少量参数(如圆心和半径)就能定义几何体,并且天然支持平滑并集、交集等布尔运算,非常适合程序化生成和极简存储。球体追踪(sphere tracing) 则是基于 SDF 的渲染算法:从相机出发沿射线前进,每一步都询问当前点离最近表面有多远,然后安全地前进这段距离,反复迭代直到命中表面。它不需要传统光栅化的深度缓冲,在片段着色器中即可完成,因而在 demoscene 和 shader 艺术中被广泛使用。
单次绘制调用,零 uniform
每一帧,CPU 重写一个浮点纹理(64×90 RGBA32F),其中包含单元格数据、敌人列表、脉冲状态、灯光、HUD 文本乃至字体位信息。相机的偏航角、俯仰角和宽高比通过单个 glRects 的纹理坐标传入。零 uniform、零矩阵、一次绘制调用——这是 demoscene 级别的极致精简。
有符号距离场敌人
敌人由**有符号距离场(SDF)**构建,用圆角盒子和“肢体”段组装(每个部件 7 字节),通过平滑并集和球体追踪渲染。爬行怪有六条关节腿,会真正地行走。为解决近景渲染缓慢的问题,每个部件被赋予了包围球,着色器可以跳过不必要的计算。
编译器级优化
作者采用了一系列非常规手段:使用 x87 而非 SSE2、stdcall 而非 cdecl、关闭内联、以及用 300 MB 的 Crinkler 哈希表替代 100 MB 版本。这些选择偏向于压缩最终体积而非运行速度,体现了极端空间约束下的权衡思路。
Crinkler 是一款专为 Windows 可执行文件设计的压缩链接器,常见于 4KB 和 64KB demoscene 作品中。它与普通压缩工具的核心区别在于:它不只压缩数据,还会压缩 PE 文件头、导入表、重定位信息等所有结构,并让解压代码与压缩数据共用同一块内存空间,从而把最终体积压到理论极限。Crinkler 使用基于上下文的算术编码,压缩率与所用哈希表大小正相关:300MB 的哈希表能比 100MB 版本找到更多重复模式,代价是链接阶段的内存占用和耗时显著增加。这正是作者为体积而牺牲构建速度的典型取舍。
程序化生成音乐
音乐也是生成式的。每个小节由一个微型**线性同余生成器(LCG)**从自然音阶和声进行中选取和弦,然后 pad、bass 和琶音通过音效使用的同一合成器播放。
线性同余生成器(LCG) 是最简单的一类伪随机数算法,通过公式 x_{n+1} = (a·x_n + c) mod m 迭代产生看似随机的数列,其中 a、c、m 为预设常数。它的优点是实现只需几行代码和几个字节的常量,非常适合体积受限的程序化生成;缺点是随机性质量较低,周期有限。在这里,LCG 被用作音乐的和声“决策者”:每个小节从自然音阶(如 C 大调音阶)的可用和弦中伪随机地挑选一个进行,再驱动 pad、bass 和琶音声部,使音乐既有随机变化又保持调性统一,且无需存储任何音频采样数据。
Vibe Coding 的边界探索与启示
这个实验的价值不只在于做出了一个游戏,更在于它对 Vibe Coding 适用范围的试探。
通常情况下,16 KB 的程序体积控制属于 demoscene 领域,需要开发者对汇编、链接器、压缩算法有多年积累。作者本人也表示,这类任务“通常需要深厚的 demoscene 知识”。而这次,他借助 AI 完成了从规划到优化的全流程。
这提出了一个值得思考的问题:当 AI 能够辅助甚至主导极端底层的优化工作时,人类开发者的核心竞争力是什么?
一种可能的答案是:品味与判断力。作者需要理解游戏机制的设计逻辑(声呐双刃剑)、做出架构决策(单绘制调用、纹理传参)、以及在多个优化方向之间取舍(体积优先还是性能优先)。AI 提供了实现能力,但方向选择和美学判断仍来自创作者。
当然,这次实验也并非意味着 demoscene 技能的消失。AI 辅助本身仍需要使用者能够评估输出质量、诊断问题、并在 AI 陷入困境时提供新的思路。
开源与延伸
完整的源代码和可执行文件已发布在 GitHub:https://github.com/zTrojan/blind-sector。感兴趣的技术读者可以深入研究纹理打包、SDF 建模和 Crinkler 压缩等具体实现细节。
Blind Sector 作为一个实验性项目,为 Vibe Coding 的能力边界和技术选型提供了一个极佳的参考案例:在严格的物理约束下,AI 辅助编码可以完成相当复杂的系统级工作,但它仍然是一个放大器,而非替代品。人类的创意方向和工程判断依然是项目中不可或缺的部分。
相关推荐

Gemini 4 Argon API实战:思考等级、后台模式一次讲透
Free Code Camp 出品的 Gemini 4 Argon API 速成教程:从申请密钥、发送首次请求,到用思考等级控制推理成本、用 previous_interaction_id 实现多轮对话,再到后台模式一句话生成打砖块游戏,附 Google 工程师对模型能力的解读。

强化学习通关《抡大锤》:63%进度背后的分布式训练策略
开发者用深度强化学习挑战《抡大锤》,智能体从底部攀爬至63%进度,卡在铁砧部分。项目开源,采用分治训练和CPU训练策略,寻求社区协作突破瓶颈。

AAAI 2027二审放榜在即:社区热议评审公平与投稿生态
AAAI 2027第二阶段评审结果即将公布,Reddit社区热议评审一致性与流程透明度。本文梳理放榜前的社区情绪、顶会评审的结构性矛盾,以及作者应对二审结果的务实策略。