game-physics について
game-physics はゲーム開発向けの物理シミュレーションスキルで、2D・3D シーンの衝突検出、剛体力学、力の適用に対応します。OpenClaw のコマンドラインまたは API から呼び出せ、シミュレーション制御やシーンの最適化も行えます。
主な機能
- 01AABB、OBB、球体の衝突検出
- 02剛体力学のシミュレーション
- 03重力、インパルス、摩擦の処理
- 04一時停止、ステップ、リセット、時間倍率
- 05空間分割による計算の最適化
活用シーン
- 01弾むボールなどの動きのシミュレーション
- 02プラットフォーマーでのプレイヤーと壁の衝突検出
- 03大規模シーンでの物理計算量の削減
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill game-physicsインストール後、Claude Code で/game-physicsを入力して読み込まれたか確認します。
詳細
game-physics
目的
このスキルはゲーム向けの物理シミュレーションを扱い、衝突検出、剛体力学、力の適用といった中核的な仕組みに重点を置いています。ゲームエンジンと連携して現実的な相互作用をシミュレートし、2D/3D 環境で正確な物理挙動を実現します。
使用するタイミング
プラットフォーマー、シミュレーション、マルチプレイヤーのワールドなど、物理演算が必要なゲームを開発するときにこのスキルを使用します。オブジェクトの相互作用(例:ボールの跳ね返り、キャラクターの移動)、パフォーマンスが重要なシミュレーション、Unity や Godot などの既存のゲームエンジンの拡張を伴う場面に適用してください。ゲーム以外のアプリケーションや単純なアニメーションには使用しないでください。
主な機能
- 衝突検出:AABB、OBB、球ベースの判定に対応し、正確な交差判定には SAT などのアルゴリズムを使用します。
- 剛体力学:速度、加速度、トルクをシミュレートし、力の適用にはニュートンの運動法則を組み込みます。
- 力の処理:力積、重力、摩擦を適用します。ベクトル入力(例:[x, y, z] の力)で設定できます。
- シミュレーション制御:シミュレーションの一時停止、ステップ実行、リセットができます。スローモーション効果のための時間スケーリングにも対応します。
- 最適化:空間分割(例:四分木)を使用して、大規模なシーンでの計算量を削減します。
使用パターン
モジュール式に統合するには、OpenClaw の CLI または API を通じてこのスキルを呼び出します。まずシーン設定を読み込み、その後ループ内でシミュレーションを実行します。CLI ではファイルから入力をパイプし、API では JSON ペイロードを使用します。環境内で $OPENCLAW_API_KEY を設定し、必ず認証を構成してください。使用パターンの例:設定の読み込み → シミュレーションの初期化 → 更新ループ → 結果の出力。
主なコマンド/API
操作には、次の CLI コマンドまたは API エンドポイントを使用します。すべてのコマンドで $OPENCLAW_API_KEY による認証が必要です。
-
CLI コマンド:
openclaw game-physics simulate --file scene.json --steps 100 --gravity 9.8- フラグ:JSON 設定用の
--file(例:{"objects": [{"mass": 1.0, "position": [0,0,0]}]})、シミュレーションの反復回数用の--steps、ベクトル [x,y,z] 用の--gravity。 - 例:
export OPENCLAW_API_KEY=your_key; openclaw game-physics simulate --file input.jsonを実行します。
- フラグ:JSON 設定用の
-
API エンドポイント:POST /api/game-physics/simulate
- ペイロード:{"scene": {"objects": [{"id": "ball", "mass": 2.0, "velocity": [1,0,0]}]}, "steps": 50} のような JSON
- ヘッダー:
Authorization: Bearer $OPENCLAW_API_KEYを含めます。 - レスポンス:結果を含む JSON。例:{"positions": [{"id": "ball", "newPosition": [5,0,0]}]}
-
コードスニペット(Python CLI ラッパー):
import os import subprocess api_key = os.environ.get('OPENCLAW_API_KEY') subprocess.run(['openclaw', 'game-physics', 'simulate', '--file', 'scene.json', '--steps', '10']) -
コードスニペット(requests を使った API 呼び出し):
import requests headers = {'Authorization': f'Bearer {os.environ.get("OPENCLAW_API_KEY")}'} data = {'scene': {'objects': [{'mass': 1.0, 'position': [0,0,0]}]}, 'steps': 20} response = requests.post('https://api.openclaw.ai/api/game-physics/simulate', json=data, headers=headers)
設定形式:シーンには JSON を使用します。例:{"objects": [{"id": "obj1", "shape": "sphere", "radius": 1.0, "mass": 5.0, "position": [0,0,0]}]}。スキーマで検証してください。objects には "id"、"shape"、物理プロパティが必要です。
統合に関する注意
ゲームループ内でこのスキルをラップして統合します。ユーザー入力後、または一定間隔で simulate を呼び出してください。ゲームエンジンでは、レンダリング用に結果をベクトルとしてエクスポートします。カスタムコールバックにはフックを使用します。たとえば、CLI で --callback-url を指定します。他の OpenClaw スキルと併用する場合は、出力を連結します(例:シミュレーション結果をレンダリングスキルに渡します)。データ形式を一致させて互換性を確保してください。物理演算の出力は標準配列 [x,y,z] です。非同期処理には、Webhook を使った API を使用します。
エラー処理
よくあるエラーには、無効な設定(例:"mass" フィールドの欠落)、認証エラー、シミュレーションのオーバーフローがあります。次のように処理します。
- コマンドの前に
$OPENCLAW_API_KEYを確認し、設定されていない場合はエラーにします。 - jsonschema などのライブラリを使って JSON スキーマを検証します。例:レスポンスのステータスが 400 の場合、"Missing field: mass" のようなエラーメッセージを解析します。
- コードスニペット(Python でのエラー処理):
try: result = subprocess.run(['openclaw', 'game-physics', 'simulate', '--file', 'invalid.json'], check=True) except subprocess.CalledProcessError as e: print(f"Error: {e.returncode} - {e.stderr.decode()}") - API の場合:HTTP エラー(例:認証に関する 401)を捕捉し、指数バックオフで再試行します。CLI では
--debugフラグを使って詳細なエラーを記録します。
具体的な使用例
-
跳ねるボールをシミュレートする: シンプルな物理デモに使用します。コマンド:
openclaw game-physics simulate --file ball.json --steps 50 --gravity [0,-9.8,0]。コードでは、{"objects": [{"id": "ball", "shape": "sphere", "position": [0,10,0], "velocity": [5,0,0], "bounciness": 0.8}]} を使って "ball.json" を読み込み、その後、各フレームでゲーム内の位置を更新するために適用します。 -
ゲームレベルでの衝突検出: プラットフォーマーで衝突を検出します。API 呼び出し:POST /api/game-physics/simulate に {"scene": {"objects": [{"id": "player", "position": [1,2,0]}, {"id": "wall", "shape": "box", "position": [0,0,0]}]}, "steps": 1} を送信します。レスポンスを処理して衝突を確認し、それに応じてプレイヤーの移動を調整します。
グラフの関係
- 関連クラスター:game-dev(例:レンダリングや AI のスキルとデータを共有します)。
- 関連スキル:rendering(可視化用の位置を出力します)、pathfinding(動的な環境で物理を使用します)。
- 依存関係:認証には OpenClaw のコアサービスが必要です。ゲーム以外のクラスターへの直接的なエッジはありません。