(20.01.2021 19:38)daemon_n Wrote: (13.01.2021 06:10)daemon_n Wrote: 1) Навыки, имеющие не 100% от опыта существ вызывают рассинхрон
2) Артподготовка и прочее "перед боем" - решение есть в голове
3) "Разведка II" приходят сообщения о фантомных событиях другого игрока
7) Если каждому игроку пришло до боя сообщения, первый его "принял", попал в бой и сделал хоть что-то, а второй так и не "принял" сообщение, то будет рассинхрон.
1) Есть временный фикс - отключил навыки с рандомным значением во время PvP битвы.
2) Для MP не подходят Триггеры !?MF; - нужен !?BA0; т.к. передача данных идёт после BA, но перед MF.
3) Исправлено проверкой на "за этим ли компом игрок"
7) Чтобы избежать рассинхрон, сообщения перед боем должен получать лишь нападающий.
Итак!
После идеи
ZVS'а и её прекрасной реализации и дополнением от
Berserker'а, мы имеем на 99,9% рабочий сетевой код без рассинхронизаций. Молодцы!
Все выше описанные проблемы были исправлены, но пара проблем ещё остались:
1) Заклинание "минное поле" от Гремлинов, кастуемое перед атакой вызывает мины одинаково, но срабатывает на обеих сторонах по-разному
как временное решение - переиначенный мой же скрипт для отключения абилок - он будет на время боя отнимать только линию опыта у всех существ на поле боя "с минами" (хотя мог просто выставить шанс в 0%
)
Скрипт также попадёт в мою сборку.
2) Заклинание "Армагеддон", кастуемое защитником может не отработать на одной стороне - решение пока не придумал, так как на тесты не хватает времени - дерзайте, ребята
3) Не забываем, что сообщения и диалоговые окна перед боем вызывать не рекомендуется, так как каждый игрок может "согласиться" раньше другого и начать ход в бою, пока у второго ещё зияет сообщение.
В общем итоге всё так хорошо сложилось, что можно делать моды и улучшать старые под мультиплеер без особой опаски.
Работаем