Skip to content
This repository has been archived by the owner on Apr 17, 2022. It is now read-only.

desynch when transferring units #4785

Closed
wzdev-ci opened this issue May 20, 2018 · 29 comments
Closed

desynch when transferring units #4785

wzdev-ci opened this issue May 20, 2018 · 29 comments

Comments

@wzdev-ci
Copy link
Contributor

resolution_fixed type_bug | by andrvaut


Often after the transfer of units, desynchs occur.
Usually it disappears within 1-2 seconds, but sometimes it leads to a global desynchronization.


Issue migrated from trac:4785 at 2022-04-16 13:06:10 -0700

@wzdev-ci
Copy link
Contributor Author

andrvaut uploaded file transfer_unit.zip (211.2 KiB)

all log

@wzdev-ci
Copy link
Contributor Author

Berserk Cyborg changed blocking which not transferred by tractive

@wzdev-ci
Copy link
Contributor Author

Berserk Cyborg changed blockedby which not transferred by tractive

@wzdev-ci
Copy link
Contributor Author

Berserk Cyborg changed priority from normal to blocker

@wzdev-ci
Copy link
Contributor Author

Cyp edited the issue description

@wzdev-ci
Copy link
Contributor Author

Cyp changed title from desink with transfer units to desynch when transferring units

@wzdev-ci
Copy link
Contributor Author

Cyp commented


Seems that the clients disagree on whether structure 806 and structure 815 completed production of a droid each in tick 2345 or tick 2346. At first glance it's not obviously related to transferring units.

--- vaut_host/desync234502_p0.txt       2018-05-20 19:49:38.000000000 +0200
+++ vaut_host/desync234502_p1.txt       2018-05-20 19:49:38.000000000 +0200
@@ -1,4 +1,4 @@
-##### BEGIN gameTime=234502, 3011 entries, CRC 0xD8FCB67A
+##### BEGIN gameTime=234502, 3006 entries, CRC 0x90F86ACE
 [syncDebugEconomy] < economy0 = 7403557244102
 [updateExtractedPower] updateExtractedPower0 = 536870912
 [updateExtractedPower] updateExtractedPower0 = 536870912
@@ -478,9 +478,7 @@
 [structureUpdate] < structure817 = p0;pos(20032,20160,204),status1,type1,p226974,bld500,body1000
 [structureUpdate] > structure817 = p0;pos(20032,20160,204),status1,type1,p226974,bld500,body1000
 [structureUpdate] < structure815 = p0;pos(19008,20160,204),status1,type1,p226974,bld500,body1000
-[structPlaceDroid] Placing new droid at (18944,20352)
-[generateSynchronisedObjectId] New objectId = 165301
-[structureUpdate] > structure815 = p0;pos(19008,20160,204),status1,type1, ,bld500,body1000
+[structureUpdate] > structure815 = p0;pos(19008,20160,204),status1,type1,p226974,bld500,body1000
 [structureUpdate] < structure796 = p0;pos(20736,21120,204),status1,type3, ,bld500,body1000
 [structureUpdate] > structure796 = p0;pos(20736,21120,204),status1,type3, ,bld500,body1000
 [structureUpdate] < structure797 = p0;pos(21120,21120,204),status1,type3, ,bld500,body1000
@@ -498,7 +496,6 @@
 [structureUpdate] < structure2560 = p0;pos(20160,21952,204),status1,type5, ,bld100,body600
 [structureUpdate] > structure2560 = p0;pos(20160,21952,204),status1,type5, ,bld100,body600
 [structureUpdate] < structure683 = p0;pos(19008,21504,204),status1,type16,p221562,bld500,body1000
-[requestPrecisePowerFor] requestPrecisePowerFor0,683 amount287762808832
 [structureUpdate] > structure683 = p0;pos(19008,21504,204),status1,type16,p221562,bld500,body1000
 [structureUpdate] < structure812 = p0;pos(20032,20672,204),status1,type17, ,bld500,body500
 [structureUpdate] > structure812 = p0;pos(20032,20672,204),status1,type17, ,bld500,body500
