Creating Maps for Last Man Standing Coop
Official Guide for Creating Maps in LMS
Copyright 2005 Last Man Standing Team

Contents

1. Loading the Mod into D3Radiant
2. Spawning Techniques
3. Progression Maps
3.1 Telling the game it's a progression map
3.2 Doors that close when all players are through
4. Killfest Maps
4.1 Giving items to players when spawning
5. Defense Maps
6. General
6.1 Limiting the number of  monsters active at the same time
6.2 Adding music to a map
7. Testing Your Maps
8. Advanced Mapping Techniques
8.1 Calimer's Advice
8.2 Kaiser's Advice
8.3 MercyKiller's Advice
9. Revision History
10. Legal


1. Loading the Mod into D3Radiant

Create a custom shortcut to Doom 3. 
Then add this after “Doom3.exe” +r_mode 6 +seta com_allowConsole 1 +r_fullscreen 0 +vid_restart +editor +set fs_game “name of folder”

“name of folder” is the folder name located in Doom3/  So for example if the mod folder is named lms3 it would be +set fs_game lms3

Check out the new custom entities =) . Use LMS WEAPONS! for LMS Mod gametype maps. If you don't the weapons will not work. It is recommended that you use lms monsters over the default ones, though some of the lms ones have been modified.  Also make sure to create at least 4 info_player_deathmatch entities.

Here is a good link with a lot of general tutorials
http://www.doom3world.org/phpbb2/viewtopic.php?t=3017

Back to Contents
2. Spawning Techniques

Spawning a monster (this is useful for creating waves of monsters):
Create a trigger once
Create a monster, put in the Key spawner 1 (or more)
select the trigger once, then the monster(s), hit ctrl K

Spawning endless monsters in a loop (thanks link):
Trigger once -> trigger timer -> monster entity with key spawner set to 1 or more

Respawning ammo (thanks link):
Add the key "respawn" and enter the time in seconds as the value for how often the ammo respawns

Making monsters respawn after they die in a continuous loop:
Basically just go trigger_once --> monster (spawner =1) --> trigger_relay --> back to the same monster

To have monsters spawn when you go through an area:
Create a trigger multiple (I think you need set delay and wait too) -> monster entity with key spawner set to 1 or more (thanks timbo)

If you want the monsters to que and appear when you exit the area:
trigger touch -> trigger multiple (wait, delay) -> monster entity with key spawner set to 1 or more

Back to Contents
3. Progression Maps

Prefixed as “prog_” maps are called progression maps if there is some goal or mission to the map where the player(s) has to progress from area to area with the aim of reaching a final area (and possibly completing a final task there).

All players start off at a start location, if anyone dies before completing all objectives they will be  forced to spectate the other playing players. Anyone connecting to a progressions map will automatically be added to the spectators and cannot play until the map is restarted.

3.1 Telling the game it's a progression map:
For all the gameplay dynamics in progression maps to work correctly we need to make sure to tell the game code that the map is a progression map. We do this by simply adding the key progression_map to the worldspawn entity with a value other than 0 (typically 1). Setting this key is required for all progression maps, not doing this will cause undefined gameplay behavior.

3.2 Doors that close when all players are through:
You often want to close doors to previous areas so you always know in what area you have the players. The problem is how to make sure all players have walked through the door before it closes. It can be accomplished by using a trigger_once trigger to close the door. You must add the wait_all key with a value other than 0 (typically 1).

The trigger_once will not activate the doors until all players playing are touching the trigger. Make sure the trigger_once is large enough so all players easily can touch it. You should also consider to add some kind of sign to the ground where the trigger_once is so players know where they must meet up before continuing.

Back to Contents

4. Killfest Maps

Prefixed as “kf_” player(s) are always in the same area on killfest maps. The goal here is to survive as long as possible against hordes of monsters. If a player dies he will respawn immediately or be forced to spectate if it is in hardcore mode.

4.1 Giving items to players when spawning:
We often want players to receive one or more weapons and a backpack every time they spawn. This can easily be achieved in a few steps:

1.Create the weapons and backpacks you want the player(s) to receive when they spawn.

2.Hit esc to make sure no other entities are selected. Then select the info_player_deathmatch and then the backpack or other item and hit ctrl+k You will now notice that in your entity information for the info_player_deathmatch that the item is targeted.

Back to Contents
5. Defense Maps

Prefixed as “def_” these maps are mainly based around the concept of having to defend a base, whether it be for a certain amount time, to keep an enemy out of a certain area, etc.  Radiotower is an example of this because monsters are trying to break down the doors of the outpost and destroy the radiotower while your objective is to defend the outpost and holdout long enough for help to arrive.

