game-physics
Handles physics simulations in games, including collision detection, rigid body dynamics, and force applications.
What this skill does
# game-physics
## Purpose
This skill handles physics simulations for games, focusing on core mechanics like collision detection, rigid body dynamics, and force applications. It integrates with game engines to simulate realistic interactions, ensuring accurate physics behavior in 2D/3D environments.
## When to Use
Use this skill when developing games that require physics, such as platformers, simulations, or multiplayer worlds. Apply it for scenarios involving object interactions (e.g., ball bouncing, character movement), performance-critical simulations, or when extending existing game engines like Unity or Godot. Avoid it for non-game applications or simple animations.
## Key Capabilities
- Collision detection: Supports AABB, OBB, and sphere-based checks; uses algorithms like SAT for precise intersections.
- Rigid body dynamics: Simulates velocity, acceleration, and torque; integrates with Newton's laws for force applications.
- Force handling: Applies impulses, gravity, and friction; configurable via vector inputs (e.g., [x, y, z] forces).
- Simulation control: Pauses, steps, or resets simulations; handles time scaling for slow-motion effects.
- Optimization: Uses spatial partitioning (e.g., quadtrees) to reduce computation in large scenes.
## Usage Patterns
Invoke this skill via OpenClaw's CLI or API for modular integration. Start by loading a scene configuration, then run simulations in a loop. For CLI, pipe inputs from files; for API, use JSON payloads. Always set up authentication with `$OPENCLAW_API_KEY` in your environment. Example pattern: Load config → Initialize simulation → Update loop → Output results.
## Common Commands/API
Use the following CLI commands or API endpoints for interactions. All commands require authentication via `$OPENCLAW_API_KEY`.
- CLI Command: `openclaw game-physics simulate --file scene.json --steps 100 --gravity 9.8`
- Flags: `--file` for JSON config (e.g., {"objects": [{"mass": 1.0, "position": [0,0,0]}]}), `--steps` for simulation iterations, `--gravity` for vector [x,y,z].
- Example: Run with `export OPENCLAW_API_KEY=your_key; openclaw game-physics simulate --file input.json`.
- API Endpoint: POST /api/game-physics/simulate
- Payload: JSON like {"scene": {"objects": [{"id": "ball", "mass": 2.0, "velocity": [1,0,0]}]}, "steps": 50}
- Headers: Include `Authorization: Bearer $OPENCLAW_API_KEY`
- Response: JSON with results, e.g., {"positions": [{"id": "ball", "newPosition": [5,0,0]}]}
- Code Snippet (Python CLI wrapper):
```
import os
import subprocess
api_key = os.environ.get('OPENCLAW_API_KEY')
subprocess.run(['openclaw', 'game-physics', 'simulate', '--file', 'scene.json', '--steps', '10'])
```
- Code Snippet (API call with requests):
```
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)
```
Config formats: Use JSON for scenes, e.g., {"objects": [{"id": "obj1", "shape": "sphere", "radius": 1.0, "mass": 5.0, "position": [0,0,0]}]}. Validate with schema: objects must have "id", "shape", and physics properties.
## Integration Notes
Integrate by wrapping the skill in your game loop: Call simulate after user inputs or at fixed intervals. For game engines, export results as vectors for rendering. Use hooks for custom callbacks, e.g., via `--callback-url` in CLI. If using with other OpenClaw skills, chain outputs (e.g., pass simulation results to a rendering skill). Ensure compatibility by matching data formats; physics outputs are in standard arrays [x,y,z]. For async operations, use API with webhooks.
## Error Handling
Common errors include invalid configs (e.g., missing "mass" field), authentication failures, or simulation overflows. Handle with:
- Check `$OPENCLAW_API_KEY` before commands; error if unset.
- Validate JSON schemas using a library like jsonschema; example: If response status is 400, parse error message like "Missing field: mass".
- Code Snippet (Error handling in 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()}")
```
- For API: Catch HTTP errors (e.g., 401 for auth issues) and retry with exponential backoff. Log detailed errors with `--debug` flag in CLI.
## Concrete Usage Examples
1. **Simulate a bouncing ball:** Use for a simple physics demo. Command: `openclaw game-physics simulate --file ball.json --steps 50 --gravity [0,-9.8,0]`. In code: Load "ball.json" with {"objects": [{"id": "ball", "shape": "sphere", "position": [0,10,0], "velocity": [5,0,0], "bounciness": 0.8}]}, then apply to update game positions every frame.
2. **Collision detection in a game level:** For a platformer, detect hits. API call: POST /api/game-physics/simulate with {"scene": {"objects": [{"id": "player", "position": [1,2,0]}, {"id": "wall", "shape": "box", "position": [0,0,0]}]}, "steps": 1}. Process response to check for collisions and adjust player movement accordingly.
## Graph Relationships
- Related to cluster: game-dev (e.g., shares data with rendering or AI skills).
- Connected skills: rendering (outputs positions for visualization), pathfinding (uses physics for dynamic environments).
- Dependencies: Requires core OpenClaw services for authentication; no direct edges to non-game clusters.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.