a multiplayer game of parenting and civilization building
You are not logged in.
A ran a few tests days ago and got some numbers.
Here are the results and why they matter.
What I did was first, started as an Eve and found the most balanced temperature tile I could find, then I got some times with a stop watch between the loss of a few food meter pips: 21.3, 21.5, 21.7 seconds. Average, 21.5 seconds per food meter pip.
Then, I ran to the middle of a tundra biome, where the temperature was coldest I could manage and got some times: 2.4, 2.9, 2.4, 2.4, 2.7, 2.3; average, 2.5 seconds per loss of a food meter pip.
This on it's own should be valuable enough when you consider how much of each of your lives is spent running around for food, working to get farms going and maintaining those farms. Every settlement generally ends in either the losing of the fight to keep food around, or the chain of murders that often occurs when people get frustrated that someone is eating more than they worked for, or, eating the last of the food. The rest of the reasons I'll leave you all to argue over in your posts.
So, a vast amount of our time is spent producing the food we are constantly consuming. But just little food could we consume if we maintained a balance temperature and how much do we burn through when those temperatures are most extreme?
I decided to use the carrot as the unit of measure because of the time it represents and, is the most commonly produced and consumed food throughout the life of a settlement.
One carrot fills 7 food meter pips. The numbers, 24 vs 180, assume ideal scenarios, where you do not waste food by overeating, it also does not take into account the first few years you are breastfeeding, but treats them as though you are consuming carrots worth of food.
In one hour there are 3600 seconds.
For extreme temperatures:
3600 seconds / 2.5 seconds per pip = 1440 pips, gained and lost through your life.
Originally (with the numbers used in the picture) I rounded some numbers and did the math differently, but now I see it may just be worse than illustrated.
1440 / 7 = 205.7
That is 205.7 carrots consumed in one hour.
Instead of trying to explain how I got 180 carrots per hour, let's use the same method to determine how many per hour with balanced temp.
3600 / 21.5 = 167.4 pips, gained and lost through your life.
167.4 / 7 = 23.9 carrots per life spent at balanced temp.
So here I've been telling people about how a balanced temp is (180/24) 7.5x more efficient than an extreme one, when it's more like (205.7/23.9) 8.6x more efficient.
However, we don't often live at either of these extremes, although, we can be warm more often than not by building and spending our time on or near the edge of the desert. What is more likely is that we live, and spend most of our time, deep inside a biome, as the shape of our civilizations and the farms they include, are not likely to take on the same shape as the edge of a desert biome. Instead, people often decide to build farms, forges and everything else, where grassland meets swamp, and as the two share the same base temperature, along with all other biomes except desert and tundra, they can be treated as one temperature zone.
I'm sure many of you have noticed, in passing, that praire, grassland and swamps are colder, than the desert is hot. It's not as big a deal as the variation between the extremes and having a perfectly balanced temp, but it is significant when you look at the numbers and consider just how hard it is for people to not live long enough, as a family, to see their settlement grow and survive multiple generations, but to maintain that settlement for every generation that comes along after the Eve and her children are gone.
For these numbers I have to make assumptions based on the position of the temp meter's arrow, as well as the shape of the slope I assume can be drawn between my two measurement; I assume it's linear. In the picture I give the numbers 5.0 and 9.0 for the seconds per pip in the desert and non-desert, non-tundra, biomes. 9.0 seconds per pip, lost in desert, 5.0 seconds per pip, lost in the others. But, with the new slope based on the 205.7 carrots consumed at extreme temperatures, the number consumed in the colder biomes (beside tundra) is probably more like 10.0.
So people working in grasslands, swamps and prairies; on farms, at forges, and doing anything else, are burning through calories twice as fast, as those doing the same jobs deep in deserts. Factor in clothing and it's not so bad, better in the cold and worse in the desert, but we come into this world naked; Eves and her children, have to build their settlements from scratch, without clothing. Doubling the food consumed by people building the settlement and working on the early stages of a carrot farm; on mothers juggling children, is a heavy burden on the rapidly dwindling food supply of the area, and more stress we are placing on the farmers to maintain the carrot supply.
What does this mean for game play?
As an Eve, you are free to build your settlement wherever you like, but if you want others to enjoy it with you, you may want to consider taking a little extra time to find a decent patch of desert near water and the other resources, and settling on it, instead of that nice open area at the center of the grassland or on the edge of grassland and swamp, if you want you do not want to put any more pressure than they already have to go through. Do we like working hard and the satisfaction it brings? Yeah, to an extent. Do we like coming back tot he game a day later to find people still choosing to inhabit our settlements? Most would say yes, for sure. So why not increase those odds as best we can?
Do I want you to quit on Eve's that settle anywhere else? No. I'd rather none of you ever suicided on your mothers, and none of you mothers ever had to abandon your children, for any reason. So, at the rate that things are going, if you spend an extra five minutes as an Eve looking for a desert to settle on, with a surrounding area that still meets the requirements to get a settlement started, you may wind up with two to three kids before you even settle down. So, if you can't find desert to settle on, or your Eve mother isn't on one, don't give up. We've been building without desert, and succeeded in getting multi-generational towns going for a long time, and there will be plenty more. However, if the opportunity to settle, on desert, presents itself to you, I would encourage you take that opportunity.
There is a lot more to take away from these numbers, Temp vs Food Consumption, a lot of other things we need to consider and make each other aware of. But rather than just say "balance temp" a hundred times a day, I figure it'd be more productive to provide you folks with some actual numbers.
If you are so inclined, feel free to run similar experiments yourself and share your results. If you're familiar with C++ and can make sense of the server.cpp file or any other files that may be relevant, share what you can from them. I only took my numbers from my own experience in game, although I did notice some things in the server.cpp that may be relevant, like
static double minFoodDecrementSeconds = 5.0;
static double maxFoodDecrementSeconds = 20;
but how those and all the other variables and functions intertwine to produce the actual results we get when we play, I'm not certain. Like I said, I just used a stop watch, got several results, and did a little math. Something, anyone, can do.
Offline
This is the relevant function:
double computeFoodDecrementTimeSeconds( LiveObject *inPlayer ) {
double value = maxFoodDecrementSeconds * 2 * inPlayer->heat;
if( value > maxFoodDecrementSeconds ) {
// also reduce if too hot (above 0.5 heat)
double extra = value - maxFoodDecrementSeconds;
value = maxFoodDecrementSeconds - extra;
}
// all player temp effects push us up above min
value += minFoodDecrementSeconds;
return value;
}
Assuming inPlayer->heat is a value between 0.0 and 1.0 this function produces a number that starts at minFoodDecrementSeconds, increases to minFoodDecrementSeconds+maxFoodDecrementSeconds, then decreases back to minFoodDecrementSeconds. Very odd naming of those constants really. This would suggest 5-25s should be the actual range. I wonder where the differences arise.
Offline
Thankyou for the info!
Be kind, generous, and work together my potatoes.
Offline
Good job on this analysis!
I tried making sense of the way insulation works, and how it affects your hunger, and it's run through a few functions making it pretty obfuscated.
Chard is right, it should be between 5 and 25 seconds, and it is linearly dependent on heat. The heat however is dependent on the tile you are standing on, the adjacent 8 tiles, every tiles' insulation (called R value in the code), any heat producing items, and your own clothing.
I might try to put otgether a graph of how clothing affects you for instance in a green biome, with and without fire if it wasn't done yet anyway.
Offline
The heat however is dependent on the tile you are standing on, the adjacent 8 tiles, every tiles' insulation (called R value in the code), any heat producing items, and your own clothing.
I was trying to make sense of the tile value thing and found several numbers in the server server.cpp at https://github.com/jasonrohrer/OneLife/ … server.cpp and made this image to illustrate some points to someone.
I really don't know anything about C++, but I like to think I can figure things out just by comparing what I see in game, to what I imagine the code says based on what I see.
Offline
I was trying to make sense of the tile value thing and found several numbers in the server server.cpp at https://github.com/jasonrohrer/OneLife/ … server.cpp and made this image to illustrate some points to someone.
The way I understand it, the middle is weighed the same as all other tiles combined. It calculates the heat via a quantized heat transfer equation. Basically it counts how much heat goes where by calculating the differences in heat between a tile and it's neighbouring tiles. I find the code really hard to read since I'm not used to storing 2d arrays as parts of a 1d array... It obviously works, I just can't wrap my mind around it completely.
I've scoured the database for a bit and from what I can tell the player produces 1 heat, a desert tile produces 2 heat, and a polar tile produces -0.15 heat. There's no info about the other tiles, so I'm guessing they default to 0?
Offline
The way I understand it, the middle is weighed the same as all other tiles combined. It calculates the heat via a quantized heat transfer equation.
I've scoured the database for a bit and from what I can tell the player produces 1 heat, a desert tile produces 2 heat, and a polar tile produces -0.15 heat. There's no info about the other tiles, so I'm guessing they default to 0?
Could you share the location(s) you found this information?
At the moment I'm looking at the objectBank.cpp https://github.com/jasonrohrer/OneLife/ … ctBank.cpp and Ctrl+F'ing for biome and heat and trying to make sense of what I'm seeing here.
I don't have any experience with ANY d arrays, so, it's all wizardspeak to me. I just accept it for what it is and what little I can glean from it piece-by-piece.
I'm also new to Github and wondering if there is a way I could, say, search all of Jasons folders (or maybe just specifically the OneLife ones) for strings of characters like biome, heat, temp, etc. ?
Offline
Could you share the location(s) you found this information?
At the moment I'm looking at the objectBank.cpp https://github.com/jasonrohrer/OneLife/ … ctBank.cpp and Ctrl+F'ing for biome and heat and trying to make sense of what I'm seeing here.
I don't have any experience with ANY d arrays, so, it's all wizardspeak to me. I just accept it for what it is and what little I can glean from it piece-by-piece.
I'm also new to Github and wondering if there is a way I could, say, search all of Jasons folders (or maybe just specifically the OneLife ones) for strings of characters like biome, heat, temp, etc. ?
Sure! https://github.com/jasonrohrer/OneLifeD … er/objects there are two .txt files called GroundHeat_4.txt and GroundHeat_5.txt. They only contain one value each, and the way the getBiomeHeatValue function works it just looks up these two values.
About the body heat; it's this line with comments:
// body itself produces 1 unit of heat
// (r value of clothing can hold this in
heatOutputGrid[ playerMapIndex ] += 1;
I'm pretty new to github too, so I can't give you any pro tips. You can search filenames with github's search function. I use chrome's built in search (ctrl + F) to find specific terms once I've opened up a file.
Last edited by Izzytok (2018-05-09 22:51:27)
Offline
Here's a quickly whipped up visual aid for the arrays I was talking about. Yes, it's made in paint.
The blue square represents a (sort of) equal amount of data points. f(x,y) is just some function of both coordinates, it just determines where in your 1D array (line?) the point will be stored. In Jason's code you make short moves around the array with the x variable (akin to moving inside a line in 2D array), and you make large jumps (akin to switching line in the 2D array) with the y variable.
Last edited by Izzytok (2018-05-09 22:44:44)
Offline
Ctrl g while searching will get you to the next result.
https://github.com/jasonrohrer/OneLife
Is the game data, you can look at it all through the website like normal files search the whole shebang.
If you want to edit the files you gotta make a free account and "fork" the stuff over. I think it just copies it from jason's but I am github newbie.
"be prepared and one person cant kill all city, if he can, then you deserve it" -pein
https://kazetsukai.github.io/onetech/#
https://onehouronelife.com/forums/viewtopic.php?id=1438
Offline
in human language and game experience: best ever patch is a 2x2 biome surrounded by desert, in this case the normal biome tiles are the good ones
the second best is horizontal desert edge of two tiles hanging into other biome or reverse, 3 is too much 1 is not enough
staircase style desert edge, every diagonal desert tile will be good. i guess checkboard would work as well
i usually keep my forges on it, i would prefer one space between them but this way is way more effective to forge tools, so you find the right tile and place forge above it
if its slightly hotter, like 60-75% its still better than forest/savannah which is only like 20%, so anything under 80% heat desert, which is like 2 out of 9 neighbour tiles are desert.
anyway if you can dig a few pits above it as a wall, or wall it off, defends vs sneks and you should spread out your farm horizontally as much as possible. technically nothing wrong with vertical, but the screen size and monitors, so people tend to extend it horizontally more
with clothes you are slightly below balanced on normal tiles, seal and wolf hat gives a bit extra, bear rug makes it perfect, kinda
i hate when people put bear rug on perfect spot, or fire on desert, fire needs to be 2 tile away every direction from a desert tile, rug can make a colder tile perfect
the numbers are interesting, even if not fully punctual
200 carrots are 1400 calories, which are 40 tiles of carrot, which needs 6 seed tiles aka soil
so with one pond you can have 4 tiles watered at first then each 5 minutes 1 more, equals 16 in case your parents watered it and you water for the kids
so with carrots each person needs 2.5 pond/life in a cold biome with no clothes if you only eat carrots
you cannot be on balanced tile all your life, but in a desert, you can keep kinda average under 100?
which is half of above numbers, most importantly water usage
may seem a lot, but you eat berries and other food too so seems correct
the pies got 16 calories*4 so its 64, on the bare minimum 168 calories consumed per life so thi is kinda big difference
https://onehouronelife.com/forums/viewtopic.php?id=7986 livestock pens 4.0
https://onehouronelife.com/forums/viewtopic.php?id=4411 maxi guide
Playing OHOL optimally is like cosplaying a cactus: stand still and don't waste the water.
Offline
Desert is good, but it DOES seem like a weird ingame bug that there are areas that are just as good as perfect fire..
I don't think the desert will be a permanent thing.
"be prepared and one person cant kill all city, if he can, then you deserve it" -pein
https://kazetsukai.github.io/onetech/#
https://onehouronelife.com/forums/viewtopic.php?id=1438
Offline
Desert is good, but it DOES seem like a weird ingame bug that there are areas that are just as good as perfect fire..
I don't think the desert will be a permanent thing.
It seems fine to me. There is no tropical islands or anything, so having a few desert tiles that are at a good temperature range seems fine. There should be some places that are at good temperatures. Maybe in the future an entire biome will be added for that, but for now this seems okay.
Offline
Alright, I set up a simple python script that imitates the way heat is calculated inside the game (didn't bother with insulation yet).
One thing I noticed, was that heat is calculated in a square around the player, but the player is not in the middle of this square. The heat is calculated inside an 8x8 square, taking into account heat sources from a 10x10 square. The player is set at (5,5), which is slightly off from center (you can't put the player inside the center of a square whose sides are even numbers). What this means is it will take into account a heat source that is diagonally up and left from you 5 squares away, in all other directions only 4 squares diagonally.
That being said, I simulated a naked player standing at the edge of a sawtooth dessert, a player standing one square away from the edge of a sawtooth desert, and a player in the middle of a 3x3 desert square. The player standing inside the sawtooth got a heat of 0.86 (0.5 is ideal), the player standing outside the sawtooth got 0.57, and the player in the 3x3 square got 0.67.
Those values corespond to food decrease times of 10.6s for inside sawtooth, 22.2s outside sawtooth, and 18.2s inside 3x3 square.
Standing on one of the edges of the square gives a heat value of 0.59 (21.6s), and on the corner a you get a heat of 0.52 (24.2s).
Anyways I ran out of time to compare this to what it's actually like in game, so if anyone has the time to do some comparisons, that would be really nice.
One more thing about the sawtooth desert in my simulation is that it's thick enough to fill the entire upper right of the 10x10 square. If the desert ends sooner you might get slightly less heat overall.
Last edited by Izzytok (2018-05-10 20:37:50)
Offline
So you use less food when you're at the optimal temperature. No offense, but don't most people know this? I mean, I get raising awareness of how broken desert borders are and that they should be used whenever possible, but why all the math and numbers? Seems a bit excessive, but it is kind of nifty.
Believe you're right, but don't believe you can't be wrong.
-----------------------------------------------------------------
Days peppers/onions/tomatoes left unfixed: 120
Do your part and remind Jason to fix these damn vegetables.
Offline
So you use less food when you're at the optimal temperature. No offense, but don't most people know this? I mean, I get raising awareness of how broken desert borders are and that they should be used whenever possible, but why all the math and numbers? Seems a bit excessive, but it is kind of nifty.
Well I guess being nifty is all it takes to pique my interest . You're right though, as far as gameplay is concerned, just watch the temperature bar, and find a spot that brings you close to the middle. Stop there anytime you can.
One thing that kinda bothers me is that it is very hard to artificially make a permanent great spot. You can always make a slow fire and it's good for a while (If you're not wearing too much clothes), but I don't think if you go bearskin rug + full clothing you get to the middle in a green biome...
Offline
So you use less food when you're at the optimal temperature. No offense, but don't most people know this? I mean, I get raising awareness of how broken desert borders are and that they should be used whenever possible, but why all the math and numbers? Seems a bit excessive, but it is kind of nifty.
How many lives have you lived?
How much time have you spent of each of those lives farming?
And conversely, how much time doing everything else?
You want to talk to other players? To afford the time to chit chat or to teach? To complement someone on the work they've done, making tools or setting up a sheep farm, which is all functionally temp and food meter control? If you want to do anything else in this game, you, and your entire family, can afford more time by instinctively balancing your temps to reduce the rate that your food meters drop. And it's not an insignificant thing either, you free up twice the time alone, to say hello, good bye, nice hat, cute eyes; just by being naked in the desert versus naked in a grassland. Build on the edge and it gets so much better.
I have never seen anyone start their home on a full blown Tundra, so I can't say it's 8.6 times less time we have to spend producing food so that we can have 8.6 times more time to chit chat or play the rest of the game, but even if you can make that difference five times by having the family meeting spot be near a broken up desert edge where temp is balanced rather than dead center in a grassland, that can cut the ten to twenty minutes everyone is going to have to spend working on food production down to just 2-4 minutes, and give you an extra 8 to 16 minutes of time in a max, 60 minute game, to do the others things you want to do and not make things worse for the rest of your family by tipping the scales towards famine, by doing so.
If it became a habit for the good players, it would become a habit for the streamers, the video makers, and the new players who want to give the game a try, and are not berated into giving up on it because there is not enough food to support them in community after community, or are insulted for not knowing things, everyone takes for granted.
When the habit becomes to stand around in the cold, burning food two to five times faster than standing where you get a good temperature, than the people pick up those habits, and they make things worse.
People see the food meter drop and the temp meter, but there is so much more to the game that they just don't instinctively realize just how relevant that temp meter is to the rate that their food meter drops.
And how many times have you died due to starvation?
Any point I can stress that decreases the amount of children who are abandoned, and the amount of players who feel the need to abandon their moms because they suspect she is not going to maintain the food supply for them to have a future, is a point worth making, is a point worth stressing for the sake of every player, old and new.
The numbers make it clear.
Offline
Pretty sure they were just pointing out that everyone knows the basic concept of temperature management. They weren't saying it's bad or useless.
ign: summerstorm, they/them
Offline
Morti is the hero we need, albeit don't deserve - even if he is an anti-abortion activist. Well done on such a poignant, detailed, and important guide.
"Words build bridges into unexplored regions"
Offline
I'm taking a deeper look at the temperature calculation (heat map) and it looks to me as if it's broken. Not completely broken, but enough to mess up what I believe is the intended effect with body temperature and the temperature of one's surroundings.
What we know is:
1. You will consume more food if you are too cold or too hot.
(good design, that means we can use technology to reduce our food consumption)
What we don't know is:
2. Exactly how should you play in order to keep a good body temp?
(unless you are next to staircase desert biome, which is a pretty daft requirement for survival)
I can cover myself completely in rabbit fur, but only see a marginal difference to my temperature. This makes no sense if the intention is to incentivize use of clothes.
Looking at the code I see that it's using a heat conduction model, which is really not the best model for a human in the wilderness, and my guess is that this is the source of the unintuitive behavior. I will actually spend some time to develop an alternative implementation, then reach out to Jason and see if he would like to use that one instead.
Offline
Btw, I put in a new suggestion on the Reddit forum, about adding "Freeze to Death" and "Thirst" as new death reasons which point at the need to control body temp. Vote for it if you would like to see it happen.
https://www.reddit.com/r/OneLifeSuggest … ive_death/
Offline
I'm taking a deeper look at the temperature calculation (heat map) and it looks to me as if it's broken. Not completely broken, but enough to mess up what I believe is the intended effect with body temperature and the temperature of one's surroundings.
What we know is:
1. You will consume more food if you are too cold or too hot.
(good design, that means we can use technology to reduce our food consumption)What we don't know is:
2. Exactly how should you play in order to keep a good body temp?
(unless you are next to staircase desert biome, which is a pretty daft requirement for survival)I can cover myself completely in rabbit fur, but only see a marginal difference to my temperature. This makes no sense if the intention is to incentivize use of clothes.
Looking at the code I see that it's using a heat conduction model, which is really not the best model for a human in the wilderness, and my guess is that this is the source of the unintuitive behavior. I will actually spend some time to develop an alternative implementation, then reach out to Jason and see if he would like to use that one instead.
Gotta agree with you here. I just added insulation to my little OHOL heat simulator, and even with max insulation (which I think is currently impossible to get) you have 0.4 heat (0.5 is ideal), if you're not on a desert tile, or a polar tile. This is really weird to me, since you'd think if you were completely decked out with clothes, you'd be hot in a temperate climate...
It's interesting to note, that if you get to 1 insulation (max) the heat transfer equation basically ignores your tile, and only the heat produced on your tile influences your heat. So if you're fully insulated and you stand one tile away from fire or a desert tile, you have 0.4 heat. If you then move on to the desert or onto the tile with the fire, you suddenly have 1 heat (max), and it's worse than being naked in temperate zone. If you go to a polar zone you still only have 0.34 heat. So without a heatsource, even if you are completely clothed you'll be somewhat cold in the temperate zones, and pretty cold in polar zone.
Oh, and 0.4 heat corresponds to 21 seconds per lost bar of food, and 0.34 is 18.6 seconds per lost bar of food. Obviously better than being naked, but you can't ever stop on a tile which radiates heat, or you're worse off than without clothes.
This is all based on the premise that my little simulator works as inteded...
Last edited by Izzytok (2018-05-17 16:59:40)
Offline
In the code, the default for minFoodDecrementSeconds is 5.0
But in the server settings folder, that is currently overridden to 2.0 seconds. Thus, the range should be 2.0 to 22.0 seconds.
I'm not sure where the 0.5 is being lost in practice to make the range 2.5 to 21.5. Probably human error with the stop watch, along with network lag.
With max food capacity of 20, that currently gives you 7.3 minutes between meals if you are at ideal temperature. Naked in most biomes, it's 1.6 minutes between meals.
I wanted this difference to be pretty dramatic. Otherwise, why wear clothes?
Offline
I agree it’s a good for the game to have clothes and heat sources matter quite a bit, so no argument there. But unless a full set of fur clothes will put your temperature in a good spot, the clothes won’t be that important after all, correct?
Anyway, I have some ideas to suggest here, but I want to put them into code first, so I can see that they will actually work. I will devote a day or two to this and see what I can achieve. Maybe it will be something you’ll be interested in using (and maybe it won’t).
Offline
A full set of fur clothes does not get you to perfect if you are outside. But it helps a lot.
Offline