Back to Contents
6. General

6.1 Limiting the number of  monsters active at the same time:
Doom 3 was designed to have at maximum 3-5 monsters in view and active at the same time, anything more quickly lags down the computer due to pathfinding, physics calculations and Inverse Kinematics evaluation. Crowd control is therefore extremely important, especially in this mod where spawners often are used.

Here's an example: Let's say you have 4 imp spawners, and that they spawn monsters at intervals of 10 seconds. The mapper expects 10 seconds to me more than enough time for the player(s) to kill the four monsters before a new wave is spawned to attack. Unfortunately the player isn't very good at aiming and ends running around so as not to get killed. After a minute of running around and successfully killing a few imps there are still 20 imps alive. If the player hasn't already died, the lag will make for a very unsatisfying experience.

6.2 Adding music to a map:
To add music to a map you need to create a speaker entity and enter the proper pathname in the speaker entity key according to where you placed your music file. In LMS the music resides in doom3/lms(version #)/sound/music. To have the speaker played globally and affected by the music volume slider, make a key named "s_music" in the speaker entity and set its value to 1.

Back to Contents
7. Testing Your Maps

To properly see how your maps work with the LMS code you need to create a server run the map like that.  This is because LMS uses multiplayer code, not single player.  The easiest server to set up is a listen server, which is where the player is actually the client and server at the same time.  There might be better ways to do this, but this is what I do.  As a note this is how to do it manually, you can always use the menu, but I find this way to be a bit quicker.

Create a new doom3 shortcut and after doom3.exe put in +set developer 1 +set fs_game Last Man Standing +exec server.cfg

As a note, where it says “Last Man Standing”, that is the actual folder name of the mod, not how it appears on the mod list (though they could be one in the same).

Then you must create a server.cfg file, by creating a txt document and renaming it appropriately, and make sure it is in the folder with the mod (though it might work to have it in the doom3 directory too, but just to be safe).  As a note my sample server.cfg is included in the Documents folder, feel free to change it to suit your needs.  It is, currently set to play kf_commandoattack only.

To set up a dedicated server, you can use all this same information, but instead of creating a shortcut to doom3.exe, create a shortcut to doom3ded.exe  Also as a note there are many more server options than I included.

Back to Contents
8. Advanced Mapping Techniques

8.1 Calimer's Advice:
  1. It is recommended that you learn how to use visportals to help reduce how much the player(s) are actually seeing.

  2. Take advantage of the caulk texture.  It helps to blanket the whole map with caulk textures and then just add viable textures to the faces of surfaces, instead of the whole brush.

  3. Don't have monsters teleport in using the teleport key.  Use the spawner key instead.  Also you can use Beerman's custom teleporting. (beerman hopefully you can elaborate on this in advanced mapping techniques)

  4. Having too many brushes and/or models helps to create lag, especially if you have odd shaped brushes, keep this in mind.

  5. We have a system worked into the code that tries to help balance gameplay when more players are added and when the difficulty level is increased.  This means that you really do not need to go overboard creating tons of monsters to make sure a map is challenging enough for four players, you'll probably just end up creating too much lag.   More details on the exact changes we made to gameplay are in the manual under Chapter 6 Gameplay Adjustments.

  6. Entering condump <name> you can save your console to a txt document.  Can be helpful if you get errors in the console while playing your map.

  7. USE LMS WEAPONS!!! if you are making a map to use with LMS mod. If you don't it will cause problems.

8.2 Kaiser's Advice:

  1. Avoid using the teleport key when spawning monsters, it causes serious lag. But when working with the spawner key, try not to have a monster just 'appear' in thin air, have the monster placed in a dark area, or a place the player won't be able to see (and see with the flashlight)..
    If you have NO place to hide the monster and you insist on using the teleport effect, I suggest that you 'fake' it. Meaning use the spawner key, but also add a func_emitter with the teleport effect as the particle to use. Also include a sound with the teleport sfx. Make sure you trigger those when you trigger the spawner/monster!

  2. Lightning placement plays an even more serious role here due to all the ambient lightning coming from projectiles, missiles etc. If your room has more than 4 light sources, then try detailing your map up, splitting up floors and decorate them, this often reduces the light count per surface.

  3. When making a Killfest map, its best to stay simple in design, especially if you plan on spawning a handful of monsters. Keep the area wide so that gives the player to avoid any attacks.

  4. Keep the player on the move! Design multilevel structures and pillars and place monsters on those areas, that way, monsters will be attacking from below, and above!

  5. Look both ways before crossing a street! :P

8.3 MercyKiller's Advice:

  1. Don't use the teleport key to spawn monsters. I learned this the hard way with chambers of misery. In reference to Kaiser's method of hiding the monster in darkness, this is no longer as effective with the addition of infared. Preferably, conceal the monster behind a piece of level geometry. For inspiration, look no further than id's single player campaign. In prog_bunker, I have two hatches in the ceiling that lead nowhere. I have imps spawning in midair, concealed from the player. They fall out of the the hatches in the ceiling, making it look natural. Not only does this conceal the spawn, but is also adds a cool little effect to the game, and heightens the player's sense of fear.

  2. To use ambient lighting, do not use the borked ambient light textures from Id. Try using manual lightmapping. BloodRayne's method can be found here: http://www.doom3world.org/phpbb2/viewtopic.php?t=8045&highlight=ambient+lighting
    Note that lightmapping causes textures to be washed out, but sometimes a little loss of detail is worth the effects you can achieve. Preferably only lightmap large outdoor environments. There is no reason to use lightmaps indoors.

  3. Sketch out a diagram of your map, figure out how it will flow, decide which monsters to place where. Decide what kind of textures and lighting setup you will use, as well as static mesh positioning. When I first pop open radiant, I've got a good idea of how I'm going to construct my map. 50% of mapping is done outside the editor. That said, there isnt really a need to go overboard and create detailed concept art - I use graph paper and a ruler, but it really does help you visualize the finished level.

  4. Ask yourself if you, as a player, would think that the map you're making is fun. If not, then you seriously need to rethink the design.

  5. By far the two most important things in a killfest map are layout and pacing. A fast paced, wide open map like Chambers of Misery is a very different gameplay experience, than, say, a more cramped level like Commando Attack. Decide if you want you're map to be large or small, cramped or open. Then decide how fast the players will be able to move throughout your level. Large hallways lend themselves to bunny hopping, running, and having the team spread out across the level, while cramped areas lend themselves to camping and "team huddles".

  6. Flow is the most important factor in general level design. Do you want the players to be in constant retreat? What about stationary defense? Or maybe you want the players to be on the offense? Design the level around the flow that you want to achieve. Fortcomp is a map that lends itself to backwards movement. The building is constructed such that the players can fall back, but eventually have to make a stand. Simple choices in flow can make or break a level.

  7. Scripts are useful tools, but whenever possible, use triggers. There's less chance of something going wrong if you stick to the basics.

  8. Don't use the duplicate function for entities. Never just hit the spacebar if you want to add another entity. Usually everything is okay, but sometimes duplicated name errors occur. Also, never change the type of entity. For instance, if you've got a hellknight selected but you would rather have an imp there, don't convert the hellknight to an imp. Delete the hellknight entity and create a new imp entity. This is a much cleaner method and won't cause problems.
Back to Contents
9. Revision history
Author: Date:
Arne Olav Hallingstad 28. January 2005
Michael Tomaino 2. February 2005
Michael Tomaino 5. February 2005
Michael Tomaino 5. February 2005
Michael Tomaino 8. February 2005
BurN 10. Februrary 2005
Stephen Michael Youts 24. March 2005
Michael Tomaino 24. March 2005
Arne Olav hallingstad 13. October 2005
Stephen Michael Youts 27. October 2005
Michael Tomaino 27. October 2005

Number: Author: Revision:
1 AO Initial version
2 MT Did some editing, spell checking, added Loading Mod into D3radiant, Spawning Techniques, Defense gameplay mode and optimization plus introduced the idea of having an advanced technique section  Note: AO can  you add in the difficultly and # of player variables and explain them a bit?  Just to give mappers an idea of changes would be happening to their maps.
3 MT Added Kaiser's advanced techniques.  Moved “optimization” into advanced techniques and renamed it as “Calimer's advice”
4 MT Added “Testing Your Maps” section
5 MT Added “Legal”  Removed the server.cfg from this manual, it was too annoying to keep it on one page.  Did some other small editing to the spacing to make it hopefully look neater and other small edits.
6 BN Formatted the manual, changed the colors and converted it into a webpage and also gave Revision History its own section.
7 SMY Added my advice on advanced mapping techniques.
8 MT Changed version number and added in some mapping techniques and other small stuff.
9 AO Added section 6.2
10 SMY Cleaned up some very small stuff.
11 MT Merged AO's and Mercy's changes. Cleaned up some language and added more info about adding music to maps.


Back to Contents
Legal

All material in this release is not to be used in other works without the expressed written permission of the Last Man Standing team.  For more information please consult the included license.