Thursday, November 23, 2023

Loot (and also Item Stacking), but mainly Loot!

A good bunch of code has been written since the last update, most of it seeming to be much more behind-the-scenes in terms of what it felt like, but.... but... the game now creates proper loot drops, that can be picked up and put into inventories nicely. I've also (partially) implemented item stacking, so items that should be stacked can be stacked on one another. Very amusingly, there was more code written and changed to accomplish that than there was for a lot of other things - and I know that's not complete yet. So, I need to keep tweaking that, to be able to split stacked items apart, trade portions of a stack to another character, or even to sell a partial stack.

But. We can loot stuff, and the game handles loot tables nicely. And that's another step in the right direction. So yeah, it's all moving along.

Wednesday, November 15, 2023

Loot, Loot, Loot, Loot, Lootely-Loot

The last few evenings have been thoroughly brain-juice-draining which is a polite way to say, I've been writing editor interfaces for some reasonably complex database structures, which in turn is a polite way of saying stuff that's not overly fun or exciting. But..... but.... but. It's (mainly) done. I will certianly go back in and tweak the UI to make it neater and better, but the general bits are working.

I can create a list of items as a possible lootdrop, all with weightings and settings around how many things drop, whether they need specific events to drop and so on, and then combine THOSE into another list that I can then give additional weightings to, connect to events and so on - and connect that to a creature as a loot drop. 

It is probably a bit more complex than I'd originally thought I'd do - I mean, why not just a loot table per creature, right? But this lets me re-use certain lists nicely. A Giant Spider, and a Monstrous Spider might all have a chance of dropping some random spidery-gobble-di-goops - and I can make a list of those, and connect it nicely to each spider, but then add in a different set for the harder creature, or connect to a particular meat or venom type for individual spider types. All about re-using. It's also a great way I think, of creating some rather large loot drop lists, for humanoids, and not have to recreate them for every type of pirate, brigand, scumbag and bully who walks the world.

Tomorrow, it will be time to start pulling all that into the app nicely and then starting work on the screens to let the player pick through what loot they want and add it to their inventories (as well as writing the server code for all that).

Good progress, even if it's mind-numbing to write all this editor stuff.

Sunday, November 12, 2023

Editor Interface for Loot Drops

Quick update, I've been hammering out the editor interface code to let me create drops and managed to get halfway through what I need I think. There's two interfaces that I need to complete to make it work in the way that I want, and I managed to get one of them done.

So currently, using the items I've got made up, I can create a loot table and set up item weightings within it. All the usual, updates, deletes and so on work nicely now. So, with some luck, tomorrow, I'll get to the next bit that ties them together, as I've made them hopefully in a way to let me re-use certain lists. If I make a "Goblin Junk" list for example, I want to be able to attach that to all types of goblins, but also make a list called "Goblin Treasure" and additionally attach that to higher level goblins, and so on. I've implemented some other code in a similar way already, and it's working a charm - so yes, more please tomorrow.

Saturday, November 11, 2023

Major Combat Fixes

I had a great code Saturday today, putting a lot of code into place-holders I had before, or things that I'd left unfinished. So, currently, I finally have encounters using a proper threat range outside of the combat system, I also tweaked that to show the encounter in a colour that will show how easy/hard it probably will be. 

But I've also fixed up a bunch of other code that had bugs in it, monsters will now TRULY not spawn on top of one another when a fight starts up, and I fixed up some of the early initiative settings again. While I did improve the way the game handles the device changing from portrait to landscape orientation, there's still a few layouts to tweak to get quite right (one of the Monster Info panels opens up on the wrong side as is visible in the quick capture for example).

I've noticed a bit of lag however in the UI with some of the recent HUD changes I made, so I might have to investigate that at some point to see what's going on there. It's only sometimes noticeable, so that's going to be a delight to track down.

Wednesday, November 8, 2023

Combat Cycle

I managed to get some quality code put together this evening. It's one of those "expect it to work, but need to code it parts" which I've ignored till now, but needed to fix at some point - which became now.

