Dev Log 19: Hull Parts

Hello again my esteemed readers, we are back with another juicy dev log, full of cool and exciting new things to show. This month’s focus is hull parts and, subsequently, very early ship designs. I’m quite excited to have reached this milestone, so without further ado, let’s check it.

Fresh Out Tha’ Docks

In typical me fashion, instead of drawing up a bunch of placeholders, or only creating the essentials, I’ve gone ahead and made every single type of hull part the game will need. This includes edges, corners, slopes, curves, gap fillers, bows, and more. Did I need to spend four weeks straight making every single part in one hit? Nope. Was it worth it? Definitely. I admit, I may have a strange way of working but, as Todd Howard says, it just works. Witness the image below, and see the fruits of my labour.

Now thinking though…. there are still a few more pieces I may yet add, such as larger bows or sterns, but for the time being I think there’s a pretty solid selection available. Personally, my favourite part of most sandbox games is always the building aspect – so naturally, I want players to have as much freedom as possible in my game. I’ve made a few rough examples showcasing some of that freedom, which you will find in the following image.

There is one small issue though, as I’m sure you can already tell, in that I haven’t yet added any engines, or weapons, or fins, or hull decor, or windows – meaning these builds look a lot more like random assortments of rooms than… well… ships lol. This will be rectified very soon though, so not to worry, as ship systems are my next order of business.

Unfortunately, being that all these parts are fairly high in detail, this asset work practically took up my entire month – so there isn’t all that much else to show. Due to this, I thought I’d spend the next section going into a bit more detail about my design process, and how I ended up with the style of the parts you see before you.

To Curve, Or Not To Curve

So, as it turns out, adding curved and sloped walls was actually one of the hardest design problems I’ve had to face thus far, and it took a whole lot of back and forth before finally landing on an implementation. The main issue with slopes, and even more so with curves, is that they are fundamentally incompatible with an orthogonal grid system. Whilst slopes can technically be made to work via stepped grid cells, this only really works with 45-degree angles, and quickly breaks down when pushing the angle further in either direction – and is just totally unfeasible with curves altogether.

The first thing I considered was creating custom cell mappings for each hull part, wherein the cells would try to match the slopes/curves as best as possible – but this meant having to create all kinds of script logic and lengthy JSON arrays to hold these coordinates…. for every single hull part. Even then, those cells STILL wouldn’t be a 1:1 match with the sprite. The next idea was to switch from a square grid to a triangular grid – but this would have meant a full rewrite of the editor, and would have been a nightmare for adjacency math. I also considered a mesh-based system, but that starts to get into major scope creep territory, and is quite a bit above my skill-set (especially when having to scale it for everything else in the game).

Further issues also included tile compatibility relative to cell footprint, interior panels needing an entirely new mask system to render only inside hulls, interior walls needing extra assets for every single angle/curve (rip)… and then comes the final bosses; room detection and pathfinding compatibility.

So yeah – it was quite the impasse. I couldn’t get true sloped/curved walls to work, but I also couldn’t just leave it at square hulls only, so what else was there to do? How could I fix this massive glaring issue without losing months and months rewriting everything? Well, turns out the solution was actually quite simple: just make the actual ‘part’ a square, but slope/curve the sprite and colliders. Ta-da!

Yep, turns out the solution was hiding in plain sight all along, and it ended up working out wonderfully. The editor stays happy with its square-based tile placement, the player stays happy with their curves and slopes, and I stay sane with my orthogonal grid system and coordinate-based mapping. Awesome.

The only thing left from there was actually making all these parts… and yeah, that took a hellofa long time – but we got there in the end.

For what is essentially just basic shapes, they sure did take a lot of effort to make…


So there we have it, another month gone and another inch closer to a playable game. Ships are (almost) here, and once they’re ready, it’s time for ACTUAL GAMEPLAY – woohoo!

As always, I hope you’ve enjoyed reading this, and I shall see you next month for more exciting and fun-filled progress.