dev log 07 - tile trials

lost in the sauce

Do you ever go on a tangent and totally forget about what you're meant to be doing? I sure did.

That's right, I was meant to be organising a playtest,

but between some mild social dramas and a few other technical details I was still ironing out it never manifested.

In all honesty though, I probably just procrastinated (I don't enjoy having to organise social events)

It'll happen eventually, but there are still things I can work on until I'm ready to do that.

bricks and blocks

Speaking of, what have I been working on?

Well... I may or may not have spent the last two weeks on creating my own primitive model format and level builder tools.

As mentioned in my last devlog, I wanted to include a dedicated level editor for my game - I also want the editor to be the way I build levels too, that way I'm forced to use it and hopefully discover any flaws it has.

To make an intuitive editor, I decided to take a page out of Minecraft's book - Placing tiles from a first-person perspective.

This was a lot more involved than you might first think (especially since I want it to work in multiplayer) I need to create and calculate all the connected models for each tile, store them efficiently, handle mapping textures, send tile data across the network, remesh and rebuild each 'chunk' of tiles, and much more.

I'm maybe about 60-70% done with the major features for this, but it's all fairly rough and will need a lot of additional work to optimise and provide a polished interface.

Of course, it wasn't without it's issues - plenty of mistakes resulted in the tile mesher totally mangling the models:

I'm using a similar blockstate system to the one Minecraft uses, this simplifies a lot of the issues around connected tiles and offers improved performance over something like MAPGrid (very cool, check it out) but this comes at the cost of additional upfront complexity, as well as constraints in how I design tiles (too many states on a tile can cause the number of tilestates to explode)

<< return to homepage <<