Getting started in Modding for Command and Conquer games.

Information and discussion for custom maps and mods.
Post Reply
Posts: 3
Joined: Wed Aug 05, 2015 8:08 pm

Getting started in Modding for Command and Conquer games.

Post by nt000 »

Hello everyone!

I recently registered and I was wondering if their are any specific resources that I should read or watch that concerns the modification of the command and conquer video games.

Anything would be grateful!


Posts: 405
Joined: Mon Aug 18, 2014 6:00 pm

Post by abcdefg30 »

Hi nt,

welcome to openra. :)

You can watch the development process and access the source code/yaml of the default mods on the github repository:

If you want to mod, you probably also want to have a look at the wiki pages:

Posts: 3
Joined: Wed Aug 05, 2015 8:08 pm

Post by nt000 »

Hey! Thanks a bunch brother!

User avatar
Graion Dilach
Posts: 275
Joined: Fri May 15, 2015 5:57 pm

Post by Graion Dilach »

Keep in mind that modding OpenRA is not equal to modding a traditional C&C game at all.

As modding tools, while OpenRA.Utility works, it's performance is inferior and not exactly modder-friendly, I suggest you to XCC Mixer.

If you want to work with voxels as well, Voxel Section Editor III - or commonly VXLSE is the way to go, along with it's companion, HVA Builder (yea, I know, I'm linking beta builds of these latter two but they work fine).

There's also SHP Builder for quick'n'dirty edits - this is also the tool used at some of the old OpenRA modding tutorials involving assets on the wiki.

Also feel free to ask if you're stuck - there probably will be people around to help you in any way.
AS Discord server:

User avatar
Posts: 117
Joined: Mon Mar 30, 2015 10:39 am

Post by raymundo »

Welcome ! As said above read through the wikis and such before doing anything else. I am still t a very basic level of modding but the way I learned was to take a mod map, look at .yaml file and see how the rules affect the game, what is changed, etc. To view the /yaml take a .oramap and extract using an archive program, I run OS X and use Archive Utility. Once you extract there should be at least 2 files, a .bin which is the map layout and tiles, and a .yaml which controls actors and rules of the map.

This next tip I find is good for understanding the game balance as well. Go into the package contents of the openra game and look for the .yamls of rules, defaults, weapons, vehicles etc. In those you will find the actual numbers and modifiers which give units their stats abilities, etc. You can compare stats of units and buildings to see which is actually stronger/faster etc.

Note that in the files these must be indented correctly to be understood by the game, I just pasted here out of convenience


ReloadDelay: 90 (decrease to shoot faster)
Range: 4c768
Burst: 2 (how many shots)
InvalidTargets: Air, Infantry
Projectile: Bullet
Speed: 682
Image: 120MM
Warhead@1Dam: SpreadDamage
Spread: 128
Damage: 60 (base damage of weapon)
InvalidTargets: Air, Infantry
None: 20 (strength against armor types)
Wood: 75
Light: 75
Concrete: 50
DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
Warhead@2Smu: LeaveSmudge
SmudgeType: Crater
Warhead@3EffGround: CreateEffect
Explosion: small_explosion
ImpactSound: kaboom12.aud
InvalidImpactTypes: Water
Warhead@4EffWater: CreateEffect
Explosion: small_splash
ImpactSound: splash9.aud
ValidImpactTypes: Water

This is the yaml code for a "120mm cannon" . You can see I put some comments in parenthesis that aren't part of the actual game files. If you increase the amounts under Versus (none, wood, light) the weapon will do more damage targets of those armor types. This is the mammoth tanks weapon I believe, but you could edit the rules of the light tank to have it use this weapon. Put under light tanks weapon, 120mm cannon and it will now use this instead.

Lets look at light tank:

Inherits: ^Tank
Queue: Vehicle
BuildPaletteOrder: 50
Prerequisites: ~vehicles.allies, ~techlevel.low
Cost: 700
Name: Light Tank
Description: Light Tank, good for scouting.\n Strong vs Light Vehicles\n Weak vs Tanks, Aircraft
HP: 220
Type: Heavy
Speed: 128
Crushes: wall, mine, crate, infantry
Range: 4c0
ROT: 5
Weapon: 25mm (Change this to "120mm" )
Recoil: 85
RecoilRecovery: 25
LocalOffset: 768,0,90
MuzzleSequence: muzzle
Weapon: UnitExplodeSmall
EmptyWeapon: UnitExplodeSmall
HuskActor: 1TNK.Husk

You can see it has the 25 mm cannon, in that area change that to 120mm cannon and you now have a more powerful light tank! Decrease its speed and it won't be moving very fast though.

All these things with " : " next to it (ex. WithMuzzleFlash:) are traits, go to and learn what modifiers you can use to customize each trait, see which are required, etc.

I am new to this myself so others please correct me if I am wrong about anything.

Edit: keep in mind sometimes things aren't so simple and if you add something to a unit there's a possibility it needs another trait. Very important: always test one new at a time to eliminate variables!

Posts: 1086
Joined: Wed Dec 10, 2014 11:59 am

Post by noobmapmaker »

Thanks for the posts, they're usefull!
Playlist with ALL games of the Dark Tournament
Consider supporting OpenRA by setting a bounty or by donating for a server

User avatar
Graion Dilach
Posts: 275
Joined: Fri May 15, 2015 5:57 pm

Post by Graion Dilach »

@raymundo, there is an actual way to place a comment in yaml, use the # mark, e.g.

Code: Select all

	Inherits: ^Harvester
		Prerequisites: ~narefn
		IconPalette: harvicon
		Cost: 1400
		Name: War Miner
		VoiceSet: WarMinerVoice
		Capacity: 10
		DeliverVoice: Move
	# AI uses harvesters offensively, yay, must be unarmed for now
	#	Weapon: HarvesterGun
	#	LocalOffset: 0,50,384, 0,-50,384
	#	UpgradeTypes: eliteweapon
	#	UpgradeMaxEnabledLevel: 0
	#	UpgradeMaxAcceptedLevel: 1
	#	Weapon: HarvesterGunE
	#	LocalOffset: 0,50,384, 0,-50,384
	#	UpgradeTypes: eliteweapon
	#	UpgradeMinEnabledLevel: 1
		ROT: 10
		Offset: -80,0,0
		HuskActor: harv.Husk
	UpgradeActorsNear:	#temp 'til harvs can actually be armed
		Upgrades: warminer
		Range: 5c0
		ValidStances: Neutral, Enemy
Although OpenRA.Utility's --upgrade command cleans the comments.
AS Discord server:

Post Reply