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?
Things on 3D floors
Moderator: Graf Zahl
- Graf Zahl
- GZDoom Developer
- Posts: 7148
- Joined: Wed Jul 20, 2005 9:48
- Location: Germany
- Contact:
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.
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.
-
- Posts: 7
- Joined: Wed Aug 31, 2005 13:51
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.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.
- Graf Zahl
- GZDoom Developer
- Posts: 7148
- Joined: Wed Jul 20, 2005 9:48
- Location: Germany
- Contact:
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.)

(Moving this into the general discussion forum.)