TIPS FOR CREATING/EDITING WOLF3D & SPEAR of DESTINY DESIGNS by Warren Buss Table of Contents INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . 3 Floor Codes. . . . . . . . . . . . . . . . . . . . . . . . . . 3 Changing Floor Codes . . . . . . . . . . . . . . . . . . . . . 4 Push Walls and Hidden Rooms. . . . . . . . . . . . . . . . . . 4 Moving vs. Stationary Guards . . . . . . . . . . . . . . . . . 6 Moving Guards. . . . . . . . . . . . . . . . . . . . . . . . . 6 Using "CLIPPING" to Check Up (SoD Game ONLY) . . . . . . . . . 7 The Effect of and on Activated Guards Moving About the Floor . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Effect on Play of Guard Choices vs. Design Decisions . . . . . 8 Flashing Screen Borders. . . . . . . . . . . . . . . . . . . . 9 Elevators. . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Secret Floors. . . . . . . . . . . . . . . . . . . . . . . . . 10 Episode Endings (Wolf3d & SoD) . . . . . . . . . . . . . . . . 10 Inaccessibility of Objects and Acquiring Bonus Points. . . . . 10 Trickery . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Balance. . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Narrow vs. Wide passages.. . . . . . . . . . . . . . . . . . . 11 Weapons. . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Over Designing - or Too Much of a Good Thing . . . . . . . . . 12 Wrapping it up . . . . . . . . . . . . . . . . . . . . . . . . 12 Debugging Codes. . . . . . . . . . . . . . . . . . . . . . . . 13 Command Line Parameters. . . . . . . . . . . . . . . . . . . . 14 -ii INTRODUCTION The following information is not a definitive work on this subject, but should help most people avoid some of the pitfalls associated with translating their WOLF3D or SoD floor design ideas into working, error free floors. Floor Codes Design problems in Wolf3D and SoD seem to center around a misunderstanding of the relationship of floor "codes", doors (locked and unlocked variety), and hidden doors (or push walls as some people prefer to call them). First, an explanation of the use of floor codes. There are a number of unique "codes" to use when mapping out a floor. These codes are used to isolate areas of the overall floor from one another such that enemy guards can be made to engage in a fight or not, depending on how you assign floor codes. One of the more common problems is failing to assign floor codes in all floor space, or assigning them haphazardly. The results of either practise are unpredictable, but some of the effects are: - Certain sound effects may be missing. - Push Walls won't always slide all the way open. - Stationary guards become living statues and won't fight. - Moving guards won't fight either and will move in place or in crazy ways. - Doors may become invisible. Unless your floor design has a very large number of rooms, there are usually ample unique floor codes to assign each room its own code, although this isn't always desireable. In general there are 3 approaches to assigning floor codes, according to what you want to accomplish. 1) Assign a single floor code to all floor space. Unless you take other measures, this will have the singular effect of alerting every guard on the floor as soon as the first shot is fired. This can lead to some interesting fire-fights, but isn't always the most desired approach because the action usually (not always) ends quickly (either they're all dead or the player is) and he's left to wander through a bunch of empty rooms that offer no further challenges (or restart the level). 2) Assign a unique code to each individual room. In this scenario guards in the next room are unaware of any developments in the current room - unless something causes the door between the rooms to open. -3 3) Assign unique codes to contiguous or non-contiguous groups of rooms. This offers a mixture of the above 2 approaches, but is more controlled and often the most interesting and suspenseful strategy. Special Floor Code and Enemy Guard Eyesight There is one floor code that has a different effect from all the rest. This is floor code '6a', or the code which designates a guard as being "deaf" or "steadfast". Such a designation means 2 things: the guard will not react to shots being fired in the area until and unless he sees the player, then he responds just like any other guard. But his eyesight is much better than other guards as he can see in every direction (that isn't blocked by something) including one square behind. These guys can even see between the cracks of wall cubes that are joined only at the corners. (It's kind of eerie to hear a guard sound off that can't be seen anywhere). By contrast, guards on all other floor codes can only see straight ahead but will be alerted regardless of their impaired vision after the first shot is fired on the same floor code as they are standing. NOTE: Do not place '6a' floor codes adjacent to doors; this will cause the doors to become invisible. (This problem has been fixed in Blake Stone). Changing Floor Codes Another common error in floor design is to change floor codes when going from one area to another but not separating the 2 areas with a door. Doors are used as "switches". When the player moves from an area of one floor code to another with a different floor code, without having to open a door, the guards in the moved-into area will not be "armed", i.e., they appear to be in a trance, until fired at. This may be an interesting effect to create for approaching a Super Guard, but as soon as the first shot is fired, the player better move out of the way fast, because the "statue" just came to life and he doesn't like having his sleep interrupted. Push Walls and Hidden Rooms Push Wall placement is important. In case you don't remember, the official versions of both games place no guards in a room entered through a hidden door. Unlike a normal door, a hidden door is not used as a "switch" to arm any guards on the other side. But the problem is a bit more complicated than that. If guards in a hidden room are somehow set in motion, they can block the movement of the sliding door. This condition is detectable by the sound of 2 notes for each push of the space key, as opposed to the normal sound of trying to open a door that -4 doesn't exist. (These 2 notes also sound if you try to open a push wall from the wrong direction). The guard(s) can be made to move away from the Push Wall and it will open, particularly when the player moves far enough away and can get back in a hurry before the guard does. But often, when the wall does move, it only moves part way. As you will soon see, there is a way to get a hidden door to move more than once. A Push Wall will not slide over a dead body either. The first rule of thumb when dealing with guards in secret rooms is to be sure the secret room has the same floor code as the room from which it is entered. In addition, the room outside the secret room must have a normal door (locked or unlocked). To resolve the problem of guards getting in the way of a sliding push wall, choose one of the following three methods. One way is to design the hidden door entrance so the door slides side-to-side. Such a design can also permit the door to slide forward (room permitting). You can also place an ordinary door in the opening behind the hidden door, which has the advantage of not having to be concerned about guards moving about in the secret room. Its main disadvantage is that if it is used too often, players may start to recognize the existence of this type of hidden door configuration unless you use many such configurations that don't have hidden doors and the one door then is disguised by being only one among a crowd. Another way is to use multiple hidden door object codes such that a sliding wall will move into another hidden object code and can thus be moved again, in any direction you choose. (The hidden door object code can exist in open space as well as in a wall). This opens up all sorts of possibilities. However, there's one drawback. Extra hidden door object codes, which are often not used, can prevent the player from getting the bonus for finding all secret areas. The other way to use guards effectively in a hidden room, and you want the sliding door to move inwards only, is to make sure the guards are standing on a "steadfast" floor code so they won't be moving around the room. If you want more rooms beyond the hidden room, and you want them to have normal doors, then the floor codes of these additional rooms must either be different from the hidden room (and not be used elsewhere on the floor), or the guards in these added rooms must be made "steadfast" if you want to use the same floor code as the hidden room. One more word about push walls. There appears to be a problem in both Wolf3D and Spear of Destiny in that sometimes a Push wall will -5 move 3 squares and the next time, only 2 squares, even when there's unrestricted space in which to move. What this means is: to avoid intermittent problems assume a hidden door will only ever move 2 squares, but always leave room for 3. Another way of saying it: if you want to assume a push wall will move 3 squares, then be sure the player can still get through if the door only moves 2 squares. Moving vs. Stationary Guards All guards except the Super Bosses can be made to move in a predetermined direction and path. This device is quite useful in creating unpredictable action upon entering a room with one or more moving guards. Since a room is never entered at exactly the same instant each time the floor is played, the guards will be in a different position and may or may not see the player right away. In addition, guards can be made to move through doors to adjoining rooms with or without the same floor codes. This is always interesting. While you are busy teaching manners to the guys in one room, in walks an oaf from another, which sets off alarms in the next room(s) with a different floor code as they will hear the fighting and become concerned. Lesson #1: Always try to keep your back away from all doors (including the one you entered!). By the way, Guard Dogs are always on the move - there are no stationary dogs. (I guess Id didn't want to design a graphic of a dog sitting and panting for water or food - ever notice how many rooms dogs are in that have no food or water in them? - It's a wonder the animal rights activists haven't been on their case ). It's generally a waste of time to place moving guards in a room and not lay out a path for them to follow, although there is a trick or two that you can use with a moving guard who has no assigned path. (Tricks are discussed, but not explained, in this section). Also, unless you assign the "deaf" guard floor code to an entire room, it doesn't do any good to put a moving guard on the deaf guard code. Moving Guards If you choose to have guards on the "move", you should provide them with paths to follow (there are directional arrows for this purpose). But there are a several points to note when laying out paths for guards to follow. 1) Don't put dogs in the same paths with other guards. Dogs move faster than other guards and will quickly overtake them. Since the dogs won't be able to pass (around or through) whomever they overtake, the movement will simply cease and all moving guards will ultimately stand and mark time in one place (usually against some wall). 2) Be very careful about using intersecting paths. Once again, unless movement is synchronized, guards will eventually clash at -6 some intersection and all movement will, as noted above, come to a halt. 3) It is not possible to move more than one guard up and down a narrow (one square wide) hallway, unless they are carefully synchronized not to be in the narrow hall at the same time. 4) Don't start a moving guard next to an outside wall facing out. This will generate an error when you play the level. 5) Moving guards cannot be made "steadfast" or "deaf". Using "CLIPPING" to Check Up (SoD Game ONLY) You can generally check on how your moving guards are doing by turning on "Clipping" (in debugmode) and wandering through walls to see how everything looks. Dogs are the toughest to check on. Most guards will not be aware of your presence if a door isn't opened somewhere (either by yourself or a guard whose path takes him through a door). But dogs will quickly sense your presence and come after you and will often activate any other guards in the room. If you shoot anyone while "clipping" is on, every guard on the level (except deaf ones) will come alive. (If there are guards in the first room, remove them before you start the level as they will always be active when you enter the room). To check on dogs, you need to carefully inch through a wall (double thick is best) and stop just as you first view the interior of the room where the dogs are. If you're very careful they probably won't sense your presence. If you go in a fraction too far, then it's all over. One final note about "clipping". You will not be able to pass through the two thicknesses of walls that comprise the level's perimeter. This is to prevent you from wandering outside the level. The Effect of and on Activated Guards Moving About the Floor An activated guard is one that is in Attack mode. Attacking guards will mostly move to the point where the player is currently located. Their progress in locating him can be slowed and often stopped by complicated room patterns; by putting solid objects (barrels, etc.) in their way that they have to move around; or by sheer distance. Some activated guards have a tendency to move away from an immediate threat by going into other rooms and waiting at a door in ambush or simply refusing to come out, waiting instead for the player to come in. All this means is if a large body of "overheated" guards is encountered, one way to counter their threat is for the player to move off in some other direction. This will often cause them to begin to scatter, and may make it easier for -7 them to be engaged in ones and twos later on. Of course the main disadvantage to this tactic is it is not known where they'll be when next seen, unless they're in a bounded area. Always good for a laugh though! The other thing about guards moving from room to room while searching is that they will often open a door into an unrelated floor code and if a shot is fired at the time the door is open, even more guards can become involved in the search. Heh, heh! I love finding dogs in rooms where they shouldn't be. Took me a while to figure out how they learned to open doors. Effect on Play of Guard Choices vs. Design Decisions While sitting at your computer testing a floor design, you may not always recognize what the effect of your choice of guard types will have on game play when viewed against your design decisions. As you already know, the tan guards move slowly and react the same way. The blue SS guards are a bit quicker and more deadly (takes 3 or more shots to bring them down, depending on distance between player and guard). The white uniformed "officers" move much more rapidly, will swerve to make a player miss and are more intelligent acting. Finally, the mutants are the greatest threat of all (except for the Super guards). The mutants move silently and shoot more quickly than all other guards. The effect on design of using officers and mutants is important because of how quickly these latter guards can react. When your floor design is played, the player must be given a way to defend himself, especially from officers and mutants, or be provided a way to attack without being totally overwhelmed. A niche in a wall, a narrow room with no cover, or no way to back off, is inadequate in those cases where the player will have to defend against a host of attackers. Conversely, a medium to large room with enemies everywhere, no cover afforded, and with nowhere else to go, should also be avoided. One of the more critical examples is designing an opening sequence which has the player standing in a room 1 or 2 squares deep and 1 square wide with the a door immediately in front. As soon as the door is opened, and a shot is fired which alerts numerous guards, the player will be overwhelmed. Particularly if the guards are officers or mutants and a better defensive position cannot be taken by moving out into a larger area. The problem is exascerbated by how doors are programmed to open. As far as the program is concerned, the door is considered open the -8 instant someone (the player or a guard) signals it to open. The program does not wait for the door to physically move far enough so actor and player are visible to each other. The mutant guard shoots so fast that the player won't even see the door start to move before the mutant's shot arrives to kill or maim. There's no defense except to try and kill a guard in the doorway so the door will stay open. But if nothing but officers and mutants arrive first, there is little hope of doing this. Besides, guards don't usually try to enter the room before shooting unless the player is out of sight. Review your designs carefully and take this information into consideration. The game is played to be ultimately won by the player, not by the game's designers. Flashing Screen Borders From time-to-time you may experience a phenomenon referred to as "Flashing screen borders". This condition can occur in both Wolf3D and SoD right after B.J. has been killed. When the playing screen comes back up for a restart of the level, the "playing field" will have gotten smaller, but a border will exist out to the original screen size and it will be flashing. (This can occur in either the commercial games or home-grown designs). At game time, the player can immediately expand the screen to its original size and continue the game. However, there are a couple of things a designer can do which will eliminate the problem. 1) Make sure all perimeter walls are 2 thicknesses deep. 2) Reduce the overall number of rooms in the design. Smaller floor designs tend not to have the "flashing" problem. Elevators I don't know if most people have noticed it, but all elevators in the official game are oriented east/west. No elevators are entered from the south or north. This is to ensure that when an elevator is entered, the control will always be directly in front of the player. (When you're hurrying, you don't want to have to stop and look for the switch!) Entering from the north or south will provide two controls on the left and right as the player enters - one of these can be safely eliminated in your designs. Also, if you place an elevator control in a wall with a single thickness, the control will be available for use on both sides! You need to put something on the outside to prevent use of the outside control if you don't want it used, or else put a second thickness of wall behind the elevator. Finally, when you create an elevator to go to the Secret floor, don't forget to use the floor code inside the elevator that -9 signifies you want the player to go to the secret floor when the switch is thrown. (This is floor code '6b'). However, don't use this code in any other elevator including the secret floor, or the episode cannot be completed. Secret Floors Elevators to secret floors must be placed on designated floors in both Wolf3D and SoD. In WOLF3D, the floors that must have elevators to the Secret floor are 1, 1, 7, 3, 5, and 3 for episodes 1 through 6 respectively. In SoD, it is the 4th and 12th floors. In both games these floor choices are to make sure the player will return to the correct floor when the Secret floor is completed. Floor 10 is always the secret floor in Wolf3D. Floors 19 and 20 are the two secret floors in SoD. Episode Endings (Wolf3d & SoD) Episodes in Wolf3D end in 1 or 2 ways, depending on your choice of Super Boss. If you use Hans or Gretel Grosse, upon their death they will drop a gold key which can be used to open a door to a room where Endgame Triggers must be placed. B. J. must walk over them for the episode to end. All other super bosses (Dr. Schabb, Hitler, Otto Giftmacher, and Gen. Fettgesicht) will cause the game to end with an appropriate "Death-Cam" scene as soon as they are dead. In Spear of Destiny, each super boss (Trans Grosse in level 5; Barnacle Wilhelm in level 10; Ubermutant in level 16; and Death Knight in level 18) drops a gold key so B.J. can get to the elevator to go on to the next floor. Except in level 18, when the "Spear" is found, B.J. is transported to the final level to meet the Angel of Death who must be killed before the game can end. Missions 2 and 3 of SoD do not differ except for the names of the super bosses. Inaccessibility of Objects and Acquiring Bonus Points There are basically 2 approaches to playing SOD. One approach is for the player to get through a floor quickly enough to beat the Par time so as to get some bonus points. Such an approach automatically ignores the need to kill all guards, find all hidden doors, and get all the treasure. These last three items constitute the other approach, i.e., taking time to kill everyone, open all doors and get all the treasure, which also earns bonus points. (Once in a great while, a player might be able to do both!) If you design a floor that makes it impossible to award bonuses for using the latter approach, then you have chosen to award only those who use the former approach of getting in and out as quickly as possible. How do you do this? By making treasure, guards and hidden doors inaccessible. One other way is to use the Pac-Man Ghost guard on any level except the final one. The "ghost" is considered to be -10 a guard, but is invincible. No matter what guards are used on the secret floor (or "boss" levels), the player will be awarded 15,000 bonus points just for getting there and out. There is nothing wrong with denying bonus points in chosen situations. This is just to make you aware when designing a floor what the effects of your choice will be. Trickery The official versions of Wolf3D and SOD employ no "tricks" to fool you. However, if you design and edit enough floors, you'll soon learn about the "tricks of the trade". Guards can be made to walk through walls (which the player can then walk through). Objects can be made transparent, and so forth. Although purists may debate the point, I personally think a trick or two adds a new, and interesting element to the game as long as it's done sparingly. It's probably fair to warn the potential user of your custom floor that you've added a trick or two without telling them what or where. Balance When designing a floor, you should strive to achieve a balance among the various skill levels. For example, don't overload with skill 1 & 2 guards, nor fail to add skill level 4 guards. Narrow vs. Wide passages. This'll seem obvious to you old hands. But for those just creating their first floor(s), it's probably worth reminding you that creating narrow passages slows the player who wants to set a record for going from entrance to exit. Of course, every player who uses that same hallway will have the same problem, but it's worth considering. Why do narrow passages slow progress of the player? Any enemies hidden in niches off a narrow hallway impede movement by just being there. The player won't be able rush by them without engaging them in battle. If you want to hide someone off a long, narrow hallway, place him at least two squares deep or widen the hallway, if possible. Weapons If you design a series of floors, be sure to leave a machine gun on several of the floors (also a chain gun). Don't assume that all your floors will remain together. Also, when someone has to start a floor over after being killed, they need to find a machine gun in a hurry. (I know, they should've remembered to save their game at the start of each level, but....) -11 You can either hide a machine gun somewhere, or else place an SS guard near the start. When he's killed, he'll drop his machine gun for the player to pickup. Extra weapons become ammo if not needed. Over Designing - or Too Much of a Good Thing While there's a limit on the number of static objects (anything on the floor except walls and guards) that can be placed on 1 floor (399), if you try to place too many in one room/area, the game will suffer from screen background clutter. This means that actors that are in a room with too many other objects will literally be invisible, as will some of the objects, depending on the angle of vision of the player. This is also true if too many actors come streaming out of a room. You'll lose sight of 1 or more as your display screen will not be able to refresh quickly enough to catch all of them moving through the door. There is a tendency for designers to load up a room or rooms near one of the Super Bosses with ammo and first aid so the player has a chance of surviving. As long as the player keeps these objects to his/her back, there usually won't be a problem. But if the player backs up too far and exposes lots of objects on the floor between himself and the actor, the actor may flicker on and off the screen. Not good! One other example worth mentioning is a room filled with barrels that are placed so as to provide an intricate pathway through the area. Depending once again on the angle of view, many of the barrels will disappear from view. As the player turns they'll reappear. Any actors on the other side of the room will be invisible until the player can get closer (if he/she survives that long). So if you find you've got a room like those described above, redesign it to limit the objects to a smaller area of view. Use walls for partitioning off parts of the room or use smaller rooms, or just eliminate some of the objects by placing some of them elsewhere if you think you need them all. Wrapping it up It is hoped the above tips will help you design your floors with greater confidence and fewer errors. At least you should be able to recognize the symptoms when, for example, you come across a guard in a trance, or doors open and close without sound. Floor designing isn't difficult, only time consuming. Just get out a large sheet of graph paper and grow your design. Then use the MAPEDIT program to transfer your design to the screen. You can skip the graph paper and start designing at your computer if you want. Next, test it, fix it, test it, fix it, etc., etc., until you're satisfied with the results. This is obviously an oversimplified -12 explanation. Your floor has to be saved to disk, then merged into the GAMEMAPS file of a running game to test it. It is very helpful if you can have a friend test your floor designs. Often times problems that you haven't encountered when testing your own design will show up on someone else's computer. All floors occupy an area 62 x 62 squares in which to layout your designs. (The actual area is 64 x 64; the extra 2 squares in either direction are the perimeter wall which has to be there. You can add designs to it and change its color if you want). Try to leave some space for your name to be added somewhere, and a floor title, if you want one. Debugging Codes Often referred to as Cheat codes by those who will probably never use them for any other purpose, these codes can help you when debugging any floor in any episode. To enter Debug Mode use one of the following commands and parameters depending on the game and version number: Wolf3d -goobers (Version 1.1 and later) Spear -debugmode (all versions) Now begin or restore a game. While in the game, press and hold the Left Shift, Alt, and Backspace keys. You should see a message displayed stating the debugging keys are now available. Hold down the Tab key while pressing one of the debug keys. B - changes border color C - displays statistics E - Ends the games F - displays current coordinates (X,Y) of B.J. G - God mode (invincibility) H - hurt yourself (-16% health deduction) I - free items (health, ammo, increased score, and next weapon M - displays memory usage N - toggles "clipping on/off (SoD only) P - pauses the game Q - quit directly to DOS S - toggles slow motion on/off T - displays graphics & sounds of game. Esc to exit V - ?? W - warps to any level. -13 Command Line Parameters NOWAIT - Automatically skips several screens at game start BABY - starts game at skill level 1 (Can I play daddy) EASY - starts game at skill level 2 (Don't hurt me) NORMAL - starts game at skill level 3 (Bring 'Em on) HARD - starts game at skill level 4 (I am Death Incarnate) TEDLEVEL nn - start game at any episode and level. 'nn' is episode & level numbers minus 1 For example, to go to the 2nd episode, level 5 of Wolf3D, enter: -tedlevel 14 and to go to the 1st episode, level 9 of Wolf3D, enter: -tedlevel 8 To go to level 13 of Sod, enter: -tedlevel 12 Note: there is only one episode in SoD so double-digit numbers are used only for the level number. If you enter "-tedlevel 20" to get to the 21st level (Angel of Death), the floor number shown in the game will be number 18 as the level is really an extension of level 18. By default, unless you specify a skill level (see above), you will start the game at skill level 2. -14