Jump to content
Dante Unbound: Share Bug Reports and Feedback Here! ×

2,147,483,520 (Cap)Damage With Mk1-Braton


Epicagemo
 Share

Recommended Posts

i'm surprised it wasn't obvious - we have Decimals in Damage, so Damage is Floating Point. you don't see Decimals in Damage Numbers, so they're Integer.

 

Of course it isn't obvious. Programming isn't that simple, I'm afraid.

 

Using floating point numbers in your calculations implies that you're able to use decimals, that's true. But the reverse isn't: There are ways to calculate decimals without using floating point numbers (i.e. other number representations). In financial software for example, you can't afford to use floating point because those numbers have limited precision. Try the following, for example with your browser's Javascript: 0.1 + 0.2 == 0.3 and brace yourself for a surprise.

 

Also, my post was about *what kind* of floating point numbers they are using. There's a huge difference in precision between floats (32bit) and doubles (64bit), and it's not easy to come up with a way to deduce how the damage calculation really works internally.

 

I just know that some values are slightly off (ignore the bug report and look at the numbers in the screenshots, 350 and 700 are what you'd expect there).

Link to comment
Share on other sites

You are assuming it doesn't stack more than 2-4 times based on a very small number of sonars- 10... that is a ridiculous assumption. Also- something doesn't need to hit the damage cap of billions of damage to be OP- 20 million damage is going to kill near anything in one shot.

...

I've put up 10 sonars, Max power strength, I also had resonance, pop a few Ospreys should have given even more spots, and the max was about 4 on an osprey which only net the 20 mil damage. You're assuming that I'm assuming-have you tried? It's easy to gather up Ospreys and even easier to shoot down their spots. My testing included over 20 sonars.

Exactly, hitting only one number, the 20 mil, is exactly the point. Multishot is null after you hit that hard.

Only four forma? noob. Mk1 needs six.

Working on it :) Edited by Epicagemo
Link to comment
Share on other sites

Wait wait wait... what? "A vacuum environment, not actual gameplay." What does that even mean. You can stack sonars in game just as easily as you can in the simulacrum- especially with the augment. It IS NOT a non-issue, and it IS worth the development time (which realistically speaking is probably a matter of minutes) to limit it.

and in real Gameplay, you don't do that.

you theoretically could, but only in abusive groups which are going to plan to have all of the Players invulvnerable and the Enemies paused while you stand there and prepare for 30 seconds.

 

or you could just Kill them 27 seconds earlier just as quickly.

non-issue for actual Gameplay.

 

Of course it isn't obvious. Programming isn't that simple, I'm afraid.

it's a game, so many expectations can be assumed.

 

all Decimal values are Floating Point, and are 32-bit unless you have reason to think otherwise.

all Integer values are Integers (obviously), and are 32-bit, except in very specific circumstances, of software that expects numbers in the Billions to be normal.

Link to comment
Share on other sites

I thought it was very clear from the developers that they themselves allowed the Sonar to overlap onto enemies for maximum damage, after all the mod for Banshee has allowed this for quite some time with the description being quite clear. Iv heard about this however long before the Syndicate mod so no clue on why its a big deal suddenly now, its very old news sadly.

Link to comment
Share on other sites

...

it's a game, so many expectations can be assumed.

 

all Decimal values are Floating Point, and are 32-bit unless you have reason to think otherwise.

all Integer values are Integers (obviously), and are 32-bit, except in very specific circumstances, of software that expects numbers in the Billions to be normal.

 

I agree with what you say about integers. They're convenient and still commonly used over longs (or unsigned integers) because they're generally large enough to not run into problems with their bounds.

 

However, 32bit floating point numbers aren't the standard anymore these days. Games care about computing speed, obviously, and one would think operations on 32bit numbers can be computed faster. But current desktop processors' FPUs don't even make the distinction anymore between 64bit and 32bit when doing floating point calculations (see e.g. here if you're interested).

 

Therefore, it's reasonable to assume all floating point calculations are done in 64bit unless there's a really good reason not to use them, because little errors caused by the innate imprecision of these data types can add up. And these errors do have a bit of an impact on the game, as shown in the screenshots in the thread to which I linked before.

 

On top of that, every integer in a 32bit int can be represented by a 64bit floating point without loss of precision, so conversions are painless. The same isn't true for 32bit floating point numbers, this thread is a good example of that.

Link to comment
Share on other sites

-snip-

all of that makes sense in a theoretical standpoint and for longevity and reliability i ofcourse agree overall (since memory usage of 64-bit Variables is negligibly higher) - but what Programmers actually use doesn't usually coincide with this. Variable choices are often not actual decisions, instead, using the generic Floating Point and Integer Variables because... they're the standard generic ones (i.e. 32-bit).

 

especially if something is made as a small project at first, and then it grows over time, but when you made it, small Variable sizes wasn't a problem, but then eventually it grows enough to be a problem... Et Cetera.

i can coincidentally use Minecraft as an example here. using single Byte Variables for some things wasn't a problem originally, but over time became a problematic limiting factor as the project grew much larger than originally intended.

Edited by taiiat
Link to comment
Share on other sites

all of that makes sense in a theoretical standpoint and for longevity and reliability i ofcourse agree overall (since memory usage of 64-bit Variables is negligibly higher) - but what Programmers actually use doesn't usually coincide with this. Variable choices are often not actual decisions, instead, using the generic Floating Point and Integer Variables because... they're the standard generic ones (i.e. 32-bit).

 

especially if something is made as a small project at first, and then it grows over time, but when you made it, small Variable sizes wasn't a problem, but then eventually it grows enough to be a problem... Et Cetera.

i can coincidentally use Minecraft as an example here. using single Byte Variables for some things wasn't a problem originally, but over time became a problematic limiting factor as the project grew much larger than originally intended.

 

Well I'm sure they have their reasons for using 32bit over 64bit floating point (or another decimal computation scheme), I can think of a few without having to see an implementation. I don't really care why they do.

 

I originally commented in this thread because it gave me a clue as to how their damage calculation is implemented. And frankly, unless you know more than me and can tell me why exactly I'm seeing 349 instead of 350 in that Penta vs. MOA example in the other thread I don't really see where this discussion is going, to be honest.

 

My previous explanations were made under the assumption you didn't know about those little details, because few people actually do.

Link to comment
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
 Share

×
×
  • Create New...