First day back from holiday and I feel like I need a few days off...
I briefly touched the build while I was at Assembly, in Helsinki, and I noticed a few things were broken. I was hopeful that it was just my laptop syncing badly, or that I’d forgotten to push some changes, but no. A few of the things I’d done in Ludlow had broken Ytene.
The most egregious was that the vines in Ytene were entirely missing. I was able to step back through the perforce history and pull out the map before the changes, which was a relief.
The other problem was that the cut-scene to get into the Dungeon wasn’t firing. This took me a while to debug, but again, was a Ludlow related change; the “invert call to responder” option I added was, you guessed it, inverting the button that opens the dungeon. Yay me.
Before I went on holiday, I started a discussion with Dan about how we’re going to tie the various threads we’ve started pulling into a nice bow. One of the things dangling is the use of Ste’s custom runes. I’d put them together into a font quite quickly, so today I re-made the font, taking extra special care with the baselines and spacing, and then knocked up some examples for Dan.
It’s working better than expected, and we’ll have loads of space to hide text...
It dawned on me, after yesterday’s digging about, that I should do another pass on the map areas and see what I can finish off. To that end, I’ve started going through Ytene, testing, fixing-up, and adding anything that’s missing.
The chest-appear sequence, that I added back in July, was a broken, possibly as a result of my rollback yesterday. Since this is a trick I’m going to pull repeatedly, I made an actor to handle how these sorts of chests are unlocke (and their cut-scenes played) and made sure it was all tied up to the timeline
I added the lore page for the side-dungeon
I added a button to the main dungeon that “completes” it. Ie: sets state in the global save, saying that the dungeon is complete, and that the ley line should be activated...and I made sure that the overworld controller checks this and cleans out the fog, the fog-warp and all the enemies from the location whenever it reloads. I’m not going to make post dungeon changes in every location, but it makes sense here.
Fixed up some of the broken blend textures along the edge of the map
Added a load of foliage.
Tomorrow I’ll sort out the various issues with the NPC in this location and get Dan’s final dialog lines in.
There’s one NPC in Ytene -- amusingly named after my fiancée -- who, it turns out, is the most complicated thing in the game. (I’ve yet to tell my SO that’s she’s complicated, but the joke’s now on the table if I need it.)
Ytene is the only location on the map that’s “inventory locked”, requiring you to be in possession of certain items before you can get into the dungeon. Ideally, the NPC dialog should react appropriately depending on the player’s inventory. This is complicated further because the NPC also gives out the first quest in a chain, that ultimately leads to one of the main inventory items.
If the player’s on the quest, dialog needs to remind them to complete it. If they’ve completed it, the dialog needs to recognise it. If the player’s been eaten by the Fog, this NPC wakes them, and then needs to progress into the ideal dialog branch, again, depending on the player’s inventory/Quest status.
In all, 8 different branches, some triggered by cut scene, some by natural location. Oh, and the NPC can be in one of two places, depending which direction the player’s coming from.
I shit you not, it took the entire day to replace the old dialog with Dan’s new lines, and make sure this was working.
I’m never making a game with dialog again.
Whatever the Dunbar number is for lines of code, I’ve sailed past it. I think I’m basically relying on integer overflow at this point. Today has been a case in point.
I wanted to place dig spots around East Ley. This is where you get the shovel and I want plenty of things close by to emphsise it. Except, the last time I created new LootDrop/SpawnItem lists, which the holes use, was back when I wrote the whole system. So, er, years ago. This meant I had to reverse engineering Loot Drops and Spawn Item Lists to decipher how to make new ones.
Turns out it’s quite a nice system, and really easy to add new things! Assuming you can remember how it works, of course.
I created new pickups for three of the collectable insects, made new spawn lists, with a couple of different probabilities, stuck them in holes around the map, and made sure they affected the Luck System correctly. And I played around for a while to get a feel for their drop rates.
You’re pretty much gonna get the catchable insects on this map on your first pass, else you’re seriously unlucky.
The spiders in Ytene weren’t spawning death VFX or audio. I wasn’t sure if these existed when I made the spiders, but I had to dig in and find out why. Turns out the Rats were using a different code path in their blueprint, so I thought I’d pull it all into a BP Library function, at which point I discovered that I’d already done that, god knows how long ago, and the Rats weren’t using it. So, I sorted out that guff, added the missing VFX and audio to the Spiders, and made sure the NPC’s baseclass (in C++) was spawning out impact VFX & SFX based on Damage Type rather than be wholly reliant on the BP.
Can’t wait until next week to discover a whole load of other things I’ve already written.