Post tutorial Report RSS Killing Floor Mapping Guide

Killing Floors tutorial for getting started making custom maps for the FPS Horror Survival game.

Posted by on - Basic Mapping/Technical


1) Introduction


Killing Floor is powered by Unreal Engine 2.5, and maps are created in Unreal Editor 3.0. Prior experience with UED will be useful if you plan to start a Killing Floor map as this guide is intended for people with intermediate/advanced knowledge of the Unreal Editor. If you are a complete newcomer to Unreal Engine editing, you should check out some beginner resources before you launch into anything specific to KF. The following are some good places to start understanding Killing Floor's tools.

Angelmapper.com
Architectonic.planetunreal.gamespy.com
Udn.epicgames.com

Single player story mode isn't officially supported but you are free to use it as you wish. These single player parts of the game are not covered in this guide.

2) Concepts


Designing a map for Killing Floor requires a slightly different sort of thought to say - a Deathmatch level in Unreal. The main things to keep in mind when planning a KF map are:

1. Where will the players be able to set up their defenses?
2. Where will enemies spawn?
3. Where will the trader shops be located?

Q: Where will the players be able to set up their defenses?
A: Killing Floor is a sandbox style game, and players will often gravitate towards defensive points that they feel comfortable with. It's your job as a mapper, to give them as much choice as possible, and to make sure that these locations are each as balanced as possible.

For example, if I decide to create an enormous tower in the middle of an open area, players are probably going to spend all of their time up there, and never come down. This might be fun for a while, but it will have the effect of giving the map a static and eventually boring feel. The most important aspect of any killing floor map is that it be constantly tense when the wave is underway. And this means presenting players with defensible, but not impenetrable areas.

For example: A small shack with only one entrance, and multiple windows to fire out of is probably being a little too kind to the players! If you add a back door to the shack, the scenario becomes more interesting, because now the players are forced to watch two directions at once, and this increases the tension!

Q: Where will enemies spawn?
A: Killing Floor makes use of "ZombieVolume" actors, to determine what is a good place for a mob of enemies to spawn at. This will be discussed in more detail, in a later section. As a rule of thumb however, you should keep in mind that the more speciman spawns a map has, and the more interesting and sneaky the places they are, the more exciting the gameplay will feel. Vent shafts, roof tops, windows. All of these are better places to spawn specimens than just right there on the ground!

Q: Where will the trader shops be located?

A: The "Trader" in Killing Floor provides players the opportunity to upgrade their arsenal or get rid of junk they no longer need. Because of this, she is a hugely important character, and critical to winning a match. Every killing floor map should contain more than one trader! If a mapper places only a single trader area, it's pretty clear where the players are going to be camping when they play the map! This creates stale, boring gameplay; and we don't want that! Typical KF maps have anywhere between 3 and 5 trader zones, but the actual number is largely determined by the size of the map. So if you plan on creating some massive area, maybe you will want to place five or more spots. The actual process of setting up trader shops will be discussed in a later section of this document.

3) Trader Rooms


As discussed earlier, trader rooms play a pivotal role in any Killing Floor map. When placing them, you should be make sure they are evenly spaced from one another, so that there is one trader room in each major area of the map.

Now that we've covered the rules of trader placement, we can look at the actual creation of these areas. It doesn't matter where a trader is situated (in a room, behind a fence, etc) so long as there is some way of establishing distance between the shoppers and her. It's recommened that you look the TraderExample map which you can download from here. If you copy and paste the trader and all the objects around her into your map it will allow you to keep an consistent feel with the official maps provided with Killing Floor.

When you have set apart your trader area, you will want to block it off with a mover called TraderDoor. The inside of the trader area will now need a ShopVolume. It needs to take up the space inside so people can shop and it should not extend outside of the room. If it does then players will be able to shop at that trader location even if it isn't active.

The tag of the TraderDoor needs to be the same name as the ShopVolume's event. For example: TraderLocation1. Next you will need to add six Teleporters so people still in the shop can be warped outside when the trading time has run out. These Teleporters need to be placed just outside of the TraderDoor.

