procedural-generation について
procedural-generation は、アルゴリズムで地形やレベルを作る OpenClaw スキルです。シードによる再現性を備え、ゲームプロジェクトで使うデータを出力できます。
主な機能
- 01ノイズ関数による2D/3D地形生成
- 02ルールベースのレベル生成
- 03カスタムシードによる再現
- 04マルチスレッド生成
- 05JSONとPNGへの出力
活用シーン
- 01ゲーム世界の地形の変化を作成
- 02洞窟やダンジョンの生成
- 03コマンドラインでレベルを試作
- 04高さマップやメッシュデータの出力
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill procedural-generationインストール後、Claude Code で/procedural-generationを入力して読み込まれたか確認します。
詳細
目的
このスキルを使うと、OpenClaw はパーリンノイズやルールベースのシステムなどのアルゴリズムを用いて、地形やレベルなどのゲームコンテンツをプログラムで生成できるため、手作業での設計負担を軽減できます。
使用するタイミング
ローグライクのプロシージャルワールドやエンドレスランナーなど、変化に富んだコンテンツが重要なゲームで使用します。また、リソースに制約のあるプロジェクトで、リプレイ性やアセット効率を高めたい場合にも使用します。
主な機能
- パーリンノイズやシンプレックスノイズなどのノイズ関数を使用して、スケール、オクターブ数、持続性のパラメーターを指定し、2D/3D の地形を生成します。
- 洞窟生成にセル・オートマトンを、ダンジョン生成に二分空間分割を使用するなど、ルールベースのアルゴリズムでレベルを作成します。
- 再現可能な出力を得るためのカスタムシード値に対応し、Unity や Godot などのゲームエンジンと連携できます。
- リアルタイムアプリケーションで高いパフォーマンスを実現するため、マルチスレッド生成に対応します。
- メッシュ用の JSON やハイトマップ用の PNG などの形式で結果をエクスポートします。
使用パターン
一貫性を保つため、必ずシードを初期化に使用します。素早いプロトタイピングには CLI を、統合には API を使用します。デフォルト値が使われないよう、正確なパラメーターを指定してください。
例 1:ゲームワールド用のパーリン地形を生成する:
- CLI コマンド:
openclaw generate terrain --noise perlin --seed 42 --width 256 --height 256 --output terrain.json - コード(Python):
import openclaw; terrain_data = openclaw.api.generate_terrain({'noise': 'perlin', 'seed': 42, 'width': 256})
例 2:ルールを使ってプロシージャルレベルを作成する:
- CLI コマンド:
openclaw generate level --rules '{"min_rooms": 5, "max_rooms": 10}' --seed 123 --output level.yaml - コード(JavaScript):
const openclaw = require('openclaw'); const level = openclaw.api.generate_level({rules: {min_rooms: 5}, seed: 123});
コマンドを連結するなど、次のパターンに従ってください。たとえば、生成してから検証するには、次のようにします:openclaw generate terrain ... && openclaw validate output.json。
よく使うコマンド/API
OpenClaw CLI または REST API を使用します。認証には $OPENCLAW_API_KEY 環境変数を使用します。
-
CLI コマンド:
openclaw generate terrain [flags]:--noise [type](例:perlin)、--seed [int]、--scale [float]などのフラグを指定します。例:openclaw generate terrain --noise perlin --seed 42。openclaw generate level [flags]:--rules [JSON string]などのフラグを指定します。例:openclaw generate level --rules '{"type": "dungeon"}'。openclaw validate [file]:生成された出力を検査します。例:openclaw validate terrain.json --check integrity。
-
API エンドポイント:
- POST /api/procedural/generate:JSON をリクエストボディに指定します。例:
{"type": "terrain", "params": {"noise": "perlin", "seed": 42}}。ヘッダーAuthorization: Bearer $OPENCLAW_API_KEYが必要です。 - GET /api/procedural/status:ジョブのステータスを確認します。例:認証ヘッダーを付けて
GET /api/procedural/status?job_id=123を実行します。
- POST /api/procedural/generate:JSON をリクエストボディに指定します。例:
設定形式:API のリクエストボディには JSON を使用します。例:{"noise": "perlin", "octaves": 4}。CLI では、フラグまたはファイルで渡します。たとえば、config.json の内容が {"seed": 42} の場合は --config config.json と指定します。
統合に関する注意事項
呼び出しの前に、環境内で $OPENCLAW_API_KEY を設定してください。OpenClaw SDK をインポートして非同期関数を呼び出し、ゲームループに統合します。Unity では C# ラッパーを使用します:OpenClawAPI.GenerateTerrain(new Dictionary<string, object> { {"noise", "perlin"} });。Godot では、スクリプトから呼び出します:var result = OpenClaw.generate_level({"rules": {"min_rooms": 5}})。SDK の設定で openclaw.config.log_level = 'debug' のように指定し、エラーログが有効になっていることを確認してください。
エラー処理
API/CLI 呼び出しは必ず try-catch ブロックで囲み、無効なパラメーターやネットワークの問題など、よくあるエラーを確認してください。
- CLI の場合:stdout からエラーを解析します。たとえば、
--noiseが無効な場合は「Error: Unknown noise type」が返されます。スクリプトで処理します:if [ $? -ne 0 ]; then echo "Generation failed"; fi。 - API の場合:HTTP エラーを捕捉します。たとえば Python では、
try: response = openclaw.api.generate_terrain({...}) except openclaw.APIError as e: print(e.code) # e.g. 400 for bad request。 - 特定のケース:seed が整数でない場合、API は 422 を返します。まず入力を検証します。たとえば、
if not isinstance(seed, int): raise ValueError("Seed must be an integer")。 - 一時的なエラーにはリトライを使用します。コードでは、
for attempt in range(3): try: openclaw.api.generate(...) except: time.sleep(1)。
グラフの関係
- 関連項目:level-design(統合されたレベル構築のために game-dev クラスターを共有)、asset-creation(生成したコンテンツを入力として使用)。
- 依存項目:noise-libraries(基盤となるノイズ関数のため)、game-engines(統合用フックのため)。