If you are interested in making mods for Chex® Quest 3: Vanilla Edition, then it has some quriks you need to keep in mind due to its specific support for various source ports. This guide will give you all you need to know about working around such quirks. Since it is basically a total conversion for Doom, most tools that work for Doom modding will also work for Chex® Quest 3: Vanilla Edition. This guide will also assume you have a fair amount of knowledge in making Doom mods.
Note that anyone is allowed to create mods for Chex® Quest 3: Vanilla Edition without explicitly asking for permission first.
If you use Doom Builder
If you use a level editor from the Doom Builder family, then please note that unlike with SLADE there is currently no configuration for Chex® Quest 3: Vanilla Edition. You will have to make do with the one intended for the original ZDoom version, which may be missing the extra or moved actors from Chex® 3 Vanilla. Newer Doom Builders likely have the ability to detect new actors from the DEHACKED file, so if that's the case the configuations for Doom may work as well, but you'll have to ignore the Doom enemies.
Making mods for the main WAD
In most cases, you probably want to target your mods for modding version. However, if you like the episodic format and don't mind not having the Super Large Zorcher or Megasphere you may also want to make a mod that targets the primary version.
Note that you should never target the main WAD if you plan on requiring any sort of MAPINFO lump. When you make use of any type of MAPINFO there's usually a way to use the episodic structure in spite of the main IWAD having a singular structure. Thus, to not complicate things further it would be preferable to base such a mod on the modding version, especially since you get a fancy new zorcher and a fancy new powerup that way. Making mods for the main WAD is only recommended for if you want to not require support for any form of MAPINFO and you want to use the episodic structure.
Following the base WAD's structure
If you would prefer to follow the same 5-level-per-episode and 3-episode structure as the base WAD, then you will need to arrange the levels like this:
- Episode 1:
- E1M9
- E1M4
- E1M5
- E1M6
- E1M7
- Episode 2:
- E2M1
- E2M9
- E2M6
- E2M7
- E2M8
- Episode 3:
- E3M1
- E3M2
- E3M9
- E3M7
- E3M8
The maps that precede ExM9 must always use a secret exit and only a secret exit. All other maps must use a normal exit and only a normal exit. This is to ensure consistency between the vanilla engine and source ports that support the MAPINFO lumps contained in the IWAD.
Episode 1 additionally has the maps E1M1 and E1M8 before and after its main 5 levels. These are basically playable "cutscenes". Strictly speaking, you do not need to replace these. However, you may want to do so anyways to make "cutscenes" that better fit your set of custom levels. If this is the case, then your custom "cutscene levels" should not have any enemies, items or secrets. Additionally, E1M1 should not have any damaging floors, though it's fine if E1M8 has some since it's at the very end of the episode. They should ideally be easily dodged if needed, though. And as with regular levels preceding ExM9, E1M1 should have only a secret exit.
Following Doom's structure
If you would prefer to follow the same structure as the Ultimate Doom or you want to use all the quirks of the vanilla engine without restraint then things get a little more complicated. The specific support for various source ports via the MAPINFO lumps will likely be at odds with a mod taking advantage of the way the vanilla engine works. Thus, not being bound to the structure described earlier will require your PWAD to include MAPINFO lumps that revert the changes done in the base WAD, which will do the following:
- Making E1M6 use the normal SKY1 texture.
- Making E1M1, E2M1, and E3M2 exit to the next normal level instead of always going to ExM9.
- Making all maps (still) exit to ExM9 if the secret exit is used.
- No longer skip the intermission after E1M1 and E1M8.
- Removing E1M9's enforcement of mini-zorcher starts.
- Reinstating episode 4.
To save you the trouble of figuring out how to do all that, we've prepared all the needed lumps for you. Go ahead and download and insert these into your WAD if you need them (or copy and paste if your browser views the text files directly):
- MAPINFO
- ZMAPINFO
- UMAPINFO
- EMAPINFO
- EMENUS
- DDFLEVL (needed due to EDGE-Classic's explicit support)
- DDFGAME (ditto)
Please note that if you want to change the level names or text screens then you may have to edit these lumps after importing them into your WAD file. Additionally, if you want to change the episode 1 text and have the changed text show up in Eternity, you will need to include an E1TEXT lump which contains the changed text screen.
Adding custom textures
With Chex® Quest 3: Vanilla Edition, you only need to include a TEXTURE2 lump which only contains the definitions for the new textures, as well as an edit of the PNAMES lump. If you're working with chex3v.wad, you can just create a blank TEXTURE2 lump and add your custom textures from there. If you're working with chex3d2.wad, however, you will need to copy the TEXTURE2 lump from that WAD into your WAD and then edit it from there.
Supporting ZDoom-based source ports
You may be wondering, GZDoom has no issues with loading DeHackEd lumps, so why bother (besides following the above guide for working with chex3v.wad, if needed)? Well yes, GZDoom wouldn't have had any issues. However, Chex® Quest 3: Vanilla Edition is also intended to be playable in ZDoom 2.8.1 and Zandronum, which have conflicts with the stealth monsters and apply effects that only make sense in Doom. Thus, to correct all that it uses DECORATE (deprecated).
Wait, "deprecated"? Well, yes, as far as GZDoom is concerned. But you see, we had no intention of stopping short of universal source port compatibility just to appease the ZDoom Wiki gods. Thus we use DECORATE (deprecated), erm... the "unspeakable actor definition language" so it can be enjoyed in ZDoom 2.8.1 and Zandronum.
But more on that in the next section. The main issue is that the ZDoom-based source ports based on the "unspeakable actor definition language"-era codebase have a weird bug where they can't load any DEHACKED lumps after the one in the IWAD. Thus, it may be needed to put changed level names and text screens directly in the (Z)MAPINFO as well as changing the DEHACKED strings.
However, if you're targeting newer standards like MBF21 you need not concern yourself with that as GZDoom and Odamex are the only ZDoom-based ports that support the newer standards anyways, and they are not known to have DeHackEd problems. Or, if you find this to be too much of a hassle you can only focus on GZDoom support regardless of target if you want while completely disregarding classic ZDoom and Zandronum.
Modifying actors while retaining support for ZDoom-based source ports
Unlike the above section, GZDoom has to get dragged into this, too. You see, due to the base WAD's usage of DECORATE to support legacy ZDoom ports, some of your intended DeHackEd modifications will not work even in GZDoom. Thus, if you plan to support ZDoom-based source ports (even GZDoom) you will have to mirror your DeHackEd modifications in the DECORATE, because only DECORATE can inherit from DECORATE. (Side note: If they really want to push the deprecation of DECORATE this hard then it would've been nice to have the ability for ZScript to inherit from DECORATE, to avoid forcing anyone who only focuses on GZDoom to use DECORATE anyways.)
DEHEXTRA actors in a mod that only supports GZDoom on the ZDoom side of things should work without issue, thus you can ignore this section if you only add additional actors via DEHEXTRA and not modify existing ones (and don't want to bother simulating the DEHEXTRA stuff in DECORATE).
More detailed information will come out later, but for now check the ZDoom Wiki if you need to learn any DECORATE to achieve this but please ignore its insistence that DECORATE is deprecated. In some cases, you may have to reverse-convert a few ZScript examples to DECORATE, but please check that the feature was added during the DECORATE era first! You will also need to look inside chex3v.wad's and chex3d2.wad's DECORATE lump to know what you need to replace.
Under construction!
This guide is still a work in progress. Here is what this guide will add in the future:
- Detailed information on modifying actors while retaining support for ZDoom-based source ports
- Restoring proper functionality of Doom 2 attack code pointers using DEHEXTRA
Until those updates to the guide come out, it's recommended that you not try to use the Doom 2 specific enemy attack codepointers.