地牢與桌面:使用 GitHub Copilot CLI 構建程式生成的地牢爬行遊戲
一位開發者利用 GitHub Copilot CLI 構建了一款終端地牢遊戲,該遊戲能將任意程式碼庫轉化為獨特的 rogue-like 地牢。文章詳細介紹瞭如何使用 BSP 演算法進行程式化生成、Copilot CLI 的 /delegate 命令如何協助開發,以及如何安裝和遊玩這個有趣的專案。
文章情報
要點
- GitHub Dungeons 是一款基於程式碼庫提交雜湊生成地牢的終端遊戲,每個倉庫產生不同的地圖。
- 使用 BSP(二叉空間分割)演算法生成結構化且可重現的地牢佈局。
- Copilot CLI 的 /delegate 功能可非同步處理任務,讓開發者專注於遊戲設計。
- 遊戲包含五層、迷霧、自動攻擊等特性,並有一個危險的預提交鉤子選項。
為什麼重要
這條新聞值得關注,因為GitHub Dungeons 是一款基於程式碼庫提交雜湊生成地牢的終端遊戲,每個倉庫產生不同的地圖。
技術影響
可能影響 Agent 架構、工具呼叫、工作流自動化和產品整合。
一位 GitHub 使用者(Lee Reilly)在 Copilot CLI 挑戰賽中受到啟發,決定將程式碼庫變成一個 rogue-like 地牢遊戲。結果就是 GitHub Dungeons——一款在終端中執行的程式化生成地牢遊戲。
遊戲從簡單的提示開始:用 Go 語言構建一個 GitHub CLI 擴充套件,將當前倉庫變成可玩的地牢,使用 BSP(二叉空間分割)生成地牢。最終,GitHub Dungeons 誕生了,它根據倉庫的提交雜湊生成地牢佈局,玩家使用方向鍵導航,與怪物戰鬥,尋找出口。每個倉庫產生不同的地圖,每次提交都會改變地牢結構,生命值歸零則遊戲結束。
rogue-like 遊戲起源於 1980 年代的《Rogue》,以程式化生成、永久死亡和文本介面為特徵。GitHub Dungeons 繼承了這一傳統,使用 Go 語言編寫,而 Copilot 幫助開發者專注於行為而非語法。
**程式化生成**
程式化生成(或“procgen”)是透過演算法而非手工設計來建立內容。在遊戲中,通常意味著關卡、地圖、敵人等在執行時根據規則和隨機性生成。rogue-like 遊戲的可重玩性正源於此:每次執行都不同,佈局不斷變化,而 GitHub Dungeons 的生成系統與倉庫繫結,佈局由最新提交的雜湊播種,相同程式碼產生相同地牢,每次變更都重塑地牢。
**倉庫如何變成地牢?**
GitHub Dungeons 使用 BSP 演算法生成佈局,由倉庫的最新提交 SHA 播種。同一提交總是生成相同地圖,不同倉庫產生結構截然不同的佈局,程式碼變化時地牢也隨之進化。
**使用 Copilot CLI 構建**
與 Copilot CLI 合作意味著用自然語言描述行為,而非從頭編寫程式碼。/delegate 命令讓開發者將任務交給 GitHub 的 Copilot 編碼代理(雲端執行),代理獨立工作並最終發起拉取請求。開發者可以先喝茶放鬆(但不會真的去喝茶),然後審查和調整結果。例如,/delegate 讓每個關卡逐漸變難,Copilot 生成了初步版本,開發者在平衡性上做調整。此外,還讓 Copilot 生成了一個“地牢抄寫員”代理,負責文件和 ASCII 藝術圖解。
Copilot CLI 讓開發者專注於遊戲設計,而非邊緣情況和樣板程式碼。
**BSP 演算法簡介**
BSP 聽起來複雜,但核心思想簡單:不斷將空間分割成更小的區域,直到得到一組可連線的房間。它為 rogue-like 提供結構感、可重玩性和可導航性。步驟包括:從一個大的空白空間開始;遞迴地水平或垂直分割;直到區域太小無法容納房間;每個葉子區域變成一個房間,位置和大小略有隨機;最後透過 L 形走廊連線房間。結果就是有組織的混亂——房間看似有意設計,走廊確保連通,每次執行不同但可重現。
**如何安裝和遊玩**
如果你已安裝 GitHub Copilot CLI,可以執行 gh extension install leereilly/gh-dungeons 安裝擴充套件,然後執行 gh dungeons 將當前倉庫變為地牢。使用 WASD、方向鍵或 Vim 鍵控制角色,目標是找到隱藏門並逃出地牢,同時攻擊敵人,共五層。遊戲包含迷霧、自動攻擊、擊殺統計等功能。
此外,還有一個“瘋狂模式”:設定預提交鉤子,如果玩家未能通關,則自動暫存並丟棄未提交的更改。但文章強烈警告不要這樣做,以免丟失工作。
**總結**
這個實驗性的專案改變了開發者對 Copilot CLI 的看法。快速實現了 MVP,迭代核心玩法,讓 Copilot 處理繁重任務(如 BSP 生成、怪物和移動定義)。Copilot 就像一群非玩家角色(NPC),隨時待命執行開發者的指令。