Graf Zahl
Forum Legend
Posts: 4194
Registered: 01-03 |
Quasar said:
Eternity's implementation of line ids has not yet seen an official release or any documentation and therefore IF there is actually a problem, I still have a chance to fix it.
Good to know. I didn't know that.
So with that said, all this talk about compromise not being possible is hooey. Unless it is you, Graf, who is unwilling to do any compromising. Let's keep everything on track and not get derailed over something like this that should really be simple.
I'm more concerned with how any compromise will affect the spec. Under no circumstances should it confuse anyone wanting to implement the spec.
You didn't reply to my previous post at all, where I offered the different options. I need your opinion on those options and reasons they won't work (if they won't), as well as an explanation of ZDoom's behavior in this respect. This is the only way I can satisfactorily understand what it is that I need to do with the spec.
None of the options you mention make any difference to me. Internally ZDoom has the line ID and the 5 args. Any Doom format linedef is translated by storing the tag in the ID for Boom compatibility and also in the arg representing the tag for the line special.
So obviously, since both values are completely separate internally my preferred solution would be to keep the values separate and when converting a Doom format map the tag value for a Doom format line special should be stored in both the ID and arg0 field.
If that can't be done for whatever reason dictated by some other port I only need a clear definition of what to do and then use the proper value appropriately.
Eternity's mess with ids/tags is my worry alone and shouldn't leak into this equation.
As it should be. ;)
Hexen's args[0] is functionally identical to Doom's tag. We have agreement on that at least, because it's not something that is up to argument - it is a simple fact.
Hexen also provides the line id, something Doom did not have.
So. In Hexen maps, leave everything alone. Nobody has at any point spoken of changing the way that Hexen behaves. The only thing UDMF offers to Hexen in this respect is the ability to have line id's start out at positive integers rather than at -1 (EE's ExtraData offers the same ability).
In maps using Doom specials, all we need is to put the tag *somewhere*. I don't so much care about where it goes as I do about being able to find it.
At least we agree on this one. But see my remark above.
In Eternity we can have Doom and Hexen-like specials in the same map. This is a simple consequence of having assigned the Hexen-like specials to non-conflicting numbers. But I don't see how this really actually becomes a problem for the tag/id issue. If I must, I will implement a gigantic table of line numbers that tells me how to handle the id or tag for each when loading UDMF maps in Eternity namespace.
The only problem I see is that the Boom specials referencing lines by tag would clash with having the line ID in the base spec for all namespaces, even those where this might lead to potential data collision. The following scenario is something ZDoom can't handle:
- The spec allows both ID and tag to be specified with some specials/scripts etc. referencing lines by tag and others by ID.
So how about the following:
The line ID is not part of all namespaces but instead an additional key only applicable to the Hexen namespace and port specific ones that can use it. Then the tag could be stored in arg0, you could define the ID according to your own needs in Eternity and ZDoom would just inherit the semantics from Hexen. There'd be no potential clashes of values anymore and all is well because compliant parsers would have to ignore it in all namespaces where it might cause problems.
|