Page 1 of 1

Things on 3D floors

Posted: Wed Aug 31, 2005 14:19
by Ajapted
Probably the biggest limitation with 3D floors in the Doom map format is the inability to put things on them. I'm hoping a standard solution could be found for this. I know the Hexen map format supports a Z field, but I don't think the Hexen format is a perfect superset of the Doom format (due to the single byte linedef special) and therefore it is not always possible to use the hexen format.

My proposed solution is to use the thing's angle field as the Z height. To distinguish it from an ordinary angle, the highest bit is set. The lowest three bits encode the actual angle (0, 45, upto 315 degrees), allowing heights in 8 unit increments.

How does this sound?

Posted: Wed Aug 31, 2005 14:47
by Graf Zahl
I had the same idea long ago but never implemented it. Plus, that would introduce yet another way of doing stuff. Legacy already uses the upper flags (which I can't do because ZDoom uses them as real flags) and Eternity uses external data.

I really don't have much desire to add new features for Doom map format with the exception of compatibility support for some map.

But regarding the single byte linedef special of Hexen's format you are wrong.
Actually ZDoom doesn't even come close to using all of the different types and still manages to map all Doom format maps to Hexen format internally. That's because the trigger type is no longer part of the line type itself, it is a set of flags. Furthermore, due to the parameters several original linedefs map to one type in Hexen (e.g. all the locked doors are represented by one type in Hexen format (that alone makes 12 linedefs in Doom and even more in Strife.) and Boom's generalized types are represented by only 5 types in Hexen format.

The only real limitation is the limit of directly usable tags but you can get around that by using tags > 255 when they are only needed in scripts. Even the largest maps I have ever seen (ZDoom community map 1 and KDIZD E1M3) don't even come close to this.

Posted: Wed Aug 31, 2005 15:04
by Ajapted
Graf Zahl wrote:But regarding the single byte linedef special of Hexen's format you are wrong.
Actually ZDoom doesn't even come close to using all of the different types and still manages to map all Doom format maps to Hexen format internally. That's because the trigger type is no longer part of the line type itself, it is a set of flags. Furthermore, due to the parameters several original linedefs map to one type in Hexen (e.g. all the locked doors are represented by one type in Hexen format (that alone makes 12 linedefs in Doom and even more in Strife.) and Boom's generalized types are represented by only 5 types in Hexen format.
It was the Boom generalized linetypes that I thought would be the biggest problem. Good to know that, apart from the tag issue, Doom format maps can be safely converted to Hexen format.

Posted: Wed Aug 31, 2005 15:12
by Graf Zahl
Let's face it. The largest block of generalized linedefs are floors and ceilings with 8192 different variations each. If you take the 8 different triggers out you are left with 1024 different actions. That's not too hard to distribute across 4 bytes in a way that is manageable for a human brain, isn't it? ;)


(Moving this into the general discussion forum.)