a multiplayer game of parenting and civilization building
You are not logged in.
The life limit was put in place long ago to make each life precious and curb rampant suicide.
However, in its current form, it mostly exerts psychological pressure, because people don't like to watch a number going down. But 12 lives with 3+ lives an hour is plenty for most people, and they will never run out. And even frequent suicide won't eat into the pool that much.
I was never 100% satisfied with that as a solution to make people care about life, but it was a stop-gap, and it mostly worked. We no longer have thousands of baby suicides per day, etc.
Genetic fitness was introduced later to make you care about your offspring. In its initial form, it mostly exerted psychological pressure, with a number going up and down. The bonus for a high score (big stomach in old age) wasn't that enticing to people. So a good portion of the player population ignored it. That was okay, because the goal was to have SOME players behave like really caring mothers, and it worked.
Everybody (I'm guessing) cares about tool slots. So everybody suddenly cares about genetic scores. Even the would-be serial-suicide-baby will be put off by FINALLY getting born into the desired situation, but having far fewer tool slots than they used to have.
In this update, I've added messaging to every life, explaining your current score and how many bonus slots you get. So it will be clear to everyone what happens when that number goes up and down.
With all that in place, is it time to retire the life limit?
Maybe there's no harm to keeping it in there as a rear firewall.
I noticed that during the recent baby apocalypse, people were equally miffed about running out of lives and taking a huge hit to their genetic score.
Anyway, I'm hoping that people will eventually care about their offspring enough that it will be the primary motivator for everything they do in the game. It should by WHY they want to keep civilization going, even when oil runs out, etc. It should by why they want to migrate (in a post-rift world), instead of just opting to sigh and die. Because in real life, this is pretty much it in terms of WHY.
I don't know that tool slots are enough.... but it feels like a much stronger motivator than what we had before.
I'm reminded of the movie The Impossible:
Offline
Yes it is. Most people don't care bout the number at all.
The number as stands right now it's pretty useless itself. One bad life and you go from 50 to 30 or even lower. And even if it was perfectly balanced and with no exploits most people would still not care about it at all.
Meanwhile you might want to reduce the jump in score on every life. Maybe even dividing the score increase/decrease by 10 could be better to avoid variance. With scores varying to wildly no one is going to invest into keeping high score. Why bother when you can put back from bottom to top 10 in a couple lives.
Last edited by Thaulos (2019-10-30 16:31:57)
Offline
Certain groups of players do not care at all about having more tools slots (griefers, roleplayers, others) and will be content with only being able to use 2-3 tools (knife, bow +other), these players will keep suiciding either to choose the life they want or simply to annoy other players.
I can already imagine the /die spam and baby bones everywhere.
Offline
Certain groups of players do not care at all about having more tools slots (griefers, roleplayers, others) and will be content with only being able to use 2-3 tools (knife, bow +other), these players will keep suiciding either to choose the life they want or simply to annoy other players.
I can already imagine the /die spam and baby bones everywhere.
As someone who mostly plays this game out of curiosity in the direction it's going and for exploring and nomading, and occasionally stirring up some shit and doesn't really want to do work in a game, can confirm. 2 tool slots is plenty for a little minimum effort help around the village and basic nomading.
I think dangling being an eve for really high performers would be a really strong motivator. Even for people who just like causing trouble the draw of being an eve is strong since it means you have the chance to start a new troublemaking family, and it would probably mean that they'd actually behave more so that they could cause a higher tier of chaos later ?
Offline
The number stopped being an issue the moment you were able to bank in a lot more lives than one per hour.
I'd say yes, let it go.
It's long overdue. there's better pressures at stake nowdays.
Offline
Thaulos, any thoughts on reducing variance with smaller jumps while also not increasing grind on the way up?
The jump from 50 down to 30 in one life can only come from having almost all your offspring die young. How often are people experiencing this? Do we have any screen shots of someone's genetic history screen showing such a huge drop?
Likewise, you could jump UP from 30 to 50 in one life, right? By having lots of children that all live to old age? If you're at 30, a child who lives to 60 is worth 3 points.
But yeah, if you're at 50, a baby that dies young docks you 5 points.
Part of the problem is that once you get a high score, you can pretty much only go down. That's a side-effect of keeping scores bounded. In the above example, you can see that you drop by 5 points per baby on your way down from 50, but you only rise by 3 points per old-age-death on your way back up.
Also, if you're up at 50 and you have every other baby live and die, you will drop back down to 30 over time. In that way, it's kind of a moving average.
If 1/10 of your BB dies at 0 (and the rest live to 60), your actual average is 54.
If you're at 54, and you have 9 BB live to 60, that takes you up to 57.675477066
Then if you have 1 BB die at 0, that will take you down to 51.9079293594
I ran a little sim of this happening 10 times (over 100 BB):
54.600000
55.140000
55.626000
56.063400
56.457060
56.811354
57.130219
57.417197
57.675477
51.907929
52.717136
53.445423
54.100881
54.690792
55.221713
55.699542
56.129588
56.516629
56.864966
51.178469
52.060622
52.854560
53.569104
54.212194
54.790974
55.311877
55.780689
56.202620
56.582358
50.924122
51.831710
52.648539
53.383685
54.045317
54.640785
55.176707
55.659036
56.093132
56.483819
50.835437
51.751893
52.576704
53.319034
53.987130
54.588417
55.129576
55.616618
56.054956
56.449461
50.804515
51.724063
52.551657
53.296491
53.966842
54.570158
55.113142
55.601828
56.041645
56.437481
50.793732
51.714359
52.542923
53.288631
53.959768
54.563791
55.107412
55.596671
56.037004
56.433303
50.789973
51.710976
52.539878
53.285890
53.957301
54.561571
55.105414
55.594873
56.035385
56.431847
50.788662
51.709796
52.538816
53.284935
53.956441
54.560797
55.104717
55.594246
56.034821
56.431339
50.788205
51.709385
52.538446
53.284602
53.956141
54.560527
55.104475
55.594027
56.034624
56.431162
50.788046
So it does look like it goes down and down over time. However, it eventually converges. Running this 10,000 times (for 100,000 BB) we get this as the last cycle:
51.709164
52.538248
53.284423
53.955981
54.560383
55.104344
55.593910
56.034519
56.431067
50.787960
And like magic, if we take the average of these last 10 values, we get 54.0000
So this is working, to effectively make your genetic score converge to the actual average of your recent offspring's lifespans.
Offline
I would guess a quick way of making sure variance isn't too bad but while still providing a quick "startup" would be to somehow factor in the number of lives you previously played.
So maybe first life it would be a big jump, second a big but smaller one, etc. Until you cap variance at the average of your past 10 lives (as an example).
For the score to mean anything it should be hard to drop and to climb. One should only really have high scores if they are consistent across their lives.
On another note, should we really evaluate genetic score based on whether or not your children lives up to 60? When does it stop being an evaluation of your skill as a mother/brother and starts becoming random luck? Maybe you should only be responsible for your children lives up until a certain age, then it's up to them to survive. What if they don't want to waste food and die at 58. Is that worse than eating that food and surviving two more years to 60?
Maybe genetic fitness could last up until your children are 20 years old?
Another thought is that wouldn't having 2 children dying at 40 be better than one children surviving to 60? Currently the score would penalize the 2 children but genes are already propagated by the time they are forty. Some players suicide at 40 to start again another live. Should their mothers be penalized for that?
Last edited by Thaulos (2019-10-30 17:38:31)
Offline
Yes, that's a good point about 40 vs 60. Maybe it should be adjusted to stop counting after 40, and living after 40 should be gravy?
Here's a graph of the fitness scores of the four players who got the four highest recent scores:
Note that these lines do NOT happen concurrently in time. They each represent totally different time spans.
It's hard to stay at the top for very long, and precipitous drops are indeed common for these top players.
That purple line wants to stay at the top SOOOO bad.... but it eventually falls.
Let's look at a recent portion of the purple line:
Tomorrow_Dyke 45.1737 years old Little_Brother 31.4837 + 1.369 32.8527 2019-10-02 08:07:06
Han_Dyke 15.8745 years old Nephew 33.218 - 1.7343 31.4837 2019-10-02 08:04:34
Joon_Dyke 17.7918 years old Nephew 34.932 - 1.714 33.218 2019-10-02 08:04:10
Hosea_Dyke 47.904 years old Little_Sister 33.4907 + 1.4413 34.932 2019-10-02 08:03:07
Stryker_Dyke 23.6717 years old Nephew 34.5817 - 1.091 33.4907 2019-10-02 07:59:02
Nnamdi_Dyke 31.0547 years old Little_Sister 34.9736 - 0.3919 34.5817 2019-10-02 07:56:59
Easton_Dyke 37.4641 years old Little_Brother 34.6969 + 0.2767 34.9736 2019-10-02 07:54:52
Savior_Dyke 36.1902 years old You 34.531 + 0.1659 34.6969 2019-10-02 07:51:00
Nameless 11.0639 years old Little_Brother 37.1385 - 2.6075 34.531 2019-10-02 07:46:09
Ewen_Dyke 2.4694 years old Little_Brother 40.9906 - 3.8521 37.1385 2019-10-02 07:23:38
Carrie_Dyke 13.1915 years old You 44.0794 - 3.0888 40.9906 2019-10-02 07:14:43
Nameless 0.5411 years old You 48.917 - 4.8376 44.0794 2019-10-02 07:00:56
Blessing_Raine 60 years old You 47.6856 + 1.2314 48.917 2019-09-24 06:10:12
Berry_Raine 27.8667 years old Daughter 49.8877 - 2.2021 47.6856 2019-09-24 06:06:16
Ember_Fire 13.6213 years old You 53.9173 - 4.0296 49.8877 2019-09-24 05:10:03
Sapphire_Audette 60 years old Grandson 53.2414 + 0.6759 53.9173 2019-09-23 14:00:08
Diamond_Audette 57.7872 years old Granddaughter 52.7363 + 0.5051 53.2414 2019-09-23 13:52:21
George_Audette 60 years old Son 51.9292 + 0.8071 52.7363 2019-09-23 13:34:04
Mary_Audette 60 years old Daughter 51.0325 + 0.8967 51.9292 2019-09-23 13:30:28
Winner_Audette 60 years old Daughter 50.0361 + 0.9964 51.0325 2019-09-23 13:20:53
This is a little messy in terms of formatting. Sorry about that. But look at Carrie_Dyke. That's the purple line player themselves, and they starved to death at age 13. So.... what are we supposed to do with that? It must cause a substantial drop in score, right?
The other option is to factor in some kind of average, or "guessed" average. Let's say we pick 30. Then lives lived over 30 are positive points, and lives that die under 30 are negative points. But can your score grow infinitely large over time then?
Offline
So it does look like it goes down and down over time. However, it eventually converges. Running this 10,000 times (for 100,000 BB) we get this as the last cycle:
51.709164 52.538248 53.284423 53.955981 54.560383 55.104344 55.593910 56.034519 56.431067 50.787960
And like magic, if we take the average of these last 10 values, we get 54.0000
So this is working, to effectively make your genetic score converge to the actual average of your recent offspring's lifespans.
6 points seems like a huge change for one baby dying from popping out while in the middle of getting griefed or something like that. Maybe it would be worth being really clear about what the goal of the algorithm is?
Do we want it to be possible for someone to remain #1 through being consistently better than everyone else at mothering? Or do we want randomness to give #2-5 brief moments in the sun at the #1 spot? Or does the #1 spot not matter as much as being at least in the top 10? Or does it only matter if they have a score of at least 50? Once the goals are clearly defined then it's not difficult to work backwards to what the math should be.
But yeah looking at things like how chess ratings work and the math behind how they do diminishing return over time might provide some inspiration and give a little more meaning to success rather than knowing it's short lived until you get born to a starving nomad and 4 kids pop out and you heroically manage to keep 3 alive but the 4th one destroys a week of progress and puts you back below a dozen other players who kill babies daily (contrived example, maybe daily/hourly rather than weekly/daily fits the described simulations better)
Offline
Is life limit still necessary? Don't remove it yet, you just released tool system, give it some time.
Not everyone cares yet.
Another, probably rare case would be that someone could make a simple bot that would keep /dying, just to make lots of trash (baby bones). Probably it would be cursed out eventually, but not necessarily.
You probably don't want people run out of lives when next baby apocalypse happens, maybe it would be the best to somehow automatically detect such thing and then when it happens temporarily disabling life limit.
Making own private server (Very easy! You can play on it even if you haven't bought the game)
Zoom mod
Mini guide for beginners
website with all recipies
Offline
jcwilk, the existing algorithm is indeed modeled very closely on Chess Elo rankings.
How much your score jumps after a game of Chess depends on how surprising the result is. If a grandmaster is beaten by the novice, that's a very surprising result, and the novice's score jumps a lot, and the grandmaster's score drops a lot. However, if one grandmaster beats another, that's not a huge surprise, so their scores barely change. The winner goes up a tiny bit, an the loser goes down a tiny bit. Elo has the nice property of converging over time in such a way that it can be used to estimate chances of winning against a given opponent. If we have equal Elo, we are expected to beat each other 50% of the time. A grandmaster (2800) is expected to beat a novice (700) 99.9994% of the time.
How much your score jumps after an offspring dies in OHOL depends on how surprising the result is. Given that your OHOL genetic score is a moving estimate of the average lifespan of your offspring so far, if an offspring exceeds that averge, your score goes up. If an offspring dies much younger than that average, your score goes down.
The top players in OHOL with high scores are like grandmasters in chess. They have nowhere to go but down. If your Elo is 2800, there's no one you can play that will make your ranking go up very much, and a huge number of people you can play (everyone) who will make your ranking go down if you lose to them.
So if your genetic score is 55, that means that on average, you and your offspring have been living 55 years. Living to 60 isn't that surprising, so your score only goes up a little when an offspring lives to 60. But dying at 0 is a HUGE surprise, so your score drops a lot when that happens.
What if they don't want to waste food and die at 58
If you have a high enough genetic score such that dying at 58 will hurt you, then you live to old age with a large stomach, and don't waste any food.... However, it's true that the genetic fitness of your offspring has nothing to do with you, so who knows what their old-age stomachs are....
We could start matching BB with the mother who has the closest genetic score... like attracts like...
Though novice players should probably be raised by experts, so that's probably a bad idea.
Offline
As for genetic fitness I would suggest doing these things:
- Leave it like it is, but make that we get maximum number of additional slots when our genes are above 40.0
- lower the amount of additional skill slots that we can get from genetics to max 2
- add another stat: your average life span past 10 lives
- make it that we get additional skill slot for living 50+ years on average or 2 slots for living 55+ years on average.
This would give us max 4 additional skill slots.
There could be also 5th additional skill slot for actually working in a town, maybe every use of our learned tools would have some value... I don't know, this would be harder to implement and it's not super necessary, but it would be cool.
Last edited by Coconut Fruit (2019-10-30 18:36:46)
Making own private server (Very easy! You can play on it even if you haven't bought the game)
Zoom mod
Mini guide for beginners
website with all recipies
Offline
jcwilk, the existing algorithm is indeed modeled very closely on Chess Elo rankings.
How much your score jumps after a game of Chess depends on how surprising the result is. If a grandmaster is beaten by the novice, that's a very surprising result, and the novice's score jumps a lot, and the grandmaster's score drops a lot. However, if one grandmaster beats another, that's not a huge surprise, so their scores barely change. The winner goes up a tiny bit, an the loser goes down a tiny bit. Elo has the nice property of converging over time in such a way that it can be used to estimate chances of winning against a given opponent. If we have equal Elo, we are expected to beat each other 50% of the time. A grandmaster (2800) is expected to beat a novice (700) 99.9994% of the time.
How much your score jumps after an offspring dies in OHOL depends on how surprising the result is. Given that your OHOL genetic score is a moving estimate of the average lifespan of your offspring so far, if an offspring exceeds that averge, your score goes up. If an offspring dies much younger than that average, your score goes down.
The top players in OHOL with high scores are like grandmasters in chess. They have nowhere to go but down. If your Elo is 2800, there's no one you can play that will make your ranking go up very much, and a huge number of people you can play (everyone) who will make your ranking go down if you lose to them.
So if your genetic score is 55, that means that on average, you and your offspring have been living 55 years. Living to 60 isn't that surprising, so your score only goes up a little when an offspring lives to 60. But dying at 0 is a HUGE surprise, so your score drops a lot when that happens.
Your example is a bit misleading though, because you're not matching off against other players you're just competing against yourself and your past performance, so it would be like newbie vs newbie or gm vs gm in your chess example. A gm losing to a gm is not a surprising result, it's just fractional ebb and flow of the ones digit, it doesn't throw them careening down to return to the midlevel range with their gm rating long in the past from one reasonable mishap.
Also your experiment seems a little unrealistic, it appears to converge on a certain number but that seems to only be because it's a perfectly cyclical pattern. I bet if you made it 10% failure rather than 9 successes and 1 failure then it would be jumping all over after the occasional 2 or 3 in a row, when in reality even the best player can suffer through having a few babies die due to circumstances outside their control. The big question is whether someone who has a 90% success rate should be consistently rated higher than someone who has 80 or even 70% success rate. With the described algorithm they probably spend more time rated higher than not, but I'd expect them to frequently not sit at #1 despite their superior performance. But maybe that's desired, we seem to be focusing too much on the math and not enough on the ideal behavior so it's difficult to discern what's better or worse.
In another thread I mentioned the possibility of context which is relevant to your example. What if you get born to a really low scoring mother (or even a long line of them, implying a shitty or nonexistent village) but end up being a super achiever as a mother yourself, that would be the equivalent to a newbie getting one over on a gm and deserving a huge boost.
Offline
I would guess a quick way of making sure variance isn't too bad but while still providing a quick "startup" would be to somehow factor in the number of lives you previously played.
So maybe first life it would be a big jump, second a big but smaller one, etc. Until you cap variance at the average of your past 10 lives (as an example).
For the score to mean anything it should be hard to drop and to climb. One should only really have high scores if they are consistent across their lives.
I do like the idea of having scores be more stable overtime, so it's less up to luck to be near the top of the leaderboard. An average score for your past 10 lives might indeed work really well, so /die'ing still affects it a lot but only extreme lives will REALLY alter the score.
Thing is, how do you calculate that score?
Is it like a 'grade' out of 60 (to keep the current number)? Does getting to age 60 and all your kids surviving to 60 as well mean you get full points and /die = 0? Then what does a score of 30 mean? Also: what % of the score is just YOUR life and not your kids'? Don't want to incentivice things like avoiding kids because you can always get perfect marks on just your own life without any kids...
Or maybe you start at 30 and early deaths are - and surviving is +, same as now. But if that's the case, does having 8 surviving kids w/ another 2 dying mean you'll get a higher score than having only 2 kids and 0 deaths? Should it be a % of how many of your kids survive? Then what about your own life?
What would be a good way to calculate scores to even get an average from to begin with?
Offline
Thaulos wrote:I would guess a quick way of making sure variance isn't too bad but while still providing a quick "startup" would be to somehow factor in the number of lives you previously played.
So maybe first life it would be a big jump, second a big but smaller one, etc. Until you cap variance at the average of your past 10 lives (as an example).
For the score to mean anything it should be hard to drop and to climb. One should only really have high scores if they are consistent across their lives.
I do like the idea of having scores be more stable overtime, so it's less up to luck to be near the top of the leaderboard. An average score for your past 10 lives might indeed work really well, so /die'ing still affects it a lot but only extreme lives will REALLY alter the score.
Thing is, how do you calculate that score?
Is it like a 'grade' out of 60 (to keep the current number)? Does getting to age 60 and all your kids surviving to 60 as well mean you get full points and /die = 0? Then what does a score of 30 mean? Also: what % of the score is just YOUR life and not your kids'? Don't want to incentivice things like avoiding kids because you can always get perfect marks on just your own life without any kids...Or maybe you start at 30 and early deaths are - and surviving is +, same as now. But if that's the case, does having 8 surviving kids w/ another 2 dying mean you'll get a higher score than having only 2 kids and 0 deaths? Should it be a % of how many of your kids survive? Then what about your own life?
What would be a good way to calculate scores to even get an average from to begin with?
yeah chess elo traditionally (but iirc not necessarily) does this too, there's an initially faster curve that settles down as you get more games in. Sounds like jason's implementation does this to a degree but dropping 10% from one death 10k births in seems too high still, unless im reading the numbers wrong.
Offline
JC, I will re-run the experiment with true randomness instead of cyclical pattern.
Here's the results after 50,000 babies, with 1/10 babies dying at 0 and 9/10 babies dying at 60, ordered randomly.
Lowest score seen = 31.160344, highest = 59.999215
Overall Ave = 54.108404
Offline
JC, I will re-run the experiment with true randomness instead of cyclical pattern.
Wish I wasn't moving today, but if I get some time I'll try to help out with some sims too. My favorite tools for these things are jsfiddle.net and desmos.com for code and math respectively since they're both permalinkable
Think you could shed a little light on some of the desired attributes of the ideal algorithm? Or even if there were a few key contrived situations with desired consequences we could focus on. The current usage of it is just for tool slots or for eve selection also? Is eve selection something that should be really strict about only the best available players getting a chance to do or would some unpredictability about who gets chosen be desired?
For these kinds of things I usually like to have a core algorithm that's as deterministic as possible, and then layer on top of that any randomness I want so that I can scale the randomness easily and still always have the "truth" to refer to, in this case that might mean trying to differentiate the 95% people from the 90% people in a way that doesn't fluctuate unless their actual ability changes, ie, unless they start consistently doing worse after a long period of consistent success. That might not be possible but it's just an example of an ideal to work towards, or maybe that's not the ideal you had in mind at all. Hard to pick the right math without knowing that.
Offline
JC, I will re-run the experiment with true randomness instead of cyclical pattern.
Here's the results after 50,000 babies, with 1/10 babies dying at 0 and 9/10 babies dying at 60, ordered randomly.
Lowest score seen = 31.160344, highest = 59.999215 Overall Ave = 54.108404
Yeah but you're only looking at the average, that's not what I was talking about... I mentioned concern about whether someone who was consistently better than someone else would consistently be rated higher than they are, or whether their rating would wildly fluctuate. Like look at the numbers in the last 100 or so babies in that 50k trial, my guess is that it dips quite low in some points.
Edit: oops, missed the lowest,highest. Yeah I mean rating of 31 for someone who on average has 54 is not great right? 54 is quite high out of 60.
Edit edit: Depends on where it happened, but yeah i feel like the first 100 births and last 100 births of a long simulation are going to be the interesting bits. Maybe it would be worth defining how long it should take to get to 55, how many babies in a row need to die in order to drop someone below 50 after being a long time 55er, whether losing 10 babies in one life is as bad as losing 1 baby each life across 10 lives, etc
Last edited by jcwilk (2019-10-30 19:17:22)
Offline
So here's the thing, though... we say, "Do we want the good player to always have a higher ranking than the bad player?" Yes, it seems like we do. Having only 1/10 of your BB die will eventually get you to the very very top of the leaderboard with a score of 59.999. Of course, it will also take you down to 31.16 sometimes too.
Lets look at the ranges for other BB death rates, though...
Baby death rate 0.1, Lowest score seen = 28.411339, highest = 59.998843
Overall Ave = 54.068327
Baby death rate 0.2, Lowest score seen = 20.184815, highest = 59.861929
Overall Ave = 47.764049
Baby death rate 0.3, Lowest score seen = 14.330883, highest = 59.788322
Overall Ave = 41.950563
Baby death rate 0.4, Lowest score seen = 10.048529, highest = 56.575497
Overall Ave = 36.128236
Baby death rate 0.5, Lowest score seen = 6.213488, highest = 53.046858
Overall Ave = 30.123685
Baby death rate 0.6, Lowest score seen = 3.630818, highest = 51.230885
Overall Ave = 23.924169
Baby death rate 0.7, Lowest score seen = 0.504421, highest = 47.674427
Overall Ave = 17.880723
Baby death rate 0.8, Lowest score seen = 0.185903, highest = 41.280818
Overall Ave = 12.095610
Baby death rate 0.9, Lowest score seen = 0.002793, highest = 30.551247
Overall Ave = 6.038323
These are all over runs for 50,000 babies, after an initial warm up run of 50,000 babies to let the scores settle.
The averages are perfect, so that's good.
But the variance is huge. It's pretty bad that the 0.1, 0.2, and 0.3 players all make it to the very top of the leaderboard.
I think that we might just need to adjust the K factor, which is currently 10, and see how that changes things. Bigger K means less jumpyness. The formula is:
new_score = old_score + ( ( lifespan - old_score ) ^ R ) / K
This is the Elo update formula, with the extra R factor. R is currently 1, so has no effect (also, there's a tweak in the code to preserve sign if R is 2).
Offline
Ideally the range of the score would be lower. Can't you add in some sort of average?
Last edited by Thaulos (2019-10-30 19:21:14)
Offline
Here's K = 20:
Baby death rate 0.1, Lowest score seen = 40.673095, highest = 59.918052
Overall Ave = 53.945883
Baby death rate 0.2, Lowest score seen = 32.225654, highest = 59.030679
Overall Ave = 47.843927
Baby death rate 0.3, Lowest score seen = 21.538847, highest = 55.594381
Overall Ave = 42.144271
Baby death rate 0.4, Lowest score seen = 18.403748, highest = 51.936603
Overall Ave = 36.116350
Baby death rate 0.5, Lowest score seen = 12.244200, highest = 48.589418
Overall Ave = 30.011191
Baby death rate 0.6, Lowest score seen = 8.143825, highest = 42.203674
Overall Ave = 23.957806
Baby death rate 0.7, Lowest score seen = 4.865320, highest = 36.375087
Overall Ave = 17.990757
Baby death rate 0.8, Lowest score seen = 1.349298, highest = 29.174280
Overall Ave = 11.804335
Baby death rate 0.9, Lowest score seen = 0.104732, highest = 21.201887
Overall Ave = 5.803208
Offline
So here's the thing, though... we say, "Do we want the good player to always have a higher ranking than the bad player?" Yes, it seems like we do. Having only 1/10 of your BB die will eventually get you to the very very top of the leaderboard with a score of 59.999. Of course, it will also take you down to 31.16 sometimes too.
Lets look at the ranges for other BB death rates, though...
Baby death rate 0.1, Lowest score seen = 28.411339, highest = 59.998843 Overall Ave = 54.068327 Baby death rate 0.2, Lowest score seen = 20.184815, highest = 59.861929 Overall Ave = 47.764049 Baby death rate 0.3, Lowest score seen = 14.330883, highest = 59.788322 Overall Ave = 41.950563 Baby death rate 0.4, Lowest score seen = 10.048529, highest = 56.575497 Overall Ave = 36.128236 Baby death rate 0.5, Lowest score seen = 6.213488, highest = 53.046858 Overall Ave = 30.123685 Baby death rate 0.6, Lowest score seen = 3.630818, highest = 51.230885 Overall Ave = 23.924169 Baby death rate 0.7, Lowest score seen = 0.504421, highest = 47.674427 Overall Ave = 17.880723 Baby death rate 0.8, Lowest score seen = 0.185903, highest = 41.280818 Overall Ave = 12.095610 Baby death rate 0.9, Lowest score seen = 0.002793, highest = 30.551247 Overall Ave = 6.038323
These are all over runs for 50,000 babies, after an initial warm up run of 50,000 babies to let the scores settle.
The 0.5 run seems undesirable, they shouldn't get a rating of 53 when their average is 30... But the highest number across such a wide range of randomness can be deceiving, maybe the second run which is the measured run should only be 100, maybe do a few trials of each and average the highest and lowest values? I'm a bit out of my element here with stats, but having "good player should always be higher than worse player" as a starting point is something. Maybe we can keep working towards more goals like that and then rally the coders/mathies in the community to come up with an algorithm that fits
Offline
Here's K = 40:
Baby death rate 0.1, Lowest score seen = 45.393603, highest = 59.010466
Overall Ave = 54.074477
Baby death rate 0.2, Lowest score seen = 35.006117, highest = 56.155618
Overall Ave = 47.975000
Baby death rate 0.3, Lowest score seen = 29.719307, highest = 52.229610
Overall Ave = 41.833456
Baby death rate 0.4, Lowest score seen = 21.244996, highest = 47.863943
Overall Ave = 36.028147
Baby death rate 0.5, Lowest score seen = 15.803323, highest = 42.724206
Overall Ave = 30.242026
Baby death rate 0.6, Lowest score seen = 11.069928, highest = 36.938155
Overall Ave = 23.983215
Baby death rate 0.7, Lowest score seen = 6.946684, highest = 30.186798
Overall Ave = 17.952708
Baby death rate 0.8, Lowest score seen = 3.594163, highest = 27.430505
Overall Ave = 12.010568
Baby death rate 0.9, Lowest score seen = 0.593459, highest = 15.735030
Overall Ave = 6.094836
Offline
The averages are perfect, so that's good.
But the variance is huge. It's pretty bad that the 0.1, 0.2, and 0.3 players all make it to the very top of the leaderboard.
I think that we might just need to adjust the K factor, which is currently 10, and see how that changes things. Bigger K means less jumpyness. The formula is:
new_score = old_score + ( ( lifespan - old_score ) ^ R ) / K
This is the Elo update formula, with the extra R factor. R is currently 1, so has no effect (also, there's a tweak in the code to preserve sign if R is 2).
Agree, sounds good. Bumping up the K value and then taking a look at the first few dozen could be useful too (edit: ie, before they've settled since that's the biggest downside of a high K value, unless you want to gradually raise the K value the more they play which is I think how chess usually does it)
Last edited by jcwilk (2019-10-30 19:25:43)
Offline
Here's K=80
Baby death rate 0.1, Lowest score seen = 46.033451, highest = 58.470665
Overall Ave = 53.927025
Baby death rate 0.2, Lowest score seen = 41.245160, highest = 54.579930
Overall Ave = 48.115154
Baby death rate 0.3, Lowest score seen = 32.956241, highest = 50.164080
Overall Ave = 41.848375
Baby death rate 0.4, Lowest score seen = 27.565044, highest = 44.636237
Overall Ave = 35.949929
Baby death rate 0.5, Lowest score seen = 20.806898, highest = 38.819771
Overall Ave = 30.091764
Baby death rate 0.6, Lowest score seen = 15.473006, highest = 32.202993
Overall Ave = 23.796076
Baby death rate 0.7, Lowest score seen = 10.184094, highest = 26.023644
Overall Ave = 18.045427
Baby death rate 0.8, Lowest score seen = 6.133832, highest = 19.024386
Overall Ave = 12.076141
Baby death rate 0.9, Lowest score seen = 1.730073, highest = 11.139416
Overall Ave = 6.033944
Offline