- Joined
- Jun 12, 2010
- Messages
- 413
Hello everyone, so this is basically my last resort, as I have tried everything that I could to get rid of desyncs, but it's all been for naught.
First, a bit of background: I develop my map mainly in the 1.29 World Editor, using WEX. I've been using w3x2lni and GitHub for version control for the past few months (which has made my workflow much more efficient). Thus, my releases are usually made using Editor Version 6060 and optimized to the SLK format defined by w3x2lni. I've tried releasing versions that were not optimized and were saved with 1.31, but it didn't change a thing (see below).
My map is a sandbox roleplaying map, so the most important feature is pretty much allowing players to modify units visually in any way that they want, and to offer a vast amount of custom models for both troops/heroes and decorations.
Unfortunately, this kind of map usually has many problems with desyncs, crashes and the like. I’ve taken a number of precautions to avoid the same fate, but no matter all the caution I exercise, my map is no different.
I think that I've mostly fixed the crashes that used to happen randomly. I've always thought that they were because of some corrupted models, and when I found out about the MDX Sanity Checker, I set out to remove as many errors and warnings as I could from the 2000+ imports inside of the map. It seems that sometimes players still crash, but I've only had 1 reliable crash report since I sanitzed the models.
Anyway, the nature of the desyncs is basically random. I tried replicating everything that has been reported to have occured before a desync, and it has never been reproduceable. Usually it's just a single player that desyncs, sometimes two. Usually once per game, sometimes 2 or 3 times. Sometimes, no desyncs happen at all. They don't exactly make the map unplayable, especially since you can save stuff and load it pretty quickly in a new game, but they are VERY frustrating.
Here are the things I have tried to do to fix desyncs:
Even if you don't know or don't have the time to look through my map to see exactly what's wrong, if you have any idea of something that could cause a desync that is not related to JASS code, that would already be a big help!
Download link for latest version of the map (at the time of this post): Download
Link to war3map.j. It's a bit hard to read in a few places, since there is a lot of translation from vJass.
Here are links to the Libraries that execute local client code:
Save System (this uses Preload natives to save stuff locally. Mostly in the SaveIO library, though the LoadRequest function in SaveNLoad.j (for legacy saves made before patch 1.31) also executes local code.
Camera Commands (some variables are set locally, and the camera values are also set locally)
Periodic Hint System (has a local boolean variable that can be changed with a command to enable/disable tips)
AutoRectEnvironment (allows for players to define a custom terrain fog that is limited only to a certain rect in the map. The local player's current camera position is used to determine the current fog.)
Search Commands (these allow players to search for a certain builder by name and select it. The only functions executed locally are SelectUnit and ClearSelection)
Rotate Command (this command sets the parameters for a certain ability and sets the ability's Tooltip and ExtendedTooltip locally)
First/Third Person Camera System (this has been disabled while I test for desync causes, so it can't really be the culprit)
First, a bit of background: I develop my map mainly in the 1.29 World Editor, using WEX. I've been using w3x2lni and GitHub for version control for the past few months (which has made my workflow much more efficient). Thus, my releases are usually made using Editor Version 6060 and optimized to the SLK format defined by w3x2lni. I've tried releasing versions that were not optimized and were saved with 1.31, but it didn't change a thing (see below).
My map is a sandbox roleplaying map, so the most important feature is pretty much allowing players to modify units visually in any way that they want, and to offer a vast amount of custom models for both troops/heroes and decorations.
Unfortunately, this kind of map usually has many problems with desyncs, crashes and the like. I’ve taken a number of precautions to avoid the same fate, but no matter all the caution I exercise, my map is no different.
I think that I've mostly fixed the crashes that used to happen randomly. I've always thought that they were because of some corrupted models, and when I found out about the MDX Sanity Checker, I set out to remove as many errors and warnings as I could from the 2000+ imports inside of the map. It seems that sometimes players still crash, but I've only had 1 reliable crash report since I sanitzed the models.
Anyway, the nature of the desyncs is basically random. I tried replicating everything that has been reported to have occured before a desync, and it has never been reproduceable. Usually it's just a single player that desyncs, sometimes two. Usually once per game, sometimes 2 or 3 times. Sometimes, no desyncs happen at all. They don't exactly make the map unplayable, especially since you can save stuff and load it pretty quickly in a new game, but they are VERY frustrating.
Here are the things I have tried to do to fix desyncs:
- Went through pretty much all of my code and searched for desyncs. At the moment, I cannot find any more desyncs that could be caused by code.
- Removed all locally created strings. Some local strings may still be created if the player is using a non-english installation of wc3, though.
- Stopped optimizing the map using SLK.
- Saved the map using the 1.31 Editor.
- Reduced maximum player count from 24 to 12.
- Reduced the tileset from 16 textures to 15, fixing possibly corrupted tiles.
Even if you don't know or don't have the time to look through my map to see exactly what's wrong, if you have any idea of something that could cause a desync that is not related to JASS code, that would already be a big help!
Download link for latest version of the map (at the time of this post): Download
Link to war3map.j. It's a bit hard to read in a few places, since there is a lot of translation from vJass.
Here are links to the Libraries that execute local client code:
Save System (this uses Preload natives to save stuff locally. Mostly in the SaveIO library, though the LoadRequest function in SaveNLoad.j (for legacy saves made before patch 1.31) also executes local code.
Camera Commands (some variables are set locally, and the camera values are also set locally)
Periodic Hint System (has a local boolean variable that can be changed with a command to enable/disable tips)
AutoRectEnvironment (allows for players to define a custom terrain fog that is limited only to a certain rect in the map. The local player's current camera position is used to determine the current fog.)
Search Commands (these allow players to search for a certain builder by name and select it. The only functions executed locally are SelectUnit and ClearSelection)
Rotate Command (this command sets the parameters for a certain ability and sets the ability's Tooltip and ExtendedTooltip locally)
First/Third Person Camera System (this has been disabled while I test for desync causes, so it can't really be the culprit)