# Send OpenRA-RL to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openra-rl",
    "name": "OpenRA-RL",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/yxc20089/openra-rl",
    "canonicalUrl": "https://clawhub.ai/yxc20089/openra-rl",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/openra-rl",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openra-rl",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "openra-rl",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-06T13:46:41.349Z",
      "expiresAt": "2026-05-13T13:46:41.349Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openra-rl",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openra-rl",
        "contentDisposition": "attachment; filename=\"openra-rl-1.1.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "openra-rl"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/openra-rl"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openra-rl",
    "downloadUrl": "https://openagent3.xyz/downloads/openra-rl",
    "agentUrl": "https://openagent3.xyz/skills/openra-rl/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openra-rl/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openra-rl/agent.md"
  }
}
```
## Documentation

### OpenRA-RL: Play Command & Conquer Red Alert

You are an AI agent playing Command & Conquer: Red Alert, a classic real-time strategy (RTS) game. You control one faction (Allied or Soviet) and must build a base, gather resources, train an army, and destroy the enemy.

The game runs in a Docker container. You interact through MCP tools that let you observe the battlefield, issue orders, and advance game time.

### 1. Install

pip install openra-rl

### 2. Start the game server

openra-rl server start

This pulls the Docker image and starts the game server on port 8000. Verify with openra-rl server status.

### 3. Configure MCP

Add to your OpenClaw config (~/.openclaw/openclaw.json):

{
  "mcpServers": {
    "openra-rl": {
      "command": "openra-rl",
      "args": ["mcp-server"]
    }
  }
}

### 4. Play

Tell your agent: "Start a game of Red Alert and try to win."

The agent will use the MCP tools listed below to observe and command.

### How the Game Works

Real-time: The game runs continuously at ~25 ticks/second. Call advance(ticks) to let time pass.
Fog of war: You can only see areas near your units/buildings. Scout to find the enemy.
Resources: Harvest ore to earn credits. Credits buy buildings and units.
Power: Buildings need power. Build Power Plants (powr) to stay powered. Low power slows production.
Tech tree: Advanced buildings require prerequisites (e.g., War Factory needs Ore Refinery).

### Observation (read the battlefield)

ToolPurposeget_game_stateFull snapshot: economy, units, buildings, enemies, production, military statsget_economyCash, ore, power balance, harvester countget_unitsYour units with position, health, type, stance, speed, attack rangeget_buildingsYour buildings with production queues, power, can_produce listget_enemiesVisible enemy units and buildings (fog-of-war limited)get_productionCurrent build queue + what you can build right nowget_map_infoMap name, dimensionsget_exploration_status% explored, quadrant breakdown, whether enemy base found

### Knowledge (learn the game)

ToolPurposelookup_unit(unit_type)Stats for a unit (e.g., lookup_unit("e1") → Rifle Infantry)lookup_building(building_type)Stats for a building (e.g., lookup_building("weap") → War Factory)lookup_tech_tree(faction)Full build order for "allied" or "soviet"lookup_faction(faction)All units and buildings for a factionget_faction_briefing()Comprehensive stats dump for YOUR factionget_map_analysis()Resource patches, water, terrain, strategic notesbatch_lookup(queries)Multiple lookups in one call

### Game Control

ToolPurposeadvance(ticks)Critical — advances the game by N ticks. Nothing happens without this. Use 25 ticks ≈ 1 second, 250 ticks ≈ 10 seconds.

### Movement & Combat

ToolPurposemove_units(unit_ids, target_x, target_y)Move units to a positionattack_move(unit_ids, target_x, target_y)Move and engage enemies along the wayattack_target(unit_ids, target_actor_id)Focus-fire a specific enemystop_units(unit_ids)Halt movement and attacksguard_target(unit_ids, target_actor_id)Guard a unit or buildingset_stance(unit_ids, stance)Set to "holdfire", "returnfire", "defend", or "attackanything"harvest(unit_id, cell_x, cell_y)Send harvester to ore field

### Production

ToolPurposebuild_unit(unit_type, count)Train units (e.g., build_unit("e1", 5) → 5 Rifle Infantry)build_structure(building_type)Start constructing a building (needs manual placement)build_and_place(building_type, cell_x, cell_y)Build + auto-place when done (preferred)place_building(building_type, cell_x, cell_y)Place a completed buildingcancel_production(item_type)Cancel queued productionget_valid_placements(building_type)Get valid locations to place a building

### Building Management

ToolPurposedeploy_unit(unit_id)Deploy MCV into Construction Yardsell_building(building_id)Sell for partial refundrepair_building(building_id)Toggle auto-repairset_rally_point(building_id, cell_x, cell_y)New units go herepower_down(building_id)Toggle power to save electricityset_primary(building_id)Set as primary production building

### Unit Groups

ToolPurposeassign_group(group_name, unit_ids)Create a named groupadd_to_group(group_name, unit_ids)Add units to existing groupget_groups()List all groupscommand_group(group_name, command_type, ...)Command entire group

### Compound Actions

ToolPurposebatch(actions)Execute multiple actions in ONE tick (no time advance)plan(steps)Execute steps sequentially with state refresh between each

### Utility

ToolPurposesurrender()Give up the current gameget_replay_path()Path to the replay fileget_terrain_at(cell_x, cell_y)Terrain type at a cell

### Planning Phase (optional)

ToolPurposestart_planning_phase()Begin pre-game strategy planningget_opponent_intel()AI opponent profile and countersend_planning_phase(strategy)Commit strategy and start playingget_planning_status()Check planning state

### Step 1: Deploy your MCV

At game start you have a Mobile Construction Vehicle (MCV). Deploy it to create your Construction Yard:

1. Call get_units() to find your MCV (type "mcv")
2. Call deploy_unit(mcv_actor_id)
3. Call advance(50) to let it deploy

### Step 2: Build your base

Follow this build order:

OrderBuildingType CodeCostWhy1Power Plantpowr$300Powers everything2Barrackstent (Allied) or barr (Soviet)$300Infantry production3Ore Refineryproc$2000Income + free harvester4War Factoryweap$2000Vehicle production (requires Refinery)5More Powerpowr$300Keep power positive

Use build_and_place() — it auto-places when construction finishes:

1. Call get_valid_placements("powr") to find a good spot
2. Call build_and_place("powr", cell_x, cell_y)
3. Call advance(250) to let it build (~10 seconds)
4. Check get_production() to confirm completion
5. Repeat for next building

Important: Your faction may be Allied OR Soviet. Check get_game_state() → faction field. Barracks type depends on faction.

### Step 3: Train your army

1. Call build_unit("e1", 5) for 5 Rifle Infantry ($100 each)
2. Call advance(100) to let them train
3. Once War Factory is ready: build_unit("3tnk", 3) for Medium Tanks ($800 each)
4. Set rally point near base exit: set_rally_point(barracks_id, x, y)

Key units by faction:

UnitCodeCostRoleRifle Infantrye1$100Cheap, fastRocket Soldiere3$300Anti-armorMedium Tank3tnk$800Main battle tankHeavy Tank4tnk$950Soviet heavy armorLight Tank1tnk$700Fast flankerArtilleryarty$600Long rangeV2 Launcherv2rl$700Soviet long range

### Step 4: Scout the map

Send a cheap unit to explore:

1. Train one Rifle Infantry
2. Call attack_move([unit_id], far_x, far_y) toward unexplored areas
3. Call advance(500) to let it travel
4. Call get_enemies() to see what you've found

### Step 5: Attack the enemy

Once you have 8-10 combat units:

1. Call get_enemies() to find enemy buildings
2. Call attack_move(all_unit_ids, enemy_base_x, enemy_base_y)
3. Call advance(100), check get_game_state() for battle progress
4. If enemies visible: attack_target(unit_ids, enemy_id) to focus fire
5. Keep producing reinforcements while attacking

### Step 6: Macro (ongoing economy)

Throughout the game:

Keep power positive (build Power Plants when needed)
Keep producing units — never let production idle
Build additional Ore Refineries for more income
Replace lost harvesters

### Game Loop Pattern

A good agent loop looks like this:

1. get_game_state() → read the situation
2. Decide what to do based on:
   - Economy: enough cash? Power positive?
   - Production: anything building? Queue empty?
   - Military: under attack? Ready to attack?
   - Exploration: enemy found yet?
3. Issue orders (build, move, attack)
4. advance(50-250) → let time pass
5. Repeat until game is won or lost

Check get_game_state() → done field. When true, result will be "win" or "loss".

### Tips

Always call advance() after issuing orders. Orders don't execute until game time passes.
Use batch() to issue multiple orders in one tick (e.g., build + move + set rally).
Check available_production before building — it lists what you CAN build right now.
Don't let production idle — keep queuing units. Idle production wastes time.
Build near your Construction Yard — buildings must be placed adjacent to existing structures.
Power matters — if power goes negative, production slows to a crawl.
Use attack_move instead of move when heading toward enemies — units will engage threats.
A completed building blocks the queue until placed. Always use build_and_place() to avoid this.

### Troubleshooting

ProblemSolutionServer not runningopenra-rl server start (needs Docker)Can't build anythingDeploy MCV first with deploy_unit()Building won't placeUse get_valid_placements() for valid spotsNo moneyBuild Ore Refinery (proc) for harvestersProduction slowCheck power with get_economy() — build Power PlantsCan't find enemyScout with attack_move to unexplored quadrants

### Links

GitHub: https://github.com/yxc20089/OpenRA-RL
PyPI: https://pypi.org/project/openra-rl/
Leaderboard: https://huggingface.co/spaces/yxc20089/OpenRA-Bench
Discord: https://discord.gg/openra-rl
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: yxc20089
- Version: 1.1.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-06T13:46:41.349Z
- Expires at: 2026-05-13T13:46:41.349Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/openra-rl)
- [Send to Agent page](https://openagent3.xyz/skills/openra-rl/agent)
- [JSON manifest](https://openagent3.xyz/skills/openra-rl/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/openra-rl/agent.md)
- [Download page](https://openagent3.xyz/downloads/openra-rl)