Полная Версия: Потеря синхронизации в мультиплеере
zxlostsoul
При игре по сети в Fallout иногда наблюдается потеря синхронизации — у одного из игроков события начинают идти иначе чем у других, например не передаются какие-то действия персонажей. Наблюдается на версии 1.27 от 1С и от Фаргуса, без модов и с ними, при соединении по Tungle и по GameRanger, при абсолютно одинаковых играх (полная копия папки с игрой).

Ах да, режим игры — пошаговый (рилтайм в Фоллауте, как ценитель 1 и 2 частей — не признаю).

Не подскажете, чем вызывается и как лечится? Или остаётся только смириться?
Wozrogdenec
QUOTE
у одного из игроков события начинают идти иначе чем у других, например не передаются какие-то действия персонажей.
Мне любопытно, но я не понял. Можно пример?
Two Eyed Yum
Например, внезапно в чате тебе пишут "ahaha ya tebya ubil!", а ты вроде как живой... У каждого идет своя игра, и дальнейший обмен данными в сетевой игре приводит к еще большему количеству ошибок и бредовых ситуаций.

Случается не только в Тактиксе, особо замудреные карты в Warcraft3 этим же страдали. Обычно — из-за большого количества скриптов в карте. А в чем тут причина — честно не знаю, если никаких модов нет и изменений в файлы игры внесено не было.
zxlostsoul
Причины, которые нашёл в интернете:
1. Если на карте размещены entitles, которых нет в папке с игрой.
2. Если два бойца имеют одинаковые имена или являются клонами.
3. При использовании стандартных бойцов.

Надеюсь кому-то поможет. Если знаете какие-то другие возможные причины — пишите.
Shtorm
Гм, какая больная тема.. Сталкивался с этим, но, если честно, не совсем поверил, так как до этого здесь обсуждали дисконнект из-за "неправильных" приёмов, а откровенно говоря, читерства и так далее. Было обсуждено, что дисконнект однозначный, и читерить практически не представляется возможным. К чему это я  — да ситуация у нас ровно такая же, только "читерит" уже компьютер.
Ситуация: 1.27 1C у меня, Хамачи, Штурм, у каждого самые слабые бойцы и собака (не знаю вот уж, важно ли это :) ). Вначале всё нормально, почерк противника характерный, потом открывает брешь в обороне, тоже не придал значения. Потом он по-глупому, скажем так, потерял 2 бойцов (прорывался, не атакуя собаку). Бой был динамичным, в результате я победил. А потом он написал, что я в целом практически не двигался и выиграл он. Я тогда не придал особого значения, поэтому не проверял. Но до этого отыграли не один бой, такого не было. При этом пункты II и III были, но всё было в порядке. По entitles ничего не могу сказать, не знаю про них.
На мой взгляд, странно то, что компьютер выполняет действия, которые ему игрок не задавал. Даже если такое имеет место быть, все они выглядят очень осмысленными и серьёзно отличаются от ИИ.
Как вариант можно отыграть контрольные партии, используя программу слежения за монитором противника на другом компьютере. Или же записать видео, а потом и сравнивать. С удовольствием приму в этом участие.
"Пока всё." :)
Buzzil
Тащемта эту тему уже частично исследовал, хотя представленные господином zxlostsoul условия чаще всего не выполнялись.

Если коротко, то в случае игры против компьютера — синхронизация гарантировано теряется.

Игра PvP:
в случаях разных версий карт(всегда);
набора entity и прочих отличий в core касающихся данной карты\персонажей(всегда);
настройки МП игры (там есть трехпозиционный переключатель по поводу скорости подключения, чем выше установленная скорость, тем меньше шанс рассинхрона);
использования пошагового режима(порядка 25%, сложно оценить);
большого количества скриптов (указано в мануале и на некоторых сайтах, но практически нигде не видел МП карты с более чем тремя триггерами).
Shtorm
Как писал господин Hunter: "Выдержка из gui_text.txt:
my_out_of_sync = {Ваша игра несинхронизирована. Это значит, что ваша версия событий возможно будет отличаться от событий компьютера, создавшего игру. это могло быть вызвано разными причинами, включая взлом или использование несовместимых модов как на вашем компьтере, так и на компьтере создавшего игру.}."
Но, к сожалению, в той теме больше ничего нет. (Взята с архива Эстакады.)
Повторюсь, "чистые" эксперименты поставят всё на свои места.
Buzzil
QUOTE
Повторюсь, "чистые" эксперименты поставят всё на свои места.


