T
traeai
登录
返回首页
The GitHub Blog

地牢与桌面:使用 GitHub Copilot CLI 构建程序生成的 Roguelike 游戏

8.5Score
地牢与桌面:使用 GitHub Copilot CLI 构建程序生成的 Roguelike 游戏

TL;DR · AI 摘要

使用 GitHub Copilot CLI 构建了一个程序生成的 Roguelike 游戏,展示了 AI 辅助开发的实际应用。

核心要点

  • GitHub Copilot CLI 可以显著提高开发效率,特别是在处理复杂逻辑时。
  • 通过程序生成技术,可以创建无限多样的游戏关卡。
  • 文章提供了详细的代码示例和开发流程,帮助开发者快速上手。

结构提纲

按章节快速跳转。

  1. 介绍使用 GitHub Copilot CLI 构建 Roguelike 游戏的背景和目的。

  2. 描述项目的整体结构和目标。

  3. 详细说明如何设置开发环境。

  4. 介绍如何使用 GitHub Copilot CLI 实现程序生成的关卡。

  5. 提供具体的代码片段和解释。

  6. 总结项目成果并展望未来改进方向。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 构建 Roguelike 游戏
    • 引言
    • 项目概述
    • 环境搭建
    • 核心功能实现
    • 代码示例
    • 总结与展望

金句 / Highlights

值得收藏与分享的关键句。

#GitHub Copilot#Roguelike#AI 辅助开发
打开原文

地牢与桌面:使用 GitHub Copilot CLI 构建过程生成的 Roguelike 游戏 - GitHub 博客

跳到内容跳到侧边栏

