Ferocity: Proposing a New Formula

I’ll skip the lengthy preamble, I think our current ferocity equation is wrong, and here’s why.

In early 2019, Sionsith and I both independently determined the equation for ferocity was F=H+3.2*A, where F, H and A refer to Ferocity, Health and Attack, respectively. However I’ve noticed that occasionally the game will make mistakes when ordering creatures by ferocity. Here is one such mistake depicted below.

Notice how the Irritator, with 400 health and 153 attack, is sandwiched between two identical Tyrannotitans with 401 health and 153 attack. The Irritator with 889.6 ferocity is somehow both better and worse than the Tyrannotitans with 890.6 ferocity.

Here’s something else that’s odd, I closed the game, reopened it, and checked my lineup again. Check this out.

You see that? The order changed. Originally it was 2 lvl 39 Tyrannotitans, 1 lvl 40 Irritator, and then 1 lvl 39 Tyrannotitan. Now the order is 1 lvl 39 Tyrannotitan, 1 lvl 40 Irritator, and 2 lvl 39 Tyrannotitans. It seems clear to me that the game sees this group of 4 creatures as having the same ferocity, and organizes them randomly each time it sorts my lineup by ferocity.

If you’ve got an enormous roster, little errors like this can be hard to spot, but you’ll start seeing them if you look for them. I had to go through my roster with a fine toothed comb just to find this example, but they’re more common than you think, here’s another.

Prionosuchus has more health, yet is rated lower than the Microposaurus. Here’s the thing I noticed, these mistakes only occur with creatures that have the exact same attack, and the health difference has never been greater than 1 (that I could find).

There has to be an explanation for this phenomenon, and I think I’ve got it. Obviously this has to do with some sort of rounding error, but there’s no way for the situation in the first image to occur without rounding more than 1 unit, which I seriously doubt to be the case. What I think is more likely is that Sionsith and I were both wrong, and that the real ferocity equation is F=H/3.2+A, and that the game rounds to the nearest integer. (I suspect it rounds down, rather than the nearest integer, but I can’t prove it yet. If it does round down rather than to the nearest integer, it should be possible for this error to occur with identical attack and a health difference of 2, but I haven’t seen an example of this yet)

Functionally, it’s nearly identical to the established equation, but it explains away these few mistakes. Attack is still worth 3.2 times more than health for purposes of ferocity, it’s just that the game handles it in a different way than we thought. Now, under this new equation, the Tyrannotitan’s ferocity is 278.3125, and the Irritator’s ferocity is 278. Round to the nearest integer, and they’re both 278. So, despite the fact that they’re clearly not the same ferocity, the game treats them as such. Mystery solved…?

So, assuming I’m right, what does this mean for the game and you, the players?

Absolutely NOTHING

Ultimately, this has no impact on the game, I just like to dig into how the game works. I know I’m one of many people who maintains spreadsheets of creature info and statistics, and I’m in no rush to change the formulas. The one we’re using now works just fine. In fact, it’s superior since it avoids this rounding issue. Honestly it won’t surprise me if someone replies before the day is out with a screenshot that proves me wrong, which will render this entire post an utter waste of energy.

Thanks for reading this useless exploration into how the game calculates ferocity. :upside_down_face:

17 Likes

I’ve noticed this , but I’m lazy af so it was easier to ignore for me than you.
Here are something you wanted .


Alanqa lv2 has 2 less health than coloborynchus lv1 and labrynthodontia lv1 yet it’s sandwiched between them.

Here’s with 1 health point difference.

Here’s a tuogiangosaurus lv11 sandwiched between koolasuchus lv1s with 2 health point difference.

Another 1 health point difference.
as I’ve upgraded some creatures more such sightings are gone like stegosaurus and spinosaurus .

5 Likes

That’s actually really good info, thanks a bunch. You just helped me prove that it rounds to the nearest integer, not down.

Using my new equation, the Alanqa in the first image has 28.8125 F and the Labyrinthodontia/Coloborhnychus has 29.4375 F, so the only way for them to be the same is if the game rounds to the nearest integer, in this case, 29.

Awesome.

Glad to be of help . I didn’t even calculate that. I hope I’m in the footnotes of your paper.

1 Like

Noticed this earlier here, by 1 health point.

Not so good with maths but I always just presumed that where attack is 3.2 more than health any differences in health by 1 to 3 points will be treated as the same ferocity as the game cant read decimals.

2 Likes

In the original thread I covered these outliers in a way…
“ This is why in my first post I say it works for most creatures but on the fringes their are some at very low % differences are off even with the 3.2 I tried going multiple decimals into the factor but got negligible better results and who wants to remember or use a number like 3.2019468… when it does not really matter when looking at the grand scheme of things.”

What you are proposing is an adjustment to the formula but it is really just rearranging the math.

Current formula F(o) = H + A * 3.2

If we take the current formula and divide both sides by 3.2

F(o) / 3.2 = H / 3.2 + A

We end up at your new Ferocity formula by taking any old calculations and just dividing the result by 3.2 or changing the scale. And yes the smaller you make the scale the more you push rounding down the chain of the result.

