G'DAY!
The tl;dr here is that I spent the last 3 weeks doing a major restructure of the codebase so the game can run at a fixed rate of 40hz on all machines, while rendering to whatever framerate ya want.
It was a massive pain in the ass, but it's done and dusted now and I'm keen to move onto adding more content for the next v0.14.
The rest of this post is me rambling about what I actually did, and why. With a changelog and future plans for v0.14 down the bottom.
ALROITE.
So, the game simulation now runs at a fixed rate of 40hz so it's consistent on all machines.
To get it running smoothly on all machines though (at whatever the desired framerate is, definitely not 40fps though lol), I had to implement user-side renderer interpolation. Which is discussed as the holy grail in the famous Fix Your Timestep - Gaffer On Games.
I was then nerdsniped by Ryan Fleury, who said that it's actually not the holy grail after all... so I spent the next two weeks untangling my user code (rendering, ui, input, etc) from my simulation code (physics / world updating) and plonking them on two separate threads. Forcing me to be a good boy and message back n' forth whenever I wanted something user-side to happen sim-side and vice versa.
The result of all this work is a game that is now ~70% of the way to being multiplayer, with 100% of the cost of it being multiplayer and 0% of the benefit of it actually being multiplayer... what a great deal!
I did it because if at some point the game is fun enough to justify adding multiplayer, it'll be easy enough to implement because I won't have accumulated a metric fuckload of tech debt, and can do it without banging my head against a wall (as much).
fun sidenote: I actually went to implement multiplayer a good 6 months ago but gave up for this exact reason - my user and sim code was a tangled web that I could not be assed untangling at the time.
So that's pretty much what I've been up to for the last 3 weeks. It ain't sexy, but it needed doing. While I was at it though, here's a few more things I tweaked...
Unlocked the attack angle. You can now attack wherever your cursor is pointing.
Added an air punch attack when you're not holding any tools
Other things:
Fixed textures not loading on some machines
Added VSYNC option in settings, or a manual framerate limiter
Added grace period for mob spawning at beginning
Reduced ingredients for rope
When you die your hunger now is set to 2
Nerfed mob spawn rate a bit
Cool new startup fx, default to fullscreen
UP NEXT
I decided to just push this update out now so I could have a clean slate for v0.14
I absolutely cannot wait to get back on the content / game design grind. Here's a lil sneak peak of what's coming up...
I'll cya soon ;)
- randy
p.s - The update is available for early access via Itch…
Those geode dudes look cool. Keep it up man!