[](https://github.com/)/博客

尝试 GitHub Copilot CLI查看最新动态

了解 GitHub 生态系统和更广泛行业中的人工智能和机器学习。

学习如何使用生成式 AI 进行开发。

改变你使用 GitHub Copilot 的工作方式。

开发者需要了解的关于 LLMs 的一切。

机器学习的技巧、窍门和最佳实践。

探索 AI 代码生成的功能和优势,以及它如何改善你的开发体验。

了解更多

为开发者提供提升技能和职业发展的资源。

构建应用的见解和最佳实践。

成长为专业开发者的技巧和窍门。

提高你在工作中使用 GitHub 的能力。

学习如何进入你的第一份专业角色。

了解最新的(或重新流行的)技术。

学习如何使用 GitHub 构建、发布和维护软件。

了解更多

深入了解我们如何构建所有开发者的家园。

了解我们如何在整个 GitHub 平台上提供高性能和高可用性的体验。

探索大规模远程团队构建软件的最佳实践。

一窥世界领先的 AI 驱动开发者平台的技术基础。

了解我们如何在开发人员生命周期的每个阶段都融入安全性。

了解 GitHub 成为所有开发者家园的背后故事。

我们的工程和安全团队做了许多令人惊叹的工作。让我们来看看我们如何使用 GitHub 提高生产力、协同工作并左移安全。

了解更多

探索如何大规模编写、构建和部署企业软件。

通过自动化实现更快、更安全的交付。

持续集成和交付的指南。

提高开发者协作的技巧、工具和窍门。

企业工程团队的 DevOps 资源。

如何将安全性集成到 SDLC 中。

确保你的构建保持清洁。

了解为什么 Gartner 连续第二年将 GitHub 定位为领导者。

了解更多

关注 GitHub 内部的最新动态和重要信息。

来自 GitHub 的内部新闻和产品更新。

关于 GitHub 平台、产品和工具的最新消息。

GitHub 上开源状态的洞见。

软件领域的最新政策和监管变化。

围绕开发者生态系统的数据驱动洞见。

GitHub 的旧新闻和更新。

了解如何使用检索增强生成(RAG)捕获更多洞见。

了解更多

GitHub 上的一切开源信息。

最新的 Git 更新。

聚焦开源维护者。

开源如何推动积极变革。

探索 GitHub 上的开源游戏。

全球各地的组织正在将开源方法论融入到他们构建和交付自己软件的方式中。

了解更多

及时了解所有安全信息。

应用安全概述。

揭秘供应链安全。

来自 GitHub 安全实验室的更新。

保护 Web 应用的安全提示。

了解 DevSecOps 的核心挑战以及如何通过 AI 和自动化开始解决这些挑战。

了解更多

搜索

分类

了解 GitHub 生态系统和更广泛行业中的人工智能和机器学习。

学习如何使用生成式 AI 构建。

改变你使用 GitHub Copilot 的工作方式。

开发人员需要了解的关于 LLMs 的一切。

机器学习技巧、窍门和最佳实践。

探索 AI 代码生成的能力和好处,以及它如何改善你的开发体验。

了解更多

帮助开发人员提升技能和职业发展的资源。

构建应用程序的洞见和最佳实践。

成为专业开发人员的成长技巧和窍门。

提高你在工作中使用 GitHub 的能力。

学习如何进入你的第一份专业角色。

了解最新的(或重新流行起来的)技术。

学习如何使用 GitHub 构建、交付和维护软件。

了解更多

了解我们如何构建所有开发者的家园。

了解我们如何在整个 GitHub 平台上提供高性能和高可用性的体验。

探索大规模远程团队构建软件的最佳实践。

一窥世界领先的 AI 驱动开发者平台的技术基础。

了解我们如何在开发者的整个生命周期中融入安全性。

了解 GitHub 成为所有开发者家园的背后故事。

我们的工程和安全团队做了许多令人难以置信的工作。让我们看看我们如何使用 GitHub 提高生产力、协同工作并左移安全。

了解更多

探索如何大规模编写、构建和部署企业软件。

通过自动化实现更快、更安全的发布。

持续集成和交付指南。

提高开发者协作的技巧、工具和窍门。

企业工程团队的 DevOps 资源。

如何将安全集成到 SDLC 中。

确保您的构建保持清洁。

了解为什么 Gartner 连续第二年将 GitHub 定位为领导者。

了解更多

关注 GitHub 内部的新鲜事和亮点。

来自 GitHub 的内部新闻和产品更新。

关于 GitHub 平台、产品和工具的最新消息。

GitHub 上开源状态的洞见。

软件领域的最新政策和监管变化。

围绕开发者生态系统的数据驱动洞见。

GitHub 的旧新闻和更新。

了解如何使用检索增强生成(RAG)捕获更多洞见。

了解更多

GitHub 上的一切开源内容。

最新的 Git 更新。

聚焦开源维护者。

开源如何推动积极变革。

探索 GitHub 上的开源游戏。

世界各地的组织正在将开源方法论融入他们构建和发布软件的方式中。

了解更多

随时了解一切安全动态。

应用安全详解。

揭秘供应链安全。

来自 GitHub 安全实验室的更新。

保护 Web 应用的安全提示。

了解 DevSecOps 的核心挑战以及如何通过 AI 和自动化开始解决这些挑战。

了解更多

查看最新动态尝试 GitHub Copilot CLI

首页/AI & ML/GitHub Copilot

地牢与桌面:使用 GitHub Copilot CLI 构建过程生成的 Rogue 游戏

了解一位 Hubber 如何使用 GitHub Copilot CLI 构建一个扩展,将任何代码库变成独特的 Rogue 游戏。

图片 8: 装饰性标题图片,上面写着 '地牢与桌面:使用 GitHub Copilot CLI 构建过程生成的 Rogue 游戏'

[Lee Reilly](https://github.blog/author/leereilly/ "Lee Reilly 的帖子")·@leereilly

2026 年 5 月 12 日

| 8 分钟

  • 分享:
  • [](https://x.com/share?text=Dungeons%20%26amp%3B%20Desktops%3A%20Building%20a%20procedurally%20generated%20roguelike%20with%20GitHub%20Copilot%20CLI&url=https%3A%2F%2Fgithub.blog%2Fai-and-ml%2Fgithub-copilot%2Fdungeons-desktops-building-a-procedurally-generated-roguelike-with-github-copilot-cli%2F)
  • [](https://www.facebook.com/sharer/sharer.php?t=Dungeons%20%26amp%3B%20Desktops%3A%20Building%20a%20procedurally%20generated%20roguelike%20with%20GitHub%20Copilot%20CLI&u=https%3A%2F%2Fgithub.blog%2Fai-and-ml%2Fgithub-copilot%2Fdungeons-desktops-building-a-procedurally-generated-roguelike-with-github-copilot-cli%2F)
  • [](https://www.linkedin.com/shareArticle?title=Dungeons%20%26amp%3B%20Desktops%3A%20Building%20a%20procedurally%20generated%20roguelike%20with%20GitHub%20Copilot%20CLI&url=https%3A%2F%2Fgithub.blog%2Fai-and-ml%2Fgithub-copilot%2Fdungeons-desktops-building-a-procedurally-generated-roguelike-with-github-copilot-cli%2F)

我被 GitHub Copilot CLI 挑战赛吸引住了,并做出了一个不太明智的决定:我把我的代码库变成了一个 Rogue 游戏的地牢。

这一切始于一个简单的提示:用 Go 语言构建一个 GitHub CLI 扩展,将当前仓库转换成一个可玩的 Rogue 游戏地牢,地牢由 BSP [省略] 生成。然后就是 /yolo

结果就是 GitHub Dungeons,一个从你的代码库生成地牢的终端游戏。房间、走廊和敌人,全部由你的仓库构建并在终端中渲染。你可以用方向键导航,与错误战斗,寻找出口。每个仓库都会生成不同的地图。每次提交都会重塑布局。如果你的 HP 归零,你就重新开始。

图片 9: 'gh dungeons' 的截图

💡 趣味事实:/yolo(“你只有一次生命”)是一个 Copilot CLI 命令(/allow-all 的别名)。很贴切,因为 Rogue 游戏的核心是永久死亡。你真的只有一次生命。

Rogue 游戏可以追溯到 1980 年代的游戏,如《Rogue》——基于终端的冒险游戏,每次运行都会生成一个新的地牢,死亡意味着重新开始。

这种程序生成、永久死亡和基于文本的界面(后来在“柏林解释”等概念中正式化)的结合使这一类型感觉出奇地现代,非常适合命令行。

GitHub Dungeons 遵循这一传统。它用 Go 语言编写,虽然我通常不使用 Go,但与 Copilot 合作意味着我可以专注于行为而不是语法。

什么是程序生成?

程序生成(或“procgen”,酷孩子这么叫)是一种通过算法而不是手动设计来创建内容的方法。在游戏中,这通常意味着关卡、地图、敌人或物品是在运行时根据一组规则加上一些随机性生成的。

所以你不是设计一个地牢,而是设计一个生成多个地牢的系统。

这就是 Rogue 游戏具有可重玩性的原因:

  • 每次运行都不同
  • 布局每次都会变化
  • 某些东西
  • 某些东西

在 GitHub Dungeons 中,这个系统与你的仓库绑定在一起。布局由你的最新提交种子生成,因此相同的代码会产生相同地牢,而每次更改都会重塑它。

那么,仓库是如何实际变成地牢的呢?

从高层次来看,GitHub Dungeon 的布局是使用二进制空间分割(BSP)生成的,种子是你仓库的最新提交 SHA(稍后详细讨论 BSP)。这意味着相同的代码库会产生一致的布局,同时随着代码的变化而演变。

实际上

  • 相同的提交总是生成相同的地图
  • 不同的仓库会产生结构上不同的布局
  • 随着代码的变化,地牢也随之演变

这是程序生成——但直接与你的代码库绑定。这就是想法。

有趣的部分实际上是构建它。

使用 Copilot CLI 构建

使用 GitHub Copilot CLI 意味着描述行为而不是从头开始编写所有内容。一个特别有用的命令是 /delegate。与其只是内联生成代码,/delegate 将任务交给在云端运行的 GitHub Copilot 编码代理。

我可以用简单的英语描述我想要的内容,启动它,然后去做其他事情,让它独立工作。完成后,它会打开一个包含结果的拉取请求。

例如,/delegate 让每个关卡逐渐变得更难,比如在第二关会有更多的敌人,但也会有更多的生命药水。

Copilot 异步生成了一个不错的初步版本,我从那里开始审查并调整 PR,直到平衡感觉合适。对于其他功能,如添加让玩家无敌的作弊码(为什么不呢),我也采用了同样的方法。

我还让 Copilot 生成了一个“地牢书记官”代理,这是一个小助手,用于添加文档和 ASCII 艺术图,以解释地牢是如何生成的,这非常符合终端 roguelike 游戏的风格。

使用 Copilot(特别是使用 /delegate)就像拥有一支 NPC 军队,可以随时做我想让他们做的事情。

Lee Reilly,地牢大师

采用这种方式(描述功能,委托给 Copilot,并审查生成的拉取请求)意味着我可以花更少的时间处理边缘情况和样板代码,而更多时间关注玩家体验,包括添加彩蛋供玩家发现。与 Copilot 迭代让我能够保持游戏设计思维,而不是不断切换到实现细节。因为 Copilot 处理了大部分构建和脚手架工作,我可以专注于设计机制、测试想法,并找出真正使游戏有趣的地方。

程序生成的关卡(使用 BSP)

每个地牢设计的核心是一种称为二叉空间分割 (BSP) 的技术,如果你想要在朋友和同事面前炫耀,可以在提到中间压缩时顺便提一下这个技术。它听起来很复杂,但其实概念非常简单:不断地将一个空间分成更小的部分,直到你得到一堆可以连接的房间。

为什么 BSP 对 roguelike 游戏如此有效

Roguelike 游戏需要的地图要:

  • 结构化(不是完全随机的胡言乱语)
  • 可重复玩(每次运行都不同)
  • 易于导航(没有死胡同或不可能的布局)

BSP 正好满足这些需求。它给你:

  • 干净的矩形房间
  • 保证连通性
  • 足够的随机性,感觉自然

以下是它的运作方式……

#### 1. 从一个大空旷的空间开始

一切从一个大矩形开始:你的整个地牢。

图片 10: 整个地图和“从一个矩形开始”的截图。

#### 2. 递归分割

我们将空间分成两个区域。

图片 11: 显示两个盒子(左和右)的截图。

然后再次分割这些区域。

图片 12: 显示三个盒子(A、B 和 C)的截图。

再继续分割。

每次分割可以是水平的或垂直的。

#### 3. 当空间太小时停止

我们一直分割,直到区域太小无法容纳一个房间。

这会创建许多“叶”区域,即最终的构建块。

图片 13: 显示六个盒子(A、B、C、D、E 和 F)的截图。

#### 4. 将每个区域变成一个房间

每个叶区域变成一个房间,但不是完美对齐的。我们会稍微随机化大小和位置。

图片 14: 显示六个房间的截图。

这种轻微的随机性避免了一切看起来过于网格化。

#### 5. 用走廊连接房间

现在我们通过回溯树并连接兄弟节点来连接房间。

图片 15: 显示房间 1 和 2 分离的截图。图片 16: 显示房间 1 和 2 连接的截图。 每个连接都是 L 形的:

#### 6. 最终结果:有结构的混乱

将所有这些放在一起,你会得到类似这样的结果:

图片 17: 显示最终房间布局的截图。
  • 房间感觉是有意为之的
  • 走廊使所有地方都可达
  • 每次运行都不同(但可以通过种子复现)

为什么这种方法效果很好

我喜欢 BSP 的一点是,它感觉像是经过设计的,即使实际上并没有。

它避免了程序生成的两大问题:纯粹的随机性(杂乱无章)和刚性的网格(可预测且无聊)。相反,你得到了介于两者之间的东西……有时甚至非常美丽。

如何安装和玩游戏

如果你想看看自己的代码库作为地牢的样子,并且你已经安装了 GitHub Copilot CLI,你可以运行:

gh extension install leereilly/gh-dungeons

之后,运行 gh dungeons 将你的仓库转换成一个自定义地牢,准备好被征服。使用 WASD、箭头键或 Vim 键控制你的英雄。

你的目标是在五个关卡中找到隐藏的门并逃脱(或攻击!)敌人。我添加了一些有趣的特性,比如限制视野的战争迷雾、自动攻击、追踪击杀数和征服关卡等统计数据,还有更多需要你自己去发现的内容。

危险区域!

如果你喜欢冒险,可以尝试疯狂模式:你可以设置一个预提交钩子,除非你通关整个游戏,否则它会删除你保存的更改。

⚠️ 警告:除非你完全理解这将对你的仓库产生什么影响,否则不要这样做,你会丢失已保存的工作,甚至可能失去一些理智。

code
# 创建预提交钩子 
cat > .git/hooks/pre-commit << 'EOF' 
#!/bin/bash 
gh dungeons 
if [ $? -ne 0 ]; then 
    echo "你死了!你的更改已被存入虚无之中..." 
    git stash && git stash drop stash@{0} 
    exit 1 
fi 
EOF 
 
# 使其可执行 
chmod +x .git/hooks/pre-commit 
 
# 请注意,如果你启用此功能并未能通关地牢,你将丢失所有未提交的更改,冒险者。

(编辑注:请,请,千万不要这样做。我们不对任何丢失的工作负责。但李绝对要负责。)

带走这些

这最初只是一个临时实验,但它改变了我对 GitHub Copilot CLI 的看法。

我能够快速完成最小可行产品,迭代重要的部分,并让 Copilot 处理繁重的工作,例如 BSP 生成,甚至在 Yendor 的一个略显诡异的 YAML 文件中定义怪物和移动。

  • * *

标签:

作者

图片 18: Lee Reilly

[Lee Reilly](https://github.blog/author/leereilly/)

@leereilly

GitHub 开发者关系高级项目经理。开源狂热者,AI 专家,黑客马拉松和游戏开发比赛组织者。我编写 && 管理项目,支持开发者社区,偶尔还会发布一些东西。

目录

更多关于 [游戏](https://github.blog/tag/gaming/)

[Game Bytes · 2023年9月](https://github.blog/open-source/gaming/game-bytes/)

Game Bytes 是我们的月度系列,带你一窥 GitHub 上的游戏开发世界——包括游戏引擎更新、游戏开发比赛详情、开源游戏、模组、地图等。尽情游戏吧!

[Lee Reilly](https://github.blog/author/leereilly/ "Lee Reilly 的文章")

相关文章

图片 19: Copilot 在装饰场景中的绿色方块马赛克上方盘旋。

AI & ML

[提高 GitHub Agentic 工作流中的令牌效率](https://github.blog/ai-and-ml/github-copilot/improving-token-efficiency-in-github-agentic-workflows/)

每次拉取请求运行的代理工作流可能会悄悄累积大量的 API 费用。这里是如何对我们自己的生产工作流进行仪器化,找到低效之处,并构建代理来修复它们。

[Landon Cox](https://github.blog/author/lpcox/ "Landon Cox 的文章")&[Mara Kiefer](https://github.blog/author/mnkiefer/ "Mara Kiefer 的文章")

图片 20: 装饰背景,两个 Copilot 角色在抽象的绿色和透明方块中移动。

AI & ML

[代理拉取请求无处不在。这是如何审查它们的。](https://github.blog/ai-and-ml/generative-ai/agent-pull-requests-are-everywhere-heres-how-to-review-them/)

审查代理生成的拉取请求的实用指南:需要查找的内容、问题隐藏的地方以及如何在发布前捕捉技术债务。

[Andrea Griffiths](https://github.blog/author/andreagriffiths11/ "Andrea Griffiths 的文章")

图片 21: Copilot 在装饰科技主题场景中向浮动的绿色立方体移动,立方体上显示 GitHub 相关图标。

AI & ML

[当“正确”不是确定性时验证代理行为](https://github.blog/ai-and-ml/generative-ai/validating-agentic-behavior-when-correct-isnt-deterministic/)

如何在不使用脆弱脚本或黑盒判断的情况下,通过支配分析构建 GitHub Copilot 编码代理的“信任层”。

[Gaurav Mittal](https://github.blog/author/g1910/ "Gaurav Mittal 的文章")&[Reshabh Kumar Sharma](https://github.blog/author/resharma/ "Reshabh Kumar Sharma 的文章")

探索更多来自 GitHub

图片 22: 文档

文档

掌握 GitHub 所需的一切,尽在一个地方。

前往文档

图片 23: GitHub

GitHub

在 GitHub 上构建下一个项目,这里是来自世界各地的任何人都可以构建任何东西的地方。

开始构建

图片 24: 客户故事

客户故事

了解使用 GitHub 构建的公司和工程团队。

了解更多

图片 25: GitHub 播客

GitHub 播客

收听 GitHub 播客,一档专注于 GitHub 开源开发者社区的话题、趋势、故事和文化的节目。

立即收听

我们也发送新闻通讯

在我们的双周刊新闻通讯中发现技巧、技术指南和最佳实践,专为开发者打造。

您的电子邮件地址

*您的电子邮件地址

订阅

  • [x] 是的,请允许 GitHub 及其关联公司使用我的信息进行个性化沟通、定向广告和活动效果评估。详情请参阅 GitHub 隐私声明

订阅

全站链接

[](https://github.com/)

产品

平台

支持

公司

  • © 2026 GitHub, Inc.
  • 条款
  • 隐私
  • 管理 Cookie
  • 不分享我的个人信息

AI 可能会生成不准确的信息,请核实重要内容