Actor NavigationPoint SmallNavigationPoint Teleporter


In the ShopVolume's properties under ShopVolume set the URL to the same name as the tag of the teleporters. For example: TraderTeleport1.

For the players to be able to navigate easily to the trader locations you will need to set the pivot of the ShopVolume to near or exactly where the trader is standing. You will also want to make sure there are path nodes leading up to the TraderDoor.


4) Spawning Specimans


To spawn specimens in Killing Floor we use a volume called ZombieVolume. ZombieVolumes are placed in maps in the same way you would any other sort of volume. They should not be sunk into walls or floors, and the bounds of each volume should be made to fit whatever area it inhabits. You should have the pivot of the volume in the center near the floor and it should not be inside an object or near one. It should be okay to place the pivot offset from the center if there is an object in the way.

bDebugZombieSpawning - If true it will attempt to spawn green cylinders in the spawn volume in-game to show where specimens will spawn. If the cylinder is red that means no specimen will spawn there. Ideally you want at least 6 green cylinders so a full squad of specimens can spawn together. If you are not seeing any cylinders after setting this to true then no specimens will spawn you will need to make sure the pivot of the volume is at the center towards the bottom and is not in inside or too close to an object. Because this is a debug variable, you should make sure that all volumes in your map has this set false, before you distribute your work.

bNoZAxisDistPenalty - This determines if the ZombieVolume should be weighted for spawning specimens based on its z axis location. This should be set to true if you have a map where specimen spawns are on one level but at different heights such as on an outdoor level with gentle rolling hills.

CanRespawnTime - This value sets the minimum time between spawns on your ZombieVolume. For example, if you set this value to 6, your volume could only potentially spawn a squad of specimens once every six seconds.

TouchDisableTime - When a player comes in contact with a ZombieVolume, he disables it temporarily. This is done so that specimens don't spawn in the immediate area a player is defending. This value simply determines how long a volume should remain disabled for once a player has touched it, before it is able to resume spawning enemies.

OnlyAllowedZeds - This is an array for spawning specific specimens only. By default, the array is empty and each ZombieVolume can spawn any kind of enemy, as determined by the server settings and wave configuration. But let's say you wanted a certain area where only Stalkers spawned. You could add an array entry and select ZombieStalker from the dropdown list. You have now created a Stalkers-only spawning area.

MinDistanceToPlayer - This is a very important value and probably the one you will want to adjust carefully for each of your volumes. It determines how far, in units, players must be from your volume, before it is allowed to spawn any specimens. The default value is 600, which means that specimens can spawn around corners or moderately close to a player's location. In special cases however, such as a hidden air duct above players' heads where you want to spawn specimens, you should set this to a value of "1", and otherwise players who are walking underneath the duct will prevent it from spawning. In another situation, maybe you are creating a style of map where specimens spawn in the distance, and move in on players. In such a case you might set this value to something like 1500 or more.

RoomDoorsList - If you are creating a map with open/closable doors, this is a variable you should consider. In a few cases, you will have a room or area that is completely contained when the doors are shut and welded. It really wouldn't make sense to have specimens spawning inside of this area with you, when it has been barricaded. So to prevent this, you can add entries to this array, for each perimeter door of the containable area. When a door is added to the array, its parent Volume will not spawn enemies while that door is closed or welded. If bOnlyWhenWelded is true then no specimens will spawn inside only if the door is welded. A final caveat: Do not go overboard adding doors to this array! If you associate every door in the map with a volume's door list, it will make it difficult to spawn specimens near the player.

5) Blocking only Players

KFZombieZoneVolume - This volume is used to block only players. Specimens will be able to walk through it. It is recommended to place this near one way barricades that specimens can climb/walk out of.

6) Usable/weldable Doors


Usable doors are movers called KFDoorMover. These are movers that act normal but that can be opened outward from either direction. They have three key frames. The 0 key frame is set to a closed position and 1 and 2 are set to a open position for both directions.

