Wake of Gods Forum | Форум Во Имя Богов

Full Version: ERA / WOG - сетевая игра и проблемы с ней
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Всё работает отлично!!!!

Berserker, моё уважение132

Все навыки/уроны/абилки работают одинаково на обеих сторонах!

Дебаггер показывает везде одинаковые адреса и значения SRand

НО один скрипт на неудачу от существ, работающий лишь с одной стороны, возымел разный результат.

На одной стороне "неудача" = -1, на другой = -2, что один раз за бой привело к половинному урону лишь на одном клиенте.
Косяк именно в скрипте, однако будем иметь в виду, что такое возможно, потому все скрипты для мультиплеерных битв пишем очень внимательно и тестируем

Тестировал я намеренно без тестового плагина от igrik'a.

Сейчас буду проверять влияние ГСЧ на изменённые вторичные навыки в бою.

Что ещё требуется от меня?
Скрипт на неудачу не смотрел, возможно там VR:T используются (нельзя, нужно VR:R) или какой-то хак. Отлично, что всё остальное работает. Я ещё добавлю уникальное значение для каждого боя в состояние генератора и этого будет достаточно. Плагин igrik-а не нужен: ни одна пересылка не решит проблемы комплексно так, как решает детерминированный генератор и грамотно написанные скрипты.
(14.06.2021 22:32)Berserker Wrote: [ -> ]Плагин igrik-а не нужен: ни одна пересылка не решит проблемы комплексно так, как решает детерминированный генератор и грамотно написанные скрипты.
Плюс не надо гонять данные туда-сюда постоянно.
Этот плагин - костыль. Поэтому, если появляется решение самой проблемы ГСЧ, то мой плагин явно в топку Yes
Berserker, скрипт на неудачу и смотреть не надо - он изначально некорректно работает в PvP бою, так как влияет лишь на одного игрока ещё с самого начало боя.

Сейчас проверяю магию и дополнительные сопротивления героев/существ.

UPD: увы, но се сработало - вог-скрипт "сопротивление" работает с разными результатами (резист/не резист) - на одной стороне rand # показывают различные значения.
Так что скрипты придётся переписывать всё равно.
daemon_n, F11 сразу же после кривого срабатывания и смотрим вместе erm tracing.erm
Berserker, хмм, не думаю, что срабатывание кривое, а дело в пресловутом VR:R - хотя сейчас проверю всё ещё раз и с f11

Кидать всё сюда, или в дискорде тоже норм?

UPD: с "сопротивлением" получил разный результат наложения "яда" от вивернов-монархов

Как я понял, прикол в том, что яд накладывается как заклинание 105
Сюда через dropmefiles
Яд вообще странно работает - то его нет, то неожиданно появляется в след раунде.

Ещё баг:

Заклинание "Мины" нанесло урон лишь на одной стороне, хотя все данные одинаковы. Кажется, дело лишь в "минах" от опыта существ "Мастер-гремлинов"

Нормальный erm tracking ещё не нашёл, так как отвлёкся на тест заклинаний. Сейчас ещё тестирую
Berserker, сколдовал заклинание "Армагеддон" на одной стороне и всех убил - на второй даже не было колдовства - рассинхрон.

UPD: Проблема повторяется! Для этого армагеддон должен колдовать защитник.
Не работает ни резист вообще105,

Данные по SRand отличаются:
Слева нападающий - все померли, справа защитник (он колдовал)- все выжили, если точнее, это не отобразилось105
Адрес тот же, а результаты разные: (Click to View)

   Сейчас проверю с иммуным юнитом -
Данные передались --колдовство случилось на обеих сторонах, но всё равно померил все (кроме иммун)

И выпали те же "случайные" значения.
1..100 = 55 (#0..#29)
50..9000 = 5846 (#30..#43)

Проверял без скриптов вообще
daemon_n, спасибо, буду ещё тестировать.
Berserker, а есть более точное ТЗ? Или тестировать всё подряд?))

Мне не раз говорили, что у меня талант находить проблемы даже там, где не надоRolleyes
Видишь ли, если номер действия один и тот же (A2), номер раунда — один и тот же, то и результат должен был быть одним и тем же. Возможно, различается раунд, его вывод тоже добавлю. Ты всё верно проверяешь: способности, заклинания, способности от опыта.

SRand не важен, по сути, так как его значение не используется. Тем не менее, игра его шлёт перед каждым действием. Удобно отслеживать в общем потоке вывода.
(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) Чтобы избежать рассинхрон, сообщения перед боем должен получать лишь нападающий.


UPD: сделал решение, что отключает лишь способности с шансом! Немножко молодец Rolleyes (Click to View)

Итак!

После идеи ZVS'а и её прекрасной реализации и дополнением от Berserker'а, мы имеем на 99,9% рабочий сетевой код без рассинхронизаций. Молодцы!132

Все выше описанные проблемы были исправлены, но пара проблем ещё остались:
1) Заклинание "минное поле" от Гремлинов, кастуемое перед атакой вызывает мины одинаково, но срабатывает на обеих сторонах по-разному
как временное решение - переиначенный мой же скрипт для отключения абилок - он будет на время боя отнимать только линию опыта у всех существ на поле боя "с минами" (хотя мог просто выставить шанс в 0% 96 )
Скрипт также попадёт в мою сборку.

Немножко ERM (Click to View)
2) Заклинание "Армагеддон", кастуемое защитником может не отработать на одной стороне - решение пока не придумал, так как на тесты не хватает времени - дерзайте, ребята 118

3) Не забываем, что сообщения и диалоговые окна перед боем вызывать не рекомендуется, так как каждый игрок может "согласиться" раньше другого и начать ход в бою, пока у второго ещё зияет сообщение.

В общем итоге всё так хорошо сложилось, что можно делать моды и улучшать старые под мультиплеер без особой опаски.
Работаем Yes
1) А WOG_PreBeforeBattle когда срабатывает? Уже после создания поля боя? Иначе нельзя настраивать опыт.
Berserker, срабатывает ещё раньше BA.
Это хук на адресе 75A605 (7710213), который ещё igrik сделал для первых версий скрипта на "сохранение перед боем"
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Reference URL's