|Update: More bug fixes|
October 13, 2018
First things first. The Steam page for One Hour One Life is live here:
Steam integration has been going well, including support for automating the weekly update process. Next week, I'll be working on Steam account integration. Hopefully, those of you who already bought the game will be able to unlock it on Steam soon and help with Steam testing.
Beyond that, this has been another week of pretty deep bug fixes. It's astounding to me how long some of these took to track down. The infamous "bouncing forever" bug has had many causes. Two more big ones have just been found and fixed thanks to your reports. The fixes involved some general robustness changes to the protocol that will improve and normalize the behavior of the game in all kinds of situations. Using a randomized network latency simulator, I found that the game was degenerating pretty horribly when messages arrive with inconsistent delays and bursts.
For example, some messages sent by the server are meant to go together. When you pick up a stone the game, the server sends two messages: one about your changed state (a PLAYER_UPDATE message, you now have a stone in your hand), and one about the map's changed state (a MAP_CHANGE message, there's now an empty tile where the stone used to be). The server sends these to you at the same time, and under normal networking conditions, those messages will arrive at the client at the same time, and end up changing the display (of you and of the map) during the same rendering frame. However, with a flaky network, these messages can arrive with a big time gap between them. This would mean that you would get updated to show you holding the stone, while the map would still show the stone on the ground, giving the false appearance of temporarily duplicating stones. Things get even worse when the messages are about parents and their held babies.
This has been corrected with a new message FRAME protocol. Messages that happen during the same server step are grouped into a frame, and the client waits until all messages in that frame have arrived before processing any of them. Thus, the updates to you and the map, when you pick up the stone, are always shown at the same time on the client, because the server sends them in the same frame.
There were also some lingering inconsistencies with actions that held babies attempt to take right before being picked up, depending on the order in which messages arrive at the server. This has been fixed by the server ignoring further messages from held babies after it has decided that they are indeed held---until they send a JUMP message to leave their parent's arms. Before, even something as simple as a baby removing a hat right as they were picked up would cause a weird behavior---a seemignly disappearing hat. Now the server enforces a strict ordering of events for held babies, and the behavior is much more consistent.
Most of these issues have resulted in occasional glitchy behavior that has been with us since the beginning. Good to finally have these things fixed now.
There were also a bunch of other little content and bug fixes. Fence gates are a thing now, for example, and other non-gate fences cannot be easily opened with a bare hand. Teleporters have been fixed.
Many of these fixes were the direct result of people logging issues on GitHub, which is the main way that I keep track of things that need to be fixed. You can log content bugs here:
If you think you've found a programming bug, you can log that here:
Special thanks to Stylingirl and IEatDaSpaghetti for all their helpful bug reports this week.