Методологию подскажите.
Shtorm
С удовольствием. :)
1. Найти несколько версий локализаций и все патчи (кто найдёт от Сити, тому полцарства и Сибирскую корону. :) ) или же сразу тестить только оригинал, так даже лучше будет, первоисточник, так сказать..
2. Составить варианты тестов: локализация+патч, стандартные/нет персонажи, есть клоны/нет, в общем, всевозможные.
3. Отсеять те варианты, где рассинхронизация есть и определить повторяемость.
4. В мелочах проработать все варианты.
5. Расписать партию по ходам, как в шахматах, и вычленить то, что вызывает эффект.
Да, метод туп, но, подозреваю, основная проблема это в разных файлах. Пока же предлагаю для ознакомления версию от комрадов. Читал не всю группу, но упоминаний о рассинхронизации не было.
Post scriptum.
QUOTE
Если коротко, то в случае игры против компьютера — синхронизация гарантировано теряется.

Теперь вот эта фраза не даёт покоя.. Пожалуйста, объясните олуху её смысл, чтобы я её превратно не понял.
Buzzil
О нет, я с вас методичку по проведению прошу, а не наброски.

Ссылка на Вконтактник не валидна, т.к. не задавшись целью отследить рассинхрон, довольно затруднительно его обнаружить на компутерах в нескольких километрах друг от друга. Мало ли три гранаты подряд кинул или выбежал в чистое поле — может и игрок ступил.

QUOTE
Теперь вот эта фраза не даёт покоя.. Пожалуйста, объясните олуху её смысл, чтобы я её превратно не понял.


Если поставить на карте плеер(компутер) и запустить ее в мультиплеере (то есть с наличием второго игрока-человека, т.е. 2 игрока + 1 компьютерный игрок), то начнется магия — компьютерные человечки делают у разных игроков разное, а потом и человечки игроков по разному действуют друг у друга на мониторах.
Shtorm
QUOTE
а не наброски

Согласен, я сам написал, что метод туп. Просто с ходу это довольно трудно сделать, как классифицировать снайперские боеприпасы. Вроде и такие есть, и такие, а ещё вот эти, и... А всё в кучу писать не хочется. Но раз пообещал, значит буду делать. :)
QUOTE
может и игрок ступил

В этом-то и заключается весь цимес сложности и скрытности его. У меня до конца было ощущение, что я играю с живым человеком, ну просто он ТАК хочет поступить.
Если не ошибаюсь, Вы писали, что не можете подружить 2 компьютера между собой. У меня на это есть ноут и 2 товарища — можно проверить.
Ага, вот как.. Я игрок непуганный, без экспериментов пока играл, непривычно слышать. Спасибо за разъяснение.
П.С. Не могли бы Вы явные причины рассинхрона скинуть и подсказать, чем задокументировать его можно? Вечером бы уже проверил.
Buzzil
QUOTE
Если не ошибаюсь

Ошибаетесь.

QUOTE
явные причины рассинхрона

1) Несоответствие версий карт (т.е. у обоих игроков есть карта с названием MAP_1.mis, но содержимое файлов разное);
2) Несоответствие ентити (т.е. у одного игрока стимпак стандартный, а у другого отредактирован, другими словами — название файла одно, содержимое отличается);
3) Наличие на карте юнитов под управлением Player(Computer);

Эти три — 100% out-of-sync (английское название бага).
Остальные повышают вероятность (список в этой теме).

QUOTE
задокументировать

Даже не знаю. Зафиксировать можно глазами и каким-нибудь фрапсом (хотя у него проблемы с 2д играми). Задокументировать — блокнот, ворд\опенофис, нотариально заверенные скриншоты с двух компьютеров.

UPDATE:
Создатель Turn-Based Modification for Fallout Tactics высказался следующим образом:

QUOTE
in turnbased-mod the out-of-sync bug mainly occured some turns after any player picked up an entity that was laying on the ground (  ammo,guns... anything thats an entity ).
we dropped all entities that formerly were just laying on the floor, into a chest or another containment and that led to a noticeable reduction of out-of-sync.
so from my point of view out-of-sync bug is somewhat related to picking up things.


(в двух словах на русском: рассинхрон при попытке поднять с земли ентити)

Такие дела.
zxlostsoul
Снова здравствуйте. Не знаю, интересна ли ещё кому-то эта тема, но всё же хочу поделиться своим опытом.

Я попробовал открыть КАЖДУЮ карту в редакторе и сделать
Edit / Delete Leaked Entitles
Естественно, после этого нужно скинуть карты другому игроку, чтобы у обоих были одинаковые.

