Graf Zahl
Forum Legend
Posts: 4194
Registered: 01-03 |
The id should be used to identify this line, and arg0 should be used to
identify the line or sector that this line is to affect or otherwise
reference, if the implementing port is capable of making such a semantic
distinction.
I'm sorry but that's still too many unknowns. If this behavior is not unambiguously defined in the map format this may cause incompatibilities.
Unlike options like line translucency which will merely produce visual anomalies if not supported this one is a crucial feature of the engine and if the base spec allows for incompatibilities in the compatibility namespaces it is a major issue.
In any case, this distinction is so trivial to implement for ports newly supporting the UDMF format that if it is part of the base spec it must not be subject to any kind of interpretation, it has to be 100% clear with no deviation allowed.
Here's my take for the blurb at the end:
Unlike traditional Doom maps UDMF makes a clear distinction between a line's ID and the parameter which identifies the object the line's special is supposed to affect.
The id will be used to identify this line, and arg0 will be used to identify the line or sector that this line is to affect or otherwise reference, i.e. it is effectively a parameter to the line's special.
Boom used the linedef's tag for both due to lack of other options so in order to ensure compatibility any map converter converting maps for the Doom/Heretic/Strife namespaces must store the linedef's tag field as both the id and as arg0 in each line. The default value of the id field under these namespaces is defined as 0 rather than -1.
The important difference to your wording is that there are no conditional semantics in the wording which IMO is very important.
The same kind of wishy-washy wording was used in many parts of the J2ME spec, particularly the sound interface. As a result, if you design a sound playing application for a Java enabled Nokia phone it won't play on a Motorola phone and vice versa. Although both implemented the same API their use of it is totally incompatible because they interpreted crucial parts differently.
|