Posted September 25, 2024 by atlas-starz
#Game Design #Dev Log #Prototype
My design journey started as most of my game projects do, by messing around in a game engine. Before I even cemented the idea for A Calming Melody, which didn’t even have that title at the time, I wanted to see if the idea was even something I had the skills to code. I created an empty gameobject, gave it a capsule sprite, relearned how to code player movement, and made a bubble appear when you hit J. Then I started to try and code the part I was most unsure of. I made the bubble send a message to anything it touched, and if that object could receive that message, it would do something as long as it was in the bubble. Seems simple, but much harder to code than it seems. Eventually, I got the bubble to turn a red wall, green, meaning I had proved to myself that the idea buzzing in my head was something I could feasibly actually create. Excited, I started working on building the idea properly and laying my plans out in a Game Design Document.
When I got feedback on my design document, I realized I had not been describing the game in the way that I should have. I had gotten so excited about adding a story, and creating a certain vibe that I had pictured in my head, that I realized I was not able to easily explain it all in words. To help with that, I drew up some sprites in Pyxel Edit, a pixel art program that allows you to create tilesets and animations for pixel art games. I’m a very visual person, and I knew that if I could bring at least part of that vision into reality, I would have an easier time solidifying the idea into words as well. When I got back to working on the game, I replaced the pink capsule with an actual player sprite, one that was a sketch, and wasn’t animated, sure, but it already felt closer to my vision than before. I then went over my game doc, and realized that the game I was creating wasn’t the game I was describing. It wasn’t an Action RPG akin to The Legends of Zelda but more of an arcade game like Journey of the Praise King from the arcade machine in Stardew Valley.
I then set upon coding the core gameplay loop. I needed enemies that would chase you, but I needed them to go around obstacles and not ram into everything just to get to the player. I found an asset package for Unity called A* that helped me create smarter pathfinding for enemies to run around obstacles to chase you. Now, however, I had the opposite problem. The enemies would now hound you down no matter where you went, giving you no time to recover, or anywhere to hide. As I wanted both to become a core part of the gameplay, I needed to give my enemies normal, non-X-ray eyes. I did some research on raycasting and coded a simple system that would only trigger the pathfinding if there wasn’t anything obstructing the enemy's line of sight to the player. This simple system sort of worked, until I gave the enemies collision boxes, and everything broke. I then spent hours fixing and reorganizing my code in order to get both parts working along with a collision system that would calm the wolves while inside the player's bubble, and would hurt the player if an enemy caught up to them. This then brought up an issue of the enemies cornering and giving the player no chance to escape after the first time they got hurt, so I came up with the solution of giving the enemies a cool down so they wouldn’t spam lock the player. This once again took a lot of reorganizing my code, but in the long run, I think it's much more efficient and readable now because of it. Finally, it was working the way I wanted it to, and all the variables were easily accessible for tweaking. I even made the enemy code customizable so I could create different enemies with the same code for later.
After all that coding I took a break and tried my hand at creating the Calming Melody part of the game. I found a website called BeepBox that has a program that is simple enough for a beginner like me to pick up, but with enough features to have me continue to be surprised as I found new things it could do. I haven’t created anything good enough to actually put in the game yet, but it did help me figure out how I want to incorporate the music into the gameplay more. I now wanted the baseline to always play, and then allow the player to choose the different layers of melodies and harmonies they like by holding down different keys. I was then even more excited about the idea, so I went back to working on the actual prototype.
I finally buckled down and reorganized the rest of my code, giving the enemies and player, status and health bars respectively. I redesigned the base level to be more fair for a beginner, and in a way that would best display the core gameplay loop. The loop of using your, frankly pretty silent, lute to calm all the enemies while evading and hiding from their vicious jaws. I ended up with something that isn't quite what I envisioned yet but is something playable. Something that I can get feedback on and tweak to make it as polished as possible before I move on the all the aesthetic, narrative, and slightly less code-heavy bits.