Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Vordakk

Checking PWAD compatibility in different ports?

Recommended Posts

Hey guys,

I'm currently beginning to test my wad using source ports besides ZDoom. But since I know very little about compatibility using source ports OTHER than ZDoom, my wad predictably crashes all ports I test with that aren't ZDoom, GZDoom, or Vavoom.

I'm looking to try to make my wad as compatible as possible (though not vanilla compatible due to size, number of things, etc.), so I was wondering if anyone knew some common wad-building mistakes that I could check for and fix in my level. Specifically, things that ZDoom permits but that cause other ports to crash. Or if there's a tutorial or wiki about this topic, I'd love to read it.

About my wad:

- It's for Heretic, so I'm only testing Heretic-compatible ports (Eternity, Doom Legacy, Doomsday, etc.)
- I used Doom Builder 2 to build the level
- Under "Game Configuration", I selected "Heretic"
- I know nothing about non-ZDoom compatibility

Share this post


Link to post

The first and foremost consideration is the map format. There are three kinds: Doom, Hexen, and UDMF. The last two are only supported by a few source ports, mainly ZDoom and a handful of others, so those are probably not what you want. Vanilla Heretic uses the Doom format, but with different linedef and sector specials and thing numbers (obviously).

If you were mapping for Doom, I would suggest a Boom-compatible configuration (a extended version of the Doom map format), which a wide selection of ports support. However, since you mention Heretic, I'm afraid that isn't an option for you either as it's for Doom only (as far as I am aware).

Practically the best thing you can do for a Heretic project, in terms of compatibility, is to use plain vanilla Heretic features. You could most certainly stick to a limit-removing goal, as most Heretic-supporting source ports will have already lifted most of the vanilla limits, but as far as feature sets go, you don't have many options. Just "limit-removing vanilla Heretic".

I don't know what the configuration is labeled as in DB2. Probably just "Heretic".

Other things that you might not be able to use: ZDoom/Hexen lumps like MAPINFO/SNDINFO/ANIMDEFS, Boom lumps like SWITCHES/ANIMATED, sprite replacements, non-MIDI/MUS music, DeHackEd/DECORATE. Just don't expect any of those to work in all ports. You can use these to enhance the wad when played on certain ports, but the original engine and similar ports will just ignore them (in most cases).

Also forgot to mention, you should avoid vanilla-related mapping mistakes such as tutti-fruiti (short textures on high walls), medusa (multi-patch textures used on middle textures), and mixing flats with textures (a common ZDoomism). I am not familiar with the Heretic engine to know exactly which of these are actual problems, but I think it's safe to say that anything you shouldn't do with vanilla Doom, you shouldn't do with vanilla Heretic either.

Share this post


Link to post
EarthQuake said:

(A lot of stuff)


Thanks for the well-though out reply, Earthquake. Basically, in DB2 the most vanilla Heretic type of configuration is "Heretic" which is what I already use. I've mapped using the ZDoom (Doom in Doom) format before, and it allows things like using flats as textures, DECORATE, etc. ZDoom (Doom in Hexen) allows even more crazy stuff and almost certainly won't work with anything other than ZDoom.

I do use MAPINFO and ANIMDEFS, but do not plan on using DECORATE, which is only supported by ZDoom and Vavoom.

The last paragraph that you wrote is what interests me most. I'm unfamiliar with tutti-fruiti and medusa because ZDoom probably auto-corrects them. I've also heard that early map-makers had to tag DR doors even though they're direct-action type doors. This is the kind of stuff I need to be aware of, especially if I ever want to make a vanilla map one day.

Another part of the problem is that I don't understand what vanilla limits are. What limits are removed in a source port? Is it how many linedefs or sectors you have, or amount of things you place? I was hoping that there was a wiki somewhere where all this stuff was laid out, so I could use that as a gauge for how I built the level (in order to as compatible as I could make it). For example, Curse of D'Sparil was a pretty detailed Heretic levelset with huge sprawling architecture and high monster counts, but yet the author listed about 4 or 5 ports that it worked with. My last contribution, by comparison, was only compatible with ZDoom and Vavoom (due to DECORATE).

Sorry for the long reply.

Share this post


Link to post
Vordakk said:

- It's for Heretic, so I'm only testing Heretic-compatible ports (Eternity, Doom Legacy, Doomsday, etc.)

Unfortunately, Heretic-compatibility in Eternity is still a future prospect. If I correctly remember Quasar's plans, it is contingent on at least a rewrite of the weapon and inventory system to allow custom EDF weapons; and then the Doom and Heretic weapons will be exported from the source code into text definitions.

Share this post


Link to post
Vordakk said:

Another part of the problem is that I don't understand what vanilla limits are.

Here's all the gory details. They're limits that are either inherent or hard-coded into the game engine, AFAIK most if not all of these were inherited by Heretic.

Share this post


Link to post

IIRC I remember reading that Vanilla Heretic had a visplane limit of 160 (and Vanilla HeXen 192), but otherwise, the limits are the same.

Doom Legacy's Heretic support wasn't quite completed IIRC, so like Eternity, it can't currently play Heretic fully.

Doomsday, Vavoom and ZDoom/GZDoom are all limit removing.

