Commander-Genius · gerstrong/Commander-Genius
Commander Genius 是使用 C++ 开发的开源解释器/复刻引擎,可在现代系统上运行《指挥官基恩》(Commander Keen 1-6 及 Dreams)与《Cosmos Cosmic Adventure》的原作及部分玩家自制 Mod。游玩需自备原版游戏数据文件;项目方还提供获取部...
The Backdooms(作者 Kuber Mehta,GitHub 用户名 Kuberwastaken)是一个以“极限体积”为核心诉求的网页游戏实验。README 开篇直接放上 qrcode.png 二维码图片,并强调“是的,这真的就是整个游戏”,扫码即可开始游玩。作品在题材上同时致敬 id Software 1993 年的 DOOM 与网络怪谈 The Backrooms:前者提供了第一人称探索与射击的气质,后者提供了“阈限空间”式的诡异走廊氛围。但需要说明的是,README 并没有展开描述具体关卡结构、敌人种类或操作按键,它把重心放在了“如何把一款游戏塞进二维码”这一工程问题上,因此它更像是一件可以被玩的工程作品,而非以内容量取胜的商业游戏。
从 README 的自述看,这个项目的定位是“压缩、自解压、且可无限生成”的 HTML 游戏,可以在浏览器中直接从二维码启动。作者明言这是自己花了一周左右(后来略有延长)做的研究,目标是试探二维码的存储容量与压缩技术的边界,并借此演示一种全新的思路:把轻量级网页应用整体托管在一张二维码里,而不是托管在服务器上。项目采用 MIT 许可证,徽章标注版本 13.0。除了二维码版本之外,作者还在 GitHub Pages 上提供了一个“压缩程度略低”的在线版本,并特别注明该版本使用了 8bit 风格的 Undertale 曲目 Bonetrousle 作为背景音乐,也就是说两个版本在内容上大体一致,差别主要在体积与音频处理上。
技术实现是这个项目最值得阅读的部分。README 用流程图给出了压缩工作流:先读取输入的 HTML 文件,使用 Zlib 以 wbits=15 的参数进行压缩,再对压缩结果做 Base64 编码以保持纯文本、可安全嵌入页面;随后把这段字符串塞进一个 JavaScript 编写的自解压包装页中。浏览器打开这张二维码所指向的 URL 后,包装页调用 DecompressionStream API(gzip 模式)动态解压,把结果转换成 data:text/html;base64,... 形式的 Data URI;接着判断这份数据能否被塞进一张二维码,如果装不下,就回到第一步继续削减 HTML 体积,形成“压缩—编码—检查容量—继续瘦身”的循环。换句话说,网页本身就是解码器,游戏代码则作为数据被内嵌在 URL 里。
二维码生成环节同样有一套取舍逻辑。配套脚本使用 Python 的 qrcode 库,先调用 qr.make(fit=True) 让库根据内容长度自动挑选最小的可用版本;如果所需版本超过二维码标准规定的上限 40,就转而强制使用 version 40 并关闭 fit。为了尽可能多装数据,纠错等级被设为最低的 L 级;即便如此仍然放不下时,程序不会“勉强调大”,而是直接以错误结束,提示数据过大无法编码进二维码。README 提到最终游戏的体积大约在 2.5KB 量级,这也解释了为什么整个项目必须围绕“压缩比”反复打磨。
仓库提供的工具链很轻。除游戏 HTML 本体外,核心是一个名为 QRGEN.py 的脚本,用法为 python3 QRGEN.py <your-game.html> <output-qrcode.png>,可以把任意(足够小的)HTML 游戏转成二维码图片。运行前提是 Python 3.7 及以上,并安装 qrcode 与 pillow(pip install qrcode[pil])。README 还提到一个 BigInt 分支:用 BigInt 代替 Base64 进行编码可以做出更小的二维码,代价是移动端浏览器兼容性受限,作者因此把它单独放在分支上而非主线上。
兼容性方面,README 明确的关键依赖是浏览器的 DecompressionStream API。移动端列出的可运行浏览器包括 Edge、Yandex、Opera 等支持该 API 的现代移动浏览器;桌面端只要浏览器实现了同一接口理论上同样可用,但 README 未逐一列出,属于需要自行验证的范围。项目在“特性”一栏强调完全离线:扫码之后 URL 里已经携带了全部代码,不再需要任何网络请求,因此游戏运行本身不依赖服务器,真正的前置条件只是一个足够新的浏览器。
从学习角度看,这个仓库适合用来理解几件事:一是前端资源的极限压缩与体积优化,二是 DecompressionStream 与 Data URI 组合出的“自解压网页”模式,三是二维码的版本与纠错等级如何影响可用容量,四是把“托管”这一概念拆解为“把应用编码进分享载体”的替代思路。作者在 README 中表示,非常希望看到更多人做出类似的二维码游戏,甚至做出更好的“二维码版 DOOM”,并链接了自己博客 MindDump 上记录开发踩坑过程的文章。对于想复刻的人,需要注意几点:具体玩法与所谓“无限生成”的实际效果 README 并未展开,需扫码或访问在线版本自行核验;二维码容量受标准硬上限约束,稍大的项目就会失败;而在线试玩与博客链接位于 GitHub Pages 与个人域名上,国内访问可能不稳定,但二维码版本本身离线可玩,不受此影响。
Hypersomnia 是 TeamHypersomnia 用 C++ 从零编写的一款多人俯视角(top-down...
id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需...