Creative Fields
3D, Co-op, FPS
The Game Assembly

My responsibilities

  • Level design
  • Level construction
  • Scripting effects
  • Scripting armor
  • Scripting enemy spawners
  • Scripting HUD
  • Placing spawn-points and path-nodes
  • Optimizing with rooms and portals
  • Creating the games icon


  • Maya
  • Photoshop
  • Lua
  • .xml
  • Havok
  • Qualia engine
  • In-house level editor
  • Notepad++


Project Lockdown is a First Person Shooter set in a prison where everything went wrong. The prisoners are wreaking havoc due to a malfunction in their mind control shackles and the main characters are called to the scene to clean the place up. The game was made by 24 students at The Game Assembly. The team had 5 level designers/scripters, 5 programmers, 6 technical artists and 7 artists. The game was made during five weeks over a nine week period. Project Lockdown was featured on Desura as a part of the Freedom Friday bundle 5th September 2014.


Level Design

Early in the project we decided to go with melee enemies and only add ranged enemies if we had the time and resources. Naturally, this affected the level design when we started to plan out our levels. We decided to go with a linear design on all maps to keep the scope down and avoid that players got lost in the game. We would focus on getting the combat nice, alternative paths and side quests would have been far to big of a scope for our 5 week project. I focused on shifting the combat areas from corridors to bigger rooms to help make the gameplay more varied. The knowledge I obtained when making my Left 4 Dead 2 map really came in handy when designing the level, helping me to get a nicer result fast. My level, “Don’t drop it!” was planned by me and the talented 3D-artist Diana Berg and built in collaboration.


Parts of the level is constructed so that an observant player would see other rooms that he/she had already visited or would get to later in the level. I believe that it is important to feel that you are going somewhere and recognizing a new room because you have seen it before, through a barred door or a window, makes you feel that you are more in control of the situation.



Since we chose to do a linear and fast-paced game I focused a lot on having enemies showing where the player should go. When one of the players enter the room I wanted the exit to be visible and have approaching enemies in front of it. It played an important part, together with lighting, architecture and prop placement, in steering the players to the right path and continue through the game.



The technical aspect of level design was really important in this project. Frame rate is really important in a shooter so we used rooms and portals to cull away unnecessary areas of the map. I was responsible to place them on my level. In the end of the project we had alarmingly low frame rate but we managed to get it to acceptable levels by optimizing path nodes, removing unnecessary geometry and by constantly tweaking the levels props and assets.


When we started the project we already had an extensive Lua-support from our previous project, Paws of War. We all knew that the game would be bad if the shooting was boring so during the pre production of my level I also started to script on-hit effects. I set up a script based material system where we could assign a script to an asset and have get different standard behaviors when shooting at the surface. It was a very fast and efficient way to spawn the right sounds and particle effects on different surfaces. I set it up so we easily could add more effects to randomize between and extend with new features such as rickochét chance and other cool stuff.

Halfway through the project we decided to go with health pick-ups instead of regenerating health. We wanted to use med-packs to reward curious players and to help them in the right direction. This also meant that a player that was low on health could die before finding a new health pack. We decided to have regenerating armor in addition to health points and I took it on me to put it together. The armor script was a little hacky but it worked and saved us a lot of time. I checked if my health was lower than the previous frame and if it was I adjusted the armor accordingly and gave back the lost HP. This meant you would die if you had low HP, even if you had full armor. It was solved by adding an extra 100 HP and kill the player through script if they went below that amount, after the armor had been calculated. Not the prettiest solution but it worked like a charm and allowed our coders to focus on the more low-level tech.



To add more variation we decided to implement a simple environment puzzle. I was tasked to make a fire that blocked the players path and was placed under a water pipe. When the player shoot at the pipe, water would put out the fire and open a path. I knew that this feature would be used in more than one place so I decided to make it dynamic to save time and reduce the risk of possible errors from bad placement. When the level starts, the pipe raycasts a set distance down and places three fire particle systems and damage triggers on ground level, covering the whole length of the pipe. It also spawns an invisible wall that it rotates according to its own orientation. The damage triggers deals a tweakable damage over time and tells the UI to light up all the damage indicators as long as the player stays in the trigger.