|
Post by bdew on Mar 27, 2017 11:11:09 GMT
I've had a number of people talk to me about horses and their aging, asking questions and/or suggesting various changes to how things are handled. I didn't want to give possibly incorrect answers without taking a look at the code and how it actually works.
Be warned that this thread contains math, and potentially "spoilers", so if you'd preffer to keep some feeling of mystery and not ruin it with hard math - you should probably stop reading here.
First of all cared creatures should never die of old age. There might be some weirdness involved when going between servers and such, so if you have valuable creatures that are well "past their time", you might want to keep them at home.
Creatures age by "age ticks", normally the age is increased every 28 wurm days (~= 3.5 RL days).
On this server, creatures below age 20 have accelerated growth and will get a growth tick every 3 wurm days (~= 9 RL hours).
Players can't see the age normally, but the visible age is calculated directly from that number.
1-3 - Young 4-8 - Adolescent 9-12 - Mature 13-30 - Aged 31-40 - Old 41 and higher - venerable
Aside note: Every creature type has a max age, if a creature gets to that age and it's not cared for and not a unique it will die on the next aging tick. If it has "some illness" it will also have an increasing chance to die after going over half this number. This is not relevant to horses due to how the numbers work out, but it might be relevant to other animals. For example bison with some illness have a chance to die at age>=25 and all bison will die at age=50.
Besides that every non-cared, non-unique creature will die when it reaches age 50, this is increased to 75 if it has "certain spark" trait (but that doesn't override the rule above, so CS on bison is useless for example).
Creatures that have "baby" subtypes (e.g. foals for horses) will change to the full grown version on their 5th aging tick, so with the speed up ~45 RL hours after being born. After changing their age starts again from 1.
Full grown animals are breedable once they reach age 4. For horses this means they need 8 aging ticks to go from being born to being breedable, equals to ~3 RL days.
This means, ultimately that horses will take ~9.3 RL days to get to the point where their accelerated aging stops, then will live ~105 RL days from that point. If they have "certain spark" this is increased to ~192 RL days.
That's the current state and I, personally, think it's good. But i'm open to discussion if others want it changed.
|
|
sprout
Junior Member
Posts: 64
|
Post by sprout on Mar 27, 2017 14:33:23 GMT
Wow, I did not realize the accelerated aging change actually cut their lifespan by that much.
I am comfortable with "Your House, Your Rules", which rightfully applies to all privately run servers, but I'd sure feel a lot happier about accelerated aging stopping at either "Adulthood" (Age 1, Young Adult) or at "Puberty" aka breedable age (Age 4) rather continue accelerating till Age 20 (quite a ways farther into the Aged range than I previously realized). If I had my druthers, and you felt you needed to shorten the lifespan of horses for some reason, maybe to prevent overcrowding from player abandoned or player 'hoarded' animals, , I would far rather see aging accelerated for Old & Venerable (ages 30-50) than for Young, Adolescent & Mature. Abandoned animals are more likely to be older anyway.
My math might be off but it sounds like going from Age 1 - 20 (Young Adult, Adol Adult,Mature, part of Aged) is normally 70 RL days but here is 7.5 days, so more than two months rather abruptly cut from the "prime" of their life. As a horse breeder on other servers, I consider those truncated stages (Young Adult-Adolescent-Mature) to be the "optimal selling ages" for a horse as I am not comfortable with selling people a horse that is about to turn "Old", for reasons both practical and semantic. You mentioned in our conversation before that people can of course Care For the Old/Venerable animals they want to keep, but everyone likes working at different skills and not everyone wants to grind AH high enough to to keep a full wagon team cared plus any personal riding horses. If they did, there would be no use for horsebreeders anyway as everyone could simply breed their own (and do all other skills themselves too). In fact, on other servers I routinely kill off most of my "market sales" horses soon after they reach Aged, as I am not sure how much time they have left and don't want to risk selling one that might turn Old the day after I sold it. So I consider animals past mature as "starting to get a wee mite stale" . Now it seems without doing a lot of paperwork to keep track of exactly how old a horse is, selling a horse at Aged might mean they have a rather limited amount of time left before Age 30. Some of that might have been explained in the paragraph explaining "some illness" and "This is not relevant to horses due to how the numbers work out" as i was not quite sure why horse's numbers differed but I never keep any bad traits on animals so skipped over that part a little fast, except for the part about Spark being useless on Bison, which was sad news to me. I did have the vague belief (possibly wrong) that not all animals age stages followed the same rules and that horses generally lived longer than other animals, I had thought that meant their age stages in general all lasted longer.
I do feel sorry for anyone trying to keep Hens for eggs unless they are willing to use up all their Care Slots on chickens. Most of my Care slots frankly are on my chickens, because chickens die after Aged, which here means "very very soon".
This could also have the unintended consequence of encouraging extra alts for caring slots, as being much easier and more profitable than grinding AH.
Code Questions!
1) Do animals in Venerable (and/or Old) take any penalty to any stats such as speed or stamina or strength? I seem to recall hearing once that they did although it might have been Standard Wurm Misinformation. EDIT: this is from wiki which might be wrong: "Creature age affects its size and running speed, and older animals will have increased fighting capabilities. Aged animals have been reported to be the fastest around, especially aged huge spiders; anything younger or older will be slower than aged."
2) you estimated the lifespan at ~105 RL days past Age 20. I had always thought they died at "some random point after reaching venerable", which can vary widely from individual to individual, which if true suggests instead of saying they will live "roughly about 105 RL days", it seems more accurate to be "someplace between 70 and 105 RL days, with a hard cap at 105".
TLDR: if we must truncate horse lifespans 'for the good of the server", I would rather aging was normal for Age 1-30 (Y, Adol, M, Aged) and instead was accelerated for Ages 30-50 (Old/Venerable). People with a "favorite" Old Horse can of course as always Care for any that have sentimental value.
Accelerating ages 30-50 instead, would also benefit the animals that normally die at Aged, such as Chicken and Wild Boars. i forget which others.
|
|
|
Post by bdew on Mar 27, 2017 17:32:29 GMT
My main aim with the accelerated aging is to speed up breeding cycles (the time between birth and being able to use a creature for breeding). I don't specifically aim to reduce the life span of horses.
I could stop the accelerated aging at 8 (that's how it's done on WO PVP servers) or some other number, which will make lifespans less reduced... I could also increase the age they die at (but that's a bit more annoying to mod).
I could also imagine some breeders not wanting it changed from the current state, because hey they can breed more animals and since animals die faster they can also sell more animals. Hence putting this up for discussion.
Also i hear you about chicken, i'll definitely do something with them soon(tm).
Code questions:
There is no randomness involved in death from old age as far as i can see except for some creatures like bison that have "some illness", for the rest this is the code:
if (newAge > (this.isTraitBitSet(21) ? 75 : 50) && !this.statusHolder.isGhost() && !this.statusHolder.isHuman() && !this.statusHolder.isUnique() && !this.statusHolder.isCaredFor()) { return true; }
Or translated to english - if age is above 50 (or 75 if it has trait 21 - "certain spark") and it's not a ghost/human/unique/cared - creature dies.
I don't see any effect on speed from age, i heard that too but i can't find any references to it in the code (but movement code is a huge mess, so there is a small chance i'm just missing it). Combat stats generally go higher with age.
|
|
sprout
Junior Member
Posts: 64
|
Post by sprout on Mar 27, 2017 18:08:08 GMT
If it is an "Trade & Economy" issue, I often find my "regular buyers" will start shopping for a younger replacement once when their main horse transitions from Aged to Old; even though the Old horse still has several good months left they want to avoid logging in to an unpleasant surprise one day and find dead horses on their wagon and a tougher time getting emergency replacements when they were not planning to do so. When I give buyers a choice of ages, or let them wander through my fields and pick what they want, some pick the very very youngest they can get (even selecting foals) to extend their "investment" or as a backup for old/venerables, while others pick Adolescent as there is at most a delay of a few days before they can breed, or to be safe they pick Mature since they know those are Ready-To-Breed-Today. But no one ever selects Aged as their first choice if there is a younger alternative, and certainly not Old or Venerable (which under the current system make up probably over 50% of all horses, i'd have to check the math.) Plus, i think foals are cute a dickens and i almost miss having them around but pretty useless to be sure. Still, roosters are useless too and sheep are close (there are better milk animals esp bison, and wool has not much use). Useless things are not useless at all, if they make you smile! Young Adult horses are almost as cute, they can't breed yet but can still do all the normal adult work horse chores, like Riding and Hauling. So when I sell wagons with horses for someone I know does not plan to breed, I usually try to make a team of Young Adults. If it is mostly to speed up breeding cycles, then I would turn off accelerated aging at Age 4 when they are first able to breed, rather than wait till Age 20. Also I thought I recalled you mentioning shorter pregnancies, i have not documented anything but pregnancies still seem to take a good amount of time and to not be anywhere as 'accerelated" as normal aging. If anything, long foal stages probably help breeders, as people do not want to wait weeks and weeks for a foal to grow up, as well as deal with trait breeding etc, so the fact of foals makes them more likely to buy adult horses from a good breeder. But who can resist the cutseyness of foals? PvP is surely an exception because raiders will usually kill your horses first, so you don't have time to wait weeks and weeks for "cute" foals to grow up and become usable. But PvE is more into "aww that looks sweet' rather than strict practicality. Anyway most are probably glad to have foals grow up in two days, but i imagine the majority would want the accelerated aging to stop soon after that. Age 4 (Adolescent Adult) is the most "practical".
|
|
|
Post by bdew on Mar 27, 2017 18:24:05 GMT
Yes pregnancies are weird. There's an official setting that's supposed to speed them up but seems to do nothing and my attempts to speed them up with modding are just as successful. Rolfcode at it's best
|
|
|
Post by bdew on Mar 28, 2017 10:25:42 GMT
I've given this some more thought, and here's my current plan: I'll lower the accelerated aging to stop at age 6 (mid-adolescent). This will effectively add ~43 days to the lifespan for horses, if my math is right. Chicken will be entirely excluded from accelerated aging (along with boars, gorillas, hyenas, and a few other special creatures that already are excluded). Maximum age will not be extended - this needs bytecode editing of a section already modified by the aging mod (which isn't mine), as such i deem it "too much pain to be worth it". This will likely happen with the next restart in the next few days. This is still open to discussion, so if anyone else has any input - please chime in I'll also look more into accelerating pregnancies, tho that'll probably have to wait for later.
|
|
sprout
Junior Member
Posts: 64
|
Post by sprout on Mar 28, 2017 11:50:54 GMT
Thank you \o/ I think stopping the acceleration at Age 6 (and excluding chickens) is a lovely solution.
|
|
sprout
Junior Member
Posts: 64
|
Post by sprout on Mar 31, 2017 20:33:41 GMT
> "I'll also look more into accelerating pregnancies, tho that'll probably have to wait for later."Have you seen this mod yet : forum.wurmonline.com/index.php?/topic/152567-released-configurable-gestation-period/(it's been out for all of 18 minutes lol) ausimus Posted 18 minutes ago A server side mod that allows server owners to modify the time it take for creatures to give birth. Value set to 1 [16:07:35] The aged Female Horse will probably give birth in a while! [16:07:49] She will deliver in about 2 days. Value set to 99 [16:11:48] The aged Female Horse will probably give birth in a while! [16:11:50] She will deliver in about 100 days. Do not set a value greater than 99 in properties or server will fail to start.
|
|
|
Post by bdew on Apr 1, 2017 0:27:32 GMT
Nice, i'll see about adding it next time i do a restart.
I'm thinking 3 RL day pregnancies should be reasonable?
|
|
sprout
Junior Member
Posts: 64
|
Post by sprout on Apr 1, 2017 0:29:19 GMT
3 RL days sounds perfect
|
|