Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Play Command & Conquer Red Alert RTS — build bases, train armies, and defeat AI opponents using 48 MCP tools.
Play Command & Conquer Red Alert RTS — build bases, train armies, and defeat AI opponents using 48 MCP tools.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
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.
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.
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.
pip install openra-rl
openra-rl server start This pulls the Docker image and starts the game server on port 8000. Verify with openra-rl server status.
Add to your OpenClaw config (~/.openclaw/openclaw.json): { "mcpServers": { "openra-rl": { "command": "openra-rl", "args": ["mcp-server"] } } }
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.
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).
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
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
ToolPurposeadvance(ticks)Critical — advances the game by N ticks. Nothing happens without this. Use 25 ticks ≈ 1 second, 250 ticks ≈ 10 seconds.
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
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
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
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
ToolPurposebatch(actions)Execute multiple actions in ONE tick (no time advance)plan(steps)Execute steps sequentially with state refresh between each
ToolPurposesurrender()Give up the current gameget_replay_path()Path to the replay fileget_terrain_at(cell_x, cell_y)Terrain type at a cell
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
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
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.
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
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
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
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
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".
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.
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
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
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.