← 返回
开发者工具 中文

OpenRA-RL

Play Command & Conquer Red Alert RTS — build bases, train armies, and defeat AI opponents using 48 MCP tools.
游玩《命令与征服:红色警戒》即时战略游戏——利用48个MCP工具建造基地、训练军队并击败AI对手。
yxc20089
开发者工具 clawhub v1.1.0 1 版本 99730.7 Key: 无需
★ 1
Stars
📥 1,091
下载
💾 15
安装
1
版本
#latest

概述

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.

Quick Start

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).

MCP Tools Reference

Observation (read the battlefield)

ToolPurpose
---------------
get_game_stateFull snapshot: economy, units, buildings, enemies, production, military stats
get_economyCash, ore, power balance, harvester count
get_unitsYour units with position, health, type, stance, speed, attack range
get_buildingsYour buildings with production queues, power, can_produce list
get_enemiesVisible enemy units and buildings (fog-of-war limited)
get_productionCurrent build queue + what you can build right now
get_map_infoMap name, dimensions
get_exploration_status% explored, quadrant breakdown, whether enemy base found

Knowledge (learn the game)

ToolPurpose
---------------
lookup_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 faction
get_faction_briefing()Comprehensive stats dump for YOUR faction
get_map_analysis()Resource patches, water, terrain, strategic notes
batch_lookup(queries)Multiple lookups in one call

Game Control

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

Movement & Combat

ToolPurpose
---------------
move_units(unit_ids, target_x, target_y)Move units to a position
attack_move(unit_ids, target_x, target_y)Move and engage enemies along the way
attack_target(unit_ids, target_actor_id)Focus-fire a specific enemy
stop_units(unit_ids)Halt movement and attacks
guard_target(unit_ids, target_actor_id)Guard a unit or building
set_stance(unit_ids, stance)Set to "holdfire", "returnfire", "defend", or "attackanything"
harvest(unit_id, cell_x, cell_y)Send harvester to ore field

Production

ToolPurpose
---------------
build_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 building
cancel_production(item_type)Cancel queued production
get_valid_placements(building_type)Get valid locations to place a building

Building Management

ToolPurpose
---------------
deploy_unit(unit_id)Deploy MCV into Construction Yard
sell_building(building_id)Sell for partial refund
repair_building(building_id)Toggle auto-repair
set_rally_point(building_id, cell_x, cell_y)New units go here
power_down(building_id)Toggle power to save electricity
set_primary(building_id)Set as primary production building

Unit Groups

ToolPurpose
---------------
assign_group(group_name, unit_ids)Create a named group
add_to_group(group_name, unit_ids)Add units to existing group
get_groups()List all groups
command_group(group_name, command_type, ...)Command entire group

Compound Actions

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

Utility

ToolPurpose
---------------
surrender()Give up the current game
get_replay_path()Path to the replay file
get_terrain_at(cell_x, cell_y)Terrain type at a cell

Planning Phase (optional)

ToolPurpose
---------------
start_planning_phase()Begin pre-game strategy planning
get_opponent_intel()AI opponent profile and counters
end_planning_phase(strategy)Commit strategy and start playing
get_planning_status()Check planning state

How to Play (Strategy Guide)

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 CodeCostWhy
---------------------------------------
1Power Plantpowr$300Powers everything
2Barrackstent (Allied) or barr (Soviet)$300Infantry production
3Ore Refineryproc$2000Income + free harvester
4War 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:

UnitCodeCostRole
------------------------
Rifle Infantrye1$100Cheap, fast
Rocket Soldiere3$300Anti-armor
Medium Tank3tnk$800Main battle tank
Heavy Tank4tnk$950Soviet heavy armor
Light Tank1tnk$700Fast flanker
Artilleryarty$600Long range
V2 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

ProblemSolution
-------------------
Server 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 spots
No moneyBuild Ore Refinery (proc) for harvesters
Production slowCheck power with get_economy() — build Power Plants
Can'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

版本历史

共 1 个版本

  • v1.1.0 当前
    2026-03-29 10:46 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

developer-tools

Gog

steipete
Google Workspace 命令行工具,支持 Gmail、日历、云端硬盘、通讯录、表格和文档。
★ 921 📥 185,777
developer-tools

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 668 📥 324,051
developer-tools

Agent Browser

matrixy
专为AI智能体优化的无头浏览器自动化CLI,支持无障碍树快照和基于引用的元素选择。
★ 427 📥 118,151