Не знаю, именно это ли помогло, но мы уже не помним, когда последний раз был рассихрон.

Ещё хочу сказать, что когда создаёте бойцов — не используйте в именах символов и выбирайте всем РАЗНЫЕ картинки лиц. Не знаю почему, но если у двух бойцов одинаковые лица — игра может их "путать", по клику на лице центровать камеру не на том человеке.

Ах да, скорость соединения в настройках у нас стоит вторая с начала.
Doom
Вот видео с рассинхронизацией:
https://www.youtube.com/watch?v=kEtFwpW-bqA

Отправлено: 10 июл 15 21:30
По мне так проблема не в карте или entities. Тут другая фигня, скажем возьмём любое действие, взлом, при взломе есть шанс провала(на видео хорошо показано), или тоже самое при стрельбе, на видео показано, у одного игрока бандит мёртв у другого жив, это значит что значения урона или шанса на взлом выявляются на разных машинах по разному, тут проблема с генератором случайных чисел или что то типо такого.
Buzzil
QUOTE
тут проблема с генератором случайных чисел или что то типо такого.

Уточните, пожалуйста, в игре на видео были ли подконтрольные только компьютеру противники или же все entities были строго привязаны к игрокам?

Вообще же, думается, есть одна простая и печальная причина, по которой рассинхрон происходит. Кроется она именно в контролируемых компьютером болванчиках, а конкретно в отсутствии "сетевого кода" для публикации всех изменений ai-юнитов. В итоге на каждой конкретной машине все болванчики обсчитываются совершенно локально (читай у каждого игрока ai-юниты на карте никак не связаны с ai-юнитами других игроков).

Даже больше — складывается мистическое ощущение, что сами юниты других игроков — это те же самые ai-болванчики, которым по сети приходят конкретные команды (т.е. локально для других игроков это тот же ai-юнит, просто его действия перезаписываются приходящими от клиента командами). И по мере того, как от другого клиента приходят все более противоречивые данные (стреляет в несуществующих юнитов, лутает несуществующие трупы), локальная игра начинает пытаться хоть как-то приходящие команды использовать (например, может оказаться, что у одного игрока юнит вошел в режим скрытности, а у другого — наоборот вышел — т.е. команда на включение\выключение пришла, но обработалась локально).
Если память не изменяет, то использование режимов боя (там где автоматически стрелять при 33% шансе), очень наглядно показывает, что юниты живут сами по себе после рассинхрона.

Что до скилл чеков, урона — то тут вероятно результат происходит локально у стреляющего и теряется на пути к другому клиенту (или чуть иначе — скилл чеки происходят как на клиенте-инициаторе, так и у всех прочих, но без рассинхрона результат в конце перезаписывается переданным от клиента-инициатора).

Как то так (без реверс-инженеринга уже не узнаем истины).
Doom
QUOTE
Уточните, пожалуйста, в игре на видео были ли подконтрольные только компьютеру противники или же все entities были строго привязаны к игрокам?

Да были подконтрольные компьютеру, но они были далеко и особо не повлияли бы.
После того видео Я попробовал ещё раз проверить из-за чего проблема, удалил все entities освещения, и все эффекты огня и другие движущие объекты, проверял на рассинхрон, даже урон не отличается, даже сделал собак подконтрольных компу, всё равно у всех одинаковый урон, правдо на взлом не проверял.

По мне так кажется всё дело в карте, чем она загруженей, чем больше объектов на экране(сооружения и здания и эффекты), тем тяжелее передаются пакеты данных.

Но Я проверял на одном компе, Я незнаю как это всё будет через интернет.
Buzzil
QUOTE
даже сделал собак подконтрольных компу

Это уже интересно, но не верится. Проверьте еще раз, пожалуйста, используйте всяческие дробовики, гранаты, активно потыкайте скилл скрытности и режимы боя (те самые авто-атаки при достаточной точности).

Насколько я помню, урон может заметно и не отличатся на двух клиентах уже и после рассинхрона, а вот всякие штуки типа ранения других ботов из-за разброса очереди/дробовика — проявляются сильнее.

QUOTE
(сооружения и здания и эффекты), тем тяжелее передаются пакеты данных.

