• Add Review
  • Subscribe
  • Nominate
  • Submit Media
  • RSS

Happy New Year! - Progress Report 8

  • Strak
  • 12/30/2023 01:03 AM
  • 107 views
Happy New Year!

I missed another blog day. Sorry.

But I've been thinking about that, and I'm going to change my release schedule for these blogs one more time. I've been doing regular weekly videos on my YouTube channel for a couple of months now, and that's become the place where I give more updates on some of the new features that I've been working on in this game, as well as developer insights on certain game design choices. To that end, it doesn't really make much sense for me to write blogs about those topics, and instead I'll just focus on the videos for that stuff.

However, I do still want to write blogs about progress reports on Thrall. I want to be able to share some of the cool new things I've been working on that don't deserve an entire video, as well as show you all that development is very much still underway, and I'm not disappearing in a hole in the ground. No matter how much I may want to sometimes.

So with that in mind, I'm only going to write blogs on the last day of each month, and only for progress reports. I think this will allow me to be more consistent with my schedule, and will also allow each of the blogs to have a bit more meat to them.

Anyway, that's all for that. Now, what have I gotten up to this month!?

...Uh, not much honestly. Between work, the Secret Santa, hosting a karaoke night to cover for a friend who got double booked (which lead to two nights in a row of 4 hour sleeps), Christmas parties and family get-togethers, plus getting as much sleep as I could in between, I really didn't get a whole lot done. I had planned on completing the third dungeon by the end of November, and I didn't even get it done this month. I have literally one more map to do, plus a few cutscenes, but it's just not done yet.

However, I did do some cool coding things. I added a few new features that I think will drastically improve the overall quality of the game. Let's dive into those! First of all, I added an info screen to the skill trees!



This screen was kind of cool to implement. I made use of a previously unused text box in the database to store the file name of the picture associated with that skill displayed in the in-game guide accessed from the bookshelf in the map room of the keep. Then, by pressing a key while highlighting a skill in the Skill Tree scene, that guide will be displayed, allowing you to access the full description and all the information relating to that skill. While all this information could be accessed already, this saves a lot of time and allows the player to access the information while looking at their skills, instead of having to go into a completely separate scene to do so. Man, I didn't describe that very well.

Anyway, that was cool. So I got on a really creative streak with coding and found a way to more dynamically alter how enemy stats are determined! This game has enemies that scale to the average party level, based on the level of the dungeon that you're in. Each dungeon has a min and max level that enemies will scale between, so they'll never drop below the min and never scale above the max. However, this worked by replacing the stats of every enemy with the value assigned to a variable. Each stat had its own variable, and the variable got its value through the stats of a dummy actor that scaled to the average party level. I would have three sets of variables, one for the base stats, one for boosted stats, and one for reduced stats. Then, certain enemies would get one or two boosted stats, maybe one weak stat, and the rest would be the base stats.

The problem with this was that each enemy would basically only have one of three potential options for the stat I was assigning. It was fine, but not very nuanced. Well, now I've found a way to change that!



Now, every enemy is assigned just the base stats. I have one set of variables for each of those, relating to HP, MP, ATK, DEF, SPI, AGI, and EXP. I didn't mess with Hit Ratio and Evasion, and I actually completely recoded what Gold is used for. More on that later. Then, once the base stats are determined, the stats are modified based on what's assigned to that enemy in the database. In the above example, this Slime would have 100% of the base HP, MP, ATK, and EXP but would have 125% of the base DEF, 110% of the base SPI, and 75% of the base AGI. With this code, I can modify how strong each individual enemy should be, giving me much more fine control and allowing for a much more dynamic range of enemies, even with stats that scale to player levels!

Now, I mentioned that I recoded how Gold works. Well, since this game uses a random loot system, I decided to add a variable that determines how often certain enemies will drop loot. Normally you have a 1/20 chance of any given enemy dropping a piece of loot after an encounter. However, this is now just the BASE drop chance. That drop chance can now be modified to a percentage based on what the enemy Gold is set to. So, loot will drop 1/20th of the time, but this slime will drop loot 110% of 1/20th of the time. Or, 1/18 chance. This is more noticeable with certain enemies that have higher gold. So, one enemy in particular has 200 gold, which means that enemy will drop loot 1/10th of the the time instead of 1/20th. This change allows for enemies to have higher drop chances without requiring them to drop loot. And while we're on that note...



OHHESSUCHABIGOLBOI!

I made BIG enemies! These are enemies that are big. They have double the health of their common variants, 20% more ATK, and double the chance of dropping double the amount of loot. I found a way to perfectly upscale the enemy sprites, so they look a little bit retro without looking stretched. Literally every pixel is now just a 2x2 square of the same pixels, perfectly to scale. I saw this technique used in a different game and thought it looked quite charming, but I can't for the life of me remember which game it was right now.

At any rate, these enemies have a 5% chance of spawning over any enemy in a troop except for the first one. While I was at it, I made some adjustments to the spawn rates of enemies, added hoard encounters of up to six weak enemies, and added some much smarter enemy AI by rewriting the code for a skill condition that was going unused. Now I can make enemies do things EXACTLY when I want them too, and even give them a specific designated target. I may do a video on how I did that later. Speaking of which...



I did a video on how to implement 8 directional movement, and now it's in the game. It works extremely well, and actually fits this game quite well. I won't talk about it too much here, since the video is right in front of you. Go watch it. You know, if you feel like it. No pressure.

And the last thing I did this month was alter some of the status ailments. Seize will now reduce DEX instead of RES, but Freeze will reduce RES as well as immobilize. And, most importantly, Burn status damage over time has been altered. When an actor is inflicted with Burn, they'll take damage equal to 3% of their max HP every turn. But when an enemy is hit with Burn, they'll take damage based on their level. This means that common enemies will take quite a lot of damage, but boss enemies won't be affected quite as heavily. This also allowed me to modify some of the Legendary elemental weapons to give them some really cool effects, like a Fire sword that can deal double the DOT when it inflicts Burn as opposed to any other Fire weapon. That took some creative work too, but it's a bit complicated to go into right now. Needless to say, some of the Legendaries just got way cooler.

And that's about it for this month. Huh. I guess I got more done than I'd thought. Just not much story progress. But these are all changes I'm really happy with, and a lot of thought went into them. It also stretched me quite a bit as a developer, trying to figure out ways to implement these features into RMVX. I should mention, all the code that went into this stuff is my own. I'm not really using a lot of scripts from other scripters in this game, so whenever I think of something to add to the game, I have to figure out how to do it myself, and in a very old engine at that. So, yeah. I guess I'm proud of what I got done.

And with that. Goodbye 2023. Honestly, you kind of sucked. But this game has given me a lot of happiness. I'm looking forward to seeing what I can get done with it in 2024. See you all then! And happy New Year!