Monday, September 15, 2014

Kixeye Math, so confusing (display issue or math, unknown....)

Some things seem to round 1 way, some others.

In working out stuff for displaying new data for this raid here is what my Ray fleet looks like:
2x Stingray - R5 (HP: 6863)
- Specials: [1x Guidance Scrambler 3, 1x Speed Upgrade, 1x Alloy Armor MX-3, 1x Speed System III];
- Weapons: [1x Phalanx Anti-Missile, 5x Impulse Launcher D92-U, 1x Assault Disruptor D33-D]; - Armor: [2x Compound Plate IV];
Tac Modules: [];
Combat Speed: 28.8;
Evade Bonus: 62%;
Ballistic Range Bonus: 10%;
Rocket Range Bonus: 0%;
Missile Range Bonus: 0%;
Radioactive Range Bonus: 0%;
Anti-Mortar Range Bonus: 0%;
Anti-Missile Range Bonus: 0%;
Missile Defense: 48%;
Ballistic Defense: 0%;
Explosive Defense: 45%;
Nuclear Defense: 0%;
Ballistic Reload: 20%

In this case most things match up, but there are a few places in checking this out that I've seen things off by 1% (me low in some high in others).  Take for example on Ballistic Reload.  Kix says it is 19% in the display when you look at your fleet like the pic on the right.  But look at the hull picture below.

Ok, so perhaps they just truncated it in the top picture, I can buy that.  But underlying files set this to 1.2 (120% for calculations, so 20% bonus).  How do you have 20 in the file and get 19.9 here?  Buried odd math that removes some small percentage?  

This could all easily be a display issues.  Something where what is displayed in the game is not actually built off of what the underlying files have in them.  Or it could be that I'm missing key knowledge on modifications they do.  All fine by me, but makes it interesting when trying to compute stuff to say the least!

Back to top pic, take a look at speed.  28, vs calculated 28.8.

So with issues like that seen twice now in the top pic, I'd assume they are truncating that picture down to no decimal point and NOT rounding.

We also know that they round down to the nearest integer in some cases.  Take for example the Compound Plate.

Its real numbers are:
2.163438
3.7659999
4.856082

They double those for display in game, but in short here is what displays
4
6
8

So round original number down and double and you get the 4, 6, 8.  (notice you have to floor the number before you double it, otherwise it would be 2, 7, 9 when doubled and rounded off.

Again, is this just display, or is this actual game mechanics.  No idea.  As long as they are consistent it really doesn't matter.  Let me say that again, as long as they are consistent it really doesn't matter!

Other oddities we had to work through:

Figuring out how it calculated armor % additions when base armor came into play.  Greta's NC has a base armor of 5248, no weight though, so adding something that put 8% more weight to it should = 0 since it didn't weigh anything to start with (base ship with nothing on it should still weight something.... but....).  I digress, after playing with this for awhile it seems to be that it is really something like:
% increase / 4 * base armor value.  Works great as long as you know what the underlying value really is.  Tested this on 5 or 6 things, formula worked great, until it didn't.....  It didn't work on Heavy Plating 3 which had a display of 14%, until we looked at it closer and found it is 15% and not 14%, then the math work out ok! 

Again display vs mechanics, in the end it doesn't matter, as long as it is consistent in being applied behind the scenes.

We have speeds that have been doubled or more over time, we have to multiple by 2 for this, 5 for that, .5 for this or .25 for that.  

So after all of this, 2 points:
1.  Kixeye's Math is truly odd to deal with.  In the end I think I've got it all figured out, but man my head hurts.
2.  Those that have built their own ship builder pages, my hat off to you.  There is a lot of little tweaks here/there to get those calculations correct and you've all done wonderful at it.

Bonus point, Kix, work on some of your display errors.  I just heard JuggX is incorrectly displaying 60% for R5 again.  Time to work on that repo and clean up bad info in it!  And while you are at it, fix the Heavy Plating 3 one also.

4 comments:

  1. I suppose this happens whenever you reverse-engineer something.. But the lack of consistency is alarming...

    This could be related to the "old code" referred to on last weeks battle vortex.

    ReplyDelete
  2. Im amazed the game runs at all, have you noticed the alarming use of byte arrays?... no.1 source of memory leaks in this game (adobe flash's implementation isnt exactly 100% reliable)

    ReplyDelete
    Replies
    1. Haven't looked much beyond the data side of things.. I don't understand flash well and have not had the desire to learn AS just yet..

      Delete
  3. It's probably caused by floating point rounding: http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

    ReplyDelete

Note: Only a member of this blog may post a comment.