Don't wanna be here? Send us removal request.
Text
Systems explanation video
youtube
The edited down gameplay video on the previous post covered just the gameplay, but my focus on this project was less about the built game itself, and more about the systems that went into making it, so I put together a significantly longer video covering all of that too.
0 notes
Text
Editing a gameplay video
youtube
As part of my outcome for this project, I put together a video showcasing the gameplay of Metal 'N' Magic. (shown above)
This was edited using Davinci Resolve, which is a powerful video editing software which I've become accustomed to over the years
(screenshot of me editing in Davinci Resolve)
I used OBS Studio to actually record the footage, and I made sure to play the game in full-screen mode while recording. I did this in order to make the video feel cleaner without any distractions from the operating system or other programs.
OBS Studio:
I unfortunately lost the footage I'd recorded of the inner systems (code/blueprints) for the game, so I plan to put together a quick video explaining that today. I may have to save myself the time of editing in a bunch of text and instead record a voiceover for that one though, since the systems being covered will actually need to be explained properly.
0 notes
Text
HUD
The last thing I want to add to the game is a gameplay HUD for displaying player & enemy health, as well as visual indicators for dashing & shooting cooldowns. This is the final thing I intend to add to this project before submission.
I created a progress bar, set it to rounded edges, and gave it the following colours:
This will be the enemy health.
I then duplicated this and made a smaller version in the top right:
This will be the player health.
I then duplicated it a couple more times, made some smaller ones in the bottom left, and gave them different colours:
These will be the cooldown indicators.
I added text to each of these, and organised them into canvas panels:
Finally, I added some code to the level blueprint to display the widget on the viewport and now it's ready to be given functionality:
The functionality should be relatively simple to add using the bind option on the percent part of each bar:
Or at least I thought it would be. I seem to have messed something up here as it is not working how I expected:
It shows as empty even though the enemy clearly still has HP remaining.
I decided to attempt a less janky approach, and simply add a "max health" variable to the enemy which sets itself once the game starts:
And then reference that instead:
This still doesn't really seem to be working though. I need to somehow make the calculation work out the max hp as equal to 1, and the current hp equal to a fraction based on a percentage of that. (If max hp is 2, and current hp is 1, the output should be 0.5). I'm not sure what I'm messing up here so I'm going to have to look it up for a refresher.
I've done this multiple times before which makes it annoying that I need to look this up but sometimes you just need a reminder on these things I suppose.
youtube
Referencing this, I took the approach here using the set percent function and tried adapting it to my needs:
However the health bar is still acting weird. I have no idea what to do. It's now the end of the day and I haven't handed in the project or written my evaluation. I think I'm going to have to scrap this unfortunately.
0 notes
Text
Player health in custom mode
I added this entry to the health section of the custom mode UI:
And then I added this to the event graph:
And that's quite literally all that needs to be done! This is now fully functional!
0 notes
Text
Difficulty options failing to load level
I'm not sure why, but selecting the difficulty options on the main menu (easy, normal, and hard) do not successfully load the level. This issue does not effect custom mode though, that mode works fine.
I set some debug print nodes to help diagnose the issue, and I've concluded the issue must be in my Set Level Variables macro, as the print before it works fine, but the one after it does not:
Opening up the SetLevelVariables macro, i don't see anything wrong. I added a debug print node to the cast failed pin just in case, and it turns out that's where the issue originates!
My issue is I have absolutely no idea why this is happening. I've deleted and remade the node in case it was referencing an old version of the blueprint or something (as BP_GameValues has been renamed twice now), but this doesn't seem to have helped.
I asked my tutor for advice as I was completely stumped on this, and the issue turned out to be due to me renaming the gameinstance recently and for some reason unreal engine didn't update the game instance class and instead just removed it entirely, so the game instance was never loaded.
As soon as I put it back, the issue was resolved.
0 notes
Text
Player health in each mode
Easy:
Normal:
Hard:
(I also increased the enemy health in each mode as I felt the values were too low before)
0 notes
Text
Player Health System
I scrapped the code in the enemy projectile, and moved most of it to a death function in the player, which is called in the damage function if the health variable reaches 0 or lower.
New projectile code:
New damage function:
New death function:
I've set the enemy projectile's damage value as 1, and I don't see much reason to change this since the game is build around "health = number of times actor can be hurt before dying". It wouldn't add anything new to be able to change the damage value in custom mode, since the exact same effect can be achieved by altering the actor's health.
And then I simply made the player set their health from the GameValues Game Instance at beginplay:
Upon testing this works as expected, the game feels identical to how it did before, but now I will be able to edit the player's health in each difficulty mode, and add an entry in custom mode to edit it too.
0 notes
Text
Final(?) additions before submission
Before submitting my project, I need to compensate for the lack of tutorial. I think the way I'm going to do this is by adding a help menu to the main menu with information on the game and controls, and I will also have a small indicator for the dash and shoot buttons in the UI, next to a cooldown indicator for each.
My plan is to have a progress bar at the top of the screen to display the enemy's health, and then in the bottom left there will be 2 smaller progress bars to display the cooldown for the dash and shoot mechanics.
The other thing I want to do is add a health system for the player, so multiple attacks can be taken before losing. And when losing I want the player character to turn invisible (I can't destroy the actor entirely, as the camera is a component of it and I do not want to set up a whole new camera system at this point).
After these have been finished, I will consider the project done, and I will finally submit it.
0 notes
Text
Updated all widget buttons to match main menu style
0 notes
Text
Making enemy face player
I quickly added this to make the enemy constantly rotate to face the player. I'm not sure why I didn't add this earlier:
0 notes
Text
Getting music and sounds
I want some sounds for my game, nothing super fancy, just need something to get the job done that somewhat fits the game's theme.
I need to make sure I respect the licences of sounds and audio I use, so I've gone with ones which seem to have licences that allow me to use them in my project without needing to do anything extra. From what I can tell, the Youtube Audio Library's music has this type of permission:
I took the following pieces of music from the youtube audio library:
Main Menu Theme:
youtube
Gameplay Music:
youtube
For the sound effects, I used freesound.org. And I used these sounds for the UI:
Button Click:
Game Start:
And I took these sounds for the gameplay:
Player shoot:
Enemy single shot:
Enemy spread shot:
Enemy circle shot:
Using these sounds, the game now feels a bit more alive:
0 notes
Text
Scrapped tutorial
I'm simply not going to have the time to create a full tutorial so I've removed the button from the main menu:
0 notes
Text
Minor UI colour changes:
I incorporated some more purple colours into the UI to fit the magic theme a bit more.
0 notes
Text
Menu background
I created this in Krita to use as the background of the main menu:
I created a version with a dark transparent overlay so that it's easier to see the ui elements in the foreground:
This is how it looks:
0 notes
Text
Player Projectile Model
Went with a slight transparency as i felt that made it look a bit more like magic. I think this would look even better if in-game I give it some kind of particle trail effect, but as for the actual model honestly this should be plenty.
It seems the transparency didn't carry over. I'd look into this but it's such a small detail it really doesn't matter. If I have time to spare at all I'll have a look, but I probably won't.
0 notes
Text
Enemy projectile model
I've decided to make the model for the enemy projectiles a bullet, since the enemy is a robotic cowboy. Whilst the enemy doesn't visually hold a gun, the implication should be there.
I based the bullet on this image:
I added some silver at the back because i felt it looked a bit bare without it, but after reconsideration i think it does actually look better without the silver:
Then I imported this model into the game and put it over the enemy's current projectile:
0 notes
Text
Title Art
I've opened Krita and started trying to draw some art for the title. I wrote the word metal out in all caps using the line tool to make it look as rigid as possible:
Honestly I'm already happy with this. I might make some adjustments like squishing the M and making the L a bit thicker, but at the same time I kind of like how uneven it looks, so I might keep it as it is instead of trying to make it symmetrical.
Next I need to draw the 'n'. I think this part should be the least interesting, just making it look as generic as possible without standing out too much. I want it to be flowier than the word metal, but not as much as the word magic will be. I just went ahead and drew one with my mouse and it came out like this:
and to be honest I like this. Usually I'd be all for iteration and trying multiple styles but considering I have lots I want to get done and I'm already happy with this one, I'm just gonna go with it.
The word magic is probably going to be the hardest one to do. I'm not good with super styalised writing, so this is probably going to require some trial and error. For now I'm just going to focus on one letter at a time, starting with M.
Here's my first attempt:
I think I like the idea of having the letter have a kind of brush off near the ends, but I feel like the rest of the letter looks pretty bad. I might need to look up some inspiration here.
Looking through google images I found a few ones I liked the look of:
I like how the M curves off at it's edges, like what I attempted to do. I also do think the word looks better if only the M is capitalised.
Using these images as reference, I far prefer the look of this one:
Next is the a, and I think think I'll go with the lowercase variant as I mentioned:
This looks a bit off, I think i made the ends too thick.
Nevermind I think this looks worse.
I'm really not sure what else I can do here to be honest. Maybe lowercase a isn't the way?
I tried drawing a capital A but i cannot for the life of me see it as anything other than an among us character:
Looking at the full image so far, I realised I actually really don't mind the lowercase a at all, I think I was overthinking it when looking up close:
Not having much luck with the g though..
Though i tried a different style g and I think this looks better:
I went through similar processes for the rest of the letters, and I finally landed on this:
Making use of Krita's gradient tool, I coloured it like this:
Finally I imported this into Unreal and put it on the main menu widget:
0 notes