No, there is not a mod causes this desync.Berg wrote: ↑26 Mar 2019, 08:18 error |05:12:45: [loadSaveStructure:4984] Structure ECM1PylonMk1, x coord too near the edge of the map. id - 17
error |05:12:45: [loadSaveStructure:4990] Structure ECM1PylonMk1, y coord too near the edge of the map. id - 288
error |05:12:45: [loadSaveStructure:4990] Structure ECM1PylonMk1, y coord too near the edge of the map. id - 63
error |05:12:45: [loadSaveStructure:4984] Structure ECM1PylonMk1, x coord too near the edge of the map. id - 480
And its a mapmod the map is badly made.
I think editing rules.js is a modall this mods and bad maps.
Here a clean map I clear every error i see, even
Code: Select all
error |05:12:45: [loadSaveStructure:4984] Structure ECM1PylonMk1, x coord too near the edge of the map. id - 17
which is not an error from mapmod, It's just a structure placed close to the edge, not a mapmod.
Also i realign every object to the surface. And still map causes desync.
For now i 'm looking to code astar.cpp:631
Code: Select all
uint32_t checksumMap = 0, checksumDangerMap = 0, factor = 0;
for (int y = 0; y < mapHeight; ++y)
for (int x = 0; x < mapWidth; ++x)
{
map[x + y * mapWidth] = fpathBaseBlockingTile(x, y, type.propulsion, type.owner, type.moveType);
checksumMap ^= map[x + y * mapWidth] * (factor = 3 * factor + 1);
}
if (!isHumanPlayer(type.owner) && type.moveType == FMT_MOVE)
{
std::vector<bool> &dangerMap = blockMap->dangerMap;
dangerMap.resize(mapWidth * mapHeight);
for (int y = 0; y < mapHeight; ++y)
for (int x = 0; x < mapWidth; ++x)
{
dangerMap[x + y * mapWidth] = auxTile(x, y, type.owner) & AUXBITS_THREAT;
checksumDangerMap ^= dangerMap[x + y * mapWidth] * (factor = 3 * factor + 1);
}
}
syncDebug("blockingMap(%d,%d,%d,%d) = %08X %08X", gameTime, psJob->propulsion, psJob->owner, psJob->moveType, checksumMap, checksumDangerMap);
And how can i dump both version of array of two players "dangerMap" when desync is appear? I want to see diff of coordinates and auxbits that take something wrong.