Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • 0
invictius

How can I tell what port a map is made for if it doesn't have a text file?

Question

I thought gz builder would tell me but apparently not.  It doesn't have any scripting in it, so I guess, either vanilla, limit removing or boom?

Share this post


Link to post

5 answers to this question

Recommended Posts

  • 1

In GZDB or GZDBBF, which formats have you enabled in F6?

 

Load the map into Slade3 and check what lumps are present.

For example, for the ZDoom formats it would have these lumps:

 

f0WKVcQ.png

 

and also look for text lumps, such as https://zdoom.org/wiki/Special_lumps

 

If there is a DDF type file, then it is probably for 3DGE.

 

Edited by Kappes Buur

Share this post


Link to post
  • 0

I'm planning on writing a tool that can do a best-effort guess as to what game/port a WAD is for, based on a few heuristics including what lumps are present in the WAD but also other things. It'll eventually be part of hwadtools, but the actual heuristics to be used and the order to check them is something that could be hashed out on the forums first if anyone is interested.

Share this post


Link to post
  • 0

First, check the map format. Doom, Hexen, or UDMF? For Doom format, here's the next steps:

  1. Scan through the map's lines to gather all linetypes used. Compare with linetype sets you have for each port. Also look at line flags while you're at it.
  2. Same thing, but for sector types.
  3. And again same thing, but for thing types. Also thing flags.

These first steps should be enough to tell whether you need vanilla/limrem, Boom, MBF, Legacy, EDGE, Eternity, Doomsday, Risen3D, ZDoom...

 

If you have unknown line or sector types -- check for presence of lumps that define new types.

  • EDGE: LINES.DDF and SECTORS.DDF (beware not to confuse a map's SECTORS lump for an EDGE sector definition!)
  • Doomsday: DD_DEFNS or DDXGDATA
  • Eternity: ExtraData*
  • ZDoom: XLAT*

For Eternity and ZDoom, you run into the additional problem that to find the actual lump name, you'll need to parse the [E|Z]MAPINFO. Which means that you need to find a MAPINFO first, and then you have to be able to handle the various different MAPINFO formats in your parser at least enough to find the relevant data.

If you find the definitions for the unknown line/sector types, then Bob's your uncle.

 

If you have unknown thing types, this gets funnier.

First, parse DEHACKED (if present) to see if there have been any thing type remapping. If not, look for custom thing definitions.

  • EDGE: THINGS.DDF
  • Doomsday: DD_DEFNS
  • Eternity: EDFROOT
  • ZDoom: DECORATE and ZSCRIPT

Once again, if you find the custom things there, you can tell you have support.

 

Now, don't be too hasty. Just because you have a solid proof that one advanced engine is supported doesn't mean that it is required. A lot of vanilla/limrem/Boom maps have ZMAPINFO lumps. Things like Valiant or Ancient Aliens have DECORATE lumps but they still load just fine in PrBoom+. Things like Whispers of Satan have a few extra secret exits that only work in ZDoom but the maps otherwise work fine in Boom. Doom: The Lost Episode was designed to run in ZDoom and Eternity both.

 

 

There's another thing you can check: textures.

  • Gather a list of all flats and a list of all wall textures used in the map.
  • Are there TEXTURE1 and/or TEXTURE2 lumps in the wad? Can you find all textures in it?
  • If you can't find some textures in the wad's TEXTUREx lumps, can you find them in the IWAD's TEXTUREx lump? (Oh yeah, which IWAD to use by the way?) Because that would imply cumulative loading and therefore ZDoom.
  • Alternatively, could some of the unknown textures be actually flats, and vice-versa? Texture/flat mixing is allowed by some engines like ZDoom and Eternity, so that's another thing to look for.
  • How about TX_, HI_, TEXTURES, and other more advanced ways to load textures? This too would restrict to advanced ports even if the map otherwise appears to be vanilla.
  • Some line types actually use upper/lower texture names for parameters. Boom's Transfer Heights (linetype 242) is an example of that. Watch out for this.

Finally, you can perform deep map analysis:

  • See if a vanilla-looking map isn't actually a limrem map. Use the same method that is used to generate visplane heatmaps and the like, though checks for blockmap size, number of sidedef, etc. are probably simpler to do as a first step.
  • Check for action tag 0. The most common "vanilla map only tested with ZDoom" error is to have 0-tagged remote doors which mangle the entire map geometry when activated outside of ZDoom.

 

Another thing to look out at the start: what's the map name. Is it ExMy? MAPzz? Something exotic? Based on map naming convention, map format, the line/sector/thing types used, and the textures used, can you guess the IWAD? I mean if you detect that it's a Heretic map and that it uses the MBF sky transfer, you can safely conclude it's for ZDoom.

 

That's all I can think of for now, but there's undoubtedly more. I've not even talked about Doom maps that aren't for a Doom game at all, for example!

Share this post


Link to post
  • 0

Thanks Gez. I think you ably demonstrate that this isn't straightforward :)

 

As part of incrementally refining a ruleset, I will also be collecting test wads for each case. It might be fun for people interested in helping to come up wtih torturous test wads that would defeat a naive set of rules.

Share this post


Link to post
  • 0

If there isn't a txt file, look inside the wad for a lump called wadinfo, readme, or something like that.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×