mcpField
P
procedural-generation

procedural-generation

github.com/alphaonedev開発47 回インストール
リポジトリ

procedural-generation について

procedural-generation は、アルゴリズムで地形やレベルを作る OpenClaw スキルです。シードによる再現性を備え、ゲームプロジェクトで使うデータを出力できます。

主な機能

  1. 01ノイズ関数による2D/3D地形生成
  2. 02ルールベースのレベル生成
  3. 03カスタムシードによる再現
  4. 04マルチスレッド生成
  5. 05JSONとPNGへの出力

活用シーン

  1. 01ゲーム世界の地形の変化を作成
  2. 02洞窟やダンジョンの生成
  3. 03コマンドラインでレベルを試作
  4. 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 を実行します。

設定形式: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(統合用フックのため)。

コメント