Text File
DOOM2 CONSISTENCY CHECKER (DCC) v3.01
-------------------------------------
Author: Rand Phares (rsphares@yahoo.com)
Co-author of Cleimos & Cleimos2
Member of TeamTNT, contributor to Icarus, Bloodlands,
Grievance, and the BOOM source project.
Introduction
------------
Many wad editors provide consistency checking, but they provide
it to different degrees. My purpose in writing DCC is to provide a single
program that can tell you as much as possible about the basic and
"fit-and-finish" problems that can (and will) plague map design. It was
originally designed for use by TeamTNT on the Bloodlands and
Grievance projects, and was used on Final Doom just before publication.
DCC cares Absolutely Nothing about playability or design choices. It simply
looks for problems that may cause DOOM2 to abort, or for problems that
just Look Bad.
DCC _will not_ alter your *.wad file. It writes its output to the screen,
unless you redirect it. You can provide options to have DCC correct certain
problems for you, and DCC will create a NEW *.wad file with the corrections.
DCC only handles DOOM2 and BOOM wads. It doesn't deal with DOOM, Heretic, or
Hexen wads. There are no plans to make it do so.
Preprocessing
-------------
DCC requires that you run DCC_PRE first to retrieve information about the
graphics you're using. This information could be coming from
- standard DOOM2.wad (IWAD)
- a replacement IWAD if you're doing a full TC
- a PWAD that has custom graphics
Read the dcc_pre.txt file for instructions on how to run DCC_PRE.
DCC_PRE will create a data file (*.tdt) that DCC reads.
How to use DCC
--------------
Command Line
dcc [options] <mapfile>
where <mapfile> is the PWAD file containing the maps to be examined,
and where the options include:
-boom
Check for the enhanced features of BOOM.
-b
Check for bullet-absorbing lower textures. This is a prevalent
condition, and nothing short of redesign will make it go away,
so checking for it is optional.
BOOM corrects the absorption, so no absorption errors will be
reported if -boom is included as an option, even if -b is
included.
-h
Create a new copy of <mapfile> with the hidden (not shown on
automap) bits set on the lines DCC thinks it should be set on.
-r
Create a new copy of <mapfile> with "rocket absorbing" problems
corrected. Not all conditions can be corrected automatically.
-t
Check for problems caused by undefined textures, y-alignment,
invalid flat names, texture height math, or missing textures.
If you don't specify -t, DCC will only check for missing
textures.
-o <outfile>
If creating a new version of <mapfile>, this tells DCC what
it's called. If not supplied, and output is needed (i.e.
setting hidden bits on lines), the file "tmp.wad" will be
created. Your original *.wad file will not be changed.
-y
DCC will automatically apply the y-offsets it reports. It
will not make any changes corresponding to "pegging change"
messages. Those are left to the author. DCC always applies
changes in the form of y-offsets, even though upper- or lower-
unpegging might also have fixed the problem. See the section
"Y-Alignment" below.
-s
DCC will ignore errors from conditions that may be there on
purpose to provide special effects. These include:
I0111: Sector floor is above its ceiling
E0119: Vertices are identical
E0121: Lines intersect
I0126: Sectors are identical
I0132: Line is detached
E0302: Missing lower texture
E0303: Missing lower texture
E0304: Missing upper texture
E0305: Missing upper texture
-f
One of DCC's checks is to see if lines intersect, rather than
meet at vertices. This check consumes 50% of the overall
time it takes DCC to check a map. Using the -f switch will skip
this check, allowing DCC to run twice as fast.
-i <filename.ini>
Use an alternate DCC.INI file.
Examples:
dcc myfile.wad
will report any errors found in 'myfile.wad'.
No texture-related problems will be reported, but missing textures
will be reported.
dcc -boom myfile.wad
Same as the previous example, with extra checking for BOOM-
specific features, and with some checking eliminated in the cases
where BOOM fixed the condition.
dcc -t myfile.wad
will report any errors found in 'myfile.wad', and will use texture
and flats data from the *.tdt file defined in DCC.INI.
dcc -h -i myfile.ini -o newfile.wad myfile.wad
will correct any hidden line problems and write the new wad info
to newfile.wad. It will use data from the alternate initialization
file MYFILE.INI.
Redirecting and Paging Output
-----------------------------
DCC's output can be redirected to a file.
dcc myfile.wad > results.dcc
DCC's output can be stepped through one screen at a time.
dcc myfile.wad | more
Error Classes
-------------
Each problem has been assigned to one of 10 classes:
01 Basic problems with all elements
02 Things
03 Textures
04 Flats
05 Triggers, Tags
06 Hidden Lines
07 Pegging
08 Keys and Locked Doors
09 Secrets
10 Exits
The Error Class is printed with the problem description, allowing
you to parse the output if you are trying to focus on a specific
class of problems (i.e. correct pegging on lines). For example,
you might see:
E0701: Line 1305 should NOT use lower unpegging
If you were only interested in pegging problems, you could post-
process the report looking only for E07 problems.
Informational Messages
----------------------
These aren't errors, but may give you some clues about things you'd
like to change. For example:
I0902: Sector 17 is SECRET
I0902: Sector 234 is SECRET
tells you that you have two secret sectors. If you thought you had
three or four, you'll want to go back and figure out where they went.
A Note on TC's
--------------
Texture and Flats information is taken from whatever IWAD and
PWAD files you provide DCC through DCC_PRE. This is as far as
I've taken 'customization' in this version. For example, the
standard monster data is still being used.
Future work will include extracting custom monster data, and any
other custom data that will be necessary for DCC to give a proper
diagnosis.
What does DCC look for?
-----------------------
Basic Field Integrity
1. Do all fields of all elements (vertices, lines, sides,
sectors, things) contain valid entries?
Vertices
1. Do any vertices share the same coordinates?
2. Are there vertices not being used by lines?
Lines/sides
1. Are there sides not being used by lines?
2. Are there lines whose vertices are the same (NULL-length)?
3. Are there lines who have the same vertices (coincident)?
4. Do all lines have at least a "right" side?
5. Do lines marked "2-sided" have 2 sides?
6. Are there 1-sided lines that aren't marked impassable?
(*OBSOLETE* As of v3.00, this is a valid situation.)
7. Are there candidates for hidden lines? These are lines you
don't want shown on the automap. (Report any lines whose
sectors have the same floor and ceiling heights, and whose
sectors do not move. These are typically lighting changes and
walking trigger lines that you might want to hide.)
Use the -h command-line switch if you want DCC to automatically
set the hidden bit on these lines.
The hidden (or invisible) flag on a linedef is so the line won't
show on the automap. When you slice up a room into sectors with
a lot of lighting changes, the automap shows a spiderweb of lines
in the room. The player uses the automap to figure out where
they've been and where they should go next, and lighting-change
lines are useless in that context. So ID gave us the "hidden" or
"invisible" flag to blow all those things out of the automap,
leaving the player with lines that are meaningful.
When DCC encounters such a line, and finds that you haven't
already marked it hidden, it'll suggest that you do. (DCC is
smart enough to recognize rising stairs and lifts and things,
which are _useful_ lines on the automap.)
BOOM allows you to hide these lines in the automap, so if the
-boom switch is used, potential hidden lines are not reported.
8. Are manual door triggers used on 1-sided lines?
9. Are there more than 64 animated walls?
This limit is removed in BOOM, and not reported with -boom.
10. Are there impassable 2-sided lines with no texture on
either normal? (NOTE: Not necessarily a problem,
since this is used on many "windows" to fence out the
player.)
11. Are there lines that intersect other lines w/o
benefit of a shared vertex?
If the -f switchis used, this check is skipped. This improves
DCC's processing time by a factor of 2.
12. Report sectors that have regular or secret exits.
There's a problem if none are present. (Unless the
level is headed for the MAP30 slot, indicated by the
presence of the BOSS...)
In BOOM, if the map has no secret exits, you're given 100%
secrets automatically.
13. W1 teleport lines are noted, since WR is what's usually used,
and having a W1 might indicate an error.
14. Report any switch trigger lines that have the same sector on
both sides. Ignore gun switches.
15. Report any walking trigger lines that only have one side.
16. The lower texture of a 2-sided line that has F_SKY1 ceilings on
both sides will absorb bullets (no bullet puffs). Report these.
If a sector moves, then this check is also performed at the new
sector position.
This is not something the level author can correct without
redesigning the part of the level that suffers the condition.
Because of this, these messages are Informational, and only
obtained through the use of the -b switch.
BOOM corrects this error, so this check is skipped if the -boom
switch is used.
17. Rockets and plasma will be absorbed by a lower texture on either
side of a 2-sided line that has an F_SKY1 ceiling on its second
side, and where the ceilings on both sides have different
heights. Report these.
If a sector moves, then this check is also performed at the new
sector position.
There are 2 distinct cases: 1) only one F_SKY1 is involved, and
2) two F_SKY1's are involved. Case 2 is only correctable by
changing the ceiling height of one of the sectors involved. DCC
will not offer to automatically correct for this. Case 1 can be
automatically corrected by DCC (using the -r switch), but this
involves flipping the line. DCC will NOT correct the condition
if the line is a "side-oriented" trigger, i.e. a teleport
trigger line.
DCC assigns error E0128 to case 1, and error E0129 to case 2, so
you can tell which ones DCC will automatically correct if told
to do so.
BOOM corrects this error, so this check is skipped if the -boom
switch is used.
18. Are there any detached lines? These are lines whose vertices
are not shared by any other vertices. Detached lines are used
to create special effects, or simply to define triggers.
This check is skipped if the -s switch is used.
19. Are BOOM's new line-controlled features properly used? Are the
new line-to-line tags correct?
Texture Use
1. Do the sides refer to nonexistent wall textures?
2. Are there any missing textures?
3. Are there any normal textures on 2-sided lines that
extend into the floor or ceiling? These can be fixed by
making sure there's some difference (lighting, floor/ceiling
heights) across the line.
4. Are there any lines with a texture that is too short for where
it's being used (Tutti-Frutti). This only applies to textures
shorter than 128. It can also be caused by y-offsets, even if
the wall height is OK.
BOOM corrects Tutti-Frutti conditions, so these won't be
reported if -boom is used.
5. Are there any transparent textures being used on upper or lower
walls? (Tutti-Frutti)
BOOM corrects Tutti-Frutti conditions, so these won't be
reported if -boom is used.
6. Are there any 2-sided lines using multi-patch textures on
the normals? (Medusa Effect.) Not all multi-patch textures
will cause Medusa, and this is accounted for, and whether
Medusa appears depends also on which part of the texture is
visible.
BOOM corrects Medusa conditions, so these won't be
reported if -boom is used.
7. Are there any 1-sided lines that use transparent textures?
(Tutti-Frutti)
BOOM corrects Tutti-Frutti conditions, so these won't be
reported if -boom is used.
8. Textures on passable normals that are exposed by moving sectors
(i.e. a door) will be reported. Look for messages like:
"Line 318's first side normal should have no texture"
Any textures on normals that are visible w/o moving anything (i.e.
sniper textures) are _not_ reported.
Some special effects situations will have their normal textures
reported by this check. Just ignore them.
9. Check for Y-alignment of neighboring textures.
10. Check for X-alignment of neighboring textures. (NOT YET
IMPLEMENTED)
11. When there is a lower on a low-unpegged line, and the texture on
the lower has a height less than 128, Tutti-Frutti can occur, even
if the height of the lower is less than the height of the texture.
DCC checks for this.
Look for messages line:
"TUTTI-FRUTTI: lower texture on low-unpegged line 14's 1st side"
The simplest correction for this is to remove the low-unpegging.
BOOM corrects Tutti-Frutti conditions, so these won't be
reported if -boom is used.
12. In BOOM, you can place user-defined COLORMAPS and TRANSLUCENCY
Filters in the upper/normal/lower texture fields on sidedefs of
controlling linedefs. DCC checks for proper use of these.
Moving Sectors
One-by-one, move each sector that's movable. Then, answer these:
1. Are there any missing textures that are exposed by the move?
2. Are there lines next to moving sectors that use
unpegging incorrectly?
3. For sectors that use door-triggers to open (both manual and
tagged), does the door open enough to let you pass? In many
cases, there may be closets or cabinets that aren't designed
for walk-through, but they'll be reported anyway.
4. Are there more than 30 moving floors (including lifts)? This
won't tell you if the problem will occur, since more than 30
have to be moving at the same time, but it will tell you if
there's the _potential_ for it to happen.
BOOM removes this limit, so this won't be reported if the -boom
switch is used.
Tags
1. Are there tagged lines that have no associated sectors?
2. Are there tagged sectors that have no associated triggers?
3. Are there trigger lines (other than manual door triggers)
with no tag numbers?
4. Are there tagged lines that aren't triggers?
BOOM allows line-to-line tags, so 'target' lines can have tags
w/o being trigger lines. These are not reported if the -boom
switch is used.
5. For each teleporter line, are there two or more teleporter
exits sharing the tag? (The higher-numbered exit will win.)
For BOOM line-to-line teleporters, are there more than one exit
linedefs?
6. Are there teleport exits in the sectors that are tagged to
teleport lines?
7. Are there any tagged sectors referenced by teleport lines that
don't contain teleport exit Things?
8. Any 667 tag will be noted, since this is only useful on
MAP 07 and MAP 32.
Sectors
1. Are there any sectors not being used by sides?
2. Are there mis-matched "pain" sector types and floor textures?
3. Report the number of secret sectors. There should be at least
one, even if you have to stick it out in plain sight.
BOOM allows you to have zero. It will report 100% secrets
in this case.
4. Are all sectors closed? (Does not account for special effects.)
5. Some flats are expected to be properly aligned on the 64x64
grid. (For example, the GATE* textures in standard DOOM2.)
Are there any of these types of flats that might not look right?
6. Are there any sectors whose ceilings are lower than their
floors?
Not reported if the -s switch is used.
7. Do the sectors refer to nonexistent flats?
8. Does the line bordering an F_SKY ceiling and a regular ceiling
have an upper (sectors have the same height)? Ditto floors.
You expect to see a lip on those lines.
9. Does a non-moving sector have zero height (floor = ceiling)?
Things
Since things can appear at different skill levels, this has to
be taken into account when asking these questions. In BOOM, there
are two new flags: "doesn't appear in Co-op", and "doesn't appear
in Deathmatch". These instances are also considered if the -boom
switch is used.
1. Is there a starting point for each player? Is there more
than one? Skill level is irrelevant in this case.
2. Are there between 4 and 10 DM starts? Again, skill level is
irrelevant.
3. Are all things inside sectors?
4. Are there any things on top of each other? In some cases, this
is OK; it depends on what things are involved.
5. Are any things sitting in sectors that are not tall enough for
them? Does the sector subsequently become taller through floor
and/or ceiling movement, allowing the thing to fit? If the
sector has an F_SKY ceiling, everything fits.
6. Are there any things stuck in walls?
7. Are there any teleporter exits that don't appear on all skill
levels?
8. Are there any teleporter exits in untagged sectors?
9. Are there Pain Elementals and more than 20 Lost Souls? (Pains
won't start shooting until the number of Lost Souls drops to
20.) These are standard DOOM2 monsters, of course, and if
you're doing a TC, the names are probably different.
BOOM eliminates this limit, so this isn't checked if the -boom
switch is used.
10. Are there keys for locked doors?
11. Are there locked doors for keys?
12. Is there more than one key with the same color? For BOOM, is
there more than one key of the same type?
13. Report on blocking things that are marked "multi". While
not necessarily a problem, the author may be using these
to block off areas in DM, which may cause a problem in
multiplayer mode.
14. Do all Things exist on SOME skill level?
15. Are any Player or DM starts marked MULTI? This is unnecessary
and confusing.
16. In BOOM, is there more than one PUSH Thing in a sector? Does it
exist at all skills?
Misc
1. Are the level bounds too large for BLOCKMAP (ie. creates more
than 21,844 blocks). (NOT YET IMPLEMENTED)
Y-Alignment
-----------
DCC aligns textures by following common textures across the
normals, uppers, and lowers of connected lines. It will stop
a "run" when it encounters a side that doesn't use the texture,
a side that is already part of the "run", or a lower that is less
than 25 units high (considered a step, which in most cases
doesn't figure into y-alignment). DCC selects the most
commonly-used "y origin" from this set and aligns the others
accordingly. DCC properly handles the case where several lines
may lead away from a vertex, essentially causing the "run" to
head off in different directions. DCC doesn't care which line
starts the "run", as it will travel backward and forward across
the connected lines. DCC will also "leap" across a sector from
normal to normal if the textures are the same.
Normals take precedence over uppers, and uppers over lowers. If
a side is aligned based on its normal, and another "run" tries to
come across the upper, the second "run" will stop dead since
alignment has already taken place for the normal. Same rule
when considering lowers in a "run".
CAVEAT: Always inspect the results if you use this option.
DCC might unknowingly undo your favorite y-offset in the name
of "proper" alignment.
Messages
--------
Here is a detailed description of the Error Messages and Information
Messages that DCC gives you, in numerical order.
E0100: Unused vertices:
E0101: Unused lines (no sides):
E0102: Unused sides:
There are unused vertices, lines, or sidedefs in the map.
Use your level editor to remove them.
E0103: Line 123 has zero length
The vertices for line 123 lie on top of one another. Move one vertex
away from the other.
E0104: Line 123 has no 1st side
The line probably has a second side, but its first side is missing.
Add one.
E0105: Line 123 is one-sided, but isn't marked impassable
*OBSOLETE*
This is a valid situation.
E0106: Line 123 is two-sided, but has no 2nd side
The line is marked two-sided, but there's no second side. Add one,
or mark the line as one-sided.
E0107: Line 123 is one-sided, but has a 2nd side
*OBSOLETE*
This is a valid situation.
I0108: Line 123 is impassable, has 2 sides, but no normal textures
Normally, two-sided lines with no normal (middle) textures on both
sides, are passable, barring floor and ceiling height restrictions.
However, this MIGHT be a design choice you made. Better check.
E0109: More than 64 animated lines (67)
DCC found 67 animated lines (side-scrolling), and the DOOM2 engine
only supports up to 64.
BOOM removed this limit.
E0110: Unused sectors:
There are unused sectors in the map. Use your level editor to remove
them.
I0111: Sector 64's ceiling is below its floor
The ceiling altitude of this sector is lower than the floor altitude,
which doesn't make sense. Unless you're doing some special effect,
correct either the ceiling or floor.
E0112: Can't get through the door in sector 16
This may not be an error, depending on whether you intended the
player to walk through the area or not. It might be an alcove that
opens up to reveal a switch, or it might really be a door you expect
the player to pass through. Better check.
E0113: Thing 12 has an invalid angle of 390
Valid angles lie between 0 and 360 degrees.
E0114: Thing 12 has an invalid type of 10000
Better check what your editor says this thing is! The DOOM2 engine
only understands certain types.
E0115: Line 123 uses illegal line type 200
Again, there are only a certain number of legal line types. Better
check what your editor did here.
E0116: Line 123 uses an invalid sector number 10000
Probably referencing a sector higher than the number of sectors in
your map.
E0117: Sector 12 has an invalid light level 400
Light levels range from 0 to 255.
E0118: Sector 98 has an invalid type 100
E0118: Sector 98 has an invalid regular type 300
E0118: Sector 98 has an invalid general type 10000
Check what your editor says this sector type is. The DOOM2 engine
only supports certain sector types.
BOOM introduces general sector types, to allow multiple characteristics
in the same sector.
E0119: Vertices 98 (line 56) and 107 (line 78) are identical
These vertices lie on top of one another, which might not be what
you intended. Move one or the other if it's a problem.
E0120: Lines 876 and 877 are identical
These lines lie on top of one another and share end vertices. This
is probably NOT what you intended. Change one or the other.
E0121: Lines 67 and 76 intersect
These lines intersect each other. Unless you're doing this on
purpose for some special effect, you should move one or the other
so they don't intersect. Lines should normally only touch each
other because they share vertices.
E0122: Sector 77 isn't closed. Check vertex 876.
All sectors should be closed, unless you're doing some special
effect. The lines of this sector that touch at the given vertex
probably have non-matching sectors on their first or second
sides.
E0123: Line 56's [first/second] vertex is illegal
The given vertex falls outside the set of vertices that are being
used in your map. Better check.
E0124: Line 87's [first/second] side is illegal
The sidedef number on the first or second side of this line
references an illegal sidedef, probably outside the set of sidedefs
for your map.
I0125: Sector 78 has zero height
This might be what you intended, but you should check anyway. The
ceiling and floor are at the same altitude, and the sector doesn't
move.
I0126: Sectors 456 and 457 are identical; could be merged at line 655
You could join these two sectors if you really wanted to, and get
rid of the common line.
I0127: Line 45's [first/second] side lower absorbs bullets
On a two-sided line, if the ceilings of both sectors are sky,
and a lower is visible on either side, you'll get no bullet puffs
when you shoot the lowers. There isn't anything you can do about
this unless you redesign the area.
I0127: Line 654's [first/second] side lower absorbs bullets.
Sector 123 moved.
Same as the previous message, but you can't see the lower texture
until a sector moved.
E0128: Line 123's [first/second] side lower absorbs rockets (fix with -r)
Similar to bullet absorption, but rockets and plasma are absorbed
by the lower texture on the line.
There are two cases. The first case (E0129) is where neighboring sectors
are both sky, and are at different heights. DCC can't offer to fix
these. The second case (E0128) is where the second side of the line has
a sky ceiling, and the first side doesn't, and the two ceilings have
different heights. DCC can offer to correct this, since it involves
swapping the two side references so that the sky side becomes side one
and the non-sky side becomes side two.
E0128: Line 2's [first/second] side lower absorbs rockets.
Sector 123 moved (fix with -r).
Same as the previous message, but a sector had to move to expose the
affected lower texture.
E0129: (See E0128.)
I0130: Line 123's [first/second] side normal is textured. Should it be?
This involves moving sectors. The best example is that of a door that
has a texture on its normal. In its closed state, the upper texture
of the line forms the door face, and everything looks ok. But when
the door is opened, the normal (middle) texture of the line becomes
visible, and looks like a separate texture that is being dragged up
out of the floor as the door opens.
To correct, remove the normal texture on the line.
E0131: Zero-length or missing blockmap!
Not something you'll often see if you've bsp'ed your map properly.
I0132: Line 17 is detached
One or both vertices of this line aren't used by any other lines. If you're not
trying to do some special effect, and this line isn't a trigger, you
might want to tie it to another line.
E0201: Thing 98 isn't in a sector
This thing lies outside all sectors. Either delete it or move it
inside a sector.
E0202: Thing 87 doesn't exist on ANY skill level
You can set the skill levels where things will appear. Unfortunately,
this poor thing isn't being allowed in the game! Better delete it
or let it show up on some skill level.
I0204: Thing 77 is marked MULTI, and will block the player
You may have design differences between Single-player and
multi-player/deathmatch that require things like torches that only
show up in multi-player/deathmatch mode. But be careful that you
haven't stuck these kinds of things in places where the player
gets unintentionally blocked. (I know, because I've done this!)
E0205: Thing 4 is a Player Start marked MULTI
It makes no sense to mark Player Starts as MULTI. Remove the
MULTI flag.
E0206: Thing 43 is a teleport exit in an untagged sector
You've got a teleport exit in a sector, but the sector isn't tagged,
so it won't work. Either remove the exit or tag the sector to the
teleport trigger linedef.
E0207: Thing 6 is too tall for sector 76 (84 > 80)
This is purely visual. The height of the thing is taller than
the height of the sector it's in. Play the map and see if it
matters. If things don't look quite right, raise the ceiling or
lower the floor, or remove the thing.
I0208: Identical things in the same spot. Check thing 87.
Sometimes this is ok, especially if you're trying to give the
player a whole load of ammo at the same moment. BUT, you might
not have wanted to do this, so you better check. Sometimes, level
editors do strange things when you copy things.
E0209: Things 87 and 90 are stuck together
These things are so close that they'll appear stuck together. In
the case of monsters, which are expected to move, they won't.
Either move them apart, or delete one.
E0210: More than 20 Lost Souls (24) on skill 4,5
When there are more than 20 Lost Souls on a map, Pain Elementals
won't spit any more out. When you see this message, it means that
you're starting the level with PE's and >20 Lost Souls, so you're
going to see the effect. Since the number of Lost Souls may vary
depending on skill level, that's shown.
You should delete enough Lost Souls to get down to 20 or less.
E0211: There is NO Player [1/2/3/4] start
The indicated Player Start is missing. Stick one in.
E0212: Fewer than 4 DM starts (0)
Whoa! I guess you don't expect anyone to play Deathmatch with this
level. If you do, I suggest you add between 4 and 10 DM starts!
E0213: More than 10 DM starts (12)
10 is the upper limit on DM starts, so trim back.
E0214: There are 2 Player 1 starts
When this happens, the lowest-numbered Player Start is the one the
engine uses, and the second one becomes a DOLL. If the player
can find the DOLL, it doesn't look too good. Any damage to the DOLL
hurts the Player.
Some special effects (invisible weapons) rely on this, so if that's
what you intended, leave it alone. Otherwise, get rid of the bad
Player Start.
E0215: Thing 65 is a DM Start marked MULTI
It's useless to mark DM starts as MULTI. Remove the flag.
E0216: Thing 45 is embedded in line 678
If the thing is a monster, it won't move when it sees you. It the
thing is an inanimate object, it MAY appear stuck in the wall (part of
it disappears depending on your viewing angle). Definitely worth
checking.
E0217: Thing 38 respawns, but appears on skill other than 3
For TeamTNT Deathmatch projects, items that respawn are only allowed
on skill 3.
E0218: Plasma! Thing 215 should not appear on skills 1 or 2
For TeamTNT Deathmatch projects, plasma items aren't allowed on
skills 1 or 2.
I0219: Thing 4 doesn't respawn. Want it on skill 3?
For TeamTNT Deathmatch projects, items that don't respawn aren't
allowed on skill 3.
E0220: No monsters in TeamTNT DM Mode. See thing 67.
For TeamTNT Deathmatch projects, monsters are not allowed.
E0221: Sector 101: PUSH-enabled, but no PUSHER Thing (skill 3, single-player)
This sector has its PUSHER bit set, but there's no PUSHER Thing
present. Add one.
E0222: >1 PUSHER Things in sector 22 (skill 1&2, Co-op)
There can only be one PUSHER thing in a sector. Delete the extras.
E0223: Thing 3 is a Player Start not appearing in Co-op
Player Starts should appear in all modes.
E0224: Thing 7 is a DM Start not appearing in DM
DM Starts should certainly appear in DeathMatch mode!
E0301: Missing normal texture on line 888's 1st side
Probably a one-sided line w/o a normal (middle) texture. Add one.
E0302: Missing lower texture on line 88's 1st side
E0303: Missing lower texture on line 76's 2nd side
E0304: Missing upper texture on line 14's 1st side
E0305: Missing upper texture on line 98's 2nd side
You're going to get HOM from these unless you add textures where
indicated.
E0306: Line 76's [first/second]-side normal may extend into the floor
or ceiling
If the two sectors on either side of this line are identical (either
they're the same sector number or their attributes are identical),
and the height of the normal texture is taller than the wall
space between floor and ceiling, (take breath) then the texture
will appear to bleed either into the floor or ceiling.
You can correct this by placing different sectors on either side
of the line, then changing something subtle, like the light level
so it's slightly different between the two sectors.
E0307: Line 77 uses unknown [upper/normal/lower] texture JUNKY
Your map uses a texture that isn't included in the texture list.
Better change to a valid texture, or check your custom textures to
make sure they're being included in the PWAD when you build it.
E0308: MEDUSA: Line 765's [first/second]-side normal
MEDUSA occurs if you have a multi-patch texture on a two-sided
normal. DCC will tell you if any of the multi-patch part of the
texture is showing.
Either remove the texture, or pick another one that's made of only
a single patch. You probably don't know how many patches make up
textures, so just keep trying different textures until the problem
goes away.
E0309: Missing [upper/normal/lower] texture on line 123's [1st/2nd] side; a
E0310 [staircase/floor/ceiling/door/elevator] moved
E0311
E0312
E0313
Moving sectors again. A missing texture was exposed by a moving
sector. You should place a texture in the indicated place.
E0314: TUTTI-FRUTTI: [upper/normal/lower] texture on
E0315 line 123's [1st/2nd] side
E0316
E0317
E0318
If the texture height is <128, it will not tile properly, and you
will get a patchwork of colors if the wall height is greater than
128 and you've used one of these textures.
Either match the sector height to the texture, or use a different
texture.
E0319: TUTTI-FRUTTI: [upper/normal/lower] texture on
E0320 line 12's [1st/2nd] side; a [staircase/floor/ceiling/door] moved
E0321
E0322
E0323
Same as the previous message, but a sector had to move before the
TUTTI-FRUTTI showed itself.
E0324: Line 888's [1st/2nd] side needs a y-offset of 24
DCC does Y-alignment checking. When this message appears, DCC is
suggesting a better y-offset than the one you're using. DCC can
automatically correct y-offsets if you invoke the -y option and specify
an output file.
Of course, you always have the final say, and have probably set things
up the way you want them. But you might give DCC's suggestions a try
and compare them against your own settings.
E0325: Line 777 needs a pegging change for y-alignment
DCC won't offer to automatically correct these kinds of lines, since
it may affect texture display if a neighboring sector moves. Better
check it yourself.
E0326: TUTTI-FRUTTI: lower texture on low-unpegged line 56's [1st/2nd] side
The low-unpegging is probably being used for the normal (middle) texture,
but it may affect the display of the lower texture on that line.
E0327: Transparent [normal/upper/lower] texture on line 567's [1st/2nd] side
E0328
E0329
E0330
E0331
A transparent texture is being used on a surface that only has one
side. Check the texture visually and see if TUTTI-FRUTTI is showing
itself. If so, change the texture.
E0332: Line 212: translucency on one-sided line
BOOM supports translucent textures. Translucency on a one-sided line
makes no sense.
E0333: Lines 45 and 123: translucency controls with the same tag
Separate translucency control lines have the same tag.
E0334: Line 567: invalid translucency filter MYSTUFF
The translucency filter name provided does not appear in BOOM or
your PWAD. Pick one that does.
E0335: Line 456: invalid normal colormap SANDY23; COLORMAP used
You're trying to use a colormap that doesn't exist in BOOM or your
PWAD. Pick one that does.
E0336: Line 234: friction control, but sector 35 not enabled
For friction/sludge to work, you need to set bit 8 in the sector type.
E0337: Line 765: pusher control, but sector 34 not enabled
For pushers to work, you need to set bit 9 in the sector type.
E0338: Line 17's lower texture displays differently in BOOM than in DOOM2
This is a low-unpegged two-sided line with a texture whose height is
less than 128. In DOOM2, this lower might display Tutti-Frutti if the
texture alignment on the lower was not correct. (See E0326.)
BOOM eliminates Tutti-Frutti by correcting the texture alignment code.
This may cause some properly-displayed DOOM2 lower textures to appear
misaligned in BOOM. To correct this, clear the line's 'low-unpegged' flag.
I0401: Sector 55 is painful, but uses non-painful floor flat NOPAIN
The player will expect certain flats to be painful, and certain to be
not painful. The [PAIN] list in the dcc.ini file describes the flats
that are expected to be painful.
If you've made your sector painful, and you're using a flat other
than these, DCC tells you about it, in case that wasn't your intent.
This may be a design choice on your part, however, so you might not
want to change the flat.
I0402: Sector 77 uses painful floor flat BLOOD1, but isn't painful
This is the compliment to the previous message. You've used what is
normally considered a painful floor flat, but you haven't made it
painful. Again, you may want to correct this, or you may want to
leave it alone.
I0403: Sector 3's flat GATE1 isn't aligned on the 64 grid
Most of the time you'll want certain flats to look right, in relation
to the architecture you're using. For example, teleport gates are most
often aligned on the 64x64 grid so that the flat is visually correct.
DCC will tell you when you're using one of the textures from the
[64x64] section of dcc.ini, and the sector isn't aligned on the
64x64 grid.
This might be a design choice, however.
E0404: Same ceiling height in sectors 123 (F_SKY1) and 124 (not F_SKY1)
When you have a textured ceiling next to a sky, and they're at
the same height, it will look like the textured ceiling has no
depth. You should lower the textured ceiling slightly to give it
a lip (or raise the sky).
E0405: Same floor height in sectors 123 (F_SKY1) and 124 (not F_SKY1)
Same effect as the previous message, but at the floor level. Either
lower the sky or raise the textured floor.
E0406: Sector 45 uses unknown [floor/ceiling] flat WALLY07
Couldn't find the given flat in the flat list.
I0501: Line 456 is a W1 teleport trigger. Did you mean to use WR?
You might want this to be a one-time-only trigger, for example if
you're releasing one monster from a holding area.
But, you might have wanted this to be a repeatable trigger, and
you messed up, right?
E0502: Line 888: teleport trigger w/o an exit in any skill
You've got the tags right, but you didn't put a teleport exit in
the destination sector. Better go do that.
E0503: Line 543 has a tag < zero
Tags should be greater than zero.
E0504: Tag 54 is used by line 67, but not by any sectors
Your tag on this line will have no effect. Either go tag the
right sector, or delete the tag.
E0505: Line 23 is a manual door trigger w/o a door
You've marked this line as a door, but there's no door behind it!
Either change the line type or make that door!
E0506: Line 3: tag is missing
You've set the line type to be a trigger, but you haven't indicated
a target. Either change the line type to a non-trigger, or add a
tag (and the sector it affects).
E0507: Line 78: tag, but no trigger
What's this line supposed to do? Either remove the tag or make the
line some kind of trigger.
E0508: Sector 77 has invalid tag -3
Similar to E0503, but a different error message. (Programmers!)
Either remove the tag or make it a legal one (>0).
E0509: Tag 54 is used by sector 87, but not by any lines
You've tagged this sector, but there's no corresponding line with
the same tag, so what's supposed to happen? Either remove the tag
or go make some line do something.
E0510: Line 46: teleport trigger with >1 exit (skill 1&2, single-player)
There should only be one teleport exit per tag, and you've got two
that share the same tag. Go make one of them different.
E0511: Line 45 is a switch line with 2 sides
Since manual switches are usually associated with textures, you
might have a problem here. The player isn't going to know that
a switch exists at this point.
You might be doing this on purpose if you have several manual
switch lines stacked in front of a switch texture, but you might
want to check anyway.
E0512: Line 543 is a walking trigger with only 1 side
It's a walking trigger line, but you can't walk across it. Give
the line a second side, or remove the trigger, or make it a
manual trigger.
I0513: More than 30 moving floors (32)
If the number of simultaneous moving plats goes over 30, the engine
is going to have a problem. This message shows you the potential
for your map, but it says nothing about whether they'd all be
moving at the same time.
I0514: Sector 13 has a 667 tag, only useful on MAPS 7 & 32
This tag is used to make sectors move when certain monsters
die, but it only takes effect on MAPS 7 and 32. If your map is
destined to end up in one of these slots, all is well, but if not,
you may want to do something about it.
E0515: Lines 23 and 543 are teleport exits with the same tag
Since you're only supposed to come in one place, these line-to-line
teleport exit lines should have unique tags.
E0517: Sector 23 is PUSH-enabled, but not tagged to control line
The PUSH enable bit in this sector is set, but there's no controlling
line to set the magnitude or direction.
E0518: Teleport trigger w/o an exit
There is no teleport exit Thing for this trigger line.
E0519: Line 234: teleport trigger with >1 exit
There is more than one teleport exit Thing for this trigger line.
I0601: Should be hidden lines (not shown) on the automap (fix with -h):
You'll get a set of line numbers following this message. This
means that these are lines that you really don't need to show on
the automap, and they're probably just making useless spiderwebs
for the player to look at, and getting in the way of useful
information.
DCC can automatically correct these for you if you invoke the -h
switch at run time and specify an output file.
E0701: Line 54 should NOT use lower unpegging
E0702: Line 34 SHOULD use lower unpegging
E0703: Line 23 should NOT use upper unpegging
These have to do with moving floors or ceilings. You should
inspect these lines and their associated moving sectors, to make
sure the visual effect is what you want. Sometimes you've done
this on purpose (braces that move with lifts), but more often than
not you've got moving textures that you really don't want to be
moving.
E0801: Found Red keys, but no Red doors
E0802: Found Blue doors, but no Blue keys (skill 4&5, Co-op)
E0803: Found keys, but no locked doors
E0804: Found Any-key doors, but no keys in any skill
E0805: Found 3-key doors, but no Yellow key (skill 1&2, Co-op)
E0806: Found Red-Card doors, but no Red Cards (skill 3, single-player)
E0807: Found 6-key doors, but no Blue Skulls in any skill
These all have to do with the matchup of keys and locked doors, and are
self-explanatory. You should correct these problems.
If you're doing a TC, and you've replaced keys with other objects,
just pretend they're keys when using DCC...
E0808: Thing 17 is a key that doesn't appear in single-player mode
You have a key that should appear in single-player mode, but doesn't.
Your keyed door doesn't go away in single-player mode, so why have a
key that goes away?
E0809: More than one Red Skull (skill 1&2, Co-op)\n",
E0901: There are NO secret sectors
This isn't a real problem, but the accepted convention is that
you should have at least one secret sector, even if it's one that
the player HAS to walk through. That way, when he gets to the
end, he'll definitely know whether he hit all the secrets or not.
In deference to your audience, go tag a sector as a secret.
I0902: Sector 56 is SECRET
This is for your information only. You'll be able to count how
many secret sectors are in your map.
E1001: No exit!
Hey! Do you want the player to STAY THERE?
I1002: Sector 67 includes a regular exit
Just so you know you've got an exit...
I1003: Sector 56 includes a secret exit
This is only useful on MAP15 and MAP31, so if your map isn't going
to end up in these slots, you should remove this.
I1004: Exit via BOSS death!
You've got the ROMERO-HEAD in your level. That's OK, just thought you
might like to know. If you're doing a TC, you might have someone
else's head...
References
----------
"The Unofficial DOOM Spec", v1.666 by Matt Fell.
Robert Forsman's list of things to check for. I discovered this after I
had already put my own list together, and had started coding.
BOOM's boomref.txt file.
Ty Halderman's seemingly unlimited knowledge.
TeamTNT's massive beta test.
Bug Reports
-----------
If you find any bugs (in DCC, not in your level...), or have suggestions
for other things that need checking, please send email to
rsphares@yahoo.com
Change history since v1.01
--------------------------
v1.02
1. Added -s switch to tell DCC to ignore certain special effects. In v1.02,
that includes messages
E0121: Lines intersect
I0126: Sectors are identical
v1.03
1. Lines that share co-incident vertices are not flagged as intersecting.
These lines are already reported by
E0119: Vertices are identical
2. The 'E0119: Vertices are identical' message now reports the lowest line
numbers using these vertices.
3. Added the I0132 message for detached lines.
4. Added these messages to the set that DCC ignores if the -s switch is set:
E0119: Vertices are identical
I0132: Line is detached
v1.04
1. Fixed bug in 'are all sectors used?' code.
2. DCC wasn't finding things outside of map. Fixed.
3. DCC now won't complain if 666 and/or 667 line types are found on MAP07 or
MAP32.
4. Removed some false negatives from the 'on the 64 grid' check.
5. Added check for monsters in deathmatch mode.
v3.00
1. Removed the E0105 and E0107 errors. Working with the BOOM sources showed
that these are valid situations.
2. Line type 666 can be used on any map, so it's no longer an error.
3. Added BOOM support.
4. Added I0111 to the list of special effects. Ignored if -s is set.
v3.01
1. Fixed bug where an unknown Thing caused a Seg Violation.