View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0005854||Multi Theft Auto : San Andreas||General||public||2011-01-24 04:00||2013-12-19 10:12|
|Target Version||1.3.5||Fixed in Version||1.3.5|
|Summary||0005854: Client runs with reduced mathematical precision compared to the server.|
The server runs with a floating-point precision of 56-bits and the client runs with a floating-point precision of 24-bits. Therefore floating-point operations will be performed with greater accuracy on the server when compared to the client.
It seems DirectX and possibly GTA quite like it that way, and forcing the client to 56-bits could produce unpredictable results, and will probably decrease client performance.
It might be possible to switch into 56-bits during Lua execution only, but considering the network layer forces 24-bit floats for communications, would it be worth it?
Another solution is to document this 'feature', with detail of the side effects and work-a-rounds and what not.
|Tags||No tags attached.|
|related to||0004298||resolved||ccw||Multi Theft Auto : San Andreas||triggerClientEvent() doesn't pass large numbers or floats accurately|
|parent of||0006829||closed||Source patches||Floating-point double precision fix|
|has duplicate||0007694||closed||New issues||Client can't operate with numbers bigger than 16777216|
|has duplicate||0007502||closed||New issues||Precision loss (or something) when using rotation from processLineOfSight in createObject|
|related to||0006802||closed||New issues||Sync Problem with setElementData|
probably worth the extra effort
IMO double-precision calculations should not be considered a bottleneck, like you should not argument that it causes huge FPS loss. MTA requires more precise calculations.
As for GTA, let it run in single-precision for now, but then again what about callbacks? multiplayer_sa is deeply nested with 'em.
Increasing accuracy would actually help; remember that issue where things go weird if too far from main-land? :)
I just wonder what the issue about that is. If you force the client to use doubles, 32 bit computers would have the disadvantage.