Week 2

Week 2

Following the modular kit environment tests and subsequent creation of a starter room for the map from week 1, I decided the get the creation of a new skybox out of the way. As the map is set on a spaceship in the Cygnus constellation it would obviously have to be in space. After some research for what colours to use I used a program called “Spacescape” to create a skysphere texture which could be imported into UE4. The raw material was then added to a material, which was added to a new skybox blueprint, which was then placed into the level.

The exterior of the level in the new skysphere.
The raw texture of the skysphere export in the new skysphere material.
The raw skysphere material exported from Spacescape.

After implementing the new skybox into the level I began working on another level mechanic, the electric trap. In CoD Zombies the electric trap is traditionally a device placed above a doorway or narrow corridor which when turned on shoots bolts of electricity downwards, killing anything that passes under it when activated by its switch which is usually just next to it. Although there are several variations of it across all zombie maps, I based mine on the original as seen in the map Verruckt

The electric trap in the map Verruckt in World at War.

I decided to create the electric trap and electric trap switch as separate blueprints actors, with each BP set as a variable in the other so that they can communicate with each other in level and allow to have multiple in the level. The electric trap switch works in much the same way as most of the other level mechanics I’ve done in that once the player enters its collision box a UI widget is displayed prompting the player to “Press F to activate electric trap for 1000”. Once the trap is activated a series of branches are checked to see if the player is in the collision box and that the trap isn’t on cooldown or currently active. Once these are passed a custom event in both the BP_MainCharacter and the electric trap proper are activated. After this a boolean variable for the trap being activated is set to true and a delay timer for 30 seconds begins. After this the trap activated bool is set to false and a trap on cooldown bool is set to true. Another 60 second delay follows this before the trap cooldown is set to false again.

Once the custom event in the electric trap is activated, a series of functions which fire line traces which constantly check if they are casting to the player are fired. If a line trace hits the player it sets their health to 0.1. After 30 seconds all the functions are cleared and the line traces are turned off, deactivating the trap.

BP_ElectricTrapSwitch and its UI widget prompt in game.
BP_ElectricTrapSwitch in editor.
BP_ElectricTrap in BP viewport.
BP_ElectricTrap firing line traces in game.
BP_ElectricTrapSwitch’s full blueprint.
BP_ElectricTrap’s full blueprint. I do feel as though I haven’t been as efficient and clean with this blueprint as I could have been but it works for now.
1 of the 5 Bolt Trace functions within BP_ElectricTrap.
1 of the 5 Bolt Trace functions within BP_ElectricTrap.
1 of the 5 Bolt Trace functions within BP_ElectricTrap.
1 of the 5 Bolt Trace functions within BP_ElectricTrap.
1 of the 5 Bolt Trace functions within BP_ElectricTrap.

Following the implementation of new AI enemies into the project, I added small spawn rooms to the back of the windows in the level so that the zombies have a space to spawn in. Following this I am going to working on the BP_Window once again to ensure that the AI zombies can enter a collision box and tear down the pole barricades on the window, before entering the level.

Small spawn room behind the BP_Window’s throughout the level in unlit mode. These rooms have no lighting so they’re too dark to screenshot in lit mode.

Week 1

Week 1

In accordance with my project plan, my first port of call at the beginning of my project was to work on the core level mechanics with the most important of these beings the purchasable doors and debris and the repairable windows/barricades, as well as also setting up a points variable in the first person character, as well as a crude health system. Points are gained by shooting/killing zombies, with 10 points awarded for shooting them, 60 for killing them, 100 headshotting them and 130 for melee killing them.

Before getting into the level mechanics, I’ll show off the blueprints within the player character. 

Health Regeneration blueprint within BP_MainCharacter.
Custom events for when a window is repaired, which adds 10 points to the players total, and for when the player dies, as well as a dev tool that adds points to the player so that mechanics can be tested.
The interaction blueprint within BP_MainCharacter, through which all interaction with level mechanics is handled. The player and mechanics communicate via a blueprint interface and ray tracing. Also pictured is the functionality for handling the custom events for BP_Juggernog, BP_StaminUp and BP_Door, as well as the sprint functionality.
The damage function within the player, which when called will subtract 0.2 of the players health. Depending on whether or not they have Juggernog this will either kill them in 2 hits or 5.

The way the purchasable door/debris blueprint works is that when the player enters the collision box a widget is created with the prompt “Press F to buy door for (price)”. The price of the door is an integer variable which can either be set to be 750 points, 1000 points or 1250 points. A series of branches checks to see what the door price is and displays the corresponding widget on screen. If the player has enough points to open the door, they can press F and the corresponding amount of points will be deducted from their amount. This will cause the door to move upwards on a timeline. Once a door is opened it is open permanently.

(Above) BP_Door in game                  (Above) BP_Door’s blueprint.  BP_Door's in game UI widget. (Above) BP_Door’s UI widget in game.   

In all iterations of Call of Duty: Zombies, the way the repairable window/barricade works is that zombies will spawn behind the window, which is fully barricaded with 6 poles at the start of the game. If the zombie is not killed it can tear down all the poles, at which point the window is fully open and the zombie will enter the map. Once poles have been torn down they can be repaired by the player, who will gain 10 points for each pole repaired.

As I began developing this asset before I had any AI to spawn behind it, I decided to just work on the player interaction for now, and would come back to this asset to finish once I had access to AI enemies. As such, at the beginning of the game the blueprint is set to set all of the poles visibility and collision to none. When the player enters the collision box a widget is created prompting them to “Hold F to repair window”. Upon pressing F the poles have their visibility and collision turned on one by one until all 6 are “repaired” at which point the widget is removed from parent. While this works fine for now, the blueprint for it quite messy and inefficient. It also doesn’t work as intended as the player only has to press F once to repair the whole window rather than holding it, so this is an asset that I’m going to go back to soon.

BP_Window repair prompt, displayed when the window has any poles missing.
BP_Window in editor, fully repaired.
BP_Window blueprint, part 1. Currently long, messy and inefficient.
BP_Window blueprint, part 2.

Perk-A-Cola’s are an important part of the Call of Duty: Zombies experience, and well before the beginning of the project I’d had the idea to recreate a perk system in UE4 just to see if I could. The result was a fully functional “Juggernog” perk. A play on the word “Juggernaut”, Juggernog increases the players health, meaning that rather than dying in 2 hits from a zombie, it takes 5. The blueprint for this starts of very similarly to the door and window in that once the player enters the perk machine’s collision box a widget is created, displaying the prompt “Press F to buy Juggernog for 2500”. Upon pressing F, branches are checked to see if the player has equal to or more points than the 2500 required, and whether or not they already have the perk. If true and false respectively, a custom event within the player character blueprint is called increasing the players health from 0.4 to 1. This also effects the players health regeneration blueprint, which checks on event tick if the players health is still is designated maximum amount, steadily increasing it if its lower than max after a delay after taking damage.

BP_Juggernog in game with UI widget prompt.
BP_Juggernog blueprint.

A second perk was created shortly after Juggernog was implemented as I figured it’d be easy enough to add. Stamin-Up increases the players sprint speed and stamina, as well as decreasing the cool down on stamina regeneration. Although we don’t as of yet have a stamina system for the player, setting their sprint speed to be higher for longer once the perk is purchased was simple enough to add. The blueprint works almost identically to Juggernog’s, and will be updated once a stamina system is implemented, although this as well as all other perks will be done my collaboration partner, as it falls under the umbrella of player mechanics more so than level mechanics.

BP_Stamin-Up in game with UI widget prompt.

 

 

 

 

 

BP_StaminUp blueprint.

While much of this week was spent working on level mechanics, I also wanted to begin conducting environment tests with the modular kit I was to use in order to get a better understanding of how best to use it, especially as it was quite a large one. After studying some of the example maps that the modular kit came with, I went about creating a decent sized room that could act as the starter room of the map I was to make. Starter rooms in CoD Zombie maps traditionally have 4-5 windows and 2 doors, and typically set the theme visually for the rest of the map. With this in mind I opted for a medium sized rectangular room with 4 windows strewn around each corner and side of the room, with 2 doors at either end giving the player 2 choices of path to go down. I also opted for one side of the room to have a large window to show off the space skybox, which wasn’t added until week 2. The lighting, although not final for now was added as a result of playing around to see what could work well going forward, as temporary lighting for the level was needed anyway given how dark it the modular kit/skybox are. It mostly consists of spotlights, with some point lights being used for some of the wall pieces. I wanted to keep it dark and creepy but have everything be perfectly visible for the player.

View of the starter room from the corner. The 2 boxes in the centre of the floor are placeholder enemies that are spawned at the beginning of each round. The skybox which can be seen out the windows was not added until week 2 and will be discussed in a separate post.

Games Design Project – “Heart of Cygnus” – Intro & Pre-Production

Introduction

Welcome to my development blog for my games design project, “Heart of Cygnus”. This blog will be updated weekly for the next 12 weeks and will showcase the development process for my project.

Proposal

For this project I will be creating a Call of Duty: Black Ops (2010) era Zombies map in Unreal Engine 4. “Heart of Cygnus” takes place upon the eponymous research vessel, investigating strange activity emanating from the black hole Cygnus X-1. As the ship is drawn into its event horizon, all but one member of the crew falls dead before being reanimated as zombies, forcing the sole survivor, the player, to fight their way through hordes of the undead.

As an aspiring level designer who’s previously created multiplayer style maps in UE4
inspired by Call of Duty & Halo, I was eager to focus my project towards designing a level based around an existing IP in UE4. I also wanted to recreate some existing mechanics as to show off my level & mechanic design and implementation abilities while putting my own spin on a game that I have great respect and passion for. The decision to focus on the Call of Duty: Zombies gamemode, in particular the World at War (2008) & Black Ops (2010) iterations, was made as I feel that these games were the peak of the Call of Duty Zombies gamemode, with maps big enough to provide an enjoyable and challenging experience without feeling over the top or like a chore to play like in later iterations of the gamemode. For me it provides a good basis with reasonable scope as to what I could realistically build over the next 12 weeks.

Despite being quite well acquainted with the zombies maps of World at War (2008) and Black Ops (2010) I will be going back to play and analyse them to gain a better
understanding of their flow, critical paths, use of lighting and use of space, as well as
researching the development cycle of both games to see & understand how they were made. I’ll also be analysing other games that have levels/maps of a similar design and style, such as Metro, S.T.A.L.K.E.R., Dead Space and Left 4 Dead to gain a better understanding of how these games build a world around their critical paths, and look to take influence & understanding from their methods environmental story telling. I’ll also be looking for literature regarding this topic to aid my research, as well as sci-fi movies & TV series such as Futurama, Star Wars, Alien, Event Horizon & Star Trek for inspiration with regards to architecture & environment building in space ships.

Pre-Production

Before discussing any of this projects pre-production & development it must be noted that this project is in collaboration with another designer, who will be creating the fully functional gamemode/gameplay mechanics such as enemy waves, round counter & powerups, and player mechanics such as the guns/ammo system, melee attack, zombie AI and points system. To ensure that neither of us are dependent on the work of the other however, we have split the project in half with myself creating a level that function independently of the core gameplay mechanics that the other designer is developing, while said core gameplay mechanics can function independently regardless of the level they are in.

The first port of call before beginning development properly was to compile a list of all the assets I would need to fully create a Call of Duty: Zombies level. This was done in a spreadsheet as to be easily editable. It’s pictured below as of the 12/2/2020 along with a key.

Another point of urgency before development could properly begin was the need to source a free to use modular kit from the Unreal Marketplace. Fortunately one of the few free ones available was Modular Sci-Fi Season 2 Starter Bundle, which fit the bill perfectly.