Universal Existence
- 9 Devlogs
- 51 Total hours
A 2d platformer game, filled with several mechanics, 4 unique difficulties and tons of unique lines for when you die (soon to be actual voice lines).
A 2d platformer game, filled with several mechanics, 4 unique difficulties and tons of unique lines for when you die (soon to be actual voice lines).
We’re nearing the end of this part of the journey. I can’t believe this is only the demo part of the entire game that I’m making.
This is the last challenge of the game. Like I said last devlog, I don’t want to spoil the boss fight, and I don’t see any way to censor text for Stardance.
So here’s a Google Doc for those who’d rather just see the spoilers rather than find out by playing the game’s demo.
I’m pretty happy with the boss fight as it is. I don’t believe I’ll need to rework it (except for balancing purposes).
I did die a lot on the boss fight, though (19 deaths).
At the end of the demo, I decided to let the player see their stats on the board, including the amount of time it took for them to finish the game, how many times they died to specific causes, etc.
I did end up having to globally track every death and the cause of each death using an array (if you don’t know what that is, think of a buffet where you get to decide how much of each of the foods are in each area).
I recently learned more about copyright policy and it turns out I cannot use music my friend Rush made, even though he gave verbal permission. We appear to need some sort of agreement as well. But I don’t want to get too deep into the legal stuff, so I’m going to have to make my own track to replace the current one soon. Honestly, I might just attempt to use a CC0 track since I’m running out of time currently.
Because of this issue, I muted the audio of the gameplay footage below too.
Not as much going around this week, but nevertheless, here’s most of the small changes:
Of course, there’s work that still needs to be done. First of all, I haven’t finished the settings menu yet (if you remember from devlog 6).
There’s also some tracks in the game I need to make (for the boss fight, the area ambience, etc) And most importantly, we can’t forget about the commentary that occurs when you die to specific traps/enemies (which I’ve already started).
I’m hoping I can release this game by late-September at the latest, along with working on some Stardance missions. I’d like to maximize my coding time before Stardance ends, despite the fact I’m busy with all the homework I’m getting. :(
Note: See Part 1 for context if you haven’t already.
I think I’ll be done with guns for a while. After completing the first area, you most likely won’t see them again until one of the last levels of the second area (maybe not even until the next boss fight).
Also, after rebalancing the harder difficulties to actually serve a good challenge, playtesting my own game took 2x longer than I usually would, as I’d keep dying to certain enemies or traps. But this game isn’t about breezing through easy levels, so…
These enemies are simple. Plants stay in one position, firing at random intervals. Their firerate is random and slower (average of 3.75/2.75/2/1.25 seconds), but their health is much higher compared to a Trunkwalker (65/75/90/100 health). Bees move around in the air, firing stinger bullets downwards. They fire often (average of 2.5/2/1.5/1 second[s]), but their health is decreased to make up for it (12/15/16/20 health).
Since these bees will be above the player, I made an auto-firing gun that fires upwards. I decided that manual guns will instead show up in the next area after the boss. (That means the manual guns won’t be in the demo. Sorry…)
These enemies show up in levels 1-10 and 1-11.
I spent a lot of time on major changes this week, but that doesn’t mean I didn’t spend time on minor problems. Here’s the small changes I made:
You might think rebalancing levels would be a major change, but I honestly didn’t change much with each level. I mainly just moved traps/enemies around.
Most of the time next week will be spent creating the first area’s boss fight. I won’t tell you what I plan to make for the boss fight, though. That would spoil everything. If you do want to view the spoilers, though I’ll provide a link to a Google Doc on the next devlog detailing everything about the upcoming boss fight.
I suspect this boss will take more than 6 hours to make, so I’ll split it all into two devlogs (and also two weeks). Not much to say otherwise, though. Enjoy my (pretty horrible) gameplay below!
Honestly, I was intending to make something similar to a space shooter, where enemies come in from off-screen, but I’m still happy with what I ended up making.
This devlog is a bit longer than usual, so feel free to just simply look at the video for explanation if you’re running short on time.
Starting with the player, remember how I wanted to make a mechanic that doesn’t just involve enemies? I ended up coming up with giving the player a gun (or, well, a blaster).
I planned out the different types of guns the player will be able to equip. There will be two types of guns: auto-firing, which will automatically fire bullets every 0.2 seconds, and manual, which will only fire when the player presses a certain button, but it deals more damage per bullet (there’s a longer cooldown in between bullets, though, so better be precise). There are also three variants for each type that determine which direction the gun can fire: upwards, downwards, or horizontally. I may plan out more variants later. (But of course, this game isn’t all about guns, is it?)
I implemented the auto-firing horizontal gun at the time of writing this devlog. And for the first time ever, I finally decided to make my own art instead of just using CC0 assets from Pixel Adventure. (Wild, right?) Not the best, but it’ll work for now. I don’t want to spend too much time on all the minor details to the point where I barely get anything done (like the settings menu, cough cough [refer to devlog 6 if you’re new here]).
It would be unfair if the player just simply had a significant advantage over the enemies, so I also gave guns to the enemies. Well, only a certain type of enemy, that is…
Meet the Trunkwalker, a walking, square-like tree trunk part that fires bullets through its nose (aka the remains of a sliced tree branch). It can only fire a bullet horizontally every 3/2/1.5/1 second(s) depending on the difficulty (Hard/Extra Hard/Ultra Hard/Extreme). They also move around until they hit a wall, just like snails and mushrooms.
I do find myself dying more to when they stop to shoot bullets rather than the bullets themselves. A bit concerning, but I find that it adds to the difficulty well, so…
Anyways, there’s a reason why the player has a gun in the first place. To defeat enemies, of course.
I gave the Trunkwalker a set amount of 25/30/35/40 health based on the difficulty. A bullet from an auto-firing gun deals 4 damage, so each Trunkwalker can be defeated after taking 7/8/9/10 hits. (There, I did the math for you. Happy?)
There’s still plenty to go around here. Here’s the rest of the changes:
I’ll have to continue all of this work in part 2. In other words, I’ll also have to make the other variants of guns, along with some more mechanics/enemies and levels. I also feel like the levels are too short and easy and don’t provide a proper challenge, mainly for the harder difficulties, so I might consider rebalancing the levels.
Things are looking much better than last time. School is starting soon, however, so I may start to slow down on progress. I still think I can get the game’s demo done before Stardance ends, though. Until next time, jumpers! (And yes, I just recently came up with that name. I don’t know what else to call players without calling them “players”.)
Yep, I apparently had a lot more to learn about UI, audio, and controller settings. I eventually decided to stop working on the settings menu.
If there’s one thing I can take away from this experience, it’s that I should probably not focus too much on a settings menu over the actual gameplay.
I filled the left side of the settings menu with sliders for controlling the audio volume. I used audio buses in Godot in order to separate audio into 3 main categories: Music, Sound, and Voice. Of course, there is nothing for the voice audio bus, since I haven’t recorded any voice lines yet. (I’ll get to that later!)
The right side contains buttons that open submenus. Players can now control the game speed and controller joystick deadzones, along with being able to practice a level as much as they want with Training Mode.
I decided to save controller sensitivity, key rebinding, credits, and language translating for later, due to how much time it took to figure out what should happen with submenus in multiple cases. I know, doesn’t seem like it should take that much time, but I have to consider multiple cases in which the settings UI will stay visible and block the actual pause menu, which occurs when the player resumes and pauses again without exiting out of the UI.
There’s also another thing I have to worry about…
When I reopen a menu after exiting out of it, the sliders seems to reset back to where it originally was when the game started. Thankfully, this issue doesn’t affect the actual gameplay, but still, it’s a visual bug that might confuse players.
I managed to fix this with the audio sliders, but I haven’t done the same with the controller settings and assist settings. I’ll try to patch it next week.
There’s not much this week, sorry.
(I regret spending so much time on the settings menu…)
I want to start focusing on making more levels soon, but I don’t want to reuse the same mechanics from the levels I already made. I already made multiple enemies, so I want to start making a mechanic that involves more of the player, like a new action that can be enabled upon collecting something in a level.
I’ll also have to come up with ideas for the area’s bossfight (yes, there are bosses in this game), since I feel like the area is almost complete.
As for the settings menu, I’ll pick it back up in about a month.
A not-so-productive week, I know. Hopefully I can do better.
Yep, a new enemy. I had scrapped a few levels recently, and to replace them, I didn’t want to make another similar level. Mushrooms move in a certain direction until they hit a wall, causing them to move the other way and repeat this cycle. Unlike snails, though, these enemies can be defeated by jumping on top of them, giving you an extra jump boost (just like those Goombas from Super Mario Bros).
Now I could’ve just brought back a scrapped level, slapped them in, and called it a day. But that seems too boring. So I instead thought about the new mechanic of being able to defeat the enemy.
And that’s how I came up with using mushrooms over a spike pit to bounce your way to the end of a level. I added variants for each difficulty as well, adding more mushrooms on lower difficulties. Speaking of variants…
I finished all level variants for each difficulty. I mainly did this by adjusting enemy speed and adding/removing spikes based on the difficulty.
Of course, I’m going to have to do this a lot more often. The demo is going to be longer than 8 levels, and the demo is nothing compared to what I plan to release in the full game.
This time, I will make the settings menu for sure, along with making another enemy for the next few levels. I plan to take no longer than 4 hours. Until then, see you soon!
Things are starting to look polished. I can probably get the game’s demo done by around late July. The deadline isn’t 100% confirmed, though.
I made four new difficulties. These will adjust how much room for error you have and the number of threats in each level.
As you can see, there are only hard difficulties in this game. This is to remind you that even on the lower difficulties, it can be a hard game. You might not think so at first, but as more mechanics are introduced, you may find yourself getting stuck on certain levels.
As shown in the recording below, for the first few levels, since they don’t contain much except platforms and fruits, I couldn’t do much except add and extend platforms for lower difficulties.
In order for difficulties to be selected, I made a pause menu. I customized the UI and added multiple animations. I did end up having to redo the animations, however, as I not only realized there was UI overlap between the main pause menu and the difficulty description, but I also received a lot of warnings involving something called AnimationMixer, and I couldn’t find a way to get rid of them until I redid everything.
I also linked the difficulty chosen in the menu to the game and added a small description for each of the 4 difficulties.
Yep, there’s music being composed for the game now. Rush (from Discord), a friend of mine, is helping out on creating good music for my game. I haven’t coded it so it plays in-game yet, but I’ve imported the assets in.
I will upload the OST to a youtube channel after I make enough songs so you can listen to it whenever you want. (Keep in mind listening to the OST or checking the title may lead to spoiling the game demo.)
I organized assets into more folders, but this later led me to encountering some issues involving paths to certain nodes not existing, which caused errors to appear. The issue mainly involved sound nodes like the jump sound and the death sound. Eventually, I reuploaded the sounds to each AudioStreamPlayer2D node.
Additionally, the first level’s dialogue font (level 1-1) has now been changed to match with the other levels.
Within the next 5 hours I spend on the game, I’m hoping to add variants for each of the remaining levels for each difficulty, along with making a background music player.
I also need to add a settings menu for the player and fix multiple issues like the floating player bug (seen at the end of the recording below).
I’m back on Universal Existence now. I’ve spent most of the time so far on tweaking my movement system. It may seem unreasonable for me to do such at first, but believe me, there’s some important additions I needed to make, such as:
The movement system changes took a lot longer than I expected, as I had to go through all 8 levels every time I made a change to make sure it was possible to progress.
I’ve also added spikes to my game, and I created a few new levels containing them, along with remastering the old levels to make them harder.
Here’s a list of other changes:
The recording below shows gameplay footage of the harder levels (collecting all melons and almost every apple). Don’t worry, I’m planning on adding a settings menu to allow you to change the difficulty to your liking, which will change the level to another variant.
Sorry for releasing a devlog so late. My internet went down as I was writing this.
I added 5 more levels, with working exits leading to the next level, along with panels showing text that the antagonist of this game says (might turn the dialogue into voice lines). I also added a melon collectible, which is worth more points, but slightly harder to reach. Everything is going well so far. Down below is a video of me playing through the first few levels (and showing some secrets).
Also, I ended up simply using the name Universal Existence instead of Simulation Overgrowth.
Anyways, you might’ve noticed that I have another ongoing project. Don’t worry. I’ll still work on this game. For now, though, I want to improve my Godot skills to be able to make not only the mechanics I want to include in Universal Existence, but also more complex games in the future.
I watched a series of tutorials on making a platformer in Godot and followed along, but I eventually decided to also implement my own features too. I ended up making a double-jump mechanic. In the process, I also accidentally made an air-jump mechanic, where I can also jump while falling. I hope to expand my level to include more content in the next 3 hours of work.
Also, fun fact here, when I started this project, I originally named it Universal Existence, but I ended up changing the name to Simulation Overgrowth (and I might even change it again later on). I soon realized, though, that if I renamed the folder, Godot would prevent me from opening the game, as it doesn’t recognize the renamed folder as the actual game folder. Oops… (I’ll find a way to fix it in the next 3 hours as well.)
Free assets I used (CC0 license): https://pixelfrog-assets.itch.io/pixel-adventure-1
First tutorial in the series I watched: https://youtu.be/oED12Mo2018?si=6y_8LNeydut2Vyyr