Actor Triggers UseTrigger KFUseTrigger


There needs to be a corresponding trigger for opening the door called KFUseTrigger. It's event needs to the same name as the door's tag. For example: Door1. This links the door and the trigger together. The KFUseTrigger needs to be placed in the center of door with it's arrow pointing the same direction as the 2nd key frame. In the trigger's properties under KFUseTrigger, "bDirectionalOpen" needs to be set to True.

7) KFLevelRules


Actor Info ReplicationInfo KFLevelRules


WaveSpawnPeriod - This is the rate at which new squads of specimens spawn after one squad dies. Small changes in this number can make a significant difference in the difficulty and intensity of gameplay on a level. A general rule is that smaller levels should have lower times and large maps have shorter time length.


8) Ammo/Item Pickups


Ammo/item pickups should be evenly spread out within he level so they don't spawn in clusters. The ammo/item pickups are spawned randomly throughout the level based on percentages determined by the difficulty setting. Most official Killing Floor levels have 14 ammo and item pickups.

xPickUpBase KFRandomSpawn KFRandomItemSpawn


Item pickups have chance to spawn based on the difficulty:

  • Beginner: 50%
  • Normal: 30%
  • Hard: 20%
  • Suicidal: 10%

Pickup Ammo KFAmmoPickup


Ammo pickups have chance to spawn based on the difficulty:

  • Beginner: 65%
  • Normal: 50%
  • Hard: 35%
  • Suicidal: 10%

9) Dynamic Music


Actor Trigger MusicTrigger KFMusicTrigger


A KFMusicTrigger will control the music being played during combat and during the trader downtime. Within the actor's properties there is a section called KFMusicTrigger and another section called WaveBasedSongs. This is an array of songs that you can add. CalmSong is the song played when the trader is active and CombatSong is the song played with fighting specimens. Each time you add a set of songs it will associate with a wave number. List 0 is wave 1 and list number 9 is wave 10. It is recommended that you make 10 sets of songs to support KF's Long setting.

Under MusicTrigger in the KFMusicTrigger properties there is a field called Song. There field is for specifying the song played when fighting the Patriarch.

10) Aesthetics


Killing Floor has a fairly distinct grungy look, and if you are planning to create a map which honors that, there are a few things you can do to keep your work consistent.

Textures - Many of Killing Floor's environmental textures have been created to look as though they have a bump map effect, even though this rendering technique is not actually possible in the KF engine. There are a few different ways to achieve this, but one method that is very simple and effective is to create an emboss filtered grayscale copy of your base texture, and overlay it on top of itself, before saving. If the result looks too severe, try lowering the opacity or blurring the embossed copy to make it look more natural.

In general, the KF textures are high contrast and each one uses one or more detail layers to suggest added grit/grime. If you are working in Photoshop, try adding soft light or overlay blended textures on top of your base texture to experiment. This can also be done in UE by adding high contrast detail texture to your material.

Finally, Killing Floor makes use of some complex shaders to simulate things like bump mapping and normal mapping. While I won't bring up the specific techniques in this document, if you are interested in how to recreate some of these effects for your own map try looking in the following packages for examples.

"Normal map" - KF_Specimens_Trip_T.clot_cmb
"Bump map" - "KillingFloorManorTextures.Statics.BumpSpecRockShader"

Color Correction - A feature distinct to Killing Floor is per-zone color correction overlays which have the power to tint the player's world a certain color, (typically as a mood enhancer). This effect is determined by the color of the fog with a ZoneInfo. Within a ZoneInfo's properties under ZoneLight you can set bNoKFColorCorrection to false if this effect is unwanted. In most cases if your level appears too dark in-game but looks correct in the editor, it's because the fog color is too dark and is causing the overlay to darken the player's view.

Post comment Comments
smokeythebear
smokeythebear - - 117 comments

Now to port every red orchestra map into KF.

Reply Good karma Bad karma+1 vote
doppl3r
doppl3r - - 196 comments

