Saturday, November 30, 2024

Magical Ebb and Flow

So, generally when I post here, there's a funny mix of reasons for it. Foremost, is that when you're here reading it, I'd like to share the cool new thing I've done, or the thing I'm working on with you directly. I don't know how you've found my little dev blog, but you're here, and generally more of you turn up each day. So welcome. I also post to keep myself on track with what I'm doing. It's a way to solidify what I've done, so that it feels like it's progressing - which it is, though sometimes it feels like at a snail's pace compared to what I'd like it to be. Sometimes it is also to jot down what I need to do next, so that I can see it the day after, or the day after that, and remember the things I need to do next so stuff works.

What I rarely do though, is post the higher level over-arching ideas and concepts. A good part of that is because I want to let those come out in the game, through different story arcs and through little connections that can be dropped in random places, so that the really clever you, who is paying attention can join the dots in the ideas I'm having on how things work.

Today is a day that I can share one of the early concepts I've had about this game world, and one that's been there from basically day one of my thinking on how the world will be.

There are three moon gods that circle the world, and each of them has two faces, or sides. They're like opposite sides of a coin, and depending on which side is looking upon the world, is what magical energies are strengthened, and what powers will be wane.

Infernus and Pacific are the faces of Fire and Water on one of the moon gods, and depending on which one (if any) are facing the world, spells, abilities and creatures aligned to that deity will be empowered, while the opposing side will be taxed of energy. I'm working on the tuning of it, but generally the bonuses far outweigh the reductions - so there's a big net positive between them. Same goes for the moon that has Earth and Air, and again for Life and Death. As these power and drive the way magic interacts and flows into the world, I want there to be a fourth and final effect, which is Chaos and Entropy. When the gods are heavily focused upon the world, and they are strongly enhancing the magical powers, the interaction of magical powers enhances Chaotic energies, while when the faces of the moon gods are focused on one another, rather than turned towards the earth, all magic will wane, and Entropy will reign.

I'm scratching at the surface here, as there's a lot, and I mean a lot, of story and myth that I'd like to get into in the game itself, but, in a very wordy and long-winded way, I've been hard at work, finally writing the code that will insert all this into the game - it's been long in the simmering, while I've been creating all the other functionality. But right now, I can finally, and I say finally, start working on how these cycles interact with abilities and effects on characters and creatures. 

Of course, in the way these things inevitably happen, it means I'm going to need to rewrite the way some code functions - but it isn't massive changes, it's rather just making it more efficient, in setting the impact on the ability or effect itself, then passing that particular object to the code, rather than what I do now, which is passing an ID of the ability around. Anyhow, all that isn't important. The important thing is that it's really all coming together in the last bits of "things I need to work" before I can start considering the core aspects of the game working.

The plan for the remainder of the weekend is to really get into this code change, and as I do this, also tie up the loose ends with Reagents and just how the work on both abilities and effects.

Sunday, November 24, 2024

There's rumors, there's reagents and there's new spells

First off, I just saw the date on the last post, and didn't realize it's been that long between updates. I've been quite busy, apparently too busy to post updates.

So, here's the skinny:

I discovered a bit of a big logic gap in creature abilities, namely in all my testing, I'd really just had creatures using abilities through melee strikes, as in legging it over and slogging a character, but also using an ability at the same time. Brilliant, happy days. All that. Right up until I dropped in a Goblin Shaman, gave him spellcasting abilities and then sat there scratching my head at why he was trying to ruin up and hit people with his spell.

