Posted May 25, 2025 by Dinorexisthebest
Ok time for the 5th Devlog where I basically finished a bunch of stuff and made my game into more of a game rather than a buggy mess. Anyway this week's theme was Polish and UI.
Intro:
This week involved the testing session that's apart of assignment 3B, and although it appears that I'm supposed to talk about implementing feedback in the next devlog, I'm gonna do it here too just because it's relevant. Up until this point my game hadn't really felt finished at all, with unfinished levels and many unfinished graphics as well as an overall lack of sound.
Level 4:
First thing I had to do was to finish the rest of levels, specifically level 4 and 5 as they are the last 2 that need to be done. I had already finished the first half of level 4 the previous week, so I didn't have to do that much. I wanted to design the next part of level 4 to be as inclusive as I could for the white character, as I really didn't want to have him split up every single second. So after a bit of brain storming I came up with the idea that you need to fall down a gap while avoiding spikes. This works with all 3 characters as they all have the ability to fall, just not jump. Also, compared to the first half of this level, I was very generous with checkpoints. I ended off the level by making a fairly big dropper, where you dodge the spikes as you fall.
Figure 1: Showcase of a section where you fall in level 4
Figure 2: Level 4 complete.
Level 5:
The idea was simple. Level 5 would be a combination of all the previous features all into 1 level. I ended up making level 5 here and there and didn't completely finish it straight after level 4. However, I will explain it all now as that makes most sense. So I started out level 5 with a short parkour part, similar to level 2 in that there are burnable blocks that need to be jumped on. Also for whatever reason I decided to make this level vertical instead of horizontal, where basically you and your friend are travelling upwards instead of rightwards. However, in order to get the white character to move up I needed to make slopes for it. The problem with this is that in order to move him up and left, he needs to jump in some sort of way. So I figured out that if I make a slope made out of a burnable block, then the white character can destroy it, stand on a button to the right to regenerate it, then move left onto the slope.
Figure 3: Show case that you can move up and left in level 5
More level 5:
After this small section, I made a bunch of mist to resemble level 3. This time I made it quite tricky for the white and red characters to proceed, this is the final level so I need to squeeze as much playtime as possible out of players (not really lol). However, if players are smart there's a much quicker and easier way to get past the mist. In the second half of this section I made a cool interaction. I set up a part where it's possible for the red character to get past, just very difficult. If the other player happens to be the white character, they can go out of their way to clear part of the level making it much easier for the red guy to do. If I had more time to work on this game, I probably would have made an entire gamemode that revolves around the idea that a 2 character combo need to work together on puzzles that only those 2 can do, similar to some of the sections in the single player mode. Anyway, I made 1 final section with parkour and spikes and a section for the white character similar to level 4, where you gotta shoot the target without hitting the ground under you. I wanted to finish the level with a big spike drop, like how level 4 ended but the problem was that the white character reaches the top from the right and the other 2 reach the top from the left. So that random teleport button I made for 1 spot in level 2 came in clutch as I used that to teleport everyone to the new section.
Figure 4: The teleport button in level 5 in all its glory!
Figure 5: Level 5: it's done.
Getting it ready for testing:
At this point I realised I should probably get the game in as much of a position to be ready for testing as I could. I had finished all the levels, and although I wasn't done on graphics, that wasn't much of an issue. I just had to make the game playable. I decided to port over a webGL version to itch.io to test it there as that is the conditions others will be testing it. I immediately found an issue that surely won't take long: the scene would not load from level 2 to 3. It worked from level 1 to 2 but not 2 to 3. I spent a few hours trying to get it to work, looking some things up to see if it could help, eventually I discovered I could access the developer console in itch. I did this which led me to discover that the doorway at the end of level 2 couldn't recognise how many players there were in total. The reason why it could in level 1 is because I hadn't used static data at that point.
Getting that damn doorway to work:
I spent legitimately half a day trying to get this doorway to work, learning a lot about how the WebGL build is different to the unity engine version. I had to do a lot of research too on what the best ways I could store data between scenes were. Eventually I came to the conclusion that I should store the data in a mono behaviour component attached to an empty gameobject. In the script storing data I also made sure that the gameobject would not get destroyed between scenes using the don't destroy on load function. However, I also needed to make sure unity or the WebGL version wouldn't make any accidental clones of this so I had to make use of what I could make out a singleton to be. Basically it makes sure that there's only 1 version of the gameobject I want to keep in between scenes and that it's the current gameobject. I also placed this empty gameobject immediately in the title scene rather than level 1 scene to make sure it activates before anything else in level 1. After all this, I could now enter each doorway on each level (after also improving the code in the doorway script to better match the new player data code).
Figure 6: I know you're bored of not seeing an image so here's a blurry screenshot of the menu lol
Improving the mist mechanic:
After finally reaching level 3 in the WebGL version of the build I now discovered a flaw in the die in water code. Before, each frame would add a counter until it reached a certain number. However, in the WebGL version, or at least Itch.io version, the frame rate was a lot slower, probably at the usual 60 fps rather than the somehow 400~ fps I was experiencing in the unity engine. This meant I had to change the timer for the third time. So I needed a timer that would increase inside mist, but decrease outside of mist. Eventually I came across delta.Time, although I had seen it before I didn't realise I could use it as the timer I'm looking for. Basically delta.Time would use time rather than frame rate to increase and decrease, perfectly solving my problem.
Other bug fixes:
While testing the game out in Itch.io I came across various minor bugs too insignificant for me to write them down in my notes. However, I did find a pretty big bug; Characters would not load in the correct order in between scenes. When both players are ready in level 1, an invisible game object reads the contents of whats inside its hitbox. I placed it so that the 2 players are inside. When originally making this, after testing, every single time it would read things from left to right, making the first item in an array player 1 and the second item player 2. However, in the WebGL version this was not always the case, and was more often not. So I had to fix this by creating 2 new invisible hitboxes, 1 that reads player 1 and stores that in a player 1 array, and one that reads player 2 and stores that in the player 2 array. This also meant I had to change the next level door code, as well as the player data code to match this change. I'm glad I didn't forget anything else.
Figure 7: The 3 hitboxes that read player data.
Other adjustments:
So to continue to get ready for testing I adjusted the camera again to better fit each level, and give a better experience. I also slight redid some of the brown boxes in level 2 to be less glitchy. I also went through most of the levels and made the jumps easier. Making the difficulty in this game has genuinely been hard for me, as I'm trying to design it so it's doable for anyone. The problem is that I'm really good at games, which achieves 2 things: 1 I get to boast about it in this devlog and 2: what I find easy is not necessarily easy for others. The problem with this, is that if I easily make a jump first try, I have absolutely not clue if other players would also find it easy.
Finishing touches:
Although the title of this paragraph suggests I was making finishing touches, I was not. At this point it was Friday morning and I had to get ready for the testing period. However, I still had some things I needed to finish off in order to make the game more playable. I also stopped testing in WebGL as it took too long to import it all over every time so I hope there aren't any WebGL bugs I'm missing. I needed to make getting back up after failing the parkour in level 2 easier. At the moment it's kinda tricky, if you don't remember, exactly why, feel free to look back at the previous devlogs cuz I'm too lazy to re explain it here.
Making level 2 great again again:
I first thought of making a slope, or ramp that would allow you to walk back up, of course jumping up first as to allow the white character to travel underneath. However, walking on the slopes proved to be a little glitchy, as you wouldn't move at all sometimes, or even just replay the fall frame instead of walking. So I had to look into the crust dusty ancient player controller script to see what the problem was. Basically I needed to make the acceptable normal angles more on a slope. What does that mean? Well basically it would allow leftwards and rightward movement on more sloped angles. This proved to be successful, as this not only allowed movement on slopier slopes but also on some slanted boxes in level 2 that caused previous glitches. But after all that I decided that the slopes were too annoying and that I had to move things around just to get them to work, and even when it did work you wouldn't move very fast on them. This is where the teleport buttons came in clutch, as I copied more of them to be used to teleport you back up to the top. This was better as it saved on more room and still made sense. Good thing I didn't forget to readjust the platforms after previously moving them to better fit the slope right?
Figure 8: More teleport button in action (note this also contains readjusted colours for buttons and positions for platforms which was not the case at the time)
Time for testing:
Dang it's time for testing and I'm still fixing a few bugs and I haven't finished something I really needed to. I'm sure it'll be fine. So in the 20 min before testing I improved the game in a few areas I could find (in the unity build). Right before testing I also quickly threw together some graphics that explain controls and a few other things like mist and the doorways. I was actually testing someone else's game while placing the graphics in unity and uploading the build to itch. I couldn't have cut it closer good thing I didn't miss anything.
Testing results:
So as I uploaded the build onto itch, I remember about the survey I had to make, so I speed ran making that while getting ready to present the game. Luckily for me the survey turned out really well, and asked the questions that I needed. So during testing, some useful things were discovered as well as some heartbreaking ones. I've been hinting it throughout the devlog but there were 2 things that slipped passed me as I madly through together as much as I could. Firstly, although the doorway works, I forgot to update the checkpoint code to match the new player data code. This meant that the checkpoint didn't work which only started affecting level 3. This also meant that no one really got to experience the game past level 3 which was really frustrating to see. Also a few jumps in level 2 were randomly really hard, and this was because I had moved the platforms around trying to get the slope to work which I didn't end up using. However, I also thankfully discovered from people play testing the game that the buttons were a little confusing. This was because they were the same colour, and unless you destroyed the blocks with the white character, and then went back to stand on the button, you wouldn't ever know what it does. This lead to 1 player making it impossible for themself without knowing about the button to regenerate the blocks. Besides this, the main piece of feedback I got was the lack of sound and music. I was recommended some foot stepping sounds at least, so I will make plans to implement that. I should also make some other sounds for the lasier and maybe a few other things too. Overall, the testing session went well, besides the fact that the checkpoints didn't work. One of the most positive things I got as feedback was the character designs and animations which was really heart warming to see. 1 last thing is that the ui appeared different for different computers, most people not even being able to see it at all! (unless they went into fullscreen UGH)
Implementing test results:
It only took me 20 min to fix the checkpoint bug, changing the button colours (to make the teleport buttons look different from the regenerate buttons) to fix the jumps in level 2, and to move the regenerate buttons so that you have to press it in order to make the first jump. This way if the blocks are destroyed, you have to touch the button and see what it does in order to proceed. I also turned a single setting on in the ui in order for it to work properly.
Spare time:
So before I finish this game I need to: finish graphics and sounds. I started with graphics as I had already started it with the characters. First thing I wanted to do was make the title. But I realised I should probably do that last I don't know what to do for it. So I started with making the backgrounds. I wanted to make a sort of facility, but in a futuristic sort of sense. I also wanted each level to have its own colour scheme as to make the stand out from each other. I also decided to fade the colours at the end of each level to make the transition nicer. I made the first level have a light bluish colour to fit that futuristic sort of look. I intended level 2 to be orange but due to my colourblindness it's a kind of yellow type thing I'm not really sure tbh. Anyway, due to level 3's mist theming I made it a deep blue to resemble water. Level 4 was a bright red to properly show the spikes deadlines. And level 5 ends it off with a deep maroon red to show that you're deep into the facility, and that you're at the end of a dark tunnel. So I found 2 problems with this, firstly the redness of level 4 contrasted poorly with the red characters, so I made the red more dull and brownish? (again I'm colourblind so I'm really just guessing lol). Also the yellowish colour in level 2 was too bright so I made that more dull to ease the eyes. Lastly I needed to add some detail so I made generic facility, factory type things, such as fans, pipes, wires, pipes, wires, big pipes, a small window thing and more wires. I also spent probably way too long on making this pattern that looks like metal plates. (I made it so I can connect them onto each other making an infinitely sized pattern. In order to do this I had to remove certain parts in order it to transition to each other better (I ultimately made 4 different versions just to do this lol)). Overall I'm pretty pleased with how each background turned out to look, my biggest concern is that it looks too complicated at times, or not detailed enough, but I'm just gonna leave it for now.
Figure 9: Level 1 with background (I know its too zoomed out to see the individual details but you get the idea)
Figure 10: Level 2 with background
Figure 11: Level 3 with many many more pipes, and background
Figure 12: Level 4 with background (yes I turned off the background to get the previous screenshots of level 4 and 5 lol)
Figure 13: Level 5 with background (probably too dark to see details but you can when zoomed in trust me)
Conclusion:
Done a lot this week, I'm just glad that the game feels more finished now, with little to none bugs and very few things left to be changed. Other than adding more graphics and sounds, I would only change the levels slightly to make the a bit easier if needed. Next week if I can finish it off in time for Friday, then that would be amazing. I feel like next devlog will have even less giphs than this one, as all I'm doing is making graphics and sounds lol. Also I just realised I hav't touched single player in 17 years. Oh well.