Я на самом деле сильно сомневаюсь, что мне тут ответят, ибо перерыл перед этим несколько аналогичных вопросов на этом сайте, хайве и рандомных сайтах 00-ых, но...
Какие могут быть причины десинхрона в картах КРОМЕ JASS?
В моей карте используется очень мало триггеров, и причина скорее всего не в них (триггеров аля "Каждые N секунд" или "Через N секунд" по пальцам руки пересчитать, и я их отключал для тестов), ВСЕ триггеры на GUI, утечки активно чистятся (Handle counter показывал значения от 1800 до 14000, и десинхронило вне зависимости от размеров).
Десинхронит в случайный промежуток времени (обычно от 5 до 30 минут игры), по случайным причинам (были замечены десинхроны от атаки нейтрально-враждебного крипа-дракона, от найма героя, от начала постройки фермы, от входа в триггерно созданный портал...) и у случайного количества человек (вылететь может за раз как 1, так и все)
Прикладываю саму карту (вкрученный счётчик хендлов за Jass не считается, десинхронило прекрасно и без него)

К сожалению избавившись от всех wait'ов в карте и остановив принудительно музыку (нет звука - нет проблемы с его длинной) не избавило меня от десинхов и причина кроется где то в другом. Из стабильного только нашёл, что десинх у одного из игроков в 90% случаях происходит при нажатии способности "Вниз" с заменой юнита. Возможно, карте просто дурно от такого числа объектов на экране.
`
ОЖИДАНИЕ РЕКЛАМЫ...
32
У тебя вейты, в том числе длинные, после которых идет создания юнитов и прочее, так вот вейты неточны, это может приводить к дисинхам, когда разница между игроками станет критичной.
Так же из причин - длина звукового файла, почему то GetSoundFileDuration не точный, у разных игроков почему то он дает иногда разную длинну файла, поэтому длинну звука всегда задаем вручную.
Проверяем.
11
Звучит интересно. Попробую в ближайшие дни починить и проверить. Отмечу как ответ, если сработает...
11
К сожалению избавившись от всех wait'ов в карте и остановив принудительно музыку (нет звука - нет проблемы с его длинной) не избавило меня от десинхов и причина кроется где то в другом. Из стабильного только нашёл, что десинх у одного из игроков в 90% случаях происходит при нажатии способности "Вниз" с заменой юнита. Возможно, карте просто дурно от такого числа объектов на экране.
Принятый ответ
8
Некоторое количество времени назад я проводил исследование десинков в моей карте.
Они случались после 20 минуты в игре, но были раздражающе часты. Отваливалась часто половина игроков, что было крайне раздражающе.
Вершиной моего расследования стал небольшой микс для логгирования всякого, позволяющий потом сравнить это всякое у разных игроков.
Я выяснил, что в моем случае причиной проблем были 2 вещи - пламя феникса, и что-то в поведении нейтралов на 12+ слотах. (защита союзников или типо того, я не разобрался до конца.)
Сам микс я не довел до окончательной красоты, но на текущий момент он вполне может быть использован для записи JASS и тэгов в игре.
В общем виде, идея довольно проста - сделать запись у двух игроков до десинхрона и сравнить что получилось. Соответственно, если один игрок отвалился а другой остался - один десинкнул и можно сравнивать.
Если воспроизводится в реплеях - совсем хорошо. В моем конретном случае при просмотре одного и того же реплея несколько раз вылезала разница, например, и это было заметно. Если не воспроизводится - остается только отыскать тестеров, которые согласятся посмотреть.
Микс приложил, соответственно.
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.