I’ve been working on writing build graph for our project and I have some questions regarding hidden/undocumented properties in build graph.
I have found $(Branch), $(EscapedBranch), $(CodeChange) and $(Change), but is there any actual way of figuring our what properties we have to work with?
There are people online talking about the <StringOp …> node that also can be used but is not documented.
These have been super useful so it would be nice to know all the properties that are built in.
Is there any plan of documenting these so that it’s more convienient to learn and use?
I can’t speak to plans to document them, but I can at least point you to BgScriptReader.cs as the location where you can find the code that referrences all of the BuildGraph nodes, including the ones that aren’t documented.
The “built-in” variables that are setup are setup in BuildGraph.cs in the ExecuteAsync() function.
Unfortunately, BgScriptReader does not appear to be scanned as part of the automatic documentation process, like all the *Task.cs files, particularly in Engine\Source\Programs\AutomationTool\BuildGraph\… but that entire tree is very good reading for finding features that aren’t obvious!
… oh, just found the “Contains” and “ContainsItem” conditions hiding over in BgCondition.cs .. that’s fun There’s also the mostly undocumented Macro functionality that is really nice to use too, you can search around in Epic’s buildgraphs for <Macro, <Expand, and <Extend to see some examples of how that works