@@ -507,9 +504,7 @@
 [structureUpdate] < structure2562 = p0;pos(20288,21824,204),status1,type5, ,bld100,body600
 [structureUpdate] > structure2562 = p0;pos(20288,21824,204),status1,type5, ,bld100,body600
 [structureUpdate] < structure806 = p0;pos(19520,20160,204),status1,type1,p226974,bld500,body1000
-[structPlaceDroid] Placing new droid at (19456,20352)
-[generateSynchronisedObjectId] New objectId = 165303
-[structureUpdate] > structure806 = p0;pos(19520,20160,204),status1,type1, ,bld500,body1000
+[structureUpdate] > structure806 = p0;pos(19520,20160,204),status1,type1,p226974,bld500,body1000
 [structureUpdate] < structure809 = p0;pos(21056,20160,204),status1,type1,p226974,bld500,body1000
 [structureUpdate] > structure809 = p0;pos(21056,20160,204),status1,type1,p226974,bld500,body1000
 [structureUpdate] < structure827 = p0;pos(19712,21504,204),status1,type10, ,bld500,body800
@@ -2982,7 +2977,7 @@
 [featureUpdate] > feature1736 = p12;pos(19264,11200,0),subtype10,damageable0,body25
 [featureUpdate] < feature1735 = p12;pos(19264,11328,0),subtype10,damageable0,body25
 [featureUpdate] > feature1735 = p12;pos(19264,11328,0),subtype10,damageable0,body25
-[countUpdate] counts[0] = {droid: 137, command: 0, constructor: 4, mission: 0, transporter: 0}
+[countUpdate] counts[0] = {droid: 135, command: 0, constructor: 4, mission: 0, transporter: 0}
 [countUpdate] counts[1] = {droid: 30, command: 0, constructor: 15, mission: 0, transporter: 0}
 [countUpdate] counts[2] = {droid: 0, command: 0, constructor: 0, mission: 0, transporter: 0}
 [countUpdate] counts[3] = {droid: 0, command: 0, constructor: 0, mission: 0, transporter: 0}
@@ -3010,4 +3005,4 @@
 [gameStateUpdate] Player 9 = ""
 [gameStateUpdate] Player 10 = ""
 [gameStateUpdate] My client version = master 4bf4d64
-##### END gameTime=234502, 3011 entries, CRC 0xD8FCB67A
+##### END gameTime=234502, 3006 entries, CRC 0x90F86ACE

--- vaut_host/desync234602_p0.txt       2018-05-20 19:49:38.000000000 +0200
+++ vaut_host/desync234602_p1.txt       2018-05-20 19:49:40.000000000 +0200
@@ -1,5 +1,5 @@
-##### BEGIN gameTime=234602, 2921 entries, CRC 0x02D499F2
-[syncDebugEconomy] < economy0 = 7126209730960
+##### BEGIN gameTime=234602, 2906 entries, CRC 0x012A5EA7
+[syncDebugEconomy] < economy0 = 7413972539792
 [updateExtractedPower] updateExtractedPower0 = 536870912
 [updateExtractedPower] updateExtractedPower0 = 536870912
 [updateExtractedPower] updateExtractedPower0 = 536870912
@@ -26,28 +26,8 @@
 [updateExtractedPower] updateExtractedPower0 = 536870912
 [updateExtractedPower] updateExtractedPower0 = 536870912
 [updateCurrentPower] updateCurrentPower0 = 2147483648,97
