ダンジョン&デスクトップ:GitHub Copilot CLI で手続き型生成ローグライクを構築する
あるHubberがGitHub Copilot CLIを使って、任意のコードベースをユニークなローグライクダンジョンに変える拡張機能を構築した方法を紹介します。BSPアルゴリズムによる手続き型生成、/delegateコマンドの活用法、インストール方法などを詳しく解説。
記事インテリジェンス
要点
- GitHub Dungeons は、リポジトリの最新コミットハッシュをシードとしてBSPでダンジョンを生成するターミナルゲームです。
- Copilot CLI の /delegate を使うと、タスクを非同期で処理でき、開発者はゲームデザインに集中できます。
- 5つのレベル、フォグ・オブ・ウォー、自動攻撃などの機能を備え、危険なプリコミットフックオプションもあります。
重要な理由
このニュースが重要なのは、GitHub Dungeons は、リポジトリの最新コミットハッシュをシードとしてBSPでダンジョンを生成するターミナルゲームですためです。
技術的影響
Agent アーキテクチャ、ツール呼び出し、ワークフロー自動化、プロダクト統合に影響する可能性があります。
GitHubユーザーのLee ReillyがCopilot CLIチャレンジに触発され、コードベースをローグライクダンジョンにするという実験的な拡張機能「GitHub Dungeons」を開発しました。このターミナルゲームは、リポジトリの最新コミットSHAをシードにBSP(二分空間分割)アルゴリズムでダンジョンを生成します。プレイヤーは矢印キーで移動し、敵と戦いながら5つのレベルを進み、出口を探します。各リポジトリは異なるマップを生成し、コミットごとにダンジョンが変化します。
**手続き型生成とは**
手続き型生成(プロシージャル生成)は、アルゴリズムを使ってコンテンツを自動生成する手法です。ローグライクのリプレイ性は、毎回異なるレイアウトが生成されることにあります。GitHub Dungeons では、リポジトリに基づいてシステムがシードされ、同じコードなら同じダンジョン、コード変更でダンジョンも進化します。
**BSPによるダンジョン生成**
BSPは空間を再帰的に分割し、部屋と廊下を接続する手法です。手順:大きな矩形から開始→水平/垂直に分割→十分小さくなるまで繰り返し→各リーフ領域をランダムに部屋化→L字型廊下で接続。結果は構造的でありながら有機的なレイアウトになります。
**Copilot CLIでの開発**
Copilot CLIの /delegate コマンドを使い、開発者は自然言語で機能を記述するだけで、Copilotエージェントが非同期にコードを生成し、プルリクエストを作成します。例えば「各レベルを徐々に難しくする」と指示すると、Copilotが初期実装を生成。レビュー後に調整します。さらに「ダンジョン書記官」エージェントも生成し、ASCIIアート図解入りのドキュメントを作成させました。
**インストールとプレイ方法**
GitHub Copilot CLIがインストール済みなら、gh extension install leereilly/gh-dungeons で拡張をインストールし、gh dungeons を実行します。WASD、矢印キー、またはVimキーで操作。目標は5つのレベルで隠し扉を見つけて脱出することです。霧、自動攻撃、キル統計などの機能があります。
「クレイジーモード」では、プリコミットフックを設定し、ゲームオーバー時に未コミットの変更をスタッシュして失うという危険なオプションも用意されています。ただし公式は強く非推奨としています。
この実験は、Copilot CLIの可能性を示しました。MVPを短期間で作成し、重要な部分の反復に集中し、BSP生成やモンスター定義などの重労働をCopilotに任せることができました。まるでNPC軍団が思い通りに動くような感覚です。