The combat cycle was separate from the normal game time cycle. I needed to at least sort of, combine the two together - though at different scales. I already had the combat happening in ticks or sorts, where actions would put a delay on the characters until they were ready to activate again and with some recycling of code and making use of hooks that were already there, I managed to connect it together. That also means that buffs and effects that were active prior to combat, or ones picked up while in combat have a reference point on which to increment now.

The long and short, is that while I'm sure there's bugs to fix in what I wrote tonight, the real-time normal mode and the turn based combat mode are now connected, and that means that effects have something to reference and go off with - and that's good progress for a night! Tomorrow, I'll try to connect those effects ticking over to something that the game will show up between activations, so that you can see when someone gets hurt/healed by a damage/heal-over-time or when something else generally happens along those lines.

Tuesday, November 7, 2023

Combat Abilities and Animation Effects

I've been very flat out with work, so time has been limited, but I've certainly been able to fix up a few small bugs, as well as throw in some extra functionality around combat and abilities.

I've also been using the animation editor code to rustle up some more sequences for various abilities to use as I test things out, so it's great to start seeing some random animations popping up.

Got another busy day with work tomorrow already, but with some luck, I'll get some coding time in late tomorrow evening to keep at this - I noticed a few bugs as I was testing today which I should fix easily enough, and there's still a whole bunch of code to plug in around how abilities are used, though I think a bunch of it is getting easier and easier to do.

Saturday, November 4, 2023

Combat Panels and Ability Quick Buttons

It's been rather wet and rainy here, so there's good excuses for not working outside this weekend, and yesterday, I made some great progress sorting out the various displays and panels that need to appear and disappear when combat is happening. I started off by doing some work in the layout files, streamlining everything as half of them were in one format, a bunch in another, and it was all very very messy - just like I'd written it in little bits and pieces without having a grand final UI in mind when I did it. Sort of EXACTLY like that.

So, anyway, that's all working pretty much just how I want it now, I noticed there's one panel that needs some information displayed on it when an action is selected, but that's easy as pie.

I've also created the tables and interfaces needed to both save abilities to quick slots for characters when they're created, and reload them back up from the server and put them back in when the game reloads up again. It's nice to see stuff coming in without having to be set up all the time. Just another one of those expected UI features that we don't really pay much attention to when playing the final product.

So, with that, it's reasonably early, and I have a good day of code planned. I'll finish up that Ability Display, which should be a brief bit of code, then just into the abilities again, setting up stuff to work with more different modes of the various abilities. With some luck, I'll have something to post much later tonight.



Wednesday, November 1, 2023

Abilities Interface and Rogue - Shadows

I've been finishing up all the tables in the database for Abilities, and the supplementary live tables to store what character has what abilities, and as I'm about to go diving into finishing up all the app code to handle all the things that I think the game will need to do, I wanted to make my life easier by finishing up the editor interface for Abilities. So I created all the various types of inputs to let me enter in the various abilities with all their nuances, set up the code to save them to the DB, manipulate them as needed and connected them to skills that can enable them.

When I start putting together the code that loads it all up in the app, I realised that I'd botched it. So, going back to the start, and making an adjustment in all the code I'd written so that it had an extra (needed) field that I'd not thought of, and I was finally up and running.

I've also been adding in code that handles proper skill requirements, so you need to develop some skills in particular order, or at least open them up. For example, in the example shown from the Rogue Shadows Tree, the opening skill here is Backstab, but once that is active, you can spend points into Unseen Hand or Melt Away and so on.

You can also see that skills show an A, P or U - which shows what type of skill they are. Active skills are skills that need to be used, whether in combat or outside to provide a benefit. Passive skills are simply always on and will generally give a continuous buff of sorts, Lastly, Unlock skills merely unlock an ability type, and you will need to learn abilities that use this slot. A good example is these are in the Mage trees. Unlocking a type of spell class, for example "Elemental Fire" spells won't grant you the ability to cast anything on it's own, but if you find, buy or quest for spells in that category, you'll be able to cast them - so a single skill can unlock MANY different abilities.

The code for these is taking some time to write, and I've been quite busy of late,m so my normal programming hours are being cut into as it is, so I'll probably be able to do some updates here speaking to the various classes and skill trees more!

Sometimes you do the same thing really well. Twice.

And each time, you do it for the first time. So, lets start with some back story here. While I was doing all the recent changes to the code ...