地牢與桌面:使用 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),隨時待命執行開發者的指令。