Dev Log 17: Ain’t Dead Yet

Dev Log Thumbnail

Well well well, look what the cat dragged in. That’s right ol’ pal – I am indeed still alive.

Whilst I do apologise for disappearing these past 2 months, I can at least confirm that development is still on track. There have been some MASSIVE changes to the game though, so it’s about time I clued you in.

Reinventing the Wheel (as it were)

Soooo… yeah, turns out my whole ‘compartment’ system idea was actually not so great after all. Made all the more funny by the fact that I oh-so-confidently talked it up in my last log, acting like I had solved untold scores of issues with the most ingenious of ideas…. only to end-up back at square one and three months down. Ooft.

Why did that system fail? Well, essentially, the whole point of the idea was to streamline the logic behind the game’s build system into predefined room templates (compartments), and therefore aim to sidestep later complexity relating to room-detection and pathfinding that would come with a fully free-build system. In theory, this sounded awesome – ain’t no room detection needed when rooms are already made – right?

The only issue being that, in the interest of trying to solve a handful of problems down the line, I ended up giving myself a truckload of problems in the present. You see, each new buildable item was treated like a brand-new data type, and needed all the accompanying parts just to make it work. For example; a ladder in the old system wasn’t just a ladder. It was a data class, a registry entry, a prefab configuration, a structural feature type, all of which needed special-case logic for how it interacted with compartments above and below it, as well as edge case handlers for when those compartments didn’t line up properly. In the new system, a ladder is a tile with its tileType set to ‘ladder.’ That’s it.

If that alone wasn’t reason enough to pull the brakes, then this next part certainly woulda been. You know how the whole point of compartments was to avoid the complexities related to free-build? Well, turns out that surface constructs, aka towns/outposts/cities, still needed a way to place terrain and outdoor tiles, which itself requires… you guessed it; free-build. That’s right, I was ironically still making a free-build system regardless – just with the added complexity of another PARALLEL system too. Oh, and they both had to work together nicely. Two opposing build systems…. in one singular editor…. GENIUS I tell ya.

This culminated in a codebase that was just exploding in scripts, and I hadn’t even yet added a quarter of everything the game needs. Structural features alone, aka traversable tiles (ladders, stairs, hatches, etc), needed a whole new registry, half a dozen classes, and multiple dozen methods, just to make them work with the previously-made compartments. I’m sure you can start to see how unmaintainable this would have been getting, not only for the compounding increase in workload for every new type I needed to add, but also for the exponential increase in tech debt/bugs/compatibility edge cases between each parallel system.

Anyway, I came to this realisation shortly after the April dev log, and so – faced with the prospect of having to delete multiple months work and start again – I fell off the wagon. Development slowed, procrastination set in, and then a whole heap of other bullshit came my way (which I’ll touch on in the personal notes section at the end of this log), and everything basically came to a grinding halt. Hence why I missed last month’s log.

But, no need to fear, that’s all behind us now, and for the last few weeks I have once again been working away – and so I present to you, the new, new, NEW build system:

Construct Editor New

Third time lucky…. right???

This new system functions about as you’d expect for a tile-based build system. You browse the categorised catalogue on the bottom, pick a tile, then place it down. Behind the scenes I’ve got a grid-based system running, wherein each cell is 0.25u (or 250 px, at 1000PPU) and this is how I’ll implement room detection (via flood fill). Pathfinding, like room detection, is actually also relatively simple – as I’ll just be using traversable tiles as nodes and base the whole system around that – though the term ‘relative’ is doing a lot of heavy lifting. Anyway, I’ll spare you any further technical jargon but, essentially, I shoulda just done this from the start. Then again, where’s the fun in that lol.

As well as all the technical benefits from this new system, it also means that the user-facing aspect is now FAR less limited, and the editor can now support things like sloped walls, curved walls, and more. Rooms can now be irregularly shaped, and sized however you like. The previous limitation of 20 tiles wide x 3 decks high is totally gone. I will need to find some way to balance this, of course, but that’s a later problem. All in all, constructs can now also be far more complex and creative in design, which is just a win no-matter which way you look at it. On the downside, it will take players longer to actually build anything, as each tile is placed one-by-one, but that’s a fair price to pay in my opinion.

Going forward, I expect to have some really cool updates by the next log, as most of the revamp has now been completed, and what remains is just bug-fixing, polish, and tile updates (to get ’em working with the new system), and then it’s finally onto new features.

Yupp… still a looooooooong way to go…

I will also address the elephant in the room, that being my complete absence last month. Unfortunately sometimes in life the perfect shitstorm of events coalesces all at once – and that’s exactly what happened. Obviously it’s never something you can foresee, but even so, I don’t plan on making a habit of going MIA, so perhaps providing some kind of brief update might be the best way forward (in the event of future shit-coloured storms).


So then, what was this perfect storm of absolute bullshitery that I found myself in?

First off, my car broke down and ended up costing around $4000 in repairs – even after which, I still have no air conditioning, my front bumper is held on by cable ties, and just the other day my window switches stopped working (awesome). Next, my main job suffered a massive reduction in hours, and so I had to scramble to try to find a second job, and am now once again bartending on the side. On top of that, my car insurance, rego, and all manner of other bills came due – at the exact moment that I was out of work – because of course they did. AND to top it all off, due to all the stress, I stupidly bought some cigarettes and smoked – after having quit for nearly half a year. Yuppp. All of this, mind you, in the midst of losing three months worth of work on the game. Very depressing, to say the least.

But – no need to fear – the eye of the storm has passed and, whilst I may still be in mountains of debt, morale has improved! Things are on the up, game development has resumed, and I feel great. What was I getting at? I dunno, thanks for listening to my rant I guess, haha.

Till next time!