[0.11.15] Dysync related to exosuit and 32bit versus 64bit

This subforum contains all the issues which we already resolved.
Whitelance89
Manual Inserter
Manual Inserter
Posts: 1
Joined: Tue Dec 23, 2014 5:28 pm
Contact:

[0.11.15] Dysync related to exosuit and 32bit versus 64bit

Post by Whitelance89 »

Hello, this is my first post here and hopefully i can help with this great games advancement.

Here is my bug report, I've never really done this before but going to try and make it helpful.

Been playing Multilayer with my friend for a while now, I'm on 32bit and he's on 64bit, Recently made basic exoskeleton equipment and put it in my power armor, my friend was in a tank, the moment the basic exoskeleton equipment charged up and my friends tank took damage it dysynced him, I took the basic exoskeleton equpiment off and it stoped Dysyncing him when he/his tank took damage.

Hopefully this has helped.

Whitelance.
immibis
Filter Inserter
Filter Inserter
Posts: 303
Joined: Sun Mar 24, 2013 2:25 am
Contact:

Re: Dysync issues 0.11.8

Post by immibis »

I read that you both need to use 32-bit, or both 64-bit, to avoid desyncs.
User avatar
cube
Former Staff
Former Staff
Posts: 1111
Joined: Tue Mar 05, 2013 8:14 pm
Contact:

Re: Dysync issues 0.11.8

Post by cube »

immibis wrote:I read that you both need to use 32-bit, or both 64-bit, to avoid desyncs.
That is just a workaround, but in the long run we want to be able to play with 32 and 64 bits together.
User avatar
Ranakastrasz
Smart Inserter
Smart Inserter
Posts: 2179
Joined: Thu Jun 12, 2014 3:05 am
Contact:

Exosuit Equipoment Desync

Post by Ranakastrasz »

Multiplayer "Basic Exosuit Equipment" causes desync.
Conjure powered armor t2, fusion reactor, a single basic exosuit equipment.
save, host as multiplayer. Allow another to join. Walk around with said modular setup.

Does not occur with multiple exosuit equipments. Only one.

Disabled all mods.
My Mods:
Modular Armor Revamp - V16
Large Chests - V16
Agent Orange - V16
Flare - V16
Easy Refineries - V16
kovarex
Factorio Staff
Factorio Staff
Posts: 8298
Joined: Wed Feb 06, 2013 12:00 am
Contact:

Re: Exosuit Equipoment Desync

Post by kovarex »

I merged the topics.
kovarex
Factorio Staff
Factorio Staff
Posts: 8298
Joined: Wed Feb 06, 2013 12:00 am
Contact:

Re: [0.11.15] Dysync related to exosuit and 32bit versus 64b

Post by kovarex »

Fixed for 0.11.16.

I had to go quite deep to find the problem, and I don't really understand the solution, but it works now.

For the curious ones, this is how the fix looks:

Code: Select all

 float result = this->getPrototype()->runningSpeed;
   if (Armor* armor = this->getArmor())
-    result *= (1 + armor->grid.getMovementBonus(this));
+  {
+    // I put the value into variable, because of magic (32bit versus 64 bit compatibility)
+    float bonus = (1 + armor->grid.getMovementBonus(this));
+    result *= bonus; //(1 + armor->grid.getMovementBonus(this));
+  }
   result *= (1 - this->shooter->getSlowDownFactor());
   return result;
dee-
Filter Inserter
Filter Inserter
Posts: 416
Joined: Mon Jan 19, 2015 9:21 am
Contact:

Re: [0.11.15] Dysync related to exosuit and 32bit versus 64b

Post by dee- »

kovarex wrote:Fixed for 0.11.16.

I had to go quite deep to find the problem, and I don't really understand the solution, but it works now.

For the curious ones, this is how the fix looks:

Code: Select all

 float result = this->getPrototype()->runningSpeed;
   if (Armor* armor = this->getArmor())
-    result *= (1 + armor->grid.getMovementBonus(this));
+  {
+    // I put the value into variable, because of magic (32bit versus 64 bit compatibility)
+    float bonus = (1 + armor->grid.getMovementBonus(this));
+    result *= bonus; //(1 + armor->grid.getMovementBonus(this));
+  }
   result *= (1 - this->shooter->getSlowDownFactor());
   return result;
is the implicit type of "(1 + armor->grid.getMovementBonus(this))" a float? because using the variable "bonus" makes an explicit typecast to float, which might be a meaningful difference.
kovarex
Factorio Staff
Factorio Staff
Posts: 8298
Joined: Wed Feb 06, 2013 12:00 am
Contact:

Re: [0.11.15] Dysync related to exosuit and 32bit versus 64b

Post by kovarex »

dee- wrote:
kovarex wrote:Fixed for 0.11.16.

I had to go quite deep to find the problem, and I don't really understand the solution, but it works now.

For the curious ones, this is how the fix looks:

Code: Select all

 float result = this->getPrototype()->runningSpeed;
   if (Armor* armor = this->getArmor())
-    result *= (1 + armor->grid.getMovementBonus(this));
+  {
+    // I put the value into variable, because of magic (32bit versus 64 bit compatibility)
+    float bonus = (1 + armor->grid.getMovementBonus(this));
+    result *= bonus; //(1 + armor->grid.getMovementBonus(this));
+  }
   result *= (1 - this->shooter->getSlowDownFactor());
   return result;
is the implicit type of "(1 + armor->grid.getMovementBonus(this))" a float? because using the variable "bonus" makes an explicit typecast to float, which might be a meaningful difference.
The getMovementBonus returns float, so I would guess that 1 + float is float.
Post Reply

Return to “Resolved Problems and Bugs”