-[updatePlayerPower] updatePlayerPower0 7126209730960->7136625026650
-[syncDebugEconomy] < economy0 = 7136625026650
-[droidUpdate] < droid165303 = p0;pos(19456,20352,204),rot(0,0,0),order0(0,0)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                            
-[orderClearDroidList] droid165303 list cleared
-[orderDroidBase] - droid165303 = p0;pos(19456,20352,204),rot(0,0,0),order0(0,0)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                         
-[orderDroidBase] 165303 ordered DORDER_GUARD
-[actionDroidBase] - droid165303 = p0;pos(19456,20352,204),rot(0,0,0),order25(19456,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                               
-[actionDroidBase] 165303 does DACTION_NONE
-[actionDroidBase] + droid165303 = p0;pos(19456,20352,204),rot(0,0,0),order25(19456,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                               
-[orderDroidBase] + droid165303 = p0;pos(19456,20352,204),rot(0,0,0),order25(19456,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                
-[droidUpdate] M droid165303 = p0;pos(19456,20352,204),rot(0,0,0),order25(19456,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                   
-[droidUpdate] > droid165303 = p0;pos(19456,20352,204),rot(0,0,0),order25(19456,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                   
-[droidUpdate] < droid165301 = p0;pos(18944,20352,204),rot(0,0,0),order0(0,0)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                            
-[orderClearDroidList] droid165301 list cleared
-[orderDroidBase] - droid165301 = p0;pos(18944,20352,204),rot(0,0,0),order0(0,0)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                         
-[orderDroidBase] 165301 ordered DORDER_GUARD
-[actionDroidBase] - droid165301 = p0;pos(18944,20352,204),rot(0,0,0),order25(18944,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                               
-[actionDroidBase] 165301 does DACTION_NONE
-[actionDroidBase] + droid165301 = p0;pos(18944,20352,204),rot(0,0,0),order25(18944,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                               
-[orderDroidBase] + droid165301 = p0;pos(18944,20352,204),rot(0,0,0),order25(18944,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                
-[droidUpdate] M droid165301 = p0;pos(18944,20352,204),rot(0,0,0),order25(18944,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                   
-[droidUpdate] > droid165301 = p0;pos(18944,20352,204),rot(0,0,0),order25(18944,20352)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0                                                                                                                                                                                                   
+[updatePlayerPower] updatePlayerPower0 7413972539792->7424387835482
+[syncDebugEconomy] < economy0 = 7424387835482
 [droidUpdate] < droid165263 = p0;pos(17163,18791,204),rot(36735,0,0),order25(17163,18791)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0
 [droidUpdate] M droid165263 = p0;pos(17163,18791,204),rot(36735,0,0),order25(17163,18791)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0
 [droidUpdate] > droid165263 = p0;pos(17163,18791,204),rot(36735,0,0),order25(17163,18791)^0,action0,secondaryOrder1C,body205,sMove(status0,speed0,moveDir0,path0/0,src(0,0),target(0,0),destination(0,0),bump(0,0,0,0,(0,0),0)),exp0
@@ -497,7 +477,9 @@
 [structureUpdate] > structure810 = p0;pos(21056,20672,204),status1,type17, ,bld500,body500
 [structureUpdate] < structure817 = p0;pos(20032,20160,204),status1,type1,p226974,bld500,body1000
 [structureUpdate] > structure817 = p0;pos(20032,20160,204),status1,type1,p226974,bld500,body1000
-[structureUpdate] < structure815 = p0;pos(19008,20160,204),status1,type1, ,bld500,body1000
+[structureUpdate] < structure815 = p0;pos(19008,20160,204),status1,type1,p226974,bld500,body1000
+[structPlaceDroid] Placing new droid at (18944,20352)
+[generateSynchronisedObjectId] New objectId = 165301
 [structureUpdate] > structure815 = p0;pos(19008,20160,204),status1,type1, ,bld500,body1000
 [structureUpdate] < structure796 = p0;pos(20736,21120,204),status1,type3, ,bld500,body1000
 [structureUpdate] > structure796 = p0;pos(20736,21120,204),status1,type3, ,bld500,body1000
@@ -516,6 +498,7 @@
 [structureUpdate] < structure2560 = p0;pos(20160,21952,204),status1,type5, ,bld100,body600
 [structureUpdate] > structure2560 = p0;pos(20160,21952,204),status1,type5, ,bld100,body600
 [structureUpdate] < structure683 = p0;pos(19008,21504,204),status1,type16,p221562,bld500,body1000
+[requestPrecisePowerFor] requestPrecisePowerFor0,683 amount287762808832
 [structureUpdate] > structure683 = p0;pos(19008,21504,204),status1,type16,p221562,bld500,body1000
 [structureUpdate] < structure812 = p0;pos(20032,20672,204),status1,type17, ,bld500,body500
 [structureUpdate] > structure812 = p0;pos(20032,20672,204),status1,type17, ,bld500,body500
@@ -523,7 +506,9 @@
 [structureUpdate] > structure2561 = p0;pos(20160,21824,204),status1,type5, ,bld100,body600
 [structureUpdate] < structure2562 = p0;pos(20288,21824,204),status1,type5, ,bld100,body600
 [structureUpdate] > structure2562 = p0;pos(20288,21824,204),status1,type5, ,bld100,body600
-[structureUpdate] < structure806 = p0;pos(19520,20160,204),status1,type1, ,bld500,body1000
+[structureUpdate] < structure806 = p0;pos(19520,20160,204),status1,type1,p226974,bld500,body1000
+[structPlaceDroid] Placing new droid at (19456,20352)
+[generateSynchronisedObjectId] New objectId = 165303
 [structureUpdate] > structure806 = p0;pos(19520,20160,204),status1,type1, ,bld500,body1000
 [structureUpdate] < structure809 = p0;pos(21056,20160,204),status1,type1,p226974,bld500,body1000
 [structureUpdate] > structure809 = p0;pos(21056,20160,204),status1,type1,p226974,bld500,body1000
@@ -2920,4 +2905,4 @@
 [gameStateUpdate] Player 9 = ""
 [gameStateUpdate] Player 10 = ""
 [gameStateUpdate] My client version = master 4bf4d64
-##### END gameTime=234602, 2921 entries, CRC 0x02D499F2
+##### END gameTime=234602, 2906 entries, CRC 0x012A5EA7

@wzdev-ci
Copy link
Contributor Author

wzdev-ci commented Sep 8, 2018

Prot commented


Cyp, this is only at first glance, I have made some observations, DESYNC causes several reasons.
As a result almost always in the logs of the DESYNC problem with the production units. But the problem is similar to a large packet of network information.
Desync occurs when a condition of continuing production units PLUS:

  1. Transferring a large number of units to an ally
  2. Loading/unloading of a large number of units in / out of transport
  3. (3.2.3) If improvement flamethrower cyborgs to plasmite, at this moment a large number of cyborgs is converted to another type.
    As a consequence of all this is called "stuck" of new units, in close to factory of player, who has lost synchronization with the rest of the players. All this is most often seen on the maps, where a lot of resources, which means a lot of units for each player, and a lot of production in the queue. From here, any action with multiple units sametime as "transfer/modification/etc" calls desync.

@wzdev-ci
Copy link
Contributor Author

wzdev-ci commented Sep 9, 2018

Cyp <cyp@...> committed [99222]


In Warzone2100/warzone2100@99222df:

#CommitTicketReference repository="" revision="99222df5bd35cb566b0f1c9a34940a85ce1ddd84"
synch: Add some temporary debug info.

Refs #4785.

@wzdev-ci
Copy link
Contributor Author

wzdev-ci commented Sep 9, 2018

Cyp commented


Couldn't reproduce easily. To try to narrow it down slightly, would it be possible to reproduce with the above version (or later) and attach the logs again?

All clients get the logs from each other automatically (the p# in the filename says which client it's from), so the logs from one computer should be enough.

@wzdev-ci
Copy link
Contributor Author

Cyp commented


From https://forums.wz2100.net/viewtopic.php?f=6&t=14861&p=142661

@@ -1453,7 +1453,7 @@
 [aiUpdateStructure] buildPointsRemaining = 131
 [aiUpdateStructure] calcTemplateBuild(psSubject) = 302
 [aiUpdateStructure] IsFactoryCommanderGroupFull(psFactory) = 0
-[aiUpdateStructure] CheckHaltOnMaxUnitsReached(psStructure) = 0
+[aiUpdateStructure] CheckHaltOnMaxUnitsReached(psStructure) = 1
 [structureUpdate] > structure6783 = p0;pos(1216,2304,256),status1,type16,p221562,bld500,body2800
 [structureUpdate] < structure8753 = p0;pos(3904,960,256),status1,type5, ,bld100,body1680
 [structureUpdate] > structure8753 = p0;pos(3904,960,256),status1,type5, ,bld100,body1680

Thanks for the update — if I'm seeing it right, the CheckHaltOnMaxUnitsReached function sometimes returns 0 on client A but 1 on client B, at the moment when client A has 150 units and gives some to another player. Possible to reproduce now, the trick is to be at the unit limit and building units, before transferring.

@wzdev-ci
Copy link
Contributor Author

Cyp <cyp@...> changed status from new to closed

@wzdev-ci
Copy link
Contributor Author

Cyp <cyp@...> changed owner from `` to Cyp <cyp@wz2100.net>

@wzdev-ci
Copy link
Contributor Author

Cyp <cyp@...> changed resolution from `` to fixed

@wzdev-ci
Copy link
Contributor Author

Cyp <cyp@...> committed [1117874]


In Warzone2100/warzone2100@1117874:

#CommitTicketReference repository="" revision="1117874d85987e9a01acfaba19d4b42c97c5e18a"
synch: Move countUpdate() to start of gameStateUpdate().

Hopefully fixes #4785.

@wzdev-ci
Copy link
Contributor Author

pastdue changed status from closed to reopened

@wzdev-ci
Copy link
Contributor Author

pastdue changed resolution from fixed to ``

@wzdev-ci
Copy link
Contributor Author

pastdue commented


From: http://forums.wz2100.net/viewtopic.php?f=6&t=14861

master 1117874
the problem persists.
When units are transferred near the limit, there is desynk

@wzdev-ci
Copy link
Contributor Author

Cyp commented


@@ -1047,7 +1047,7 @@
 [droidUpdate] M droid164433 = p3;pos(1309,17074,256),rot(32342,0,0),order2(1344,17088)^0,action1,secondaryOrder1C,body1863,sMove(status4,speed25,moveDir32342,path2/0,src(1306,17088),target(1344,17088),destination(1344,17088),bump(0,0,0,0,(0,0),0)),exp0
 [fpathSetBlockingMap] blockingMap(272102,2,3,1) = 0CB2DC39 00000000
 [fpathRoute] fpathRoute(..., 164433, 1309, 17074, 1344, 17088, 2, 12, 1, 3) = FPR_WAIT
-[droidUpdate] > droid164433 = p3;pos(1308,17069,256),rot(34748,0,0),order2(1344,17088)^0,action1,secondaryOrder1C,body1863,sMove(status7,speed49,moveDir34748,path3/0,src(1344,17088),target(2031226832,21982),destination(1344,17088),bump(0,0,0,0,(0,0),0)),exp0
+[droidUpdate] > droid164433 = p3;pos(1309,17074,256),rot(25547,0,0),order2(1344,17088)^0,action1,secondaryOrder1C,body1863,sMove(status7,speed0,moveDir25547,path3/0,src(1344,17088),target(-1795557040,21980),destination(1344,17088),bump(0,0,0,0,(0,0),0)),exp0
 [droidUpdate] < droid164403 = p3;pos(9129,11372,0),rot(23742,0,0),order4(10176,1728)^0,action18,secondaryOrder1C,body434,sMove(status4,speed175,moveDir23742,path50/133,src(9115,11383),target(9722,10866),destination(10176,1728),bump(0,0,0,0,(0,0),0)),exp0
 [droidUpdate] M droid164403 = p3;pos(9129,11372,0),rot(23742,0,0),order4(10176,1728)^0,action18,secondaryOrder1C,body434,sMove(status4,speed175,moveDir23742,path50/133,src(9115,11383),target(9722,10866),destination(10176,1728),bump(0,0,0,0,(0,0),0)),exp0
 [droidUpdate] > droid164403 = p3;pos(9142,11361,0),rot(23752,0,0),order4(10176,1728)^0,action18,secondaryOrder1C,body434,sMove(status4,speed174,moveDir23752,path50/133,src(9129,11372),target(9722,10866),destination(10176,1728),bump(0,0,0,0,(0,0),0)),exp0
@@ -1162,7 +1162,7 @@
 [droidUpdate] > droid161585 = p3;pos(2271,16759,256),rot(51311,0,0),order2(2165,16895)^0,action1,secondaryOrder1C,body1035,sMove(status4,speed0,moveDir51311,path31/31,src(2240,16704),target(2165,16895),destination(2165,16895),bump(41527,0,0,0,(2468,16605),0)),exp0
 [droidUpdate] < droid161569 = p3;pos(1353,16912,256),rot(60213,0,0),order6(1344,17088)^1,action18,secondaryOrder1C,body770,sMove(status4,speed115,moveDir60213,path8/8,src(1359,16902),target(1344,17088),destination(1344,17088),bump(48860,0,0,0,(1446,16764),100102)),exp0
 [droidUpdate] M droid161569 = p3;pos(1353,16912,256),rot(60213,0,0),order6(1344,17088)^1,action18,secondaryOrder1C,body770,sMove(status4,speed115,moveDir60213,path8/8,src(1359,16902),target(1344,17088),destination(1344,17088),bump(48860,0,0,0,(1446,16764),100102)),exp0
-[droidUpdate] > droid161569 = p3;pos(1348,16921,256),rot(60199,0,0),order6(1344,17088)^1,action18,secondaryOrder1C,body770,sMove(status4,speed109,moveDir60199,path8/8,src(1353,16912),target(1344,17088),destination(1344,17088),bump(48860,0,0,0,(1446,16764),100102)),exp0
+[droidUpdate] > droid161569 = p3;pos(1348,16921,256),rot(60346,0,0),order6(1344,17088)^1,action18,secondaryOrder1C,body770,sMove(status4,speed109,moveDir60346,path8/8,src(1353,16912),target(1344,17088),destination(1344,17088),bump(48860,0,0,0,(1446,16764),100102)),exp0
 [droidUpdate] < droid161531 = p3;pos(11024,3842,256),rot(612,0,0),order14(2560,16896)^0,action1,secondaryOrder1C,body147,sMove(status4,speed198,moveDir612,path24/145,src(11023,3822),target(11064,4520),destination(2560,16896),bump(58640,0,0,0,(10244,1690),256602)),exp0
 [droidUpdate] M droid161531 = p3;pos(11024,3842,256),rot(612,0,0),order14(2560,16896)^0,action1,secondaryOrder1C,body147,sMove(status4,speed198,moveDir612,path24/145,src(11023,3822),target(11064,4520),destination(2560,16896),bump(58640,0,0,0,(10244,1690),256602)),exp0
 [droidUpdate] > droid161531 = p3;pos(11025,3862,256),rot(614,0,0),order14(2560,16896)^0,action1,secondaryOrder1C,body147,sMove(status4,speed198,moveDir614,path24/145,src(11024,3842),target(11064,4520),destination(2560,16896),bump(58640,0,0,0,(10244,1690),256602)),exp0

At first glance, looks like it's a different bug, even if the trigger and symptoms are the same.

@wzdev-ci
Copy link
Contributor Author

Cyp commented


Couldn't reproduce the last bug easily. Added some more debug to the logs in 644ffe39672b9f2637bccabd8cd77f8a45340694, not sure if it can help, but maybe new logs from that version (or later) might help narrow it down slightly.

@wzdev-ci
Copy link
Contributor Author

andrvaut uploaded file only transfer.tar.xz (89.1 KiB)

@wzdev-ci
Copy link
Contributor Author

andrvaut uploaded file transfer and bot.tar.xz (76.0 KiB)

@wzdev-ci
Copy link
Contributor Author

andrvaut commented


In the last master, the desink began to appear much less frequently.
In the third game without a bot, we did not receive the desink in 15 minutes of the transfer of the army. But the player was able to transfer up to 300 units.

@wzdev-ci
Copy link
Contributor Author

Cyp commented


Thanks — in most of the new desynchs, I think they were due to gtnz using version 1117874 of the game. It's important for everyone to use the exact same version.

One real desync in there (while processing a message to transfer droids to another player), between players with the same version, though:

@@ -2975,69 +2975,113 @@
 [recvPlayerGameTime] GAME_GAME_TIME p2;lat10,ct454602,crc6930,wlat1077
 [recvMessage] Processing player 3, message GAME_GIFT
 [recvGiftDroids] < droid183863 = p3;pos(6329,6315,136),rot(61620,63945,64627),order2(5087,7712)^0,action1,secondaryOrder1C,body266,sMove(status4,speed194,moveDir61620,path14/21,src(6327,6314),target(5814,6848),destination(5087,7712),bump(61620,455602,0,0,(6327,6314),442302)),exp0
+[removeDroidBase] # droid183863 = p3;pos(6329,6315,136),rot(61620,63945,64627),order2(5087,7712)^0,action1,secondaryOrder1C,body266,sMove(status4,speed194,moveDir61620,path14/21,src(6327,6314),target(5814,6848),destination(5087,7712),bump(61620,455602,0,0,(6327,6314),442302)),exp0                                                                                                                                          
+[generateSynchronisedObjectId] New objectId = 184329
 [recvGiftDroids] > droid183863 = p3;pos(6329,6315,136),rot(61620,63945,64627),order2(5087,7712)^0,action1,secondaryOrder1C,body266,sMove(status4,speed194,moveDir61620,path14/21,src(6327,6314),target(5814,6848),destination(5087,7712),bump(61620,455602,0,0,(6327,6314),442302)),exp0
…
@@ -3054,9 +3098,9 @@
 [gameStateUpdate] Player 9 = "Nexus"
 [gameStateUpdate] Player 10 = ""
 [countUpdate] counts[0] = {droid: 128, command: 0, constructor: 4, mission: 0, transporter: 0}
-[countUpdate] counts[1] = {droid: 150, command: 0, constructor: 4, mission: 0, transporter: 0}
+[countUpdate] counts[1] = {droid: 172, command: 0, constructor: 4, mission: 0, transporter: 0}
 [countUpdate] counts[2] = {droid: 150, command: 0, constructor: 4, mission: 0, transporter: 0}
-[countUpdate] counts[3] = {droid: 150, command: 0, constructor: 0, mission: 0, transporter: 0}
+[countUpdate] counts[3] = {droid: 128, command: 0, constructor: 0, mission: 0, transporter: 0}
 [countUpdate] counts[4] = {droid: 0, command: 0, constructor: 0, mission: 0, transporter: 0}

@wzdev-ci
Copy link
Contributor Author

andrvaut commented


Yes, this is our mistake. We noticed this after all the tests.
But the version is quite fresh, from the last wizard differs only by fixing the camera and adding an enhanced debug desynk.

@wzdev-ci
Copy link
Contributor Author

Cyp commented


The thing is that if one client doesn't have the enhanced synch debug but the other does, then the clients generate different synch logs, and therefore believe they are out of synch with each other, even when they aren't.

Not sure why the bot didn't say anything — oh, oops, wrong ticket number, that's why…, but this might be fixed in b0cc06955d1835c299339a4393d481a41b4e4610 — please reopen if not.

@wzdev-ci
Copy link
Contributor Author

Cyp changed status from reopened to closed

@wzdev-ci
Copy link
Contributor Author

Cyp changed resolution from `` to fixed

@wzdev-ci
Copy link
Contributor Author

Cyp commented


Oh, oops again, can't reopen if not marked as (hopefully) fixed.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant