Sign in to follow this  
Tigrosaur

Do horses still become better the longer they are ridden by players?

Recommended Posts

Dear wurmians, dear wurm staff,

 

Yesterday I've been going through the Wurm Unlimited Server Code and analyzed how speed traits with horses actually work - why they are randomly active or inactive.

As you may know, horses are the only animals in Wurm where speed traits are not always active:


In intervals of roughly 20 seconds the game uses a method (Creature.getTraitMovePercent(...)) to determine how much the speed traits affect the movement speed of an animal (whether they are currently active for this cycle).
This is done by taking the SoulStrength of the horse (Default: 22) and then attempting a skillcheck with a difficulty of 20 on it, once for each speed affecting trait the horse has.
However, if during this TraitCheck the horse is being ridden by a player and currently in motion (not standing still), this will give a skilltick to the horses SoulStrength thus permanently very very slightly increasing the chances of speed traits to be active in further cycles.

 

(Doing a simulation of five hundred million attempts results in an average chance of 52.30% for each trait to be active with the default SoulStrength value of 22)

 

Wurm Unlimited has an exploit (which I'll not go into detail here) that is NOT working on Wurm Online, which allows players to manually recall this TraitCheck cycle as often as they want outside the 20 second rule thus pushing a horses SoulStrength to values above 80 in a matter of minutes and causing traits to be active >99% of the time.
Since this exploit has been removed in Wurm Online, I'm wondering how much of the original routine is still in place, thus my simple question:


If a horse is ridden by a player does the horses SoulStrength still increase in intervals thus making a horse better by slowly increasing the chances how often speed traits are active?

  • Like 4

Share this post


Link to post
Share on other sites
14 hours ago, Tigrosaur said:

If a horse is ridden by a player does the horses SoulStrength still increase in intervals thus making a horse better by slowly increasing the chances how often speed traits are active?

and before you think you'll train your normal horse to go faster, I did simulate that and you'd need an alt idling on horseback 24/7 for 3 or 4 months solid just to raise its trait uptime from ~50% to ~65%

 

dunno if it requires it to be in motion since they get polled just from having a rider, but yeah

Edited by Oblivionnreaver

Share this post


Link to post
Share on other sites
16 hours ago, Oblivionnreaver said:

and before you think you'll train your normal horse to go faster, I did simulate that and you'd need an alt idling on horseback 24/7 for 3 or 4 months solid just to raise its trait uptime from ~50% to ~65%

 

dunno if it requires it to be in motion since they get polled just from having a rider, but yeah

 

First of all, inside the Creature.getTraitMovePercent(...) when the skillchecks are done for each speed trait using the following method:

sstrength.skillCheck(20.0, 0.0, !moving, 1.0f)

The third parameter is using a variable called moving which is only true in the situation that the horse has a rider and is in motion (although there is often a slight and sometimes a bigger delay as to when the motion status is updated)

This parameter is also what causes skillticks, if it is set to true it just does a skillcheck without giving skillticks - here it's using the inverse of the variable moving: so in the case that moving is set to 'true', the parameter will become false thus (and only then) giving skillticks to SoulStrength.

 

 

Secondary, I'm putting your simulation into question.

I've done a test myself and had the game simulate a real scenario in which 1500 of the trait-check-cycles happened on a horse with all 5 speed traits.

The 1500 cycles increased the SoulStrength value of my 5-speed horse from the default 22 to 27.485837611357766.

This may seem like a little, but this increases the chance for each trait to be active from the initial 52.30% to a 59.96%

Adding another 1500 cycles on top of that further increases the SoulStrength value of my 5-speed horse to 31.991652692628488 this increases the trait activation chance to 66.22%

 

Now let's add some simple math to this.

As I've mentioned above while riding with your horse this trait-check-cycle happens once every 20 seconds.

3000 cycles * 20 seconds for each cycle => 60000 seconds = 16.6667 hours of riding with your horse.

 

Quoting myself from below to avoid false information in this thread:

  

11 hours ago, Tigrosaur said:

My apologies, I need to correct myself here, my test environment was running the Wurm Unlimited Server with the default values - which has a 10.0x Skill and 10.0x Action Timer set in place.

 

So after changing these values to 1.0 and fully redoing my whole simulation here are my new results:

 

I've been running a simulation how long it would take a 5-speed horse to reach a SoulStrength value of 31.11 which is about a 65% trait activation chance.

Using the Wurm Unlimited skillgain routine, on average I needed 26785 cycles to reach this value.

26785 cycles * 20 seconds for each cycle to happen => 535700 seconds = 148.8056 hours (6.20 days) of riding with your horse.

This is how long it would take a 5-speed horse to go from 52.30% activation chance to a 65% activation chance on a normal Wurm Unlimited Server using a 1.0 skill rate.

 

 

Now we don't know how this routine looks like in Wurm Online or how the skillgain translates to Wurm Online or if horses can get a SoulStrength skilltick on Wurm Online in the first place (Question of this Topic), but I've modified the code to run a simulation using this skillcheck call instead:


sstrength.skillCheck( 20.0, 0.0, !moving, 1.0f, false, 2.0 )

Instead of the Wurm Unlimited routine, this will then use doSkillGainOld(...) with the parameter times also set to 1.0.

On average I needed 158032 cycles to reach a SoulStrength value of 31.11.

158032 * 20 seconds for each cycle to happen => 3160640 seconds = 877.9556 hours (36.58 days) of riding with your horse.

 

 

I'm trying to find out and understand how your simulation ended up with the result "24/7 for 3 or 4 months"

 

 

Finally, there is also one very important part I'd like to point out here: My simulation is done using a horse that has all 5 speed traits.

The reason this is important is the way how the cycle actually works, it does a skillcheck for each trait and thus gives a skilltick for each speed affecting trait, every cycle.

Edited by Tigrosaur
Updating misinformation, thank you Oblivionnreaver for pointing this out!

Share this post


Link to post
Share on other sites

I'm not sure how much that translates into WO, but i've had the same horse for years and done hundreds of hours, probably more hunting on it and it's not that much better than my other horses, but it is enough to be noticeable. Keep in mind that WU treats any timer action as 10 seconds of skillgain regardless of timer and 100% tick rate assuming action succeeds, so tick rate equal to trait uptime, so if you haven't changed it to use WO's skilling (its labeled useskillold or something idk i cant be bothered looking for it, should be pretty easy to find in the skill code) the actual skillgain part will be wildly inaccurate. 750 minutes of skillgain (1500x10x3/60) taking a horse from 22 to 27.48 sounds well above average even with 3x the checks.

 

Being able to see your horses soul str would be pretty nice though

Edited by Oblivionnreaver

Share this post


Link to post
Share on other sites

Also if that is a permanent thing, how does it work across servers?

Share this post


Link to post
Share on other sites

My apologies, I need to correct myself here, my test environment was running the Wurm Unlimited Server with the default values - which has a 10.0x Skill and 10.0x Action Timer set in place.

 

So after changing these values to 1.0 and fully redoing my whole simulation here are my new results:

 

I've been running a simulation how long it would take a 5-speed horse to reach a SoulStrength value of 31.11 which is about a 65% trait activation chance.

Using the Wurm Unlimited skillgain routine, on average I needed 26785 cycles to reach this value.

26785 cycles * 20 seconds for each cycle to happen => 535700 seconds = 148.8056 hours (6.20 days) of riding with your horse.

This is how long it would take a 5-speed horse to go from 52.30% activation chance to a 65% activation chance on a normal Wurm Unlimited Server using a 1.0 skill rate.

 

 

Now we don't know how this routine looks like in Wurm Online or how the skillgain translates to Wurm Online or if horses can get a SoulStrength skilltick on Wurm Online in the first place (Question of this Topic), but I've modified the code to run a simulation using this skillcheck call instead:

sstrength.skillCheck( 20.0, 0.0, !moving, 1.0f, false, 2.0 )

Instead of the Wurm Unlimited routine, this will then use doSkillGainOld(...) with the parameter times also set to 1.0.

On average I needed 158032 cycles to reach a SoulStrength value of 31.11.

158032 * 20 seconds for each cycle to happen => 3160640 seconds = 877.9556 hours (36.58 days) of riding with your horse.

 

 

I'm trying to find out and understand how your simulation ended up with the result "24/7 for 3 or 4 months", maybe you can share your insight on how you got to this result or update your comment above?

Edited by Tigrosaur
  • Like 1

Share this post


Link to post
Share on other sites

So we now all use our Alts to sit on a horseback and keep pressing left or right since Horses have a turning radius that make ther speed above 0 and so count them as moving? While I like the idea that a often use horses get better it also seams quite frustrating that speed traits are unreliable. Well at lest this means we can do real horsraces since even with standardize equipment ther will be some randomness involved waht make it possible I guess to have unsure winners?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this