Monday, December 30, 2024

Rumourmill: There's Orcs About!

So, I've been smashing out as much as I can today, buying up some assets to use, and inserting them into the game as I build up the world and progress is good.

I wanted an area of Orcs in another part of West Floren Island, so I got a nice Orc Warrior asset, did all the imports into the engine and dropped it in. Then I bought another asset from the same artist (Elthen's Pixel Art Shop), this time an Orc Shaman - and the spritesheet came with a small animated totem. That got me wondering if I could manage to get my prior summoning code implemented so that the Shaman here, could summon a Totem - and that the totem would then start doing stuff. And I am here celebrating, that indeed, yes.

In the screenshot, which is a bit bland due to not wanting things covered over by large trees, I've picked a fight with some of the new orcs, and after sending a lovely Flame Seeker at Blazer, the Orc Shaman then created a Bone Spirit Totem next to himself - and the grab is literally as it blasts my rogue, Yhatzee, with a Fireball.

So, there's really cool new functionality, and the world is getting filled in nicely. Winning on multiple fronts to round out the end of the year with.


Sunday, December 29, 2024

What maketh the World?

So, I've been taking a bit of a break from app code (kinda anyhow, there's always bug fixes going on and small tweaks) and trying to focus on building out the world. Which really brought me to thinking about HOW to actually build the world. 

So far, it's been just a case of dropping in a few monsters here and there, to test a particular feature, hopefully roughly in the right place. Wolves outside, check. Goblins in a cave, check. I dropped a few NPCs where I wanted them, and gave them some conversation scripts and things. Great. I have enough to test with.

But.... I think, for building out the world further, I'll have to do things in a much different alignment and order. I mean, I've got the map drawn out, and I've got a few very rough ideas on some back story for things - but even as I started adding in some more spawns to the world, I realized that doing so didn't quite break, but made my conversations missing obvious things. I mean, it's not quite second breakfast, but it's close. You talk about all the wolves in the valley, yes, but what about all the bandits in the hills?

So, as I was heading off to sleep, I was pondering how to best build the world out, and I think I've come up with the right process:

Get a rough idea of the zone and any potential backstory etc at a high level.
Create the map itself.
Create monster spawns and place through the map.
Drop in any NPCs that will be in the area.
Create quests and then finally conversations.

That should limit the amount of rework fixing obvious things as I spend some effort now to fill out this starting zone with all the content I'd like to put in, see how much is needed to get characters up a few levels as a starting area should do as I get ready for the beta.

Thursday, December 26, 2024

Festive Rumourmill: Fire & Water Skilltree

This tree was I think the easiest one to put together from the four that I've done for beta-testing. The very earliest concepts I had of what I wanted this game to be like, were tied to and revolved around the interactions of the moons and their connection to the spheres of magic - so the skilltrees for the mage class were always going to be tied to these. The other thing that made it easy, was that I wanted the class to be different from others - in that while some other classes had an Unlock ability here or there, I wanted this class to be ENTIRELY built of of abilities that were unlocked with skills - and that's exactly what we have. There are no spells your character picks up by putting points into a skill, but rather all spells are linked to a skill needed to cast them. Scrolls and Tomes for spells you come across will show you what skills you need to cast them. You can build your character around what sort of spells you'd like to be casting in that way.

The first tree I have is Fire and Water, though if you've been reading my posts, especially around the Ebb, you'll probably already know that the other skilltrees for the Mage will be Earth & Air, Life and Death and finally Chaos and Entropy.

As the others will be, each skilltree is made up of two opposing forces, here, Fire and Water - each strongly connected to their respective Ebb phase.

In the Fire side, Fire Cantrips is the opening skill, where simple, generally non-combat incantations are unlocked. An example of this is Ember's Eyes, a common spell that is used for light: Summons the eyes of the great fire elemental snake Ember, giving it a glimpse into the realms while using its glowing eyes to illuminate the surrounding area.

We then have Personal Fire that is unlocked by Fire Cantrips where simple fire spells are unlocked. These are generally both small in size and focused on the caster directly - Flaming Hands is an early example, where a caster, can, in a pinch, cause fire to leap from their hands to attack enemies that have managed to get to them.

Area is the next unlock, using Personal Fire which then gives the caster powers to cast spells that appear over much larger areas. Flame Seeker is an example of this that new players can buy quite cheaply from Roister's Vendor - it will conjure a fire that makes its way to the target, setting anyone (friend or foe) caught in the way alight.

Moving to the centre of the skilltree are the two elemental skills, and here Fire Elemental is unlocked with Fire Cantrips and allows the caster to bring all manner of Elementals and Elemental Fire into the world.

Last for Fire, Explosive requires both Area and Fire Elemental to unlock, but contains the most powerful Fire Spells able to combine all the archtypes into single powerful spells.

Mirroring on the other side of the tree, we start with Water Cantrips where again, simple watery spells will be unlocked.

Again, moving towards the elementals in the centre Water Elemenal allows the caster to unlock spells with a focus on the elemental plane of water, either channeling effects from it, or bringing beings directly to the world. It is unlocked with Water Cantrips.