I got really good a creating valve related .bsp's over the years, and I haven't fiddled with the unreal editor 3.0 Is this going to be a big transition?

Reply Good karma Bad karma+1 vote
myles
myles - - 854 comments

It certainly will be a big transition, as UE2 is a subtractive world, making it very much different to the addictive BSP on Hammer.

Reply Good karma Bad karma+1 vote
Metafiz
Metafiz - - 504 comments

I'm sure he means additive.

Reply Good karma Bad karma+2 votes
Relto
Relto - - 47 comments

Or does he?

Reply Good karma Bad karma+1 vote
myles
myles - - 854 comments

I do :P

Reply Good karma Bad karma+1 vote
pWEN
pWEN - - 19 comments

Unreal Ed is both subtractive and additive, just not as good at additive as Hammer

Reply Good karma Bad karma+1 vote
eliasr
eliasr - - 515 comments

Yeah, it really turns your head upside down. where you in hammer used to make a cube and say it should be hollow, mark it as sky and change the bottom to something else; at the end you would of course optimize it.

now you kinda have to include that from the start, cause its better to dig out a room, than adding it inside an enormous subtracted room.

I haven't got used to it yet... its like, you make the houses, the side walk, the road, then you make the ground....

Reply Good karma Bad karma+1 vote
Instant_Mix
Instant_Mix - - 18 comments

Basically , in Valve hammer , you create a space within a void. But , In Unreal , You create a void within a space.

Reply Good karma Bad karma+1 vote
AJ_Quick
AJ_Quick - - 1,321 comments

Rawr go make custom maps my minions! Or Patriarch will bumrape you from cloak. :P

Reply Good karma Bad karma+1 vote
Tex1090
Tex1090 - - 148 comments

To late... was playing earlier, we had 5 LAWs on the patriarch and there was so much smoke we didn't see him cloak. We were sitting there waiting, and not 5 seconds later he appears in front of me and 1 hits me. I guess i'll go make maps now. :(

Reply Good karma Bad karma+2 votes
AJ_Quick
AJ_Quick - - 1,321 comments

hahahaha

Reply Good karma Bad karma+2 votes
Mr.John
Mr.John - - 1,570 comments

owned!

Reply Good karma Bad karma+1 vote
Squeebo
Squeebo - - 388 comments

I'll make custom maps-- But he'll still bumrape me. =( In my OWN maps! He has no manners, damn Patriarch.

Reply Good karma Bad karma+1 vote
NessDan
NessDan - - 6 comments

What I would like to know is how to add a specimen spawn point. Are there actors for it? How do they know where to walk?

Reply Good karma Bad karma+1 vote
yahodahan
yahodahan - - 1 comments

does anyone know if this is possible to make maps for, with the UE3 editor? or is it just UT2004? I noticed the author says "Unreal Ed 3 engine", but everything else seems to show UT2004...I hate UT2004!!

Reply Good karma Bad karma0 votes
Justin112358
Justin112358 - - 2 comments

No. It's confusing but Unreal 2k4 is made in the unreal 2/2.5 engine and it uses unrealED 3.0. GOW and UT3 were made in the unreal 3 engine, but the editor has no official name or number.

Reply Good karma Bad karma+3 votes
KON_Air
KON_Air - - 2 comments

My respect to Unreal mappers have been trippled. The editor is more "user-enemy" then anything I have ever tried.

Reply Good karma Bad karma0 votes
TheTruthDude
TheTruthDude - - 8 comments

CAN YOU MAKE A TUTORIAL HOW TO INSTALL THE FUN MAP AND PLAY IT PLZ HELP!

Reply Good karma Bad karma0 votes
Zoncosn1p3r
Zoncosn1p3r - - 15 comments

I think it is a great program but i agree its a bit confusing... but once you know the basics the advanced stuff sort of falls into place:)

Reply Good karma Bad karma+2 votes
MrBlorx
MrBlorx - - 11 comments

What about Cutscenes? KFEd crashes when I use them.

Reply Good karma Bad karma0 votes
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: