During the first week of production, I focused on movement for the camera and character. With this in mind, I also added the maps to the level in unreal engine and created basic widgets, AIs and a teleport mechanic. The week progressed ahead of schedule since I finished the research phase a few days ahead of time so this allowed me to start the creation of Ghoul Gauntlet before expected. I have also differed from my time plan and I will be creating the main menu scene in the second week of the production phase since the amount of allotted time allows for this precise change.
For the enemies to spawn, I added an actor blueprint that spawns the enemies each time the amount of enemies reaches 0 (creating a loop) that also increments each time to spawn an exponential amount of enemies each wave. Once the player kills 100 enemies, a teleporter spawns that allows the player to traverse to the next level.
I also created lots of widgets ahead of time and added them to the level with features such as custom fonts, buttons, images and progress bars to show the player's progress towards the next level.
During the second week of production, I improved the blueprints for the character, enemies and various widgets and levels. For the main menu scene, I imported a garage scene from Unreal Engine store then added a custom camera that the player sees when loading into the game. I then added a widget to the screen with a blur effect and buttons that the player can interact with.
In week 2 I created a list of widgets as shown in the video.
For many widgets such as the transitions and death screen. I created animations that allowed the parts of the widgets to fade into the scene. I also added an animation to the teleporter widget that shows an arrow with the text "Teleporter spawned" when the player reaches 100 kills for the teleporter to spawn.
For the third week of production, I will focus on completing blueprints from weeks 1 and 2 to ensure that the time plan is efficiently used. Since I completed weeks 1 and 2 before expected as I had already started production a week earlier, I have contingency time to work on current widgets and blueprints for the player and enemy AI. I will also create the teleporter to the third level in this week and create spawners for enemies with the 2nd and 3rd level. I will also have an endless system in the last level hopefully done by the end of the week.
I will also try to create a grenade system with a widget that shows the grenade's cooldown. The grenade will act as a source of interactivity and will create a splash damage effect for enemy targets caught near the explosion. I will also add a sound to the grenade for it being thrown and exploding.
I will also add bounds to the second and third level to ensure the camera is suitable around the entire arena so that the player can see their character no matter where they go in the level.
If i have time after, I will work on an endgame scene and possibly a boss enemy AI for the third level.
When making the options menu in week 3, I struggled with the widget so I used this video below as a guide to make the options page. The guide went through how to set the widget up and how to make it appear when clicked on.
I started the options page for the main menu which will be finished within week 4's production phase (1 week from now)
I also looked at the following audio video below to create a volume slider that allowed the player to change the volume of the music and main sounds in game.
The blueprints here are what i used to create the volume slider. The starting events change the volume based on the value the player selects then the code saves the selection for later. This means the player can change the audio to their liking in the menu and it will be carried over to the future levels.
Demo of the current pause menu (week 3) that the player can use by pressing "P" whilst in a level other then the main menu level.
When the player clicks P, the widget is created and when they press either P or resume button the widget will be removed. They can also click on the options button to make the Options page at the side appear or disappear.
With my first Main Game HUD concept. I have changed the HUD dramatically by removing and adding new features such as a teleporter progress bar and with the removal of armor, player name and weapon image / ammo count. I did this as to reduce the amount of space taken up
This is the current HUD being used in the game as adapted from the initial concept designed within the research phase. I have also added a kill counter in the top left corner of the screen.
I also made the death message further up the screen to compliment the buttons being placed below that are vital for the player to interact with after their death in the game's main levels.
I also changed the teleporter blueprint to check the current loaded level and spawn the teleporter depending on the level. This change was vital as the coordinates of each level meant that the teleporter couldn't spawn in so this change allowed for the teleporter to spawn in precise locations depending on each level. It also allowed for custom level teleports as the old blueprint would spawn the player on the Asian level no matter what (this created an infinite loop that was not wanted and didn't allow the player to progress).
I also changed the amount of kills needed for the teleporter to spawn in each level and changed the amount the teleporter progress bar goes up by to compensate with this change.
This is a playthrough of the week so far through week 3 with all the widgets and mechanics so far. The main menu volume and enemy spawns have a few bugs as shown but will be changed and fixed by the final week ready for the deadline.
For a loading screen, the bare minimum I would allow is a fade to black between level loads but after watching this video I looked for images that may be good as a loading screen cover. However, the loading screen required a plug in that was not possible to use due to restrictions so I decided to make a loading screen without it. However, I did not let the video dissapoint me as it allowed me to focus on putting a fade out screen which is quicker to make and sufficient enough for the game since it made more time for deciding the overall damage of the weapons later on which you can see I changed soon after...
For the grenade system, we decided that 10 seconds was too generous for a grenade that could wipe out a horde in a click. To nerf the grenade, we decided to change the base cooldown to 15 seconds and add a 3 grenade limit to the player which will then set the base cooldown for a grenade to 30 seconds after all grenades were thrown.
We will also work on a widget to show this cooldown to the player effectively whilst being visually pleasing. This will aim to be user friendly and show the user the cooldown of the grenade as a bar to allow the player to know when they can use this ability next, regardless of a 15 or 30 second cooldown as this will also be shown with the cooldown bar.
For the controller inputs, I decided to start by adding inputs for the PlayStation 4 controller but this became challenging as the controller is not an input supported by default in Unreal Engine 5. To counter this, I used the raw input plugin to allow inputs from the PlayStation controller to work within Ghoul Gauntlet.
A problem with controller inputs was the importance of the mouse cursor as it determines where the player shoots. With this being vital for the intended experience, I looked at this video tutorial on creating a mouse cursor with analog inputs. I will adapt this by making the player aim towards this mouse cursor when they use a controller.
Week 4 focused on adding a new enemy, the tank, to the level. This was met with problems as the level would bug out and cause the level to lag and kill the player without them colliding with an AI. To fix this, I changed the blueprint to reset the spawn increment after a certain amount of kills have been acquired.
With this code, every time the boss spawned he would increment and increase the amount of boss enemies up to a maximum of 5 per spawner. I also added an HP increase per enemy killed for the enemies to get tougher to kill later in the game.
The grenade cooldown was working not as expected with the grenade widget progress bar not showing it was on cooldown every other time it was tested. To fix this, I would set the timeline I made to play from start each time to restart the cooldown widget percentage.
HP regeneration passively, 0.25 HP per second. Enemy HP scaling, +2 HP per kill from the player.
After realizing this meant that enemies were incredibly strong after a hundred kills, I decided to implement a nuke system using a model created by Luke Lawton.
I then decided to add a full auto mode that shoots at 5 bullets per second with an overcharge mode that changes this to 8 bullets per second when the player holds the trigger for atleast 5 seconds. If they release the button however, the overcharge will fade and return the BPS (Bullets Per Second) to 5. This change makes the levels less tedious and requires less spam from the player. If the player holds the trigger button, it will shoot a projectile every 0.2 to 0.12 seconds.
I changed the grenade damage to afflict percentage damage on the enemy so the grenade is as strong on different enemy health and to make the grenade more useful for the player.