Modding Guide
OpenRA is designed to be highly moddable. Both RA and C&C are implemented as mods on top of the core engine, and other mods can choose to use as much or as little of that functionality as they like. At the simplest, a mod may just contain some custom MiniYaml definitions. More complex mods may need to introduce some custom traits, which are written in a .NET language (we prefer C#) and compiled into a DLL. At the most complex end of the spectrum, it is possible to use the engine without any of the RA behavior, although this involves an incredible amount of work (reinventing combat, production, resource management etc).
Read the Trait Documentation to see what game rules are available and how they work.
Get started with a fresh mod template by downloading the Mod SDK and following the getting started guide to create a copy of one of the default mods. Use the scripts in the SDK to launch your mod, OpenRA.Utility, or the dedicated server.
Each mod has a directory inside the mods
directory in the SDK (or game) root. It is the name of this directory which is used when naming mods to load. Everything related to a particular mod is contained within this directory (with the possible exception of user maps, which can be loaded from other locations too.)
The only file which is absolutely required for a mod is mod.yaml
. This contains the manifest for the mod, which the engine will use to load all the other pieces you need. By convention, other things are placed in subdirectories of the mod directory:
-
rules
contains MiniYaml files describing how to assemble actors (units/buildings/etc) -
maps
contains maps. -
tilesets
contains MiniYaml files describing the various tilesets -- temperate, snow, etc. -
chrome
contains MiniYaml files describing the UI chrome -
uibits
contains various textures used by the chrome -
bits
contains various loose in-game assets -- SHPs, etc.
Nothing forces you to lay out a mod this way, but it's easier if everything is consistent.
Players ๐ฒ
- FAQ โ
- Installation ๐ฆ
- Game Content ๐ฟ
- Hotkeys and Stances ๐ฎ
- Strategies ๐
- Settings ๐ง
- Dedicated Server โพ
- RaspberryPi ๐
- Badges & Icons ๐ฅ
- Changelog ๐
Modders โ๏ธ
- Audio guide ๐
- Traits ๐
- Palettes and Remaps ๐จ
- World Coordinate System ๐
- Map scripting
- Lua-API ๐
- Conditions ๐
- Mapping ๐ง
- Pixelart ๐
Developers ๐ง
- Contributing โค๏ธ
- Compiling
- Hacking
- Coding Standard ๐
- Branches and Releases ๐
- Release Checklist โ
- Sequences
- Glossary
- Reverse engineering ๐
- License ยฉ๏ธ