Ну здания это тайлы, они то гарантировано будут локально обрабатываться и не влиять на сеть. Entities (эффекты, двери, объекты) — скорее всего синхронизируются, потому для чистоты эксперимента все двери, свет, ящики и прочее действительно стоит вычистить.
Doom
Странно когда Я убрал лишнее, и еще нажал Delete leaked Entities, то рассинхрон исчез, Я взламывал дверь 1-2 минуты и прокачал уровень, Я стрелял из дробовика в толпу с компами и ничего, наверно проблема глубже чем мы думаем. Но опять же, всё это локальная сеть, не интернет, хотя рассинхрон и в локальной сети появлялся. Может тому виной вес карты, скажем Я тестировал с картой размером 390 кб и с двумя игроками. Скинь мне карту где есть рассинхрон.
Buzzil
Да у меня и ФТ уже нет установленного =)
Из некастомных карт пробовал в МП только Фрипорт (2ая миссия кампании). Попробуй ее, а потом почисти от лишнего и попробуй еще раз. Если не сложно — то видео из обеих игр (до и после фикса) будет очень кстати.

QUOTE
всё это локальная сеть, не интернет

Попробуй крутнуть параметр Bandwidth (Скорость соединения или как его там) на минимальное значение (хотя не достовернная проверка, но хоть какая то имитация), либо попробуй Fiddler для эмуляции низкой скорости соединения
Doom
Так на видео Лес браминов, уже не кастомная, завтра попробую, щас уже все перепробывал, ничего не вызывает рассинхрон
zxlostsoul
Дело не в качестве связи и не в наличии ИИ (хотя если на карте есть юниты с ИИ — рассинхрон обеспечен, но речь сейчас идёт об играх без них).

Я довольно много тестировал игру на тему рассинхронизации (запускал два раза на одном компьютере, соединялся и тестировал). Причин может быть много, но одна 100% есть:
Игра иногда по каким-то причинам не передаёт изменения энтити между хостом и клентами. А это значит, что выкладывая и подбирая предметы с пола, а так же используя метательное оружие (ножи, которые остаются на земле) вы провоцируете рассинхрон. Если выкладывать предметы только в трупы/ящики и передавать напрямую между персонажами — этого бага не наблюдается.

Честно говоря, игру спасёт только новый движок :)
Doom
QUOTE
если на карте есть юниты с ИИ — рассинхрон обеспечен

Не всегда, если создать две группы мобов в разных частях карты и назначить им разных игроков-компьютеров, то рассинхрон наблюдается редко.

QUOTE
Причин может быть много

Кстати одна из них, когда на карте слишком много энтити, шанс рассинхрона увеличивается, когда Я редактировал карту Лес браминов был постоянный рассинхрон, даже видео есть. Но когда Я удалил все энтити связанные с освещением, рассинхрон исчез. Кстати общее кол-во мобов на карте 30 шт + 5-8 ящиков + ~выбор игроков(4-10).

И ещё одна фигня, связанная с минами, когда перс бежит на мину и в последнюю секунду приказать ему бежать в другую сторону у одного игрока он выживет, а другого игрока подорвётся, из-за задержки.

Кстати не проверял триггеры на рассинхрон. Оставлял парочку триггеров типа старейшина должен выжить.
Buzzil
QUOTE
Не всегда, если создать две группы мобов в разных частях карты и назначить им разных игроков-компьютеров, то рассинхрон наблюдается редко.

Но когда Я удалил все энтити связанные с освещением, рассинхрон исчез.

Пилите уже видева, пожалуйста, а то мне уже не терпится расчехлять образы FT ради призрачной надежды пострелять ботов в коопе.

QUOTE
Кстати не проверял триггеры на рассинхрон

Судя по тому, что после рассинхрона даже триггер на конец игры срабатывал только локально у одного из клиентов, смею предположить, что триггеры влияния оказывать не должны. Судя по описанию эффективности очистки карты от энтитей — игра пытается пропихивать по сети состояние всех энтитей всех классов, так что валидным тестом на отсутствие рассинхрона будет пустая карта + спауны игроков + несколько групп ботов под ИИ, а затем наращивание количества ботов (или в ином случае — насыщение карты источниками света) до наступления заметного рассинхрона (заодно узнаем критическое количество объектов).
Doom, как смотрите на то, чтобы провести подобные исследования (и зафиксировать на видео)?

UPD
У меня ничего не получилось. Миссия тут.
Первый запуск вроде бы прошел успешно, но последующие попытки были все хуже и хуже — живые и неживые боты у разных клиентов что в риалтайме, что в походовом. Так что жду-с результатов г-на Doom'a.
Doom
Ок,
проверить твою карту,
создать 3 варианта пустых карт с ботами и игроками,
запилить видео
Doom
Вот ссылка на второе видео: https://www.youtube.com/watch?v=oqGSliUOhu0
Я разобрался с разрешение теперь качество фулл эйчди 1080. Советую смотреть в высоком качестве, потому что формат видео нестандартный, слишком широкий из-за этого всё мелкое.

