Странная проблема когда я пытаюсь сделать РПГ-карту и протестировать ее через ирину. Когда тестируем вдвоем с кем-то, все работает идеально, но если игроков 3 или больше то через несколько минут после начала, в случайное время, игра десинхронится. GetLocalPlayer() у меня в карте есть, но он вроде как используется только в показе текстовых сообщений и это десинхрона не вызывает. Способки тоже скорее всего нет... Я вот думаю на разные штуки которые используют хеш-таблицы, вроде системы дропа. Ошибка довольно уникальная и странная, может кто-то знает что ее вызывает?

Принятый ответ

Инициализация хешки в блоке глобалок не вызывает десинков
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
1
1 год назад
0
То, что ты описал похоже на 23 рассы, там постоянно десинхрон если не перезапустить. Особенность моей ошибки в том что ее десинхронит не на старте, а через пару минут, при чем точное время каждый раз разное. По поводу кода - я сейчас сделал новую такую же карту, попробую заменить все функции в карте на простое гуи и посмотрю будет ли десинкать. Если да, то на этом мои полномочия все, а если нет, то по одной системе найду ту которая багается и закреплю в ответ, что бы если у кого ещё так будет он знал на что ориентироваться. Я вопрос задал этот на случай если такое (десинх от 3 игроков посреди игры) вызывается чем-то конкретным, например неправильным использованием хештейблов. Раз нет буду методом тыка. Код карты не вставил потому что его слишком много.
0
14
1 год назад
Отредактирован host_pi
0
Особенность моей ошибки в том что ее десинхронит не на старте
а кто-то говорил что обязательно десинхронить на старте?
вообще-то карт на которых со старта десинхрон не так и много, гораздо больше карт в которых десинх через 5-10-20 минут игры
ещё 3 причины:
  1. кстати на iccup десинхроны зависят еще и от их ланчера. те карты, которые на ирине НИКОГДА и НИ РАЗУ не десинхронили - на iccup волшебным образом начинают критовать и десинхать
  2. еще десинх бывает если взять оригинальный варик, запустить его через ланчер iccup и подключиться к игре на ирину
  3. еще десинх бывает если не совпадает твой ник на ирине и в игре (в некоторых картах прямо вообще можно 100% отлавливать такой десинх через ввод -кода, который есть в карте)
но эти 3 причины можно быстро, просто, один раз и навсегда вылечить лично своими действиями как игрока, а вот десинх из-за кода в карте будучи игроком не вылечишь ничем кроме постоянного ребута варика
0
1
1 год назад
0
Возникли подозрения, что дело в цикле на 500 повторений. Он не разу не триггерился, т.к. там куча ифов в триггере на этот цикл, но почему-то без него вылетает намного меньше. Впрочем ещё несколько дней я буду в этом убеждатся.
0
14
1 год назад
Отредактирован host_pi
0
ты тестировал по ребуту варика? если ты в соло покатаешь в игру и не ребутнишь а твой друг ребутнит и к тебе зайдет - словит ли он десинх?
без него вылетает намного меньше
вылетать не должно вообще ни разу
хотя это зависит от навороченности карты. когда нетиз ещё жил и позволял играть в навороченные китайские карты размером по 400 МБ (которые даже JN loader открывал со скрипом и частично неработающими функциями) (и я сейчас не про импорт многотонных моделей, а про движок в карте и новые возможности всяких окошек и менюшек) - то не просто так сам нетиз при подключении к кому-то в игру открывал новое окно варика, а при отключении от игры это окно закрывал - т.е. принудительно делал так, что на каждую игру у всех игроков открывается новое окно.
другое дело, насколько у тебя там навороченная карта?
и странно, что в этой теме не было дано ни одной ссылки по оптимизации кода от других картоделов
чё-нить хотя бы такое
хотя конкретно десинх или криты это более специфичный и тонкий вопрос чем общая оптимизация
0
1
1 год назад
0
Тестовая карта весит 300 кб и там пара триггеров всего. Десинка в твоей ситуации не будет, механизм десинка хитрее. Но я уже почти закончил, скоро запощу что давало проблема
0
1
1 год назад
0
ты тестировал по ребуту варика? если ты в соло покатаешь в игру и не ребутнишь а твой друг ребутнит и к тебе зайдет - словит ли он десинх?
без него вылетает намного меньше
вылетать не должно вообще ни разу
хотя это зависит от навороченности карты. когда нетиз ещё жил и позволял играть в навороченные китайские карты размером по 400 МБ (которые даже JN loader открывал со скрипом и частично неработающими функциями) (и я сейчас не про импорт многотонных моделей, а про движок в карте и новые возможности всяких окошек и менюшек) - то не просто так сам нетиз при подключении к кому-то в игру открывал новое окно варика, а при отключении от игры это окно закрывал - т.е. принудительно делал так, что на каждую игру у всех игроков открывается новое окно.
другое дело, насколько у тебя там навороченная карта?
и странно, что в этой теме не было дано ни одной ссылки по оптимизации кода от других картоделов
чё-нить хотя бы такое
хотя конкретно десинх или криты это более специфичный и тонкий вопрос чем общая оптимизация
Globals - hasthable x = InitHashtable - endglobals. Как сделать что бы этот код не вызвал ошибку загрузки карты = десинхрон?
0
8
1 год назад
0
Когда-то давно я предлагал инструмент для продвинутого поиска причин десинхронов, работающий не всегда, но все равно полезный.
А еще там есть настройка на запись того, как исполнялся jass код, как в известной программе для этого дела, так что при желании вы можете в точности просмотреть еще и порядок выполнения кода и где же вознико расхождение в жасе, если оно возникло там.
Настройка hookjvm = true отвечает за это.
Ну а если вы думаете, что проблема точно в той самой строчке, то попробуйте запихать инициализацию ХТ в отдельный триггер на событие прошло времени(0) или в функцию, вызываемую из мейна любым другим образом.
0
14
1 год назад
Отредактирован host_pi
0
я предлагал
делай релиз отдельным ресурсом, а не в коменте, который никто не прочитает
если десинхов на картах будет меньше - то от этого выйграют все
0
28
1 год назад
0
Инициализация хешки в блоке глобалок не вызывает десинков
Принятый ответ
0
14
1 год назад
Отредактирован host_pi
0
Инициализация хешки в блоке глобалок не вызывает десинков
а что вызывает десинхи? есть статья с примерами?
в гугле xgm сплошные Q A и ответы в стиле "да нет" от бывалых
вот только одну статью 2011 года про десинх нашёл
Загруженные файлы
0
28
1 год назад
0
а что вызывает десинхи? есть статья с примерами?
Да много чего, обычно неверное использование GetLocalPlayer. А так много чего, например порча в некоторых ситуациях.
Я лишь указал на то, что конкретно тот кейс не вызывает этой проблемы.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.