In my original analysis I played with doing this as I went both directions, higher scale and lower, because we do not know at what scale Ludia truly has Ferocity (only the resulting ranks). I will have to play with this and see how it works with big numbers as that’s where errors begin to propagate.

6 Likes

Yeah I’m aware it’s just a different scale, but that’s about the only thing I can think of that would account for the errors of 1 or 2 health.

Like I said, it’s functionally identical to the equation currently in use, I was just trying to account for the ferocity ranking errors and the different scale made the most sense to me. The new equation doesn’t change rankings at all, it’s more to try and figure out what the game uses in its calculation.

2 Likes

I discovered something similar over a year ago. From my point of view constellations like this can only occur if Ludia divides and rounds the result by a certain factor. But this discussion is academic since the formula we use is more than good enough.

4 Likes

Oho! That’s more really good info, thank you for sharing. That’s the first case I’ve seen with a 3 HP difference. With the revised ferocity equation that would put Quetz at 556.4375 and Rex2 at 555.5, more evidence to support the notion that the game rounds to the nearest integer with ferocity calculations. Since the factor we’re dividing health by is 3.2, it shouldn’t be possible for this to happen with an HP difference of 4 or more, so if anyone has evidence of such please post, because that would prove me wrong.

With the current equation they’d be at 1780.6 and 1777.6, so there’s no way for them to be the same without rounding by more than 1 ferocity, which I just don’t think is the case, because if that were true I think errors like this would be far more common.

I first noticed this phenomenon years ago but never put much thought to it until recently, and yeah, academic is a really good way to describe this thread. Knowledge for knowledge’s sake and not much else.

2 Likes

The current ferocity formula works well enough. An error of .001 won’t make much of a difference.

The fact that you can have a creature with clearly worse stats (-1 health for example) and still have it be above another can mean several things:

  1. “Ferocity,” whatever it is, is rounded. How your lineup shows is merely just a rounded value. Rounding can also be inconsistent, where it would sometimes round up and sometimes round down, not following the usual rule you were probably taught in 3rd grade where the integer 5 rounds up and anything less rounds down.

  2. Actual statistics have decimal values. What if a maxed level Rex actually has 1603.436874832945 health but it only displays to the nearest whole number? We will never know.

These are only a few of my speculations. There could be countless more.

tl;dr, ~.01 ferocity isn’t worth spending too much time over and possibly complicating stuff.

3 Likes

This isn’t about errors of .001, or even .01 ferocity. This is about errors of up to 3 ferocity, that’s 300 times bigger than the smallest error you mentioned.

Yes, that’s how rounding to the nearest integer works, it rounds up or down based on whether the first decimal place is greater or less than 0.5. It’s not random, rounding follows rules, especially when computers are involved. The point of the thread is to try and figure out exactly what rules the game is using. Rounding to the nearest integer is the rule that makes the most sense based on observations of the game’s behavior. Rounding up to the next integer or down to the next integer exclusively are rules that do not make sense, respectively, based on the evidence provided. I don’t know if you meant to sound insulting, but the comment about learning how to round in 3rd grade certainly comes off that way.

That’s the whole point of the thread. The ferocity calculation results in decimal values, and I tried to figure out how the game handles them. Did you actually read the thread? I don’t mean to be rude but based on your reply it doesn’t seem like you actually read everything before commenting.

2 Likes

Hey everyone, just popping in to remind you to please be respectful of each other :sauropod:

8 Likes

No, rounding will NOT always be consistent. Just because something involves computers doesn’t mean it will follow the “rounding rule you probably learned in 3rd grade,” which I included in not as an insult, but as a humorous line that obviously didn’t get taken that way.

Let’s say you were doing some calculations regarding frames and you ended up with a value like 4.6 frames. Would it round up? Or down? The answer is that it can round up or down, and not always up. Assuming the program runs at 60fps, 4 frames would be about 0.067 seconds and 5 frames would be ~0.083 seconds. Not enough to really do anything. There are no laws of physics regarding rounding molded into the game.

You didn’t seem to get my exaggeration regarding .001 ferocity and .01 ferocity either. Even if it was 10x the error ferocity (3) you provided, it would not be enough to change your lineup significantly.

30 ferocity? I’ll definitely be facing level 527 Yudons instead of the usual level 35 Tanycolagreuses.

This discussion is academic. I’ve repeatedly stated that it’s not going to have an impact on lineups, so I don’t get why you continue to point out that it won’t change lineups significantly. I know. I was trying to figure out how the game worked, not overhaul creature rankings.

It’s been a long time since I’ve had to do any programming so forgive me for not remembering all the terminology, but you can definitely control how rounding is performed in an operation (at least in c++, which is the only language I have any significant experience in). For example, if you divide an integer by an integer and do nothing else, the resultant value will always be rounded down to the nearest integer, every single time. It’s not random. It’s pretty easy to program something to always round to the nearest whole number.

All the errors observed so far occur in a manner that is consistent with always rounding to the nearest integer, I don’t understand why you’re so resistant to the idea.

1 Like