Добавлен Lord_Tomat
Я на самом деле сильно сомневаюсь, что мне тут ответят, ибо перерыл перед этим несколько аналогичных вопросов на этом сайте, хайве и рандомных сайтах 00-ых, но...
Какие могут быть причины десинхрона в картах КРОМЕ JASS?
В моей карте используется очень мало триггеров, и причина скорее всего не в них (триггеров аля "Каждые N секунд" или "Через N секунд" по пальцам руки пересчитать, и я их отключал для тестов), ВСЕ триггеры на GUI, утечки активно чистятся (Handle counter показывал значения от 1800 до 14000, и десинхронило вне зависимости от размеров).
В моей карте используется очень мало триггеров, и причина скорее всего не в них (триггеров аля "Каждые N секунд" или "Через N секунд" по пальцам руки пересчитать, и я их отключал для тестов), ВСЕ триггеры на GUI, утечки активно чистятся (Handle counter показывал значения от 1800 до 14000, и десинхронило вне зависимости от размеров).
Десинхронит в случайный промежуток времени (обычно от 5 до 30 минут игры), по случайным причинам (были замечены десинхроны от атаки нейтрально-враждебного крипа-дракона, от найма героя, от начала постройки фермы, от входа в триггерно созданный портал...) и у случайного количества человек (вылететь может за раз как 1, так и все)
Прикладываю саму карту (вкрученный счётчик хендлов за Jass не считается, десинхронило прекрасно и без него)
Принятый ответ
К сожалению избавившись от всех wait'ов в карте и остановив принудительно музыку (нет звука - нет проблемы с его длинной) не избавило меня от десинхов и причина кроется где то в другом. Из стабильного только нашёл, что десинх у одного из игроков в 90% случаях происходит при нажатии способности "Вниз" с заменой юнита. Возможно, карте просто дурно от такого числа объектов на экране.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Так же из причин - длина звукового файла, почему то GetSoundFileDuration не точный, у разных игроков почему то он дает иногда разную длинну файла, поэтому длинну звука всегда задаем вручную.
Проверяем.
Ред. Lord_Tomat
Ред. goodlyhero
В общем виде, идея довольно проста - сделать запись у двух игроков до десинхрона и сравнить что получилось. Соответственно, если один игрок отвалился а другой остался - один десинкнул и можно сравнивать.