给Fable一个提示:“构建一个.kkrieger的Linux致敬版本。”它在一个C文件中交付了一个51KB的程序化FPS——然后通过截取其无头渲染的截图并实际查看来进行调试

Reddit r/singularity 产品

摘要

一位开发者用单个C文件创建了一个完全程序化生成的致敬.kkrieger的第一人称射击游戏,生成了一个51KB的二进制文件,在运行时合成所有资产,并通过无头截图进行了验证。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/12 06:51

pinguy/murkk

来源:https://github.com/pinguy/murkk

.murkk

一个向 .kkrieger(.theprodukkt, Breakpoint 2004)致敬的 96K 精神续作。原生 Linux, 单个 C 文件,无引擎,无资源。你所见所闻的一切均在启动时或运行时合成:纹理、关卡、怪物、枪械、音效、字体。

剥离后的二进制:51,336 字节。 预算:98,304。剩余空间:约 46 KB。

构建

Arch / CachyOS:

sudo pacman -S --needed sdl2 mesa gcc
./build.sh

Debian / Ubuntu:

sudo apt install libsdl2-dev libgl1-mesa-dev gcc
./build.sh

或者直接:gcc -Os murkk.c -o murkk -lSDL2 -lGL -lm

运行

./murkk                # 固定种子 —— 这是一个演示,每次运行世界相同
./murkk --seed 1982    # 不同的建筑群
./murkk --smoke        # 无头自测试:渲染、截屏、退出返回 0

WASD 移动,鼠标视角,左键开火,ESC 退出。怪物位置偏低——瞄准下方射击,与原版蜘蛛相同。寻找绿色信标。红色方块回血,黄色方块补充弹药。

各部分合成位置

  • 纹理(启动时,约 260 毫秒):基于可平铺值噪声 fBm 的幂次方网格 → 高度场(砖块倒角、板状凹陷、螺栓凸起、拉丝纹理)→ 通过 Sobel 算子导出切线空间法线贴图 + 带有逐砖哈希抖动、污垢和锈蚀阈值的漫反射渐变。四张 256² 贴图,零文件。
  • 关卡(启动时,<1 毫秒):基于种子的 xorshift 算法生成房间,通过 L 形走廊连接,放置灯光(交替的暖色钠灯/冷色汞灯——kkrieger 式的昏暗光影)、物品、怪物、出口。几何体批量打包成交错客户端数组;切向量框架根据轴对齐法线在 C 和 GLSL 中相同计算,从而使凹凸映射在结构上对齐。
  • 光照:GLSL 120,每帧最近的八个点光源,二次衰减,所有关卡表面逐像素法线映射,距离雾,枪口闪光和击中光作为临时光源注入,平方根伽马校正输出。
  • 怪物:盒体组装的四足动物,每帧通过列主序 mat3 组合摆出姿势——追逐时摆动腿部,扑击前直立蓄力,击杀后挤压并保持死亡姿态。发光眼睛。
  • 音效:单个 SDL 浮点回调,将失谐 55 Hz 的嗡鸣与滤波后的隆隆声混合,叠加一次性合成声音——带音高滑降重击的噪声爆发枪声,击中滴答声,下降锯齿波死亡声,脚步声,拾取哔哔声。无样本。
  • 字体:37 个字形,5×7,手工打包的位数组,259 字节。

验证

--smoke 在 Xvfb + llvmpipe 下无头运行:合成所有内容,渲染标题和一场设想的交火,将两帧写入 PPM 文件,退出返回 0。本构建即通过此方式验证——此文件夹中的截图即为实际输出,软件光栅化。

与真实 96K 实践的诚实差异

kkrieger 的 96 KB 是通过本致敬项目刻意放弃的工具实现的,因此这里的 51 KB 是“君子协定”式的体积编码,而非参赛等级:

  • 无打包器。kkrieger 通过 kkrunchy(ryg 的可执行压缩器)交付。Linux 的等效工具——sstrip、基于 xz/zstd 的 vondehi 风格存根——可将此二进制压到 20 KB 以下。
  • -nostartfiles/自定义 _start,无着色器缩减,无符号精简。所有这些都作为余量舍弃。
  • 动态链接系统 SDL2/libGL/libc,这些不记入预算,与 kkrieger 依赖 d3d9.dll 和 MSVC 运行时相同。
  • kkrieger 的关卡是在 werkkzeug(他们的操作符栈工具)中手工制作的;我的关卡是生成的。不同取舍,相同理念:关卡是运行时生成的数据,而非磁盘上的字节。
  • 内存取舍忠实再现:kkrieger 著名的从 96 KB 解压到数百兆字节的 2004 年 RAM 中。磁盘是唯一预算。这里同样如此。

CC0 / 公有领域。向 farbrausch 和 .theprodukkt 致敬。

相似文章

像1993年那样制作图形

Hacker News Top

一位开发者详细介绍了如何构建《Catlantean 3D》——一款采用1993年时代图形技术(256色、320x240分辨率、手工制作资产、无人工智能)的第一人称射击游戏,计划在Steam上发布,重点讲解调色板渲染和资产创建。