Осталась последняя проверка, надо проверить на кол-во игроков(по одному боецу на игрока), на кол-во бойцов(по 6 боецов при большом кол-ве игроков), и на действия совершаемые в один момент всеми игроками.
Надо бы собраться и проверить.

Заходите в группу в ВК: http://vk.com/fallout_tactics
500 чел, 10-15 чел активные. Я там админ.

Кстати Buzzil что значит
QUOTE
Так что жду-с результатов г-на Doom'a.

И ещё Я разобрался, всё нормально включается, только вот ты в закладке Level в меню Players не выставил игроку Human команду. И то что ты выделил только два компа недостаточно, потому что они всё равно заагрятся и будут бежать в стенку.
Two Eyed Yum
QUOTE
Кстати Buzzil что значит
Так что жду-с результатов г-на Doom'a.


У нас на форуме есть определенные традиции. Г-н — сокращение от "господин", г-жа соответственно — "госпожа". Такие вот мы вежливые друг с другом. До первого размещения поста не там, где нужно. Это я говорю на случай удивленных возгласов "куда делось мое сообщение" кое-где.
Doom
Оу хорошо, спасибо.
Buzzil
QUOTE
только вот ты в закладке Level в меню Players не выставил игроку Human команду.

Настройки я утащил из стандартных мультиплеерных карт, потому для коопов они могут быть сильно не подходящими.

Если не сложно, то можно просить о текстовых выводах (т.е. то что было в комментах на видео) в формате — ситуация:результат? Я так понимаю, проблемы когда у computer/scenery стороны на руках много юнитов оказывается?
Doom
Не совсем понял, то есть сделать как в первом видео, также пояснения каждого действия, там вроде есть Я делал.
Buzzil
Я имею ввиду — сюда на форум текстом написать, а то мало ли что с видео случится, да и просматривать каждый раз целиком (или тыкать случайно по таймлайну) не очень удобно.
Doom
Первый опыт: На карте один комп и сундук, сундук нужен чтобы проверить рассинхронизацию по навыку, и заодно прячусь за сундуком чтобы проверить влияет ли это на скрытность.
Вывод: Полная синхронизация

Второй опыт: ~90 собак, тут же появляется много вопрос, рассинхрон начался из-за:
1)большого кол-во энтити
2)большого кол-во энтити на экране
3)большое кол-во энтити выполняет большое кол-во действий
а)выполняет их комп
б)выполняет их игрок
Вывод: Рассинхрон 100%

Третий опыт: одна собака сундук и очень много энтити освещения, проверил точно также как и в первом, всё точно также.
Вывод: Синхрон

Четвёртый опыт: ~90 собак, одна в центре, остальные за стенкой, которая закрывает их обзор и обездвиживает их.
Вывод: Рассинхрон.

Пятый опыт: Как и в четвёртом, только за стенкой нейтральные мобы.
Вывод: Рассинхрон.

Шестой опыт: Точно также, только собаки уже принадлежать игроку.
Вывод:Синхрон
Shtorm
Отличная работа, можно сказать спасибо.. Да и плюс в карму поставить.. ;)
Вот только ещё вопрошающая мысль появилась.. Когда начинается, вроде, более-менее ясно, а вот когда рассинхрон заканчивается??.
[Жаль, разработчики так коряво сделали.. С такой частотой появления этих проблем о сетевой игре можно забыть.. Как и о создании каких-либо онлайн-проектов.. Хотя, я подозреваю, все любители уже повзрослели и обросли кучей своих проблем, не считая этих..]
Doom
QUOTE
С такой частотой появления этих проблем о сетевой игре можно забыть..

Наверно можно собираться в одном месте и играть, локальная сеть избавляет от большинства вариантов рассинхрона.

QUOTE
Когда начинается, вроде, более-менее ясно, а вот когда рассинхрон заканчивается??

Когда кончается? Пока раунд не закончится, или не сделаешь пару действий как в первом видео, взломал дверь, у одного пишет открыто, другой видит провал, первый открывает дверь и опять взламывает, после удачного взлома у второго открывает дверь заходит и закрывает дверь, у первого дверь закрыта и он с другой стороны, опять открывает и заходит, вот тебе практически конец рассинхрона.

P.s. Первый и второй это игроки
Ваш ответ: