(08.06.2021 20:53)igrik Wrote: по старой памяти накидал я на скорую руку плагин. Если есть желание, потестируйте плиз. Я с десяток боёв провёл - вроде всё норм.
Попробую, но не раньше конца недели. Все же мне кажется, что синхронизация параметров монстров не вылечит от рассинхрона ГСЧ.
Quote:передача данных свыше 4кб будет дорого ему обходиться в лобби
Я, наверное чего-то не понимаю, но при чем тут лобби? Разве оно не используется, чтобы просто начать игру, а далее все передается от игрока к игроку напрямую?
(08.06.2021 21:55)Berserker Wrote: -) VR:R использует геройский random() в бою. Странно, что Слава использовал random() не геройский. Можно, конечно, перенаправить эту вог-функцию на геройскую реализацию.
Честно уже не помню, но, согласись, было бы странно, чтобы я его использовал, а другим говорил его НЕ использовать.
Хотя в принципе могу лишь повторить. Генератор не важен, если его инициализировать перед использованием одинаковым зерном.
Quote:-) Вне боя вместо геройского random() используется Вихрь Мерсенна. Функция перехвачена.
Не думаю, что это решит проблему рассинхронизации.
Quote:-) Алгоритм diff от Славы вызывал вылеты.
Ты имеешь в виду СТАЛ вызывать вылеты после добавления дин. данных?
Иначе как TE работал с ним?
Quote:Я пропатчил код, вырезав весь diff-функционал на корню.
Т.е. ты вырезал не только WoGовский diff, но и SoDовский заодно. Передача полного сэйва, конечно, уже не проблема с современными скоростями. Хоть он и в 100-ни раз больше по размеру.
Думаю можно считать удачным решением.
Quote:Вопрос: исправит ли проблему принудительная отправка сетевого пакета на синхронизацию состояния генератора при каждом вызове random(), если весь WoG-код тоже будет использовать геройский random()?
Мое мнение - да, при условии, что ты точно уверен, что нашел все рассинхроны ГСЧ.
Но я бы настаивал на моем предложении устанавливать зерно принудительно детерминированно (не значит в одно и тоже значение) на обоих сторонах без передачи по сети зерна.