root vegetable boy
CHORUS MACHINE DEV LOG #3 - JANUARY 2024
January was pretty good! I got a lot done this past month, including but not limited to the basic structure of my combat system. Let’s take a look!
There’s a lot of things that went into this, so let’s break em all down. When in combat mode, the player uses the cursor to aim and left clicks to shoot. Currently I have three different weapons to choose from, each with a different number and spread of shots. Both the player and their enemies display their HP (the numerical format is a placeholder, hoping to eventually figure out hp bars), lose HP when touched by a damaging object, and die when their HP ≤ 0. Enemies chase the player (some faster than others). If the player takes damage, they flash red to indicate as such & become invincible for the next second and a half.
Initially I was pretty worried about coding all of this but it was actually kind of a breeze…? I’m definitely getting a lot better at understanding & working with GML’s syntax, which is really satisfying. I didn’t encounter as many funny errors this past month, it’s been a lot more of writing code and then refining it rather than writing code, then fixing it, then refining it.
Around this point I noticed that if I entered a room to pick up an item, left that room, & then went back in, the item would respawn back to its original position. This wasn’t a glitch, it’s just how Gamemaker works by default, so I got to work on some simple saving/loading scripts: basically just telling Gamemaker what potential changes to a room it needed to keep track of & when to call for them. To be honest this kind of thing is a lot harder to show off in a dev log... but it’s important work, so I’m happy I did it! I finished up the save/load system by implementing a proper “full game save/load”, what you would normally think about when someone talks about saving & loading.
The full game save/load code is basically a more elaborate version of the room-to-room save/loads: telling gamemaker what it needs to keep track of and when to recall it. To be honest I do not really understand the save/load code itself... something something JSON... admittedly, it was copied from a tutorial. But it works, which is what matters! Honestly the most difficult part here was integrating it all into my in-game menu system, though even that wasn’t too bad because I was able to reuse a lot of the code I wrote for the inventory.
The last thing I did this month was start on my sound effects management system. I wouldn’t consider it “finished” but I have some really good bones for it I think! I whipped up a few sfx in VCV Rack and they’ve implemented nicely. It’s crazy how much of a difference a few sounds can make: I haven’t really changed any of the sprites since their conception but already the combat feels a lot juicier.
At this point I’m getting to a place where I want to start tackling the gameplay and implementation of everything I’ve built: creating rooms, mapping out worlds, tiling, introducing npcs, etc. I have a lot of systems in place but almost nothing resembling the actual game. This has been totally fine so far, I’m glad to have these systems! But I feel confident enough now that I really want to get started on actual play. By April I’m hoping to have something of a rough playtest, maybe the first 10-20 minutes of the game... but we’ll see how everything pans out!
In the meantime, I have work to do, as always. See you next month!
Originally posted February 1st, 2024.