周三下午,Lee Reilly在GitHub Copilot CLI挑战赛中做了一个奇怪的决定:把自己的代码库变成了一座roguelike地牢。

事情始于一条简单提示:"用Go写一个GitHub CLI扩展,把当前仓库变成可玩的roguelike地牢,用BSP算法生成地图"。然后输入/yolo。结果就是GitHub Dungeons——一个终端游戏,从你的代码库生成地牢。房间、走廊、敌人,全都基于你的仓库构建,直接在终端渲染。用方向键移动,打怪,找出口。每个仓库生成不同地图,每次提交改变布局,血量归零则重新开始。

打开网易新闻 查看精彩图片

/yolo是Copilot CLI的命令别名,代表"allow-all"。对roguelike来说很贴切,毕竟这类游戏的核心就是永久死亡——你真的只有一条命。

roguelike起源于1980年代的Rogue等游戏:终端界面、每次运行生成新地牢、死亡即重来。这种程序化生成、永久死亡、文本界面的组合(后来被称为"柏林诠释")让这个类型意外地契合命令行环境。

GitHub Dungeons用Go写成——这不是Reilly常用的语言,但Copilot让他可以专注于行为逻辑而非语法细节。

程序化生成(procgen)指用算法而非手工创建内容。游戏中通常指关卡、地图、敌人或物品在运行时根据规则加随机数生成。你不是设计一个地牢,而是设计一个能生成无数地牢的系统。这就是roguelike重玩价值的来源:每次运行都不同,布局永远变化。

在GitHub Dungeons中,这个系统与你的仓库绑定。布局由最新提交的种子决定:同一代码生成同一地牢,每次提交改变形状。具体实现上,地牢用二叉空间分割(BSP)生成,种子是仓库最新提交的SHA。同一提交永远生成同一地图,不同仓库产生结构迥异的布局,代码变化则地牢进化。

这是程序化生成——但直接绑定了你的代码库。