[Solved] - OpenRA GameEngine - What is the exact MiniYAML hierachy?

Information and discussion for custom maps and mods.
Post Reply
Ronald
Posts: 192
Joined: Fri Aug 30, 2019 9:05 pm

[Solved] - OpenRA GameEngine - What is the exact MiniYAML hierachy?

Post by Ronald »

Hello All, I'm currently busy digging my way through the contents of:
1. Github - OpenRA Wiki - "Modding" section
- https://github.com/OpenRA/OpenRA/wiki

2. The OpenRA Book:
- https://www.openra.net/book/index.html

GOAL: To create a hierarchical tree of all (relevant) mini-yaml files which are used by:
- The OpenRA GameEngine (internally)
- An (existing / new) OpenRa MOD (externally).

QUESTION: Which OpenRA mini-yaml file is read / parsed first when:
A - OpenRA GameEngine itself starts up as a executable program from the computer operating system?
B - A chosen MOD is loaded / opened by the OpenRA Game Engine


NOTE: For now I have the found the following "startup candidates":
A - Unknown
B - "C:\program files\OpenRa\MOD_ID\mod.yaml" (where MOD_ID can be "cnc", "d2k" or "ra")
Since the OpenRA Wiki states that this is only mandatory file needed to create a mod.

But so far I have not found any official documentation on this matter.

Ronald
Posts: 192
Joined: Fri Aug 30, 2019 9:05 pm

Re: [Solved] - OpenRA GameEngine - What is the exact MiniYAML hierachy?

Post by Ronald »

In order to find the question to my own answer, this what I have done:
1. I downloaded the "Windows Internals Suite" - created by the famous Mark Russinovich.
- https://docs.microsoft.com/en-us/sysinternals/
..
2. I started up OpenRA and switch it into [Windowed-Mode] with a resolution 800 x600 pixels.
3. I closed OpenRA again.
..
4. I started up the Windows Internals tool called "Process Monitor 64-bits" (ProcMon64.exe)
- https://docs.microsoft.com/en-us/sysint ... ds/procmon

5. I started ProcMon64 file_IO_traffic capture ability
..
6. I started OpenRa and entered a Skirmish game.
7. I only deployed the MCV and then left the Skirmish game again.
8. I closed OpenRA again.
..
9. I saved the file_IO capture results on my harddisk in .CSV file format.
10. I filtered out the Capture result with the following parameters:
RedAlertEXE_FileIO_Capture_Filte_Settings_08_09_2020.jpg
RedAlertEXE_FileIO_Capture_Filte_Settings_08_09_2020.jpg (73.59 KiB) Viewed 545 times
11. And that is how I found my own answer (see image below):
RedAlertEXE_FileIO_TraceDump_08_09_2020.jpg
RedAlertEXE_FileIO_TraceDump_08_09_2020.jpg (198.54 KiB) Viewed 545 times
SETTINGS.YAML is the first mini-yaml which is opened when starting OpenRA

Ronald
Posts: 192
Joined: Fri Aug 30, 2019 9:05 pm

Re: [Solved] - OpenRA GameEngine - What is the exact MiniYAML hierachy?

Post by Ronald »

Final Update in this topic for everyone to read and enjoy:

I've done a full - Windows 10 operating system level - file_io trace when playing
- Red Alert MOD
- Skirmish game
- Against 1 RUSH AI_Bot
- On the map WarWind.

See the attached PDF file (7 pages, Landscape A4 formatted, 68kb size) in the attachment
to get an overview on how and when the OpenRA GameEngine reads which mini-yaml files for
- its own OpenRA GameEngine internal settings.
- the settings and rules from the Selected mod (Red Alert).

REMARK
I was not (yet) able to decode/decypher every single file_io traceline, but this PDF document gives a nice overview,
to continue to dig deeper into the OpenRA GameEngine internals. I hope you will enjoy it.
..
..

VonBruinwald
Posts: 9
Joined: Wed Jun 10, 2020 4:34 pm

Re: [Solved] - OpenRA GameEngine - What is the exact MiniYAML hierachy?

Post by VonBruinwald »

Good Work.

Not sure if you noticed but yamls are loaded sequentially as ordered in the mod.yaml.

So for example rules are loaded in the following order:

1st ra|rules/misc.yaml
ra|rules/ai.yaml
ra|rules/player.yaml
ra|rules/palettes.yaml
ra|rules/world.yaml
ra|rules/defaults.yaml
ra|rules/vehicles.yaml
ra|rules/husks.yaml
ra|rules/structures.yaml
ra|rules/infantry.yaml
ra|rules/civilian.yaml
ra|rules/decoration.yaml
ra|rules/aircraft.yaml
ra|rules/ships.yaml
Last ra|rules/fakes.yaml

As it's loaded sequentially you can actually overwrite/append pre-existing data by placing your modifications in .yamls at the bottom of the list (this is actually the basis of how my teamturkey mod functions).

Same thing applies to .mix files and I suspect everything else included.

Ronald
Posts: 192
Joined: Fri Aug 30, 2019 9:05 pm

Re: [Solved] - OpenRA GameEngine - What is the exact MiniYAML hierachy?

Post by Ronald »

VonBruinwald wrote:
Sun Sep 13, 2020 7:31 pm
Good Work.
@VonBruinwald: Thanks for the compliments
VonBruinwald wrote:
Sun Sep 13, 2020 7:31 pm
Not sure if you noticed but yamls are loaded sequentially as ordered in the mod.yaml.
So for example rules are loaded in the following order:
1st ra|rules/misc.yaml
ra|rules/ai.yaml
ra|rules/player.yaml
ra|rules/palettes.yaml
ra|rules/world.yaml
ra|rules/defaults.yaml
ra|rules/vehicles.yaml
ra|rules/husks.yaml
ra|rules/structures.yaml
ra|rules/infantry.yaml
ra|rules/civilian.yaml
ra|rules/decoration.yaml
ra|rules/aircraft.yaml
ra|rules/ships.yaml
Last ra|rules/fakes.yaml
Yes I noticed that already effect via the ProcMon64 file_io output.
VonBruinwald wrote:
Sun Sep 13, 2020 7:31 pm
As it's loaded sequentially you can actually overwrite/append pre-existing data by placing your modifications in .yamls at the bottom of the list (this is actually the basis of how my teamturkey mod functions).
That looks great your TeamTurkey mod :-)
VonBruinwald wrote:
Sun Sep 13, 2020 7:31 pm
Same thing applies to .mix files and I suspect everything else included.
Thanks for the heads-up VonBruinwald, since i've not gotten beyond the miniyaml configuration file area yet.

Post Reply