They provide a unique identification of one entry among many.
For example, you could have these two nodes in a blueprint:
- Code: Select all
<cSceneryRenderBlueprint-sProjectedLight d:id="68883312">
<blah>
...
</blah>
</cSceneryRenderBlueprint-sProjectedLight>
<cSceneryRenderBlueprint-sProjectedLight d:id="74569267">
<blah>
...
</blah>
</cSceneryRenderBlueprint-sProjectedLight>
So here this asset would have two different projected lights.
The id attribute, which is commonly used in XML processing, allows a program (like the TS game engine) to select one specific node out of several.
For the example above, if I want the first node, I would program a Xpath query that basically says "fetch me the "cSceneryRenderBlueprint-sProjectedLight" node whose id is '68883312".
It would look like this:
- Code: Select all
rootNode.SelectNodes("cSceneryRenderBlueprint-sProjectedLight [@d:id='68883312']");
And the result of this query would be:
- Code: Select all
<cSceneryRenderBlueprint-sProjectedLight d:id="68883312">
<blah>
...
</blah>
</cSceneryRenderBlueprint-sProjectedLight>
Then my program would do something with the contents of the node, like turn some light on with the correct angle, colour, etc.
Any unique attribute would do, it doesn't have to be "id", that's just a convention. They could have any value, as long as they are unique in the xml document. They don't even need to be numbers, it could be "George" and "Mary". The numbers you see in the TS blueprints are generated automatically by the TS blueprint editor when you create a new node.
See a better explanation about this technique
here.
My own
RWDBRepair script uses this technique extensively. I'm sure Mike Simpson also uses it a lot in RW-Tools.
You, as a player/hacker, will never use this, with the exception of sound proxy blueprints (proxyxml files), where the id number is used as a direct reference for sound samples, loops and modifier chains in the blueprint.