Project: Corner Market
Post-mortem (Sep. 2009)


KF-CornerMarket is my submission to the Killing Floor Mapping Contest. I developed it within the month of July 2009, from soon after the official announcement to the deadline of the contest’s first wave, the 31th of July. This text is an description of how I designed this level, and a conclusion on what went right or wrong.

Killing Floor is a survival first-person shooter which gameplay can be easily summed up: place six players in a level and force them to fight off increasingly strong waves of monsters, until the boss shows up. Each monster has its special abilities, including grabbing the players, running at them, screaming a deadly noise, or puking acid on them. In between each waves, the players have to run to a trader shop selected at random, and buy their weapons before the time runs out.

Since there’s no rivalry between two teams, designing a level for KF is different from most multiplayer games. Here are the particularities of KF level-design that I could make out:

  • Surviving must be challenging. Camping must be hard to achieve. Dead-ends from which you can prevent the monsters from getting too close will attract players naturally as they’ll quickly find out its the easiest way to survive. But surviving by standing and hitting the shoot key isn’t much fun, and so you have to prevent the players to end up in this situation. People, who are playing the game to have fun, are the first ones to spoil their own enjoyment by finding flaws in the design, so the designer has got to make sure that there are no such places. In short, that means the monsters must spawn in a wide range of locations and that no area should be too safe, or it’ll be too often visited.
  • The trader shops must be spread all around the level. That way, since the trader’s position is picked at random, the players have to keep moving, visit the whole level, and start each round at a different location. This is another instance in which you have to push the player to have fun, making the experience more varied by forcing him to move around. But traders shouldn’t be too far away from the start zone, where players respawn after they died or joined the game halfway through. Otherwise, they won’t be able to reach the trader in time and will have to play a round with the default weapons.
  • Monsters should spawn far from players or from hidden locations, such as air conducts or behind walls. Having monsters spawn in front of the player is not only weird, it is unfair for the player can’t expect it and prepare himself for the fight. The designer has to set up all the spawn points to be active only when nobody’s around to see it. There should also be enough spawn points so that the 6 players can’t block these by staying close, in order to channel all the enemies into a single spawn, making them too easy to beat. Such a problem is present in another amateur level, in which a few players standing at the right position would force enemies to spawn in one corner of the level, and let players pick off the monsters with long-range weapons.



I feel that the official WestLondon level, while featuring a satisfying layout, is a let-down for these reasons:

  • The daytime setting, while original, doesn’t allow for a good use of the array of existing city lights. In result, it looks too even, brown-ish and stale. There’s no contrast in the colors.
  • The London setting is only conveyed by the vehicles (buses, cabs), phone booths and the Underground entrance. The rest is generic city material.
  • The buildings and their textures are somewhat ugly, or hidden behind scaffoldings and sheets so as to hide their too simple architecture.

I decided to create a city-themed level as well, but to use distinctive London buildings, objects and signs; to use a night-time/early morning setting so the level is bright enough to play without the flashlight on, but dark enough so the lights still stick out of the background; and to try and make it look more believable by detailing the buildings and using better textures.


To make my level stand out from the existing WestLondon in terms of gameplay, I needed to have different types of area. So while WestLondon features a few interiors, namely a church and a police station, I decided to have it all open. There would be no door to block the monsters’ progress. While this decision basically removed a part of Killing Floor’s gameplay, which is to lock doors to slow down the monsters or channel them, I felt it made sense: I wanted the players to keep on the move, to have nowhere to sit and wait for monsters to show up at the other end of a corridor.

With that in mind, I imagined the layout to be mostly circular, so the player doesn’t end up in a dead-end by mistake and gets slaughtered. But running in a loop is only fun to gerbils, so it needed to be open enough and allow them to cut through at multiple points. A particularity of London is its Crescents and Parks, small green patches stuck in between residential streets. I decided to use such a small park in the middle of the block. That way, the streets around it would form a circle, and the park itself would break the circular layout. To achieve that same goal I also set two sloped streets around the park, more interesting than horizontal ones.

But that wasn’t enough: I needed another location in the level that would stick out of the generic city look. I chose to add an indoors market as well as its open-air counterpart. The Borough Market is one of my favorite London places, and I thought a small reproduction of it would be a nice touch. Also, it is open on one side, so it fitted my no-doors premise.