I believe all of them support ANIMDEF's; I remember reading that Doomsday supports basic ANIMDEF lumps, but have never tested it. Worst comes to the worst, one could make an Animation definition especially for Doomsday (Doomsday's own way of defining texture animation):

http://www.dengine.net/dew/index.php?title=Group

Doomsday and ZDoom/GZDoom support texture/flat mixing (I personally don't know about Vavoom).

All of them except Doomsday, support the MAPINFO lump in Heretic. Though Doomsday has Map Info Definitions that serve the same purpose:

http://doom.wikia.com/wiki/MAPINFO

Share this post


Link to post
Gez said:

Unfortunately, Heretic-compatibility in Eternity is still a future prospect. If I correctly remember Quasar's plans, it is contingent on at least a rewrite of the weapon and inventory system to allow custom EDF weapons; and then the Doom and Heretic weapons will be exported from the source code into text definitions.

Yup that's literally all it's waiting on at this point, and I have plans to begin on it in the immediate future. Like, this month if I can get off my ass.

Share this post


Link to post

Originally, I had a huge wall of text ready (edit: god damnit), but I decided to simplify these lists to better help you. I'm listing these limits/errors from my experience with Doom, so they may or may not necessarily apply to Heretic. From what I've learned though, Heretic seems to be pretty lenient in comparison to Doom. So, unless otherwise noted by myself, or someone else, assume these apply to your situation:

Things I would not consider limit-removing:

  • Tutti-frutti effects. Don't allow short textures to tile vertically. Examples: using the 16-high STEP1 or the 72-high DOOR1 on a wall that is 128 high, or using DOOR1 with any Y-offset on a wall that is 72 high. Only listed here because this is not fixed in many source ports.
  • D1 and DR (AKA P1 and PR) line types should never have a tag. Everything else should, except for scrolling texture and exit-related line types. Doing it any other way may result in unintended behavior across different source ports.
  • Non-power-of-two texture widths. This only applies to custom textures, make sure they are a power of two (e.g. 8, 16, 32, 64, 128, 256). Few ports allow non-power-of-two widths.
  • The BLOCKMAP should be under 128 kilobytes. Otherwise, collision detection may fail in certain parts of the map. You should also read this. This is a limit of the map format.
  • Things like LINEDEFS, SIDEDEFS, SECTORS, and SEGS should be under 32768. There are other map lumps with a similar restriction, but these ones, especially SEGS, are prone to being exceeded first. This is a limit of the map format.
Things I would consider limit-removing that you shouldn't worry about :Things you should not do because they are not widely supported:
  • Use flat textures on walls and wall textures on flats. This is mostly a ZDoom thing.
  • Use port-specific sector types. Unlike linedef types, vanilla Doom/Heretic will bomb out when it encounters one of these.
  • Place any port-specific thing type in your map, like particle fountains, skybox cameras, player 5-8 starts, Doombuilder 3D mode starts, etc...
  • Anything that will cause vanilla Doom/Heretic to bomb upon loading the wad or loading a map. The only exception I can think of is the inclusion of custom sprites. Most, if not all ports can handle this.
Things you could use but may not be supported by all ports:
  • Port-specific linedef types. Vanilla Doom/Heretic would just ignore them, if I recall correctly. This means for example, you could have stairs with slope specials on them that turn the stairs into one continuous slope for those running ZDoom. There are other possibilities too, as long as they are not vital to the functionality of the map.
  • Use port-specific wad lumps like MAPINFO/EMAPINFO/DECORATE/ANIMDEFS if they are not required to make your wad run properly. DECORATE can be used to modify existing things for those using ports that support it, but will provide an inconsistent playing experience depending on which port is used. Also note that different ports that support these may not support everything that lump can do in the port it originated from. Sometimes ports will only have basic support for them.
  • Have non-MIDI/MUS music present in the wad, and then selected via MAPINFO/EMAPINFO/etc.
  • Have tall skies (not really applicable to Heretic, since it already has tall skies) and selected via MAPINFO/EMAPINFO/etc.
  • Change the order of maps, or define a custom episodic structure via... you guessed it, MAPINFO!
Hopefully this helps a bit. As a basic rule that I follow, if it crashes Vanilla before the map even loads, it's not limit-removing. If it crashes or glitches up in Vanilla after the player encounters a particular scene, but is fine in most source ports, then it is "limit-removing". Others may expand the definition of "limit-removing" to increased map size limits, but I think that's being a little more generous than needed. Getting rid of visplane overflows is usually the reason people map for limit-removing ports.

If I got something wrong, or my opinion on the matter sounds stupid, feel free to point anything out. :p

Share this post


Link to post
Quasar said:

Yup that's literally all it's waiting on at this point, and I have plans to begin on it in the immediate future. Like, this month if I can get off my ass.

Great! That and UDMF support have been waited for a long time. :)

EarthQuake said:

  • D1 and DR (AKA P1 and PR) line types should never have a tag.

Unless it's a Boom map and you want to use the light tag feature. (Heretic maps are unlikely to be Boom maps, though.)

EarthQuake said:

  • Use flat textures on walls and wall textures on flats. This is mostly a ZDoom thing.

Eternity does support it too, though. It was a relatively recent addition so it's not well-known yet. As Vermil pointed out, Doomsday does too. Vavoom as well.

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
Sign in to follow this  
×