Wednesday, December 18, 2024

Massive Rumormill: Protection Skill Tree

I've fixed up a lot of random bugs and tweaked various things that weren't quite right, but the big news this evening is that I've got the Warrior Protection Skill tree set up properly, with skills having skill requirements, with all the active and passive skills in it, and with the functionality of them (mainly confirmed and tested) up to scratch.

So here goes. 

Starting with the abilities that target enemies, on the right hand side of the skill tree.

Warcry is an entry point for protection and debuffs in this tree. It is a way to dramatically increase your characters threat level and is an active skill.

Mocking Blow requires Warcry, and is an active skill that will debuff your target. It lowers their Attack Strength, Defence and Armor stats for a reasonably brief period of time, though enough to get a few attacks in most likely.

Disarm requires Mocking Blow, and extends the debuff by debuffing the attack strength, and pretty significantly reducing the attack damage that an enemy will perform.

Intimidate requires Disarm and is another debuff that will drop an enemy's Attack, Defence and Armor stats, while also decreasing the damage they do on successful hits.

All these abilities can be stacked onto a single creature, though they will take some time to apply by a single warrior. The same effect, from different warriors will NOT stack, but there's nothing stopping warriors working together to apply different debuffs as a team.

Next up, Shield Wall, an ability activated in combat to give the warrior a buff that gives them a good buff to their defence temporarily, gives them a fantastic buff to their armor, but makes attacks much weaker for a period. Best to use once you have a creature firmly fixated on this warrior to make it easier for healers to keep up.

Intercept is an ability that requires Shield Wall, but enhances the protection that a warrior would give themselves to an ally. The warrior pulls an ally back and inserts themselves into that location instead - so best used when you're jumped and the delicate types end up on the front lines of combat, or to quickly get to a location that is blocked by creatures, friendly or not, in your way.

Defensive Stance is a passive ability that will give you a permanent buff to your Defence, and also y9our armor stats.

Polished Armor, requires Defensive Stance, and builds on this defensive mindset for your character, giving them a passive buff to their defence and armor stats.

Lastly, Chaotic Calm is a passive skill that the seasoned veteran of numerous battles can eventually attain. It requires both Polished Armor and Intercept Skills, but delivers growing buffs highlighting the perfectly attuned calmness that only the most veteran and composed fighters can display. Your character's damage will go up, their attack strength will go up, and both Defence and Armor stats will go up.

While I am happy with all these skills, both in their organisation in the tree, and also roughly the order they can be unlocked in, I am leaving it open to tweak just how good each one is. Should Disarm reduce damage by 15%? 40%? How much extra armor should Defensive Stance give? Is an additional percentage right, or should it be a flat number that doesn't scale? I think there's a lot there to tweak to get right, but that's going to be a fun process when the fights get more complex and more players are in the game, running about and trying to get the best outputs from all their characters!

Monday, December 16, 2024

Encounters, Unforesen Bug-Fixes and Starting to Think.... Maybe?

The last few days have been a mix of furiously writing code to replace what had already been working, before my "fix" to wandering monsters, and also to patching up issues that I didn't know existed. These have all been really successful.

So, I've been working on encounters doing encounter things before we hit combat mode - and that's been both fantastic in the sense that creatures will now happily use abilities against the party before you get into full combat mode, so if you're running past a goblin shaman, best be prepared for all manner of spell-casting gimmicks as you try to scurry past, or you'll have the option to engage properly in full blown combat.

That brings me to my second part of the update. I discovered, that as I was hooking into code that already existed in these steps, there were some "unforeseen" issues cropping up. Like starting combat, and having everyone keel over for no good reason. Turns out that as I'd been purposefully getting my characters killed "outside" of combat, various events were queuing up nicely in various lists and collections - and then executing when they had a chance, so as I stood there lining all my characters up to get killed - to test respawn code and functionality OUT of combat - various combat queues were filling up with events that were killing characters, and the moment I started a new fight... blammo.. everyone gets KTFO. So, there has been a good deal of bugfixes to get rid of such silly artefacts, and get things working the way they are supposed to. And it's been quite successful - which has brought me joy.

I've also snuck in a few more special effects with some new code - mainly reviving characters that are no longer responsive *cough* game over man, game over!! *cough* which means that I can now make spells and abilities (I made a few test potions that revive them, that can be poured down their throats by someone else to test this) which do work very nicely now (there were a few code tweaks that needed to be done to make that properly happen too) - but this is all leading to a very long-winded way of saying....

I feel that we're actually really close to getting the app to where it needs to be to start proper beta testing. With these things in place, I can make some minor updates to the world (a few hours in the editor) to get spawns working exactly as I want, I think, and I can spend a few hours tweaking skill-trees for characters, and creating some more abilities and spells to basically set up one skill-tree for each class. Okay, maybe both those will be longer than a few hours. But then, I'll be building the world. More quests, more creatures and more content. Beta-Testing Time.

Saturday, December 14, 2024

Various Combat Engagement Stuff

It's a quick update, I've been neck deep in the code for the majority of the weekend now, and I've gotten it to a pretty decent place with encounters. This morning and late yesterday, I was wrestling with, of all things, the "Combat" button to show up and disappear in a quick and responsive manner.

As I was working with better code for creatures, I noticed a rather striking limitation on how this had worked in the past - namely, it really only looked at one creature at a time, which basically, did work reasonably well when the spawns weren't really up to the job. As I've fixed that, and there's now often more than one encounter on the screen, it's a bit trickier to manage. I can't simply show/hide the button when a single creature attacks or stops attacking. What if one is attacking, but a second one stops attacking... can't hide it yet... that sort of thing. Super super in the weeds of how this stuff works... but I've made this into another long-winded way of saying "It's working properly now!"

Now. While I've been playing quite deep into these sections of code, I've noticed some other things that would benefit from tweaks, so that's going to be my target for the rest of the day if I can manage it. I'd like to have the character stat bars and effects updating much more efficiently than they do currently - which is a one-size fits all "update everything" sort of command, which is actually quite horrible.

So, that's the plan. Update only when needed, and only what's needed to update. Oh, and to turn off things when characters aren't conscious. I noticed that characters that get knocked out, can still be activated (out of combat) and use things or abilities and so on. Derp. Whoopsie.

Friday, December 13, 2024

Wandering Monsters Coming Along

So, my code work has been continuing - and I'm coming into a weekend, where I generally get a lot more game code written up and the code is currently promising in a great way.

I've done a ground-up rewrite of the code that handles monsters or encounters BEFORE you get into combat with them - so basically when they are still wandering about in real time on the screen, possibly attacking you, or minding their own business, whatever the case may be.

The original issue that was on my fix-list for ages was that these things were basically not linked to the world - but rather pretended to be linked to the world via the an offset to the player. That worked. Kinda. Until it really didn't. As the game does more and more, it became more and more obvious, that sometimes, there was a frame rendered to the world BEFORE the offset was updated after you moved. Then, it was immediately updated - which means that the monsters basically skipped up and down a section of world. Non-programmer version? Monsters looked janky AF as you moved about.

So, I'd had a rewrite on my plan for ages, and I've been chipping away at it for a few evenings now. First, I broke everything on purpose as I changed the way the code handles movement of creatures and how they are treated in the world. Then I started updating the rendering subsystem to pick up these new things and render them into the correct place in the world. Finally, I've also been working on a bit of code that was long missing - monsters didn't DO anything to you until you got into combat with them. They looked like they were attacking you, they muscled up into your face - but they weren't actually doing anything. Well, now, they do. Like they were always meant to. You have a mage there very annoyed about your intrusion? He's going to be casting the spells he knows at your party. You have a goblin warrior who yo9u've stumbled upon? Yup, loads of sword swings coming your way. When this happens, you have the option of initiating full combat, or, you can try to leg it weathering the blows until they stop attacking.

But the good news, is that those things now work. There's still a bunch to do, but that's a great start leading into the weekend.

Monday, December 9, 2024

Plink plink plink

So, I've just dropped another internal test build out, capturing another big bunch of changes I've been building up with particular little fixes and tweaks.

Small Update: I tweaked item code to show useful information for Reagents in a transaction setting, so you can click on one in a vendor, or loot pile, and see how good it is, and what properties it impacts.

Medium Update: I added more UI and some code, so that when you're buying items from a vendor that can stack (so, potions, meals, reagents - basically almost anything consumable), it won't sit there buying them one at a time, but let you use a slider to pick how many you want to buy.

Medium Update: Abilities in the game now use files the game caches from the server for ability icons, so I can add in new spells and things without having to release a new build onto the play store. It'll just grab new files off the server when you load it up.

Medium Update: Same as above for effects. So much better to be able to drop them into the game, even on my own end without having to muck about with all manner of file management in my dev environment. I mean, there's still a bit, but no-where near as much.

Small Rumours (Edit: Big rumours): There's been a lot of renaming of items, as well as a good bunch of new things added to some vendors and loot tables. I've been thinking about how things will be called in game, and while "Health Potion" was good enough while I was testing, it's not really quite "up there" in the way I envisage the world in which the game is set. Lets face it, if you've got a tummy upset, you might have a peppermint tea to settle things down, or if you want a quick pick-me-up you might grab a coffee, or coca-cola, or pepsi. We don't call them "Action Potion" or "Stomach Settle Drink". So, my initial items now have proper names, in-line with what they are made of, or how they are made in the game. Okay, so by now, we're moving off small rumours, and into larger rumour territory - but while it's not on my short-term to-do list, I'll eventually do item crafting in the game, and I think these names will lead perfectly into the recipes that these items will be made with eventually - so the Swiftgrass Potion, the Swig of River's Tears, the Scarlet Seagrass Tea, will all make more sense when I start to look at what goes into them and how they're actually made.

So, plink, plink, plink, all the changes are slowly, one by one, bit by bit coming together. I'm planning on doing a half-decent rewrite of how some code is handled over the next few days, so this should keep things in place until those changes come through with how creatures are controlled by the game - but I wanted to get these things fixed before that.

Thursday, December 5, 2024

Editor Code.... and Reagent Rumors

I spent some time this afternoon working on the editor, upgrading the way I add item images to the game. Basically, till now, I've really been schlubbing it. I go to a file folder, find what "item number" I'm up to, then find the image I want to use in another folder, rename it, move it to where it needs to be, and then type the filename into my editor screen to update it. Well, thank goodness, no more.

I coded up an improvement that brings me closer to the now. It's all drag and drop onto the editor window with a file, and it does the rest - and they're all available to use instantly in the tools I've been building. So with that, I went and created some new reagents to add to the game, and popped them onto a vendor in town, added a few different ones to creature drops and it's all just going swimmingly. These will all be due for a balancing and tuning later, but for now, just mixing in a few different things into the game.

So, Roister's Vendor in town now has some new wares, and more will be added to Floren Farmhouse, but there's a mix of different reactions to investigate and match up with abilities to get the right extra pop when you need them.


Tuesday, December 3, 2024

Reagents and the Ebb

I've been quite busy with work, but I have been spending some well-deserved time at the code, and I'm really really happy to say that abilities and effects are now correctly picking up both the benefits of reagents and the magical ebb and flow I was talking about in my last post.

I can also see, that I do need to seriously look at balance and how powerful these things need to end up. For testing, I made up some random stats on a reagent, and went with what I thought was a pretty balanced set of parameters for the ebb - and ended up with a healing spell, that started off on a base value of healing 5 points and wound up healing me for 40 points. So you know, probably a bit of tuning to go in terms of what things do and what numbers I place into reagents. 

Having said that... it all worked exactly how I expected it to. I'll need to do some proper thorough testing, but it's all looking very promising. Reagents will give abilities and spells more punch, more range, better buff/debuff-over-time and the ebb and flow of magic will enhance that even further, or if no reagents are used - enhance or subdue what you're doing depending on the phases of the moons.

Again, this is all really really dry, trying to explain it, and how it works, and what it does - so the short version is "I'm really happy with how a very cool feature is turning out, though I'll need to tune it to get it where it should be in the end."

Massive Rumormill: Protection Skill Tree

I've fixed up a lot of random bugs and tweaked various things that weren't quite right, but the big news this evening is that I'...