a multiplayer game of parenting and civilization building
You are not logged in.
Yeah, as you have figured out, this is intentional.
I used to have the chime come in during old age, but it happens so frequently, because you're constantly hungry, that it ruins the end-of-life song.
Had to look in the change log to remind myself of why:
------
Fixed so that music doesn't drop out for sake of hunger sounds at very end
of old age life. There are no audible hunger sounds to interrupt the music
at that point.
Okay, this has been improved in the code.
Servers now tell clients when a grave moves.
Clients now update the location of a known grave if they receive one of these grave-move messages from the server.
The bone pile now counts as a grave object.
Thus, moving a bone pile of a labeled grave causes the label to go with it.
This does not change the permanence of grave labels (they still don't last beyond a lifetime, etc.)
More ways to decorate graves, etc, are coming in the future.
So.... I still haven't gotten any usable reports here.
The servers have been tracking this, and there are a LOT of bug reports getting logged server-side.
This happens when the client bounces for 10 seconds and gives up---it sends a BUG message to the server, and the server records a report about the bug to disk.
The problem is that these reports are large (a copy of the recent server log). Funny, but server1 has been running out of disk space over a few days and eventually crashing because of this.
BUT still, no one sends me any client-side reports. Well, actually, I got one report from a fellow from China, but it turned out to be just pure lag....
Maybe I need to mod the client to say, "You just bounced for 10 seconds, please quit and send your stdout.txt to me please!"
No objects are named or store/contain names.
The client gets names for all living people and remembers them. The client also gets lineage info for all living people and computes a relationship name for each person.
When someone dies and a grave is created, the server just sends a very simple "PlayerID grave at x,y" message.
The server doesn't remember that there's a grave there or know who died there or what their name was or what their relationship was.
The client does the rest. It checks if PlayerID is known, and what their name was, and what their relationship was, and then remembers that grave spot tagged with that info, client-side.
As you can see, none of this stuff works beyond the lifetime of the client. So there is simply no info available about graves from the past. Their names are not known.
Moving a grave during a lifetime is possible server-side, and maybe I will implement that.
You will notice that the above implementation of names and relationships is very lightweight, simple, and shallow. It is meant to "get the job done" for living people that you mouse over, and it works perfectly for this.
It also has the nice property of being BOUNDED. The list of names the client needs to learn cannot grow arbitrarily long, nor can the lineage info. We will never get to the point where the server is sending the client 10+ MB of name and relationship info. There is technically no limit to how long a family line can be, if we're including information about people long-dead.
Yes, I could implement deeper tracking with some kind of stale timeout to remove old data, etc. But I don't think this is needed.
Thanks for this report!
Sadly, these rare, one-time server occurrences are really hard to find and fix.
Wells are potentially infinite, but I see a lot of dry ones around. In practice, someone messes it up.
Yeah, the problem with moving graves is that the info about who died there needs to travel with the bones as you carry them.
Currently, this information is not being stored in the map at all.
It's just something that is sent to the client one time when someone dies, and more importantly, sent to the client WHILE the person in question is still alive (they're in the process of dying, and their final death message hasn't been received by the client yet). So the client knows the person's name and relationship info. Neither the server nor client is tracking this after someone dies.
That's why only graves for deaths that occurred in your lifetime are labeled. Otherwise, the information about the person's name and relationship are not known by either client or server. And thus, a long-term curated graveyard doesn't make sense, because future generations won't be able to see those labels. (Though a graveyard still makes sense, and signs still make sense.)
Because you only see relationship labels for people living during your lifetime, I don't need to worry about too many GREAT GREAT GREATs being displayed on the status bar. The relationship name for any living person always fits there, so I can be sloppy about that.
Changing this behavior would require a substantial overhaul of a bunch of stuff, long-terms storage and transmission of dead people's info, etc. I mean, if hundreds of people lived/died in the village today, how would that info be transmitted to a newly-born client?
The grave labels were a solution to a more immediate problem: missing a friend, wondering where they are, and then finding bones and being unsure....
"I Pencil" was a major inspiration for this game.
See this video which is on the home page for OHOL:
https://www.youtube.com/watch?v=R5Gppi-O3a8
And yes, intertwining complexity at the higher levels is the idea.
I will look into it.
I know that the "Hungry" warning chime stops playing, because you're pretty much always hungry when old, but I thought that the "Starving" chime still played when old. If not, it's a bug.
Yeah, I probably need to do all of this stuff!
This part of the game design is very hard. I definitely didn't have it right at launch, and I still don't have it right as of now. It's way closer, though.
Actually, on the day of launch, ponds did NOT regenerate, at all, but there were no wells. When everyone started starving, I scrambled to make them regenerate.
Soil is not currently infinite because of iron, stones, and saplings eventually running out, and you need those to till soil after growing carrots, and you need carrots for compost to get more soil. In practice, though, iron never runs out before a town dies due to folly (or boredom, in the case of the Boots family).
This other problem I'm facing is that making these kinds of changes, which are necessary in the long run, makes players very angry in the short term.
It's hard to implement a "boiling a frog" approach with some of this stuff. Though most of it is trans-generational (ponds take a long time to refill, milkweed takes an epoch to regrow, etc.), so most players wouldn't notice.
I agree that a lot of the gameplay focuses on "not doing something," which is not very interesting. I never thought of it that way, but "don't pick the non-fruiting milkweed, don't drain the pond, don't drain the well, don't snare the non-family rabbit, don't forget to water the languishing bush" do kind of create a walking on eggshells feeling. I've drained a pond by accident, picked milkweed at the wrong time, etc, and I always feel like an idiot when I do this. I want players to teach each other things, but mostly that teaching should be how TO do something, not a long list of what not to do.
My friend says that only the top level tech should be infinite at any stage. So, for example, ponds are infinite at first, but then once I introduce wells, ponds become finite, and wells become infinite. Then I introduce infinite hand pump wells, and the old wells become finite. Then I introduce combustion engine pumps, and the hand pump wells become finite.
BUT... I feel like any kind of achievable steady state is boring. Once you get there, there are no more decisions to make.
I really want every civ to crash, in the end. Not as a certainty, but as a looming and growing pressure across generations.
Well, this is meant to encourage people to go to the Elephant Graveyard to die.
Though I guess this concept is a myth:
https://en.wikipedia.org/wiki/Elephants%27_graveyard
But Elephants still do other interesting things connected with death:
Weird!
It should be triggered by the ENTER key...
Or by the UP/DOWN arrow (the keys you can use to page through chat history to repeat the same message without retyping).
No chance the hands are brushing these keys?
Can someone send me a short recordedGame file showing this?
I spent quite a bit of time this week improving the family tree browser. Cause of death, including animals and murder, is now in place, along with a display of the oldest-known ancestor at the top of every family tree page, and a display of the deepest-generation descendants at the bottom of every family tree page. Thus, you can bookmark your character's page and return to it later to see how far your descendants have gotten.
In-game, the biggest change this week is that graves of known people now display their name and relationship when you mouse over the grave. This only works for undisturbed graves, and only for people who were alive during your lifetime. Bone piles don't count after they are moved, so leave Grandma's bones alone, please.
Another fix: Ancient stone floors now hug walls properly.
But the other big thing going on this week is a bug hunt, as described in detail here:
http://onehouronelife.com/forums/viewtopic.php?id=1648
You may not realize it, but every game of OHOL that you play is being quietly recorded in a compact, text-only format in your recordedGames folder. Copy one of these files into your playbackGame folder and launch the game. Like magic, you can watch a ghost version of you play the game exactly as you played it before, with all server events fully simulated. This is not a video, but instead a frame-by-frame simulation of all events that occurred, such as keyboard and mouse input.
Turns out that this bug hunt unearthed a bug in recorded times values in these game recordings, which has now been fixed. Should you encounter this "bouncing for 10 seconds" bug, your recording will hopefully capture in perfectly now.
A lot of coding this week. I'm aiming to get a larger content update out next week.
Yeah...
There are at least some reports of players being about to send speech messages and carry on conversations with other players while in this stuck-bouncing state.
This bug used to kill you, because you'd be frozen forever bouncing. The client currently gives up after 10 seconds as a work-around.
Someone was able to trigger this issue by inserting an huge artificial network delay.
But a huge packet delay is a kind of network outage.
And these lags may indeed be caused by network outages. If they are, there's nothing I can do to fix them. The client cannot go on until it hears from the server.
However, I'm worried that there's some other kind of bug that causes this to happen even when the connection is solid.
Essentially, what is happening is this:
Client sends a message to the server, like USE 10 33, which says it wants to use the object at location 10,33. The client "bounces" there waiting for a response from the server, which will be a PLAYER UPDATE (PU) message of some kind, telling the client about the results of the USE action.
But if no PU message arrives in 10 seconds, the client stops bouncing and gives control back to the player. The server didn't get the USE message for some reason, or the client didn't get the response PU message.
In a network outage, the PU message may simply be delayed longer than 10 seconds. It will arrive in order later. In that case, the client actually shouldn't give up, because everything is okay, just delayed, and that PU message may arrive later and confuse the client. In fact, this should probably count as connection lost, though I'd want to wait longer than 10 seconds.
BUT... there may be some other bug causing the PU to never arrive, or maybe causing the USE to not be received by the server. In that case, the client giving up after 10 seconds is the current way that I'm papering over this bug. The network isn't out, but the PU is never going to arrive.
I'm not sure if this second case ever actually happens. But I want to find it and fix it if it does.
There is currently a glitch in the recordedGames mechanism that makes the recordings not play back correctly. So, hold off until the client update (later today) before sending me any recordings.
HOWEVER...
Even for longer lives that see the bug, your "stdout.txt" file (on WIndows) would be super-useful to me.
Please zip it first if it's big, but I'd like to get every stdout.txt for this bug.
The definition of the bug is that you bounce for 10 seconds trying to do something, and then after 10 seconds the action you were trying to do does not occur. Ideally, other people should still be walking around freely while you are bouncing (if the entire game seems stalled, that might be a true network outage where you're not receiving anything from the server for a while).
No, the average lifespan, in minutes, of someone who died under the age of 14.
Here's the infant mortality data:
This graph shows the average life expectancy of everyone who died younger than 14 in the game---all the players who did not make it through childhood.
This is a more interesting dataset than the overall life expectancy, because the presence of Eves in that data, who spawn at age 14 and therefore at least live 14 years, muddies the water. At some point, I will run a more complicated analysis that removes Eves from the data, but that will take a bit of extra scripting on my part.
The above graph is a good indicator of the prevalence of baby abandonment and baby suicide. You can see how dire this situation had become before the lineage ban, and it looks like the lineage ban has had a positive impact.
Loads of stuff is coming that will add variety. Fishing, clothes, etc.
But I do want to get the core of the game right before I do this.
I've been looking at server logs of this bug, and I don't see anything amiss server-side.
I've also never seen this happen on my end when playing the game.
I'm wondering if some people are just experiencing true network outages, where messages from the server pile up for a while and then suddenly go through. This game is built on socket connections, so dropped message are pretty much impossible, because the stream of data is guaranteed to arrive in order or not arrive at all. But the stream can get backed up if the route breaks temporarily.
Anyway, I still haven't received anything from anyone.
I guess this means that it's not that big of a problem? I don't hear many complaints about it.
Can someone send me a short recordedGame file of this (see recordedGames folder).
Quit the game between lives to keep the recordings short, and try to send me a recording where it happens near the beginning of your life.
With the 3-hour lineage ban in place, how many players end up being Eve?
Before the ban, on Saturday, May 5, there were 9852 spawns, and 1148 were Eve, for about 11% Eves.
The average life expectancy was 9.6 years.
After the ban, on Saturday, May 12, there were 8487 spawns, and 1299 were Eve, for about 15% Eves.
The average life expectancy was 12.3 years.
There is a consistent jump before/after the ban from about 9-10 years life expectancy before up to 12-13 years after.
Not sure if this can simply be explained away as the extra Eves padding the expectancy up (since they spawn at 14), or if there was an actual reduction in baby suicide and baby abandonment.
I need to filter it so that I only consider deaths before age 14 to get a better picture of infant mortality.
Has it happened today at all?
There was a bug in the server fixed last night which could potentially cause this.
Well, if it doesn't happen on the official servers, I will not be able to correlate what you send me to the server logs.
However, if it happens on non-official servers, I guess I would like to know about it.
Tiles in the game are 128x128.
I draw/scan at 72dpi.
I made a 128x128 grid at 72dpi and printed it out as a template, so that's about 4.5 cm square on paper.