|Update: Steam integration complete|
October 20, 2018
All the pieces are finally in place to make the game work on Steam. The automated update scripts (both for client binaries and platform-independent content updates) have been augmented to include a Steam build step, which posts the changes to Steam automatically. Steam actually has a pretty powerful command-line interface (steamcmd), which makes scripting possible.
Account creation, server-side, based on Steam ownerership, is also working. And the final pieces are in place to enable all of you, the existing owners of the game, to unlock the game on Steam and automatically access your account details on the Steam side (you won't even need to type in your key again after installing the game through Steam). However, I'm still waiting for Valve to flip the switch on the GrantPackage feature for OHOL. Hopefully, they will do that early next week, and then you can all start testing the game on Steam.
One thing I should warn you all about is that the Steam release will be Windows-only for the time being. The build process is complicated enough, and the Mac platform is finicky enough, that I've decided not to tackle it for now. Come to think of it, the old Mac that I build the game on probably can't even run Steam, so I'd have no way to test it. And sadly, Linux on Steam is even less of a priority. In my experience, Mac and Linux users make up only a tiny sliver of the Steam audience anyway. The Mac and Linux builds will continue being updated off-Steam as usual, however (and anyone who buys the game on Steam will be able to access them). Hey, I'm typing this update message from Linux right now, so I'm a true believer, but I don't even have Steam installed on here.
And the bug reports keep on coming. Thank you everyone for your diligent work reporting all this little stuff to me. When it's all organized on GitHub, I can just go down the list and knock out fix after fix. And this week, there are a ton of fixes. You can now use your baby's head to open doors and launch rail carts. Donkey Town residents see a count of their excess curse score. Some 10-year-old causes of spurious network disconnects have been fixed.
As I type this, there are 15 more new bug reports that just came in. More, please. Content issues go here:
Programming issues go here:
Now that the Steam stuff is mostly dealt with, I will spend the next few weeks returning to content updates, as well as fixing the remaining bugs.
|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.
|Update: Temperature system fixed|
October 5, 2018
This week's update focuses on a bunch of important fixes. First of all, the temperature system, which was always very finicky, has been smoothed out. The "just keep running" exploit to lock your temperature no longer works, and your temperature will no longer jump around suddenly and unexpectedly when you step next to a fire. Instead, your body temperature gradually moves toward the environment temperature over time. Furthermore, temperature updates happen whether or not you are moving (every two seconds). This also means that if the fire goes out next to you, but you don't move, your temperature will eventually go down to reflect the new, cooler environment around you.
The code that determines where you click when you click on yourself has been fixed to prevent mistaken clicks on your clothing that extends behind your face when you click on your face. This was particularly troublesome for children wearing backpacks or aprons. Clicking their face to eat food used to mistakenly put the food into the backpack or apron pocket (because for a child, the backpack strap and apron top are behind their face). Now the head takes precedence, given that it's actually in front of the clothing anyway.
Some of you may be aware of the game recording feature. For bug-catching purposes, every game you play is recorded in a compact, text-only form. These are saved in your recordedGames folder. They contain all mouse, keyboard, and network events, allowing the game you played to be simulated at a later time. Dropping one of these files into your playbackGame folder, and running the game, will allow you to watch a "ghost" version of yourself playing. As you can imagine, this is very useful for reproducing bugs.
However, these recording files can also take up quite a bit if disk space over time. The game now defaults to keeping only the most-recent 20 recordings (though this behavior can be tweaked in the settings folder). Turning recording off completely has always been possible, and it will increase performance a little but, but I encourage people to keep it on for the time being, because you never know when you will get a recording of a rare bug.
That hilarious clothing blushing bug has been fixed, along with a few lurking server bugs.
Next week, I'll be focusing on the Steam integration process. Hopefully, there will be a way to "unlock" the game on Steam for all of you to start testing next week. I have discovered a way to do this without handing out Steam keys, which is even easier for the end-user, and there's always the danger that unwanted Steam keys will get sold on key marketplaces at a discount.
September 28, 2018
This week's update contains a few little fixes, but the main focus of the update is a new emotion system. The available emotions are currently:
More will be added in the future.
I'm also busily preparing to release One Hour One Life on Steam. The game is in a good place, and I think it's ready for a larger audience. Preparing for Steam is quite a bit of work, especially for a multiplayer game, and I expect this process to take a few weeks. In the mean time, I'll still be putting out weekly updates, but they will be on the smaller side.
After the game launches on Steam, all players will continue playing together on the same servers. The game will continue to be sold off-Steam, and your non-Steam game accounts will keep working as usual. Everyone who bought the game off-Steam will get a free Steam key to unlock the game on Steam---but this is optional.
The only down-side to a Steam release is the division of the game's community. There will be Steam forums, and in my experience, Steam users don't like to leave Steam and join external forums. So discussion about the game will be split into two places.
|Update: Tree Farm|
September 21, 2018
People have been asking about this for a while: you can replant trees now. But trees are slow-growing things, so it's really a multi-generational project. And Bonsai---those are really slow growers.
Before this update, each server tracked curse scores separately, meaning that you could grief and get cursed into Donkey Town on one server, but then switch servers and be uncursed again. Now there's a global, centralized curse server that all the game servers share, so each player has one global curse score, regardless of which server they are playing on. If they're in Donkey Town, they're in Donkey Town on all servers.
There are a bunch of other, small content fixes. A bunch of other things, like flat rocks and paper, are now stackable.