Finally, to nail the London theme, I added an aerial Tube line, an Underground entrance, and a Pub. The Tube line was helpful to provide a cheap way to limit the level on one side (less time and resources needed than a row of buildings). The pub seemed mandatory. The Underground entrance allowed me to add another monster spawn.



Traders: Since the level is quite small, the traders had to be as far apart as possible to force the player to move around the whole level. I placed one in the market, in the kitchen of a burger shop, one in a cybercafe, and one in the entrance of a garage, in the back-alley. There’s usually about 5 traders in the official levels, but since my level is smaller (it doesn’t feature long indoors corridors and such), it didn’t make sense to fill it with shops.

Spawns: Adding locations where the enemies can spawn without being seen in such an open environment proved a bit tricky. In an indoors level, you can place some in every room, but in this case, where the player can see most of the level at once, the spawns had to be placed behind cover, such as vehicles, corners, walls… It worked though, with the cheap trick of having a spawn on top of a building, in the back-alley. As a rule, I tried to have at least 3 attack-points for each sub-area, meaning 3 paths from which the monsters can arrive. That would remove the ability to camp by covering only the two ends of a street.



The WestLondon textures are all gritty and worn, but nothing really explains it. London is a tidy town, and the monsters don’t seem to have a grudge against the pavement or the buildings, so the gritty aspect of the textures didn’t make sense to me. I decided to go for a cleaner-looking town, with still the usual amount of trash and stains.

What made more sense than the worn out textures was fire: deserted buildings would be quick to catch fire. So, I added lots of smoke to my level, and a yellow-ish tint to the sky, to simulate an ambient glow from all the fires around town. The contrast between the warm fire colors and the cold ambient early-morning light made it visually more interesting.

As mentioned before, WestLondon doesn’t really resemble London, at least not what most people know of it. I worked with a lot of reference pictures from the time I lived there, to make sure the buildings, signs and objects would have a British style about them. Most of the textures I created are based off these photographs. I made sure that notable assets (such as the bus stop sign, ticket dispenser, Underground entrance, borough sign, etc.) were looking as close to the originals as possible.


Here are some of the pictures I used as reference, and the in-game result:

Ref04 Comp03
Ref06 Comp09
Ref12 Comp10
Ref13 Comp07
Ref09 Comp05



What went wrong

I overlooked the performance aspect of the level and jeopardized my chances at winning the contest. The Killing Floor engine is quite old, so I figured it wouldn’t be my main concern, that computer owners would be able to run it. Also, beta-tests results on the matter were all positive, even using old laptops.

But it seems that the retro engine actually attracted people whose computers can’t run the recent games. I had multiple complaints about players who can run the original game levels okay on low settings but have low fps on my level. Sadly, the feedback came too late for me to be able to do much about it before the contest deadline. Actually, the very layout of the level would have to be reworked to please that player-base, because the amount of buildings visible at once is the reason for this drop of fps. That just wasn’t the best design considering the engine, since there’s little way of optimizing it. I realized that too late.

Another complaint that popped out a few times is how the level is too clean for people’s taste. I guess compared to the game levels, it’s true it stands out. But that was the premise I set myself. It just means that some people don’t get what I was trying to do here. I failed at getting my point across about the overdone gritty aspect of the game textures. While this is something I didn’t like in the game, no everyone was of the same opinion.

Lastly, in the process of creating the buildings and then importing them into UnrealEd, as well as learning both tools, I messed up some of the proportions a bit. Most of the assets size are alright, but a good part of buildings doors are too large compared to the player’s size. Even though I knew about this issue, I didn’t manage to correct it before the deadline. Nobody reported this though, so I suppose it’s not that obvious.

What went right

With no knowledge of most of the tools at hand, and within only a month, I managed to create a level that looks believable and plays well. I usually like to take my time to get things done right, but I proved myself on this project that rushing in works as well. I jumped in, and got every aspect of the job done: even if taken separately these models and textures are pretty bad, they amount to a decent result.

The layout worked fine immediately, providing enough challenge and keeping players moving like I wanted them to. This was even more surprising as it is my first multiplayer level ever. And after running beta-tests with friends, I was able to make the necessary additions to the gameplay. For instance, it was too simple to camp near the ambulance, because there was only too paths to reach it, so I added a rock in the park on which monsters could climb to jump over the hedge, right next to the ambulance.

The feedback was positive and I feel like this was a good entry to the contest, compared to the quality of other custom levels submitted at the time.

Eventually, I ended up winning the 3rd prize of the contest.