sentrywiz
S
sentrywiz
My map causes desyncs. Multiple people tried it and each got desyncs.
This is the first time someone reports desyncs to me, so this is new to me.
Supposedly, the desync happens when people's armies are spawned in the arena. All the previous triggers have no game here, since most of them are selection triggers for the game.
Also I've read 7 threads on desyncs and most of them tell of:
- Misusing local player scripts
- Using the pan camera as necessary trigger
I'm not using either of those however. But desyncs happen. So I will post the triggers that I believe may contain some evidence of probable desync. I hope some of you with more knowledge than me can help me in spotting what is wrong.
Testing notes: I've tested this map with 9 bots and all triggers work flawlessly. But I haven't tested it online and I couldn't get JNPG 2.0 Multiplayer Emulation to work on my PC. Idk why. So while I can vouch that my triggers work, I'm sure the culprit is somewhere there.
Quick note: most triggers are launched by other triggers. I did this to avoid confusion so there is a main trigger which starts the cycle. That trigger however doesn't do anything but start other triggers.
I'm re-using the same variable for three loops. I have a vague hope that this might be wrong since in my logic, the three loops happen one by one and not all at the same time.
Maybe the "Pan Camera For Player[X] over 0.00 seconds causes desync?
This is the first time someone reports desyncs to me, so this is new to me.
Supposedly, the desync happens when people's armies are spawned in the arena. All the previous triggers have no game here, since most of them are selection triggers for the game.
Also I've read 7 threads on desyncs and most of them tell of:
- Misusing local player scripts
- Using the pan camera as necessary trigger
I'm not using either of those however. But desyncs happen. So I will post the triggers that I believe may contain some evidence of probable desync. I hope some of you with more knowledge than me can help me in spotting what is wrong.
Testing notes: I've tested this map with 9 bots and all triggers work flawlessly. But I haven't tested it online and I couldn't get JNPG 2.0 Multiplayer Emulation to work on my PC. Idk why. So while I can vouch that my triggers work, I'm sure the culprit is somewhere there.
Quick note: most triggers are launched by other triggers. I did this to avoid confusion so there is a main trigger which starts the cycle. That trigger however doesn't do anything but start other triggers.
I'm re-using the same variable for three loops. I have a vague hope that this might be wrong since in my logic, the three loops happen one by one and not all at the same time.
-
Spawn Neutral Hostiles
- Events
-
Conditions
- Bool_CreepsAllowed Equal to True
-
Actions
-
For each (Integer Int_Loop) from 1 to 46, do (Actions)
-
Loop - Actions
- Set tempLoc = (Center of RegionArray[Int_Loop])
- Set tempLoc2 = (tempLoc offset by 150.00 towards 180.00 degrees)
- Set tempLoc3 = (tempLoc offset by 150.00 towards 360.00 degrees)
- Unit - Create 1 Level3Unit[(Random integer number between 1 and 8)] for Neutral Hostile at tempLoc facing 270.00 degrees
- Unit - Set (Last created unit) acquisition range to 200.00
- Unit - Create 1 Level1Unit[(Random integer number between 1 and 8)] for Neutral Hostile at tempLoc2 facing 270.00 degrees
- Unit - Set (Last created unit) acquisition range to 200.00
- Unit - Create 1 Level1Unit[(Random integer number between 1 and 8)] for Neutral Hostile at tempLoc3 facing 270.00 degrees
- Unit - Set (Last created unit) acquisition range to 200.00
- Custom script: call RemoveLocation ( udg_tempLoc )
- Custom script: call RemoveLocation ( udg_tempLoc2 )
- Custom script: call RemoveLocation ( udg_tempLoc3 )
-
Loop - Actions
- Set Int_Loop = 0
-
For each (Integer Int_Loop) from 47 to 54, do (Actions)
-
Loop - Actions
- Set tempLoc = (Center of RegionArray[Int_Loop])
- Set tempLoc2 = (tempLoc offset by 150.00 towards 180.00 degrees)
- Set tempLoc3 = (tempLoc offset by 150.00 towards 360.00 degrees)
- Unit - Create 1 Level5Unit[(Random integer number between 1 and 15)] for Neutral Hostile at tempLoc facing 270.00 degrees
- Unit - Set (Last created unit) acquisition range to 200.00
- Unit - Create 1 Level2Unit[(Random integer number between 1 and 8)] for Neutral Hostile at tempLoc2 facing 270.00 degrees
- Unit - Set (Last created unit) acquisition range to 200.00
- Unit - Create 1 Level2Unit[(Random integer number between 1 and 8)] for Neutral Hostile at tempLoc3 facing 270.00 degrees
- Unit - Set (Last created unit) acquisition range to 200.00
- Custom script: call RemoveLocation ( udg_tempLoc )
- Custom script: call RemoveLocation ( udg_tempLoc2 )
- Custom script: call RemoveLocation ( udg_tempLoc3 )
-
Loop - Actions
- Set Int_Loop = 0
-
For each (Integer Int_Loop) from 55 to 64, do (Actions)
-
Loop - Actions
- Set tempLoc = (Center of RegionArray[Int_Loop])
- Set tempLoc2 = (tempLoc offset by 150.00 towards 180.00 degrees)
- Set tempLoc3 = (tempLoc offset by 150.00 towards 360.00 degrees)
- Unit - Create 1 Level8Unit[(Random integer number between 1 and 10)] for Neutral Hostile at tempLoc facing 270.00 degrees
- Unit - Set (Last created unit) acquisition range to 200.00
- Unit - Create 1 Level6Unit[(Random integer number between 1 and 15)] for Neutral Hostile at tempLoc2 facing 270.00 degrees
- Unit - Set (Last created unit) acquisition range to 200.00
- Unit - Create 1 Level4Unit[(Random integer number between 1 and 8)] for Neutral Hostile at tempLoc3 facing 270.00 degrees
- Unit - Set (Last created unit) acquisition range to 200.00
- Custom script: call RemoveLocation ( udg_tempLoc )
- Custom script: call RemoveLocation ( udg_tempLoc2 )
- Custom script: call RemoveLocation ( udg_tempLoc3 )
-
Loop - Actions
- Set Int_Loop = 0
- Trigger - Run Move Player Legions <gen> (checking conditions)
- Trigger - Run Create Show MB <gen> (ignoring conditions)
-
For each (Integer Int_Loop) from 1 to 46, do (Actions)
Maybe the "Pan Camera For Player[X] over 0.00 seconds causes desync?
-
Move Player Legions
- Events
- Conditions
-
Actions
-
For each (Integer Int_Loop) from 1 to 10, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Player[Int_Loop] slot status) Equal to Is playing
- (Number of units in PlayerGroup[Int_Loop]) Greater than 0
-
Then - Actions
- Unit - Hide Player_DummyPicker[Int_Loop]
-
Unit Group - Pick every unit in PlayerGroup[Int_Loop] and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- Int_Loop Less than or equal to 5
-
Then - Actions
- Set tempLoc = (Center of Player_Region[Int_Loop])
- Camera - Pan camera for Player[Int_Loop] to tempLoc over 0.00 seconds
- Unit - Make (Picked unit) Vulnerable
- Unit - Move (Picked unit) instantly to tempLoc, facing 90.00 degrees
- Selection - Select PlayerGroup[Int_Loop] for Player[Int_Loop]
- Custom script: call RemoveLocation ( udg_tempLoc )
-
Else - Actions
- Set tempLoc = (Center of Player_Region[Int_Loop])
- Camera - Pan camera for Player[Int_Loop] to tempLoc over 0.00 seconds
- Unit - Make (Picked unit) Vulnerable
- Unit - Move (Picked unit) instantly to tempLoc, facing 270.00 degrees
- Selection - Select PlayerGroup[Int_Loop] for Player[Int_Loop]
- Custom script: call RemoveLocation ( udg_tempLoc )
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- Set Int_Loop = 0
-
For each (Integer Int_Loop) from 1 to 10, do (Actions)