The final branch starts with Giving which is an area of magic focused on regenerative and rejuvenating spells and only needing Water Cantrips to unlock.

Above it in the branch, Ice is unlocked after Giving and allows the caster to bring forth the most frigid incantations, snap freezing and blasting opponents with icy fury.

Finally, Tidal spells are unlocked after mastering Water Elemental and Ice and grant the caster the ability to interact with the most powerful water-based spells, able to unleash the greatest powers imaginable.

Festive Rumourmill: Mystic Skilltree

I've been happily filling out the next skilltree in the list, and there's now a completed tree for the Mystic tree, under the Cleric Class.

The mystic is a bit of an all-rounder tree, with some healing and some offensive spells, but will make a very useful inclusion in any party.

Opening the skills are the simple Adjures, which are direct requests of the elements. This is an Unlock skill, meaning it enables abilities you can pick up along the way rather than directly granting a particular ability. Many small, simple Adjures can be very helpful in numerous situations.

The tree then has two main branches, restorative and ablation, which can almost entirely be used in combat as well as out.

Bless is an augmentation you can bestow upon an ally for a period of time, granting the target mind, body and soul restoration, as well as a small increase in attack, defense and armor. A good all-round buff that is unlocked after Adjures.

Next up is Healing Wind, an improvement on simple healing Adjures which directs a breath of healing energy upon an ally and grants a short period of powerful healing to the target.

Invigorate is a skill unlocked with Bless. While it grants the target a small amount of healing to their mind, body and soul, it really shines bu aligning their bodies energy into cohesion - granting the user additional life, action, and mana points over what they normally have.

Divine Intervention is a skill unlocked with Healing Wind and through it, the Mystic singles out an ally to be favoured by the Gods for a time. This favour grants the target increased damage and life, stronger attacks, better defense and impenetrable armor. They truly shine as the Gods smile upon them.

At the top of these two sections is Resurrection, a skill that needs both Invigorate and Divine Intervention. This cannot be used in combat due to the delicate harmonies that the Mystic must restore to the target. It will restart the flow of energies in a body of a companion, bringing them back to the land of the living.

The other side of the tree follows Earth, Air, Fire and Water, starting with Unearthly Eruption which will cause the ground to swell and heave below an enemy, causing damage in an area around them and is unlocked with Adjures.

Next up, Emberflame opens the cracks to where Ember is trapped, letting a flame lick up into the world. This brief taste of reality might not sate Ember, but it will ignite those poor targets in the way. Emberflame is unlocked with Unearthly Eruption.

Choking Mist is next, unlocked by Emberflame and creatures a vile and putrid stench to engulf enemies, leaving them gasping for breath and barely able to function.

Finally, Fountain of Youth brings the purest of mystical waters to drench a target with instant and powerful healing of Mind, Body and Soul. While this ability is taxing on the mystic, the effects on the target are immense.

Monday, December 23, 2024

Festive Rumourmill: Shadows Skilltree

I've got a pretty good idea of what I want in the initial skilltrees for each class, and while some of them don't require new code in the app to be able to perform them, some of them really do.

This was the case in the Rogue Shadows skilltree, where I had two (kinda three) abilities that really needed a lot of code to be written to implement. Lets go through it, and I'll have a laugh on the things that added extra speedbumps to delivering this quickly.

First up, Backstab is the entry skill for the entire tree. It is an Activated attack that grows in strength and applies a decent damage over time effect to the target, via a melee attack.

Next up, Melt Away is a skill that requires Backstab and is a passive skill that makes the character gain less threat. Each level will grant a reduction to the threat gained no matter the actions being done.

Continuing in the same branch, Blind is an active ability that puts a strong debuff on the target, again delivered via a melee attack. You'll need to have at lest one point in Melt Away to unlock this.

Over on the other side, Unseen Hand is an attack that lets you attack a distant enemy as if you were in melee combat with them. It's unlocked by Backstab but builds on it, letting you hit targets that you are blocked from getting to, or to assist an ally without moving.

Sneak is unlocked with Unseen Hand and lets you move about the combat area to places you might not normally be able to get to. The more points you put into it, the further you're able to move with this.

Misdirection is the skill that merges these two branches again, needing both Blind and Sneak but will allow you to shift a good deal of your threat to an ally. This will be particularly useful after you've built up a few actions with your character to get on the radar of various enemies in the combat.

Finally, Dark Places is a skill that rogues are able to pick up after spending a lot of time in questionable company - and Misdirection. It is an Unlock ability, meaning it merely opens up abilities to be used - but it will let you summon in help from allies you've come across over time.

So, both Melt Away and Misdirection needed some extra code to be added to really change the way that threat is tallied up. Nothing too massive, but enough to need some work - but it was the Dark Places abilities that made me really work. Adding in a creature partway through a combat may seem simple, but the amount of settings needed to make it just quite right took some time to figure out. The good news is that this now works perfectly, so I'll be able to use this code as a foundation for other skills in other classes that will also summon in allies to your side of combat - or you know, perhaps monsters will be able to summon in allies on their own too!

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."

Rumourmill: Ebb and Flow Done!

I have had the Ebb and Flow working in the game for a while, amplifying abilities and spells at different times, depending on the lunar cycl...