So, updating the code for that took the best part of five days, creating a downright handful of new code that looks after that sort of action from creatures. The good news is that now, creatures happily cast spells as expected (technically, they're casting instant spells, still need to check this code with spells/abilities that have casting time but I'm taking the wins where I can get them.

Next up, I did a whole bunch of work around creating appropriate "tick messages" for effects on characters or monsters. So, if someone has an effect on them (like the characters in the screenshot) the messages will show appropriately to that effect and/or ability. As you can see, abilities also have their own lighting, that's just an aside, but a good one.

Right, also. The game has always meant to have possible reagents in it - basically, you can cast a spell, and it will do it's spell thing - but you can also cast that same spell, and use particular ingredients, and that spell will do it's spell thing, only much better. So you know, a fireball is a fireball, unless you happen to use a pinch of sulphur with it when you cast - in which case it will be a bigger, better fireball. It'll use up the sulphur, so reagents are best used for those important moments, when you're combat success is on a knife-edge, or when you're trying to punch above your weight in what you're picking fights with. So, I've always meant to have this in the game, and I created placeholders for it to be there in menus you can see, but I've never implemented it properly. So up until now, it's been a button that crashes the app, and I've had more than one tester berate me with it. So, while reagents aren't fully implemented right now, the buttons no longer cause the app to crash, and I'm much closer to having them functioning in the app. A big part of this was working out just how they'll function, but I've got that sketched out nicely in a scrap book which I always keep on the desk.

So, there's a lot here, and these updates probably should have been a few posts along the way. But there's one more thing. Probably something I'll be posting more frequently in the future, a rumour mill:

There's reports that the goblin shamans in the caves under the Floren Isles have learned a new spell that conjures up the foulest stenches from deep bogs. Adventurers are warned of this new conjuration, but also informed that perhaps one of the Goblin Shamans may have a scroll on their person that will teach this ability to others.

Friday, November 15, 2024

New Abilities, Ability Functionality and Spells

It's been a few days since I posted, but I have been super busy working on iterative builds here to run through my own testing, and that of some folks testing stuff for me, and there's been loads of updates.

In no real order: I've added a bunch of functionality tweaks to my editor that lets me enter in and save new data needed for abilities and items easily. Those new fields let me set requirement needs for abilities better, as well as setting up some data (that was kind of there already) for items that teach you abilities. And I made a bunch of new spells. And I fixed creatures to be affected by damage-over-time abilities (which they weren't being hit by due to a "beature" - feature of code that's actually a bug.

Let me tie it together. I created a few new "real, not just testing" spells. One of them is a small fireball with a damage over time, and another is basically a light of sorts. To have one of my mages be able to cast this, I needed for him to learn the spell. That meant adding in items that taught it, or rather, fixing what was there but had apparently stopped working. Then doing a bunch of editor code work to let me set it up properly. Then some app work to bring all this info in properly, and display it in the item splash for the character inventory screen properly. Then have it also do that in a merchant window, so you can know what you're buying. Then went back and added skill requirements into that - so you know what skills you character will need to use it, before you buy it. And then, just for good measure, tweaked the code, so that if you don't have the needed skills to use an ability, it won't let you learn it.

New build is out for testers just now, so lets see what's what tomorrow!

Oh, the image is one of my mages casting a brand new, but teeny tiny fireball spell. Oh, and a cool thing that I implemented before, that's not actually been used is that effects can add lights. Twofold use. One, I can create a cool spell that gives you a light to see with in dark places if you don't have better, such as torches or lanterns. And secondly, it means if you cast a fireball at someone, they'll also be lit up nicely until the fire wears off them.

Tuesday, November 12, 2024

Character Stats Streamlining

It feels a long time ago now, but I was listening to Tim (https://www.youtube.com/@CainOnGames) ages ago and he was talking about getting stats right, and using a spreadsheet to plan them out with level progression and the like etc etc. The idea is that you can see what you start at, where you can likely progress to, and that gives you the right information to be able to start designing creature stats, items and so on and things are about where they should be.

Well, given that intro, no points for guessing what I've been tinkering with.

I think I've got all my basic stats just where I'd like them to be - with maybe the exception of Attack Rating, which is mainly as I am not sure how frequent I want things to be hitting everything else.

So, with that, it's back to the editor to tweak some creatures and items, and really, to put some items into the game, as it's really really bare, but I really wanted these stats planned and visible in terms of progression, so I know roughly how to set things up.

Monday, November 11, 2024

Combat Text ....done... and loads of small bugfixes

So, if you read my ramblings often, you know that when I say stuff is done, it's basically a fifty-fifty at best to say it's actually done... but the important stuff of combat text is done. When things hit, when things miss, when effects connect with a character or creature. That's all working in a pretty rudimentary, but functional manner. 

I also fixed up some small bugs, and have been starting to tidy up some content (Yay!!!) to get the early stuff done. It's very very early days with content, but it's great to be able to start tweaking that again.

Again, short sweet update, but it's great to keep things moving in the right direction.

The current plan is to now focus on some content, so that the folks I get doing some testing can actually play the game for a bit - rather than just having enough in there for me to test the utter bare basics of functionality that I need. Lets see how that goes!

Sunday, November 10, 2024

Combat Text

Another super quick update. I've been working on combat text this evening.  Most of the structure was there already, so it's been reasonably light on the effort, but there's been a lot of picking through code that I wrote a long time ago.

Anyhow, the success story is that much of the combat text is now coming out into the game log exactly as it should be. Couple more tweaks and additions tomorrow and I might send another build out to the alpha testers.

Short and sweet update.

The plan is to continue on the combat text, and then fold in some world/content updates. I need to round out a bunch of the early quests, and add in some more given the new stuff I've been adding.

Saturday, November 9, 2024

Quick Tutorial Update

Just a quick note, I've been working on various tutorial messages and have them in just about all the important (and early) things that you will likely do. I think the interface and game will make a lot more sense now in terms of how to do stuff which is great.

I'll throw this out to a few testers in the next day or two and see what they say.

Also fixed a dumb (but critical)  bug where characters created initially didn't appear properly in combat before they were loaded from the server. There's still a minor issue where their portraits don't appear quite right when clicked on in combat as a check - but their name and so on does, so that's less of an issue. The rest works fine though, so it's gone from critical to minor and rare aesthetic issue.

Edit: I've also noticed that there are a LOT more visitors to the site, though I'm not really sure where they're coming from. I am guessing that someone somewhere is mentioning this on a site or podcast or some forum. So, welcome, and I'd love to know where you're seeing this mentioned.

Wednesday, November 6, 2024

Tutorial Code and Implementation Continues

I tweaked a few things in the code that runs tutorials. Things are indeed running just right now. it seems. And with that, it's been time to start dropping them down into the various screens in the game. That takes a bit of time, as I need to find the right element to highlight, but for the most part, it's not too bad.

It's also been really hot here, and the days are getting longer and longer, which is making it difficult to spend loads of time coding, even though that's what I really want to do right now.

Anyhow, tomorrow, I'd like to keep chipping away at tutorials on the "main game screen" for lack of a better term, so that I can ship a new copy of the build out to some testers and everything is explained.

Oh. Also work. Yikes. You take some time off work, and your list of things that need doing grows exponentially. Gah.

Tuesday, November 5, 2024

Tutorial Code (mainly) Done + Play Store

Firstly the completely done and finished part. The app is up on the Google Play Store, though it is not public yet. It's there as part of the next section of testing, though we';re still in early stages. Huzzah. (and gosh almighty, a lot of questions about what the game shows and doesn't show!)

Secondly, I had a good chat with someone testing the app for the first time, and it was really obvious that a tutorial of sorts was needed to be added to the game to help new players get the interface working. It's really hard to make some things obvious without mouse-over-tooltips. So, with another whole heap of general Android frustrations about how some things seem to be an awful; lot harder than they should - I've got a half-decent section of tutorial code written that I think will serve well enough to get through the initial bits at least. And I think it's going to be easy enough to implement it through the app.

So, the to-do list for tomorrow afternoon will be to finish off this code, finalise the section that links it to your own data so that it's not showing the same things over and over - and pop it into places where it makes sense to have them. Basically, most screens in at least one place.

The image shows a rather boring test "tutorial" that IO made while getting the target to track to the right element on the screen, so it's boring, but it works and seems to pop the tutorial in the right places on screen (while also stopping you clicking and doing other stuff).

Sunday, November 3, 2024

Rendering and Some New Animations

So this morning was a direct follow-on from last night where I was having conniptions with the way the wolves were rendering. I made a quick edit, but turns out I was really tired last night. When I was checking the database to make sure the data coming from it was correct, then going through hundreds of lines of code.... I checked the database for the wrong ID. So no, the data there wasn't correct. And then all the following places were propagating the data as they should until it hit the rendering engine where it was coming out wonky.

So today was a bunch of creating new animations, then also further follow-up rendering code tweaks to get encounters rendering to the right size when they were now in combat. I've discovered two bugs that I'm not overly happy with when I dropped in some new undead creatures - and some good things.

Good things first. My editor worked perfectly. I was able to import and create the two new animations (a smaller skeleton with a shield and spear, and a bigger skeleton with a sword and some wicked moves) with clean and smooth efficiency. Secondly, the game just picked them up off the server as needed and went to town using all the assets without skipping a beat. *chefs kiss - mwaaa*

Now to the annoying. It seems that encounters aren't rendering quite as they should. The assets I have should be nice and smoothly centered, but when the creature changes facing, or action, the place it is rendered to does jump about - meaning I don't think it's quite rendering properly using all the offsets just right. More play with that tomorrow.

Second annoying bug is that when the new animations are loaded up, the game does hang for a second or two. So clearly something is happening on the wrong threads. Interestingly, it's not the rendering thread - that happily keeps the animations and such going perfectly well while nothing moves or happens. So I'm hoping it's going to be as simple as calling a method via a reference of a thread rather than as a static call.

Oh. There's one more bug - 'cause of course there is - where some of the encounters are jerking about as the player moves, so I may need to change the way they're referenced in the world to connect them to the world below rather than as an arbitrary reference that merely is aware of the ground below them.

Anyhow, here's the party wandering about the Blighted Isle and running into some of the new skeletons in the form of the rather weak Dusty Skeletons.

Saturday, November 2, 2024

Good Progress and Frustrations

Today was a day that I spent mainly in code, which was great. I got stuck in after breakfast, and managed to get NPC images loading and caching nicely off the server, which is great. All the little extra details about callbacks and so on worked as intended. The image renders nicely if you have it, and if you don't, it fetches it, and then renders it to the screen as soon as it has it downloaded. Huzzah.

And now. The bane of my last four or so hours. Some animations render "now quite right" which is driving me rather bonkers. The new Fighter Class animation was one of those, in a few instances. That got solved. It was a funky value that had worked it's way through into the database at some point. That got solved and resolved.

Player Two entered the game. Floren Wolves. These things just won't render quite right. And I've narrowed it down to what I think is the particular value that's causing the issue (it's a particular width property in one object that is propagating it's way up the food chain to the rendering engine) but why this appears to only be happening in Floren Wolves, when they aren't bigger or smaller than other creatures is at present beyond me to understand. I've also been through the various database entries from start to finish and they all look fine, so again, I don't currently see how the problem comes to be, but I can see that it is, in fact, being.

I will pick up again tomorrow, and hope that a fresh set of eyes finds the issue quickly and easily, but right now, there's rather choice words and utterances flying in my head. They're the same size as other things that render correctly. They seem to have all the right data in the database as do the other creatures. They should, for all apparent purposes, render correctly, yet they do not.

The image shows the issue. The wolves are rendering to the right of where they should be by about half their size. One should be straight under Chester. Another should be between Spend and Sparkie (who's name is obstructed by the trees) yet they all appear to be about half a tile to the right.

Edit: So, turns out that I was really tired last night. When I was looking in the database for the values, I was looking at one object, but thinking I was looking at another. My choice words from last night were used again when I saw the obvious, clear and annoyingly blatant issue. One update statement and things are rendering just how they should. tl;dr; parentID 5 is not the same as parentID 17. fml.

Friday, November 1, 2024

You're All Individuals! Yes! We're All Individuals!

I meant to get into the code today to store NPC images on the server, and then cache them in the app. But well, I did a side quest instead. Though, it was a good one.

In all the images, all the party characters have so far had the same animation, as there was.... well... one character and party animation. Now there's more.

I'm halfway there. I've gone and created a few more animated objects for a few classes, but only in male form. I have however connected them to the classes. So at least now, when your party loads up, each character will have it's own class animation, and the party will use the leader's animation.

I'll create the rest of the animations and connect them through properly in the near future, but it's another step closer to where things need to be before a proper beta test goes ahead.

Also, as you can clearly see in this image, what used to be lovely centered character/monster names now sort-of kind-of fall under the right character. So something has gone wrong there. Writing your own engine wasn't supposed to be this fiddly! Obviously it was though, which answers why there's so few unique engines running games.

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