Posted November 28, 2019 by Cheeseness
Good evening, fellow bee lovers!
Today's update brings in a couple of big changes. The most important of which is a first pass on custom key/mouse button bindings. To get this up and happening, I wrote a quick little side project called Binder, which takes some binding definitions with default values, loads any stored custom values from file, and sticks all of that into Godot's InputMap action list. It can also generate a UI for displaying those, adding and removing bindings, and saving that all out to a configuration file that's separate from the game's normal config file (so if a busted bindings file is somehow crashing the game in a way that makes that UI inaccessible, deleting that file is a low-impact way of resetting it).
I think that longer term, I'd like to make Binder into something that other people can use, but it needs a bit more polish, and that'll have to come after Hive Time is released. One piece of important Binder polish (and one that Hive Time will need) is a warning for when bindings conflict, so keep that in mind for the next couple of builds!
Another important change is a change to the user data path. This should now be directly in the US user data folder. On Linux, that's ~/.local/share/hivetime, on MacOS, that should be ~/Library/Application Support/hivetime, and on Windows, it should be %APPDATA%/Roaming/hivetime (I haven't yet double checked that on Mac or Windows builds, so apologies if that's incorrect). You should be able to copy your saves and config.cfg across to this new path without any issues. If you get stuck, just give me a nudge and I'll sort you out.
The number one change that is going to let me sleep at night is moving in-game music onto its own bus and controlling the volume of that rather than the volume of the music player directly. This doesn't stop the popping from occurring (best I can tell, that's a Godot bug that's beyond my ability to troubleshoot at the moment), but it does mean that I can have the bus muted at the point that it can potentially occur - it's intermittent, but only happens when a new track is started, and seems to happen within 0.01 seconds of the track starting.
I came across the idea for this solution when I was testing the game with the music muted (it still plays in the background so that if you turn the volume back up, it'll be where it's meant to be without having to track how much time has passed, etc.), and the popping was still occurring, leading me to speculate that if the pop isn't coming from the AudioStreamPlayer node, then it must be happening at the bus level. That's all boring stuff for you, but it's a big weight off my mind.
Last, but not least, I've finally gotten around to tweaking the Beesitter decline notification threshold so that it'll only trigger if the population has gone down over three 30 second samples in a row. This sits on top of the other metrics I was using to calculate the projected number of deaths/Beesitter births, so I still need to do a touch more tuning before I'm happy with it, but this should decrease the noise levels a bit in the meantime.
Enjoy!
Full changelog: