ascii-city-engine について
ascii-city-engineは、持ち運び可能なASCII都市体験を構築するためのスキルです。都市データパックを作る開発者向けに、エンジン、プロバイダー契約、都市別パックを分離し、オフライン検証の手順を備えています。
主な機能
- 01都市パックとローカルメートル座標系の定義
- 02公開標高・建物・道路データの処理
- 03マニフェストとワールドタイルの生成
- 04パック構造のオフライン検証
- 05ブラウザーエンジンでの移動と衝突のテスト
活用シーン
- 01公開GISデータから都市パックを作成
- 02マニフェストとワールドタイルを検証
- 03地形追従と建物衝突をテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill ascii-city-engineインストール後、Claude Code で/ascii-city-engineを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdassets/ascii-city-engine.htmlassets/deliberately-broken-pack/manifest.jsonREADME.mdassets/raleigh-downtown-sample/manifest.jsonassets/raleigh-downtown-sample/world/tile-0.jsonevals/evals.jsonreferences/city-provider-contract.mdengine-architecture.mdgis-ingestion.mdraleigh-poc.mdscripts/validate-city-pack.pytemplates/city-pack-manifest.schema.jsonworld.schema.json詳細
ASCII City Engine
エンジン、都市プロバイダーの契約、シティパックの3層で、ポータブルな都市体験を構築します。都市固有の情報をエンジンコードに含めないでください。
ワークフロー
- パックの境界と、メートル単位のローカル CRS を定義します。
- 公開ソースから標高、建物、道路/歩道のデータを取得します。
- 変換前にダウンロード内容、ライセンス、単位、データの来歴を確認します。
- すべてのジオメトリをローカルのメートル単位に再投影し、マニフェストとワールドタイルを出力します。
- パックをオフラインで検証します:
python3 scripts/validate-city-pack.py path/to/city-pack assets/ascii-city-engine.htmlでパックの最初のタイルを読み込み、移動、地形の傾斜への追従、ソリッドフットプリントをテストします。- データの制限事項と、人による受け入れ確認の証拠を記録します。
必須の不変条件
- 地形から
feet_zを計算し、足元の高さに目の高さを加えてeye_zを計算します。 - 地形が null の場合、傾斜が急すぎる場合、ソリッドフットプリントに接触する場合は、移動を拒否します。
- 建物の色を決定論的に設定し、各フレームで見逃したレイをクリアします。
- v1 では
(x, y)列ごとに地面の高さを1つとします。サーフェスグラフは将来のために予約しますが、実装しません。 - エンジンを、特定の都市、ベンダー、エージェントハーネス、プライベートインフラストラクチャから独立させます。
- 大容量またはフル解像度のソースデータをコミットしないでください。小規模で再配布可能なサンプルのみをコミットし、それ以外のデータの取得方法を文書化します。
参考資料
- ワールドの計算、レンダリング、衝突、および足場の契約については、references/engine-architecture.md を参照してください。
- プロバイダーの作成または検証時は、references/city-provider-contract.md を参照してください。
- GIS ソースをダウンロードまたは変換する前に、references/gis-ingestion.md を参照してください。
- 再現可能なローリーの概念実証については、references/raleigh-poc.md を参照してください。
- 信頼できるデータ契約として、templates/city-pack-manifest.schema.json と templates/world.schema.json を使用してください。
利用可能なスクリプト
このスキルに含まれるスクリプトは1つだけです。ほかに確認すべきスクリプトはありません。
| スクリプト | 用途 | 実行方法 |
|---|---|---|
scripts/validate-city-pack.py | シティパック用のオフライン検証ツールです。マニフェストをスキーマ契約に照らして確認し、ワールドタイルを検証します。マニフェストとタイルの出力後、エンジンで読み込む前のワークフロー手順5で実行してください。合格するまでエンジン内でのテストに進まないでください。 | python3 scripts/validate-city-pack.py path/to/city-pack |
前提条件
- 標準ライブラリのみを使う Python 3。検証ツールにサードパーティ製パッケージは必要ありません。
- 取り込みワークフローで作成されたシティパック。マニフェストと、ローカルのメートル単位に再投影されたワールドタイルが必要です(references/gis-ingestion.md を参照)。
- エンジン本体はスタンドアロンの HTML ファイル(
assets/ascii-city-engine.html)で、最新のブラウザーであれば実行できます。ビルド手順やサーバーは不要です。
制限事項
- v1 では
(x, y)列ごとに地面の高さを1つだけサポートします。屋内、下を通行できる橋、トンネル、複数階層のジオメトリには対応しません(サーフェスグラフは予約されていますが、未実装です)。 - エンジンはソフトウェアレンダリングによる CPU キャンバスです。WebGL/GPU レンダリングやモバイル操作には対応していません。
- このスキルにはフル解像度の GIS アーカイブは含まれません。小規模で再配布可能なサンプルのみをコミットし、公開ソースから再現可能な方法でパックを構築します。
- 検証ツールはオフラインで構造のみを検証します。検証に合格しても、エンジン内で人が移動テストを行う代わりにはなりません(ワークフロー手順6)。
対象範囲
WebGL/GPU レンダリング、モバイル操作、戦闘、屋内、下を通行できる橋、トンネル、または汎用的な地理空間分析には、別のスキルまたは実装方法を使用してください。このスキルを特定のエージェントランタイム向けに特化するよう求められた場合は、ポータブルなコアを維持し、ランタイムとの統合はこのスキルの外部に置いてください。大容量の GIS バイナリのコミットを求められた場合は拒否し、代わりに再現可能なダウンロード/変換コマンドを提示してください。
コメント
Markdown 対応