Wake of Gods Forum | Форум Во Имя Богов
ERA / WOG - сетевая игра и проблемы с ней - Printable Version

+- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net)
+-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99)
+--- Forum: Моды (/forumdisplay.php?fid=104)
+--- Thread: ERA / WOG - сетевая игра и проблемы с ней (/showthread.php?tid=5854)


ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 27.08.2020 20:43

ТЕМА обсуждения сетевой игры.

Для игры онлайн можно использовать Локальную сеть либо любой Эмулятор Локальной: Hamachi, Radmin VPN или TeamViwer VPN (НЕ путать c "Демонстрацией Экрана"!!!)

Но самый продвинутый и лично мной рекомендуемый - игра через HD mod ONLINE - LOBBY.

Настоятельно рекомендуется иметь:
1. одинаковую версию подключённых модов и плагинов, поскольку многие из них подгружают собственные ресурсы из папки \mods\modName (Лично я считаю, что интерфейсные моды БЕЗ скриптов, такие как "BattleSpeed", могут использоваться по желанию каждого пользователя и не вызывать проблем при разных состояниях)
2. одинаковую версию ERA
3. одинаковую версию HD mod.
4.


Текст дополняется
3. Простой сундук сокровищ был охраняем 6к охраной, выпадало 50-99 воров и 10-19 штормов. Другие подобные багованные вогификации с охранами одной кучки золота.
6. Увеличить велью воговских существ, в моем опыте 4 кошмарных гидр охраняли пондорку на 15 к опыта, 5-9 змей горынычей охраняют улик и сундук сокровищ
Текст дополняется
Текст дополняется

Что касается проблем:
1. На первом месте стоит рассинхронизация при использовании встроенной опции "Система Опыта Существ". В PvP битве урон существ становится разным, если получен бонус от опыта.
Полагаю, что новые абилки от опыта вызывают рассинхронизацию, но есть вариант, что и просто увеличение статов. Текущее решение - отключить все бонусы опыта на время PvP битвы, сохраняя сам накопленный опыт. - Временный фикс: отключить все опции с рандомным значением. - сделано

2. Накладывание заклинаний перед битвой. Например, навык удачи. - Временный фикс: Перенос кода с BA52 в BA0 - сделано
3. Скрипт на сохранение перед битвой вызывает сообщение на одном из ПК о невозможности сохранять игру на чужом ходу, пока существует это сообщение, другой игрок начнет совершать действия в битве - гарантированный рассинхрон. К любым сообщениям перед битвой относится., например, артиллерия.

Изложенные выше проблемы были исправлены в ERA 3.8.1-3.8.4

4. Проблема получения типа игры у героя-защитника.

5. Краш при получении хода игроком, чья карта отличается от карты предыдущего игрока.
Рассинхронизация: устарело/требует новых тестов (Click to View)
Нужно протестировать
Заплатку рассинхронизации от igrik
Скачать.
P.S.: Для общей информации:
1006 - тип действия в бою + передача зерна (передаётся: 0x47883B; принимается: 0x473D61)


RE: Сетевая игра: ошибки, баги, вылеты - daemon_n - 27.08.2020 20:50

ElfbI, абилки от опыта существ в бою работают с разным шансом. В итоге и наносимый урон отличается. Проверено давно - рассинхрон


RE: Сетевая игра: ошибки, баги, вылеты - Night - 27.08.2020 21:14

ElfbI, хотелось бы прояснить, а что в данном случае рассинхрон? Вылет с крашем, зависание при передачи хода?
Вот как писали мне на проблему с ящиками - "У тебя рассинхрон".

Я помню было 100% понимание, когда в 2.46f Era играл, там опыт войск не передавался по сети, а визуально можно было видеть разные действия на экране друг друга и буквально спустя 3-5 дней просто не передавался ход.
С давней истории я и считал это рассинхроном, когда ход передачи зависал или крит был при игре по сети.

А ещё момент - битвы ЧеловекVsЧеловекVsAI? В этом режиме наверно миллиард рассинхронов будет. Мы только Человек vs AI играем, пусть и вдвоём.


RE: Сетевая игра: ошибки, баги, вылеты - ElfbI - 27.08.2020 21:15

Night, да, человек-человек, не передаются верно действия игроков


RE: Сетевая игра: ошибки, баги, вылеты - Night - 27.08.2020 21:34

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

Я сколько не предлагаю поиграть друг против друга и против компа - брат ни в какую, трус Sm
Может будет возможность с кем-нибудь из друзей поиграть, попробую. Так, а какие эффекты ожидаемы - краш или непередача хода?


RE: Сетевая игра: ошибки, баги, вылеты - ElfbI - 27.08.2020 21:47

Night, один игрок видит не то, что второй игрок. Например, выпадает мораль стеку, а второй игрок видит передачу хода, в итоге никто не может продолжить игру.


RE: Сетевая игра: ошибки, баги, вылеты - daemon_n - 27.08.2020 21:48

ElfbI, ты на моей сборке проверяешь?


RE: Сетевая игра: ошибки, баги, вылеты - ElfbI - 27.08.2020 21:48

daemon_n, в ерм можно устанавливать генератор на одну последовательность (старый генератор по крайней мере). Но опыт зашит в ехе я так понимаю.


RE: Сетевая игра: ошибки, баги, вылеты - Berserker - 27.08.2020 21:55

ElfbI, опыт тоже использует геройский генератор, если сделано по уму. Рассинхронизации в боях человек-человек без скриптов (и, положим, опыта) быть не должно. Когда проверял с Валерием. Да и ТЕ, на основе которой Эра, именно в сетевых играх и используется.


RE: Сетевая игра: ошибки, баги, вылеты - daemon_n - 27.08.2020 21:59

ElfbI, дело вот в чём. Без скриптов проблем нет.

Хочу уточнить в моей сборке, а именно моде есть game bug fixes.dll - он шире Эровского, но и тот фиксит сетевой код - не удивляйся, если будут отличать результаты с плагином v1, v2 и без него166


RE: Сетевая игра: ошибки, баги, вылеты - Berserker - 27.08.2020 22:48

daemon_n, предлагаю в следующей версии сборки включить два файла:
game bug fixes.dll с 0-м размером
game bug fixes extended.dll с твоим вариантом.
Давно пора начать различать эти библиотеки.


RE: Сетевая игра: ошибки, баги, вылеты - igrik - 27.08.2020 23:06

(27.08.2020 21:59)daemon_n Wrote:  Хочу уточнить в моей сборке, а именно моде есть game bug fixes.dll - он шире Эровского, но и тот фиксит сетевой код - не удивляйся, если будут отличать результаты с плагином v1, v2 и без него166
Нет, не верно!
Ни один, ни второй не фиксят сетевой код.
Первый никогда не фиксил.
Второй перестал фиксить: ты мне как-то отчет давал о вылете в сетевой игре во время осады при стрельбе или катапульты, или баллисты. Мы тогда еще с тобой тестировали по Танглу чтоле. И тогда я вырезал все свои сетевые правки.

И да, я согласен с Берсом, пора бы их уже разделить. В скором времени я вырежу в своём плагине функционал by RoseKavalier и переименую его, чтобы эти 2 плагина более не пересекались и не вводили путаницу


RE: Сетевая игра: ошибки, баги, вылеты - daemon_n - 27.08.2020 23:34

igrik, я тебя понял. Помню всё иначе, думая, что ты что-то исправил что-то...166 - отлично показал смайлик мою памятьDash1

Зато помню, что играли через Radmin - это было здоровоRolleyes



RE: Сетевая игра: ошибки, баги, вылеты - Bes - 28.08.2020 01:49

(21.04.2020 19:25)daemon_n Wrote:  При игре на разных компьютерах (или просто 2 клиента) 100% вылет, если нападать на замок.
После первого выстрела катапульты на компьютере нападающего следует прямой выстрел в нижний стек защитника. Снимает 1 хп, но который второй не видит. Проверено вообще без скриптов и модов. Зависимости только от данного плагина.

Если есть тактическая фаза, врага нет. Если есть баллистика, краша нет. То есть нет лишнего выстрела.

   Что интересно, на версии Эры 2.9.12 краша с тем же плагином нет, но есть выстрел катапульты, который снимает 1хп. Второй игрок его тоже не видит, но игра крашится лишь при пкм на союзном юните.
4


RE: Сетевая игра: ошибки, баги, вылеты - daemon_n - 28.08.2020 01:57

Bes, именно это мы и тестировали, в результате чего igrik удалил свои правки сетевого кода из плагина Yes


RE: Сетевая игра: ошибки, баги, вылеты - Bes - 28.08.2020 02:18

daemon_n, так я потому сюда и напомнил, раз igrik про это упомянул выше...



RE: Сетевая игра: ошибки, баги, вылеты - lsgot2b - 05.11.2020 14:21

Добрый день, насколько я понял, рассинхрон в сетевой игре (с опытом существ) не исправлен ?


RE: Сетевая игра: ошибки, баги, вылеты - Berserker - 05.11.2020 17:21

lsgot2b, с опытом нет пока.


RE: Сетевая игра: ошибки, баги, вылеты - lsgot2b - 06.11.2020 00:01

(05.11.2020 17:21)Berserker Wrote:  lsgot2b, с опытом нет пока.

Могу помочь с тестированием !
Много раз наблюдал данную проблему, играя: человек vs человек (tcpip)


RE: Сетевая игра: ошибки, баги, вылеты - Berserker - 06.11.2020 01:26

lsgot2b, спасибо, при наличии исправления буду знать, к кому обращаться.


RE: Сетевая игра: ошибки, баги, вылеты - lsgot2b - 06.11.2020 05:28

(06.11.2020 01:26)Berserker Wrote:  lsgot2b, спасибо, при наличии исправления буду знать, к кому обращаться.

Отлично, буду ждать !


ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 01.12.2020 16:49

ТЕМА обсуждения сетевой игры.

Для игры онлайн можно использовать Локальную сеть либо любой Эмулятор Локальной: Hamachi, Radmin VPN или TeamViwer VPN (НЕ путать c "Демонстрацией Экрана"!!!)

Но самый продвинутый - игра через HD mod ONLINE - LOBBY.

Настоятельно рекомендуется иметь:
1. одинаковую версию подключённых модов и плагинов, поскольку многие из них подгружают собственный ресурсы из папки \mods\modName (Лично я считаю, что интерфейсные моды БЕЗ скриптов, такие как "BattleSpeed"
2. одинаковую версию ERA
3. одинаковую версию HD mod.
4.


Текст дополняется
Текст дополняется
Текст дополняется

Что касается проблем:
1. На первом месте стоит рассинхронизация при использовании встроенной опции "Система Опыта Существ". В PvP битве урон существ становится разным, если получен бонус от опыта.
Полагаю, что новые абилки от опыта вызывают рассинхронизацию, но есть вариант, что и просто увеличение статов. Текущее решение - отключить все бонусы опыта на время PvP битвы, сохраняя сам накопленный опыт.
2. Накладывание заклинаний перед битвой. Например навык удачи.
3. Скрипт на сохранение перед битвой вызывает собщение на одном из ПК о невозможности сохранять игру на чужом ходу, если пока существует это сообщение, другой игрок начнет совершать действия в битве - ганатированный рассинхрон. К любым сообщения перед битвой относится., например, артиллерия.

Данный пост будет обновляться.


RE: ERA / WOG - сетевая игра и проблемы с ней - XEPOMAHT - 01.12.2020 16:54

(01.12.2020 16:49)daemon_n Wrote:  что новые абилки от опыта вызывают рассинхрон.

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


RE: ERA / WOG - сетевая игра и проблемы с ней - Elmore - 01.12.2020 18:00

Без опыта существ, wog - не wogDry


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 01.12.2020 18:49

Увеличение урона/жизни от опыта статическое, даётся раз. Оно не должно вызывать рассинхронизацию. В ТЕ, как и Фениксе, опыт существ используется, просто без новых способностей.
Скорее всего, дело в способностях а-ля блок 25% и иже с ними. Нужны тесты.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 01.12.2020 19:18

(01.12.2020 18:49)Berserker Wrote:  Нужны тесты.

Ищу желающего (-их), но через лобби пока не выйдет.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 01.12.2020 19:46

А как лобби работает, как обход NAT при отсутствии белых IP?


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 01.12.2020 20:57

Berserker, это лучше спросить у Бараторча в теме Hd mod105


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 02.12.2020 01:00

daemon_n, при объединении тем первый пост будет самым старым. Я сделаю тебя автором его тогда, будешь обновлять? Или просто темы объединить, а шапка не нужна?


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 02.12.2020 01:33

Berserker, шапка нужна. Делай автором. Обновлять буду. Пусть тема будет в ветке "моды для вог".


RE: ERA III - totkotoriy - 17.12.2020 16:00

Всем привет, не подскажите что-то делалось по проблеме рассинхрона в битвах за последние 5 лет?


RE: ERA III - Berserker - 17.12.2020 17:30

totkotoriy, играть нужно с файлом опыта существ от ТЕ или Феникса и скриптами, которые учитывают сетевую битву.


RE: ERA III - totkotoriy - 17.12.2020 19:07

Спасибо, надо глянуть будет


RE: ERA III - Bes - 17.12.2020 20:13

totkotoriy, прочитал всю тему про это?


RE: ERA III - totkotoriy - 17.12.2020 23:38

Блин, то что рассинхрон от абилок, которые даются с опытом, это я давно знал, вопрос какие именно из них... Эххх пойду дальше спать 96-copy. Времени у меня нету это всё проверить

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

А по хорошему нужна принудительная синхронизация после каждого действия, которой сейчас нет


RE: ERA III - daemon_n - 18.12.2020 06:30

(17.12.2020 23:38)totkotoriy Wrote:  Блин, то что рассинхрон от абилок, которые даются с опытом, это я давно знал, вопрос какие именно из них...

Тех, которые имеют шанс срабатывания - этот "шанс" считается на разных машинах по-разному.
Сюда же добавим скрипт на артиллерию перед боем и прочие подобные случайные числа.

Если нужно словами, то "Яд, камень, паралич, баффы, дебаффы, суммоны, морали, удачи, ударная магия". Как только что-то из этого присутствует, начинает рассинхрон по наносимому урону.


RE: ERA III - totkotoriy - 18.12.2020 21:00

(18.12.2020 06:30)daemon_n Wrote:  Если нужно словами, то "Яд, камень, параличь, баффы, дебаффы, суммоны, морали, удачи, ударная магия". Как только что-то из этого присутствует, начинает рассинхрон по наносимому урону.
Капец


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 10.01.2021 12:44

Сегодня КАЖДЫЙ ДЕНЬ в течение всего дня буду работать над героями. (через пару часиков)

Мне нужен доброволец, который готов провести множество тестов сетевой игры вместе со мной.
Тема очень важная, поскольку люди попросту не могут сыграть нормально даже PvE.

Проверять будем все текущие найденные проблемы и пробовать их решать хотя бы грубо и костыльно.
Играть будет через Онлайн-Лобби. Версия сборки Последняя от Панды на текущий момент

Работы много, ну и придётся терпеть моё видение и мои манеры общения148.
К критике открыт, если что.

Писать здесь, в Телеграм или в Дискорд.





RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 12.01.2021 22:17

(10.01.2021 12:44)daemon_n Wrote:  Сегодня КАЖДЫЙ ДЕНЬ в течение всего дня буду работать над героями. (через пару часиков)

Мне нужен доброволец, который готов провести множество тестов сетевой игры вместе со мной.
Тема очень важная, поскольку люди попросту не могут сыграть нормально даже PvE.

Проверять будем все текущие найденные проблемы и пробовать их решать хотя бы грубо и костыльно.
Играть будет через Онлайн-Лобби. Версия сборки Последняя от Панды на текущий момент

Работы много, ну и придётся терпеть моё видение и мои манеры общения148.
К критике открыт, если что.

Писать здесь, в Телеграм или в Дискорд.



Вновь актуально!148


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 13.01.2021 06:10

Проведя несколько часов вместе с Panda, сообразил небольшой список проблем, которые имеем:

1) Навыки, имеющие не 100% от опыта существ вызывают рассинхрон
2) Артподготовка и прочее "перед боем" - решение есть в голове
3) "Разведка II" приходят сообщения о фантомных событиях другого игрока
4) "Сопротивление II" - шанс на резист данного навыка срабатывает по-разному на 2 пк.
5) "Удача" - разные значения морали./удачи ну и рассинхрон.
6) - при битве героев "Астральных дух" vs "Астральных дух" результат "возврата войск" зависит от многих условий, в итоге у одного героя может получится армия больше, чем была до боя (если защитник побеждает).
7) Если каждому игроку пришло до боя сообщения, первый его "принял", попал в бой и сделал хоть что-то, а второй так и не "принял" сообщение, то будет рассинхрон.
Как только опоздашка вступит в битву, счётчик очередности хода стаков сбросится на 0.
Таким образом на одном экране стек №1 уже сделал ход, а №2 только делает и это видит второй игрок, то для него это будет 1-ый вражеский стак.
Так что с этим тоже надо что-то делать. Скажем, флаг, видит ли 2-ой игрок поле битвы или ещё читает сообщение, иначе рассинхрон будет пойман уже на первом движении юнита.

Немного изучил справку. Для МП битвы надо дублировать ВСЕ!!! изменения, что происходят до боя (BA0).. в !?IP1;

В общем, с данным кодом у меня вышло провести довольно массивную битву с разными существами, полностью отключив бонусы от опыта существ. (Click to View)
Следующий этап - оставить те, что работают 100%, но на всё это дело уже ушло очень много времени - работал над героями с 11 утра 148 , так что не сегодня.

Спасибо огромное, PandaAb


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 13.01.2021 14:23

Прекрасная работа! 132


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 20.01.2021 19:38

(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)



RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 21.01.2021 10:53

daemon_n, с такими темпами развития ты через год выпустишь объединенную версию WS и ES со 100% поддержкой сетевой игры 132


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 21.01.2021 19:06

Algor, спасибо)
Раз уж ты здесь, то немного поною, что твой скрипт на Банк мне пока не даётся (не работает на ЭРА 3), поскольку не понял принцип работы массивов SN:M.

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


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 24.01.2021 23:04

daemon_n, навскидку, в "Банке" переменная p используется как глобальная, что Эра3 не работает. Возможно, после правки этого момента все и заработает. Других deprecated-возможностей там вроде не используется.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 31.01.2021 01:48

Итак - найден ещё один баг сетевой игры:

Справочник Wrote:Rx
Генерировать случайное значение от 0 до x (включительно) и ДОБАВИТЬ его к текущему значению.

R#/$
Установить генератор случайных чисел на одно значение.
    $ – номер случайного числа в генераторе для синхронизации.
    # – фантомный параметр (не используется)
Если вы не уверены, что генератор случайных чисел в одинаковой позиции на обоих компьютерах, вы можете просто перезапустить их на один ритм.
!!VRy1:R25; - Вызов данной команды в мультиплеере в триггере !!BG0;(- срабатывает перед действием) ломает сетевую игру. (на 2-х машинах) Значение там разное!!!

!!VRy1:R0/y1; - данная строчка кода всего лишь делает что? Я так и не понял, но вызов данной команды в мультиплеере (на 2-х машинах) вызывает рассинхрон. Значение там хоть и одинаковое, но лишь присутствие данного ресивера в триггере !!BG0;(- срабатывает перед действием) ломает сетевую игру.


Прошу не использовать данные ресиверы в данном триггере и объяснить, зачем !!VRy1:R0/y1; вообще нужен?
Возможно, именно подобная механика присутствует в навыках существ с рандомным значением, что ломает сетевую игру. Нужно искать альтернативы.

UPD: тот же результат и с !!VR:R0/#min/#max

!!OW:C?y1/?y1;
!!VRy2&y1=0:R0/100/300;

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


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 31.01.2021 01:53

Отличное наблюдение.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 31.01.2021 01:57

Berserker, дополнил


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 31.01.2021 02:03

Это разные команды даже по смыслу. ЗЫ. Если код выполняется на обоих сторонах, рассинхрона быть не должно.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 31.01.2021 02:06

Berserker, я ещё немного дополнил. Но говорю, как есть
Если хоть кто-то из игроков (да-да, достаточно одному) инициирует запуск любого из !!VR:R (просто запуск - даже значение нигде не нужно использовать)- рассинхрон будет!

Решение я вижу здесь примерно такое (для опыта существ и вторичных навыков)
Генерация значения должна быть сделана до боя. То есть все "рандом шансы" должны быть предопределены в BA0

Таким же образом, как это сделано с моралями.
Если должна сработать мораль у этого юнитам при таком действии, то при каждой переигровке она сработает - и это было отличным решением.


Также напоминаю об этом:

Проблема получения типа игры у героя-защитника.



RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 31.01.2021 03:36

Quote:Достаточно вызова генератора лишь с одной стороны, чтобы был рассинхрон.
Всё верно. Так во всех играх. Нужно идентичные вызовы делать со всех сторон.


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 16.02.2021 11:40


UPD: если get-синкаксис для !!FU:D, внезапно, не работает, мне нужен любой другой механизм получения какого-либо значения у оппонента в сетевой игре.
Не передать данные оппоненту, а получить данные у оппонента.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 16.02.2021 15:54

Не работал и не работает. Не пробовал на обратной стороне в ответ на вызов функции выслать данные отправителю через FU:D?


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 16.02.2021 19:48

Berserker, пробовал, не работает так как мне надо.

И да, в Хэлпе, в т.ч. англоязычном, про неработающий get-синтаксис ничего не сказано:
D$/$/$ ... up to 16#s. Call the function at opposite side. Syntax is the same as for FU:P
Посему, считаю багом и требую сатисфакции исправления (не в хэлпе, а в Эре) Yes


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 16.02.2021 20:50

Algor, там в реализации именно стандартная асинхронная отправка данных геройской функцией. GET никогда и не планировался к поддержке. Механизма отправки с получением нет. Да и в целом с момента отправки данных на том стороне сколько угодно событий может произойти до их получения. А потом ещё сколько угодно событий с момента отправки ответа.

Quote:Berserker, пробовал, не работает так как мне надо.
Тебе нужно классическое синхронное поведение. Когда обе игры подвисают до отправки/приёма/обработки/ответной отправки данных. Такого в Г3 нет. Поправьте меня, если не так.


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 16.02.2021 21:41

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

Еще у тебя пропущена константа 999, обзови как-нить при случае
; =============== ERM FLAGS ===============
!#DC(ERM_FLAG_REAL_BATTLE) = 1000;
!#DC(ERM_FLAG_IS_HUMAN) = 1000;
!#DC(ERM_FLAG_NETWORK_BATTLE) = 997;
!#DC(ERM_FLAG_HUMAN_VS_HUMAN_BATTLE) = 998;
; ============= END ERM FLAGS =============

И да, сейчас уже есть вариант вставить в код задержку на N секунд? А то может я пропустил.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 16.02.2021 21:58

Algor, нужен именно номер раунда? Насколько я знаю, он общий на двоих.


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 16.02.2021 22:12

daemon_n, нет конечно, это просто для примера надо было что-то передать.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 16.02.2021 23:07

Функция sleep редко в играх применяется. Заморозишь всё окно, обработку сетевых событий, анимацию и т.д.


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 16.02.2021 23:10

Berserker, т.е. нет? Ок.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 17.02.2021 00:11

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


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 17.02.2021 00:30

daemon_n, ответил в личку, чтоб тут не плодить.

Berserker, столкнулся с таким нюансом: если в скрипте, например, не объявлена переменная, то при загрузке в сингле движок ругается, а в мультике - нет. Просто тупо не работает без всяких сообщений. Это сложная фишка или как-то можно включить проверку и для сетевой игры тоже?


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 17.02.2021 02:40

Тут это, если грузится игра с таким же набором скриптов, как активная, то перекомпиляции скриптов не происходит, используются текущие. Возможно, в этом причина.


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 17.02.2021 02:44

Если можно поправить, будет здорово. А то мелкие опечатки пьют кровь в и без того неудобной сетевой отладке.
Написал !!VR:i^foo^:Si^bar^; с лишним двоеточием и полчаса пытался глюки побороть, пока случайно на автомате и моторной памяти не стартанул сингл Bad


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 17.02.2021 05:02

Не ясно, что нужно править. Можешь описать порядок шагов для повторения «бага»?


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 17.02.2021 13:49

Berserker, все предельно просто:

В сингле при запуске имеем закономерную брань:
Image: test_a1.jpg

А в мульте все тихо, без матов НЕПРАВИЛЬНО работает:
Image: test_a2.jpg


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 17.02.2021 17:18

Проверить не смог, опять какие-то проблемы с фаерволом/hd-модом, но записал себе. Сообщение об ошибке должно быть только у Хоста.


RE: ERA / WOG - сетевая игра и проблемы с ней - Raistlin - 10.03.2021 13:16

Quote:6. Увеличить велью воговских существ, в моем опыте 4 кошмарных гидр охраняли пондорку на 15 к опыта, 5-9 змей горынычей охраняют улик и сундук сокровищ
Воговские существа заменяют обычных не по велью, а по количеству: было, к примеру, 8 Архангелов, стало 4 Гидры (у существ 8 уровня происходит деление на 2). Тут сам скрипт вогификации править надо, а иначе в игре попросту не будет разницы между Титанами и Костяными Драконами - и те, и те будут заменяться одинаково.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 10.03.2021 16:08

Raistlin, вот этим заняться и надо будет)


RE: ERA / WOG - сетевая игра и проблемы с ней - Raistlin - 11.03.2021 03:13

Это тогда в теме WoG Scripts писать надо, сетевая игра тут непричём) Кстати, igrik выкладывал на форуме код генератора случайных монстров, при его использовании данной проблемы нет.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 01.04.2021 05:29

Использование !!FU:D; для выполнении ф-ции на другой стороне, чтобы предостеречь рассинхрон/краш.

Мне вновь требуются тестеры!Rolleyes


RE: ERA / WOG - сетевая игра и проблемы с ней - Algor - 06.04.2021 00:12

daemon_n, а что мешает запустить 2 клиента и тестить мульт? Или нужны лаги и дисконнекты для полноты теста?


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 06.04.2021 00:58

Algor, после пары-тройки крашей с 2 клиентов на 1 ПК игра ломается, и мультиплеер вылетает на загрузке карты.
Только переустановка и помогает.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 06.04.2021 01:37

daemon_n, ну это же не серьёзно. Удали просто мусорные файлы из папки Data, что создаются в сетевой игре, и игра «починится». Чему там ломаться? )


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 06.04.2021 01:43

Berserker, кто ж знал 105

P.S.: не мешайте мне искать собутыльников компанию для нескучных тестов мультиплеера96-copy



RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 07.06.2021 19:13

Как все уже наверняка знают, основная проблема в рассинхронизации ГСЧ.
Для сетевой игры можно использовать только ГСЧ Героев, не тот, что дополнительно добавлен был в ВоГ.
Т.к. исходников не было, было трудно точно отловить все возможности передачи инициализатора ГСЧ по сети. Насколько я помню он довольно часто передается. Видимо программисты NWC тоже были не во всем уверены и "на всякий случай" его передавали. Думаю все знают, но на всякий случай - инициализация ГСЧ конкретным числом порождает абсолютно детерминированную последовательность генерируемых после этого значений. Абилки, придаваемые монстрам с опытом (и, подозреваю, командирские) в сети требуют либо абсолютно точной синхронизации вызовов ГСЧ на обоих сторонах или принудительной инициализации ГСЧ в одно и тоже число на обоих сторонах перед его использованием. Теоретически можно вообще перед вызовом ГСЧ его инициализировать. Тут только 2 вопроса.
1. Если инициализировать одним и тем же числом, последовательность будет одинаковой, что ни есть гуд явно.
2. Как синхронизировать передачу этого числа уверенно, при том, что, похоже, не все пути были отловлены мною ранее и, наверное, и до сих пор.

Я бы предложил такое решение.
При старте игры сервер генерирует случайное число и сохранеет его в сэйве карты - таким образом число распространяется на первом ходу по всем игрокам. Больше это число никогда в процессе игры не меняется.
Перед тем как использовать ГСЧ, на обоих сторонах берется это число и к нему по детерминированной формуле добавляются детерминированные значения. Например, перед атакой стека к числу прибавляется номер раунда битвы, сторона (0 или 1), номер стека и, возможно, его координата на поле. На обоих сторонах эти значения 100% одинаковые. Этим числом инициализируется геройский ГСЧ и далее им генерируется СЧ. При этом не важно был ли до этого потенциальный рассинхрон и ничего передавать по сети не надо.
Это приминимо не только в хардкодед варианте, но и в ERM скрипте.

Хорошо бы найти точно не работающий в MP скрипт, и попробовать такой подход в него внедрить.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 07.06.2021 19:24

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


RE: ERA / WOG - сетевая игра и проблемы с ней - Panda - 07.06.2021 19:35

Димон вроде написал скрипт, который отключает все абилки и навыки с "шансом", можно создать такой мод "Lan Game" на основе чистой сборки, но я не изучал его скрипты ещё, и не знаю, можно ли безболезненно выдернуть его. Но это как временное решение. А вот что делать с плагинами или патчами - я не знаю, ведь у игроков могут быть разные настройки плагинов/патчей. Я не хочу его беспокоить, поэтому оставлю эту тему для энтузиастов.


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 07.06.2021 19:35

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

(07.06.2021 19:35)Panda Wrote:  Димон вроде написал скрипт, который отключает все абилки и навыки с "шансом", можно создать такой мод "Lan Game" на основе чистой сборки, но я не изучал его скрипты ещё, и не знаю, можно ли безболезненно выдернуть его. Но это как временное решение. А вот что делать с плагинами или патчами - я не знаю, ведь у игроков могут быть разные настройки плагинов/патчей. Я не хочу его беспокоить, поэтому оставлю эту тему для энтузиастов.
Именно, что временное. Понятно, что с этого надо начинать. В TE так вроде и сделали.
Плагины и патчи должны быть синхронизированы, иначе нет решения.

Это, кстати, к Берсу вопрос. Можно добавить проверку, что на всех сторонах одинаковые патчи и плагины?


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 07.06.2021 20:21

И одинаковые скрипты ЕРМ/Lua, и одинаковые ресурсы в lod/pac, одинаковые json-настройки и т.д.? Я реализации точной сверки клиентов популярных ТБС не вижу, например в Цивилизации 5 с модами, где часть xml-файлов руками исправлена.

Самое простое — список модов сохранять и при загрузке сверять. Но список модов <> версии скриптов/плагинов/настроек.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 07.06.2021 20:25

ZVS, в ТЕ вообще все абилки отключили. Даже в сингловой версии. Я написал скрипт, который только в ПвП битве отключает лишь те абилки, которые имеют не 100% на шанс. При этом работает это дело крайне странно - ни один !?BA; триггер с этим не справится - лишь хук на самый первый момент старта объявления до битвы, но на стороне оппонента сработает лишь в триггере !?IP; то есть надо либо скрипты под такой алгоритм переписать, либо сам механизм всех случайных генераций сделать нативным для героев. С таким вопросом сам не справляюсь

Но проблема не только в абилках, а вообще в новом ГСЧ, как ты верно заметил. И вызывается он большинством скриптов в том числе, если точнее, то просто наличие активного !!VR:R в бою ещё до начала каких-либо действий уже вызовет рассинхрон – проверено.

Berserker, а вот скрипты пишутся в сохранении. И нужны они лишь хосту. Но нажатием F12 на другой стороне можно заставить игру работать по иному сценарию, и игра будет отталкиваться уже от новых скриптов и уже их передавать между игроками.

Кстати, вспомнил, что в HD mod есть механизм, сверяющий rmg.txt файлы у разных игроков, о чём говорит уведомление, которое вылезает, если шаблоны либо разные, либо отсутствуют у одного из игроков


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 07.06.2021 21:24

(07.06.2021 20:21)Berserker Wrote:  И одинаковые скрипты ЕРМ/Lua, и одинаковые ресурсы в lod/pac, одинаковые json-настройки и т.д.? Я реализации точной сверки клиентов популярных ТБС не вижу, например в Цивилизации 5 с модами, где часть xml-файлов руками исправлена.

Самое простое — список модов сохранять и при загрузке сверять. Но список модов <> версии скриптов/плагинов/настроек.
Понятно, что ситуация запутанная. Ну хотя бы по формальным признакам.
А может универсальную проверку CRC всего, что навешено считать и сравнивать?


RE: ERA / WOG - сетевая игра и проблемы с ней - igrik - 07.06.2021 21:34

Я пробовал делать такую вещь:
После каждого действия в бою, я от активной стороны брал все основные параметры стеков и отправлял их по сети другой стороне. ПОтом на другой стороне я проверял каждый из этих параметров и исправлял различные. И это работало.
Да, я знаю, что это же костыль. Но лично я не видел другого решения с таким обилием модов.

Второе, о котором тут все молчат: большая часть скриптов замены объектов на старте игры в последствии вызвыают рассинхронизацию. Не вдаваясь в детали, скажу, что в новой версии WOG Scripts эту проблему я решил, путём замены объектов сразу после генерации карты у хоста и перед отсылкой её клиенту.


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 07.06.2021 21:35

(07.06.2021 20:25)daemon_n Wrote:  ZVS, в ТЕ вообще все абилки отключили. Даже в сингловой версии. Я написал скрипт, который только в ПвП битве отключает лишь те абилки, которые имеют не 100% на шанс. При этом работает это дело крайне странно - ни один !?BA; триггер с этим не справится - лишь хук на самый первый момент старта объявления до битвы, но на стороне оппонента сработает лишь в триггере !?IP; то есть надо либо скрипты под такой алгоритм переписать, либо сам механизм всех случайных генераций сделать нативным для героев. С таким вопросом сам не справляюсь
Я недавно там посмотрел последнюю версию. Вроде там опыт есть, но только атака, защита, урон и здоровье. Ну т.е. да - то, что не зависит от ГСЧ. Что логично.

Quote:Но проблема не только в абилках, а вообще в новом ГСЧ, как ты верно заметил. И вызывается он большинством скриптов в том числе, если точнее, то просто наличие активного !!VR:R в бою ещё до начала каких-либо действий уже вызовет рассинхрон – проверено.
Для меня это вообще-то новость. Я, конечно не мог следить за всеми скриптами, т.к. движком занимался. Но, помнится, я говорил, что альтернативный ГСЧ можно использовать только там, где нет никакого отношения к MP. Как раз для того, чтобы "не трогать" на отдельно взятой стороне ГСЧ Г3.
А вообще оба генератора ничем не отличаются. Г3 использует random() из Си и я тоже, но, т.к. у меня, отдельный EXE, то и статическая библиотека Си отдельная.

Quote:Berserker, а вот скрипты пишутся в сохранении. И нужны они лишь хосту. Но нажатием F12 на другой стороне можно заставить игру работать по иному сценарию, и игра будет отталкиваться уже от новых скриптов и уже их передавать между игроками.
В смысле нужны только хосту? Скрипты должен работать на обоих сторонах. Не обязательно все, но те, что MP обязательно. Или я не понял проблему?

Quote:Кстати, вспомнил, что в HD mod есть механизм, сверяющий rmg.txt файлы у разных игроков, о чём говорит уведомление, которое вылезает, если шаблоны либо разные, либо отсутствуют у одного из игроков
Вот это правильно. Надо бы и все так синхронизировать (CRC нам в помощь).

(07.06.2021 21:34)igrik Wrote:  Я пробовал делать такую вещь:
После каждого действия в бою, я от активной стороны брал все основные параметры стеков и отправлял их по сети другой стороне. ПОтом на другой стороне я проверял каждый из этих параметров и исправлял различные. И это работало.
Да, я знаю, что это же костыль. Но лично я не видел другого решения с таким обилием модов.
Это одно из решений. Но, не уверен, что в случае, когда на одной стороне ГСЧ вызывается на 1 раз больше, чем на другой, то это поможет решить проблему.
Возможно решение окажется и в передаче параметров и в реинициализации ГСЧ детерминированным значением. Зависит от результатов тестов.


RE: ERA / WOG - сетевая игра и проблемы с ней - igrik - 07.06.2021 22:00

(07.06.2021 21:35)ZVS Wrote:  А вообще оба генератора ничем не отличаются. Г3 использует random() из Си и я тоже, но, т.к. у меня, отдельный EXE, то и статическая библиотека Си отдельная.
Уже отличаются, причем очень сильно. Второй Берс преписал и теперь он работает по алгоритму Вихрь Мерсенна. Сейчас он явно не годится для MP

(07.06.2021 21:35)ZVS Wrote:  В смысле нужны только хосту? Скрипты должен работать на обоих сторонах. Не обязательно все, но те, что MP обязательно. Или я не понял проблему?
У второго игрока вообще и игре может не быть скриптов. Главное чтобы доп.файлы были (такие как картинки, звуки и т.п.)
Все скрипты от хоста подтянутся к клиенту (причем только в том виде, в каком их имеет хост) и корректно прогрузятся у клиента, а потом будут вполне исправно работать. Сколько я знаю ЭРУ, так было всегда.


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 07.06.2021 22:01

Понятно.


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 07.06.2021 22:36

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

Кстати, никто не замечал какой размер дифа сэйвов, которые передаются след. игроку в SoD и в WoG? Может Берс все уже перелопатил, но было так:
На текущем игроке сравнивались 2 сэйва до хода и после и строился банальный файл разницы, который и отправлялся следующему. При этом алгоритм работал просто в лоб. Если в первом сэйве последовательность "ABCDEFGH", а во втором "0ABCDEFGH", то никакого интеллектуального поведения "поискать сдвиг туда-сюда" нет Отправляется прямо "0ABCDEFGH", а не "0" и сдвиг. Это не недостаток. Видимо авторы решили, что сдвигов быть и не может. Но в WoG в сэйве сдвигов дофига. И алгоритм SoD очень плохо подходил. Пришлось в WoG добавить поддержку сдвига и размер передаваемых данных сильно уменьшился.


RE: ERA / WOG - сетевая игра и проблемы с ней - igrik - 08.06.2021 20:53

ZVS, лично я по дифу сейвов ничего не знаю.

Guest, по старой памяти накидал я на скорую руку плагин. Если есть желание, потестируйте плиз. Я с десяток боёв провёл - вроде всё норм.
Скачать.
Это тестовая версия плагина!! В сборки не засовывайте! Также плагин должен быть на обеих версиях игры (у хоста и у клиента)

Код на С++ (Click to View)



RE: ERA / WOG - сетевая игра и проблемы с ней - Elmore - 08.06.2021 21:10

(08.06.2021 20:53)igrik Wrote:  Также плагин должен быть на обеих версиях игры (у хоста и у клиента)

Такое как раз Лаунчер сможет обеспечить, когда плагин пойдет в релиз.


RE: ERA / WOG - сетевая игра и проблемы с ней - igrik - 08.06.2021 21:12

Elmore, ээ стоп! Это тестовая версия. Её нельзя в релиз!

В ней нет проверок на равенство параметров стеков.
Это лишь каркас, не более того.

К тому же, я помню Бараторч говорил, что передача данных свыше 4кб будет дорого ему обходиться в лобби. Это тоже нужно учесть (хотя сейчас плагин швыряет 3400 байт, т.е. 3,3 кб)


RE: ERA / WOG - сетевая игра и проблемы с ней - Elmore - 08.06.2021 21:17

Не не не, я именно написал "когда плагин пойдет в релиз". Разумеется, мы его сперва тщательно оттестируем 132
А Баре нужен сервак на хостинге с безлимитным трафиком. Я так понимаю именно это он имел ввиду.


RE: ERA / WOG - сетевая игра и проблемы с ней - Panda - 08.06.2021 21:37

Elmore, он имел в виду, что нужно улучшать именно аппаратную начинку (ОЗУ, ЦПУ).


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 08.06.2021 21:55

-) VR:R использует геройский random() в бою. Странно, что Слава использовал random() не геройский. Можно, конечно, перенаправить эту вог-функцию на геройскую реализацию.
-) Вне боя вместо геройского random() используется Вихрь Мерсенна. Функция перехвачена.
-) Алгоритм diff от Славы вызывал вылеты. В особенности при разных размерах сохранений. Кроме статической памяти ЕРМ появилось множество динамических секций. Разобраться в нюансах мне не удалось. Я пропатчил код, вырезав весь diff-функционал на корню. Всегда отправляется полное сохранение.

Code:
(* Fix multiplayer crashes: disable orig/diff.dat generation, always send packed whole savegames *)
  Core.p.WriteDataPatch(Ptr($4CAE51), ['E86A5EFCFF']);       // Disable WoG BuildAllDiff hook
  Core.p.WriteDataPatch(Ptr($6067E2), ['E809000000']);       // Disable WoG GZ functions hooks
  Core.p.WriteDataPatch(Ptr($4D6FCC), ['E8AF001300']);       // ...
  Core.p.WriteDataPatch(Ptr($4D700D), ['E8DEFE1200']);       // ...
  Core.p.WriteDataPatch(Ptr($4CAF32), ['EB']);               // do not create orig.dat on send
  Core.p.WriteDataPatch(Ptr($4CAD91), ['E99701000090']);     // do not perform savegame diffs
  Core.p.WriteDataPatch(Ptr($41A0D1), ['EB']);               // do not create orig.dat on receive
  Core.p.WriteDataPatch(Ptr($4CAD5A), ['31C040']);           // Always gzip the data to be sent
  Core.p.WriteDataPatch(Ptr($589EA4), ['EB10']);             // Do not create orig on first savegame receive from server


Вопрос: исправит ли проблему принудительная отправка сетевого пакета на синхронизацию состояния генератора при каждом вызове random(), если весь WoG-код тоже будет использовать геройский random()?


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 08.06.2021 22:52

(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()?
Мое мнение - да, при условии, что ты точно уверен, что нашел все рассинхроны ГСЧ.
Но я бы настаивал на моем предложении устанавливать зерно принудительно детерминированно (не значит в одно и тоже значение) на обоих сторонах без передачи по сети зерна.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 08.06.2021 23:10

igrik, спасибо. В ближайшие часы сделаю тесты

Все молодцы! Работаем дальше177


RE: ERA / WOG - сетевая игра и проблемы с ней - igrik - 08.06.2021 23:52

(08.06.2021 22:52)ZVS Wrote:  Попробую, но не раньше конца недели. Все же мне кажется, что синхронизация параметров монстров не вылечит от рассинхрона ГСЧ.
Нет, не вылечит. Но хотя бы один маленький кирпичик положен.
На самом деле этот код так, на вскидку. Я думаю его ещё дорабатывать и дорабатывать.
(08.06.2021 22:52)ZVS Wrote:  Я, наверное чего-то не понимаю, но при чем тут лобби? Разве оно не используется, чтобы просто начать игру, а далее все передается от игрока к игроку напрямую?
Нет. Все данные всегда через сервер лобби проходят (если игра играется через лобби).
И если сервер упал или начал обновляеться - игра прерывается, о чём пользователи получают уведомление.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 09.06.2021 00:09

ZVS, igrik говорит про игру по сети с HD-модом. Не по локальной, а по глобальной через личный сервер автора HD-мода. На сервере видны публичные игры, есть возможность играть, даже если у тебя нет белого IP. Все данные отправляются и принимаются через сервер, то есть он прокси. И там ограничение на размер данных за одну пересылку. Было 4 КБ, для Эры бараторч поднял до 60k, если память не изменяет.

Quote:Ты имеешь в виду СТАЛ вызывать вылеты после добавления дин. данных?
Именно так, стал. Какое-то время спасало дополнение сохраняемых данных нулями до фиксированного значения, например 4 МБ. Потом перестало, так как вылетало в случайный момент. В конечном счёте оказалось, что проще всего посылать всю сохранёнку в ~600 КБ для XL-карты.

Quote:Но я бы настаивал на моем предложении устанавливать зерно принудительно детерминированно (не значит в одно и тоже значение) на обоих сторонах без передачи по сети зерна.
Это не будет уже ГСЧ вообще, как мне кажется. Запусти цикл на генерацию 20 значений, ничего не меняя ещё на поле боя. И будет 20 одинаковых чисел. Всё, что у нас есть — хэш от нескольких значений вроде раунда и позиций отрядов. Я по разному в жизни извращаюсь с генерацией псевдослучайных значений, но тут видится тупик. И это даже не разброс урона, не стремящийся к мат. ожиданию, а такие важные вещи как блоки, мораль, случайные заклинания.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 09.06.2021 00:54

igrik, не сработал плагин как минимум на навыке окаменения от Архидьяволов.
и на "неудачном ударе"


RE: ERA / WOG - сетевая игра и проблемы с ней - igrik - 09.06.2021 01:01

Неудачный удар - скрипт или плагин?
Посмотрю завтра что с окаменением. Хотя я может пока что зря флаги тронул. В любом случае завтра поразбираюсь.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 09.06.2021 01:05

igrik, это плагин, который активизирует "неудачу" (половина урона)

Однако игра даже после подобного старается восстановить рассинхроны урона, где возможно

Проще говоря, видно, что плагин работает!

UPD: проблема та же и с "удачным ударом"
Плюс "Печаль", наложенная Архидьяволом, не дала эффекта, так как наложена лишь на одной стороне. В дэбафах она есть, но эффекта не возымела.


Далее, как только Мастер-Гремлины скастовали "минное поле" перед выстрелом (только на стороне защитника, лол), его урон изменился, но удар другими юнитами всё равно наносит верный урон на обеих сторонах

Всё - минус-мораль лишь на одной стороне - окончательный рассинхрон


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 09.06.2021 01:19

(09.06.2021 00:09)Berserker Wrote:  Это не будет уже ГСЧ вообще, как мне кажется. Запусти цикл на генерацию 20 значений, ничего не меняя ещё на поле боя. И будет 20 одинаковых чисел. Всё, что у нас есть — хэш от нескольких значений вроде раунда и позиций отрядов. Я по разному в жизни извращаюсь с генерацией псевдослучайных значений, но тут видится тупик. И это даже не разброс урона, не стремящийся к мат. ожиданию, а такие важные вещи как блоки, мораль, случайные заклинания.
А я не вижу проблемы. По-моему вполне можно обойтись чем-то вроде "хэш от нескольких значений вроде раунда и позиций отрядов".
Мне кажется ты просто не хочешь этим заниматься, т.к. слова "видится тупик" видятся не очень аргументированно. Ab Если все же решить попробовать можем детали "хэша" обсудить.


RE: ERA / WOG - сетевая игра и проблемы с ней - igrik - 09.06.2021 01:52

Для общей информации, да и пусть будет тут:
1006 - тип действия в бою + передача зерна (передаётся: 0x47883B; принимается: 0x473D61)


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 09.06.2021 02:00

ZVS, при возможности попробую и фиксированный, конечно.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 09.06.2021 02:14

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


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 09.06.2021 02:17

daemon_n, для сингла такой убийственно некачественный генератор не подойдёт, да и незачем. Проблема лишь в сетевой битве человек vs человек.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 09.06.2021 02:27

Berserker, категорически не согласен Moral

То же касается не только битв, но и событий в игре.

Скажем, тот же скрипт "книга заклинаний" генерирует нам всегда разные заклинания. Просто рай для сейв/лоадов


RE: ERA / WOG - сетевая игра и проблемы с ней - Elmore - 09.06.2021 02:32

(09.06.2021 02:27)daemon_n Wrote:  Просто рай для сейв/лоадов

Хоть я и мало в теме, но вот такое нужно блочить всегда и везде, где возможно. Сколько из-за этого проблем выплывает с балансом в игре, не описать.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 09.06.2021 04:29

Новая инфа! Только наложившая сторона получает эффект от спец абилок на своей машине, когда как визуально может совпасть у обеих.
Image: unknown.png


RE: ERA / WOG - сетевая игра и проблемы с ней - Suft - 12.06.2021 12:09

В сетевой часто при передаче существ герою опыт пропадает
Если друг стоит в моём замке и я вместо него замок защищаю
Если я нападаю на друга за него комп играет не тестил пока из за чего


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 12.06.2021 19:56

suftfree, очень интересно звучит.

Нужен список модов и сохранение


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 13.06.2021 20:37

Перепроверил. Нет, Слава, ты используешь геройский Random, а не rand() из C++:
Code:
int Random(int ZLow,int ZHigh)
{
  #include "templ.h"
  __asm{
    mov    ecx,ZLow
    mov    edx,ZHigh
    mov    eax,0x50C7C0
    call   eax
    mov    IDummy,eax
  }
  RETURN(IDummy)
}

Он везде используется,


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 14.06.2021 01:23

Проверял рассинхронизацию в бою 4 отрядов волшебниц против 4 отрядов драколичей.
Причина: у первого игрока SetSeed(1) + Random(1, 100) для волшебниц, затем действие с отсылкой нового зерна (2).
Второй игрок получает новое зерно SetSeed(2), ИД действия, вызывает Random(1, 100) для волшебниц уже с другим зерном.

Реализовал отладочный вывод и детерминистический генератор на базе CRC32C от кортежа (CombatRoundId, MinValue, MaxValue, CombatActionId + Const), где все члены кортежа сперва пропускаются через функцию кодирующую int -> int. Рассинхронизации не видно. Просьба проверить с опытом.

В отладке выводятся все вызове SRand (установка зерна генератора, которое игнорируется) и Rand (генерация случайного значения). Видно откуда вызывается, с каким диапазоном, для какого номера действия и с каким результатом.

https://dropmefiles.com/f6713


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2021 07:35

Berserker, отлично! Скоро проверю

Утро начинается не с кофе96-copy


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2021 09:19

Berserker, у меня игра крашится при попытке попасть в лобби игры (меню выбора/создания карты)
что с, что без hd mod (Click to View)



RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 14.06.2021 14:47

daemon_n, и давно у тебя так?

Зарегистрировался, проверил — ничего не вылетело. Тестируй с одной копией игры через локальную сеть.

Quote:что с, что без hd mod
Лобби без HD мода? Сильно!


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2021 15:16

Berserker, только с новой версией ERA. Проблема даже в одиночной игре!

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

Если уж совсем просто, то мне не начать игру


RE: ERA / WOG - сетевая игра и проблемы с ней - Panda - 14.06.2021 16:34

Berserker, проверил, у меня так же краш, всё точно как у Димона 105


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 14.06.2021 18:00

Кинь ещё папок Debug, пожалуйста. Не могу повторить.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 14.06.2021 18:11

Вот обновление. Нужны папки Debug:
https://dropmefiles.com/BpU7O


RE: ERA / WOG - сетевая игра и проблемы с ней - Panda - 14.06.2021 18:16

Berserker, вот дебаг, но там наверн ничего нового и интересного нет:
https://disk.yandex.ru/d/fV2DhcdZIV9TCg

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


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2021 21:51

Всё работает отлично!!!!

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

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

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

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

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

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

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

Что ещё требуется от меня?


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 14.06.2021 22:32

Скрипт на неудачу не смотрел, возможно там VR:T используются (нельзя, нужно VR:R) или какой-то хак. Отлично, что всё остальное работает. Я ещё добавлю уникальное значение для каждого боя в состояние генератора и этого будет достаточно. Плагин igrik-а не нужен: ни одна пересылка не решит проблемы комплексно так, как решает детерминированный генератор и грамотно написанные скрипты.


RE: ERA / WOG - сетевая игра и проблемы с ней - igrik - 14.06.2021 22:43

(14.06.2021 22:32)Berserker Wrote:  Плагин igrik-а не нужен: ни одна пересылка не решит проблемы комплексно так, как решает детерминированный генератор и грамотно написанные скрипты.
Плюс не надо гонять данные туда-сюда постоянно.
Этот плагин - костыль. Поэтому, если появляется решение самой проблемы ГСЧ, то мой плагин явно в топку Yes


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2021 22:44

Berserker, скрипт на неудачу и смотреть не надо - он изначально некорректно работает в PvP бою, так как влияет лишь на одного игрока ещё с самого начало боя.

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

UPD: увы, но се сработало - вог-скрипт "сопротивление" работает с разными результатами (резист/не резист) - на одной стороне rand # показывают различные значения.
Так что скрипты придётся переписывать всё равно.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 14.06.2021 22:59

daemon_n, F11 сразу же после кривого срабатывания и смотрим вместе erm tracing.erm


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2021 23:06

Berserker, хмм, не думаю, что срабатывание кривое, а дело в пресловутом VR:R - хотя сейчас проверю всё ещё раз и с f11

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

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

Как я понял, прикол в том, что яд накладывается как заклинание 105


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 14.06.2021 23:47

Сюда через dropmefiles


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2021 23:48

Яд вообще странно работает - то его нет, то неожиданно появляется в след раунде.

Ещё баг:

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

Нормальный erm tracking ещё не нашёл, так как отвлёкся на тест заклинаний. Сейчас ещё тестирую


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2021 23:59

Berserker, сколдовал заклинание "Армагеддон" на одной стороне и всех убил - на второй даже не было колдовства - рассинхрон.

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

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

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

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

Проверял без скриптов вообще


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 15.06.2021 00:10

daemon_n, спасибо, буду ещё тестировать.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 15.06.2021 00:19

Berserker, а есть более точное ТЗ? Или тестировать всё подряд?))

Мне не раз говорили, что у меня талант находить проблемы даже там, где не надоRolleyes


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 15.06.2021 01:22

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

SRand не важен, по сути, так как его значение не используется. Тем не менее, игра его шлёт перед каждым действием. Удобно отслеживать в общем потоке вывода.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 28.06.2021 23:51

(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


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 29.06.2021 04:09

1) А WOG_PreBeforeBattle когда срабатывает? Уже после создания поля боя? Иначе нельзя настраивать опыт.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 29.06.2021 04:45

Berserker, срабатывает ещё раньше BA.
Это хук на адресе 75A605 (7710213), который ещё igrik сделал для первых версий скрипта на "сохранение перед боем"


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 29.06.2021 06:17

Тогда код некорректен. Нельзя обращаться к !!BM и !!EA до OnBeforeBattlefieldVisible или OnSetupBattlefield.
Там старые структуры данных с прошлого боя и !!EA их запомнит на весь бой.


RE: ERA / WOG - сетевая игра и проблемы с ней - igrik - 29.06.2021 09:06

(29.06.2021 06:17)Berserker Wrote:  Тогда код некорректен. Нельзя обращаться к !!BM и !!EA до OnBeforeBattlefieldVisible или OnSetupBattlefield.
Там старые структуры данных с прошлого боя и !!EA их запомнит на весь бой.
Именно так и есть!
И я указывал, что (WOG_PreBeforeBattle) нужно использовать только в редчайших случаях, и ни в коем случае не настраивать в нём отряды и другие важные элементы боя, потому что бой ещё не начался, и весь боевой менеджер либо не инициализирован, либо имеет мусор с прошлой битвы.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 29.06.2021 10:44

igrik, Berserker, а есть точный пример? Примерно я представляю, но пока не вижу альтернатив.

Скажу так, позднее эффект к бою не применялся у меня никак.

Попробую, конечно, поиграться ещё148


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 29.06.2021 15:18

daemon_n, куда точнее?

Нельзя обращаться к !!BM и !!EA до OnBeforeBattlefieldVisible или OnSetupBattlefield.




RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 29.06.2021 17:53

Berserker, но в OnSetupBattlefield нет эффекта вообще 102

В общем, проверял я в мультиплеере - и только там этот триггер и используется.

Если найдёте рабочую альтернативу, код я поменяю.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 29.06.2021 21:30

daemon_n, стоит в первом раунде боя убирать эти способности. Когда остальные скрипты уже сработали. И триггер поместить в скрипт с -999 приоритетом.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 29.06.2021 22:20

Berserker, они разве уберутся? Напоминаю, что сработать должно на обеих сторонах.

Что ж. Попробую и это.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 29.06.2021 22:48

daemon_n, на обоих и вызывай.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 29.06.2021 22:57

Berserker, и как же?
Начало раунда? Есть у меня одно подозрение.
Буду дома, попробую видос записать


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 30.06.2021 03:06




RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 30.06.2021 10:33

Berserker, работает только со стороны нападающего

UPD: до фикса расссинхрона откладываю тесты и работы.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 30.06.2021 17:22

daemon_n, у нас какие-то разные игры:


Сработало на обеих сторонах.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 05.07.2021 01:09

Скрипт переписан

Стало (Click to View)



RE: Ошибки, баги и недочёты ERA - Protos - 03.11.2021 16:13

Всем доброго вечера!
Попробовали сегодня с друзьями втроем поиграть по сети в WoG ERA. Запускали через лаунчер 3 в 1 версия 1.02. Поочередно происходит вылет то одного, то другого игрока из игры. В старом WoG тоже беда такая же была. Не знаю в чем проблема. Настройки у всех одинаковые.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 04.11.2021 11:50

Protos, привет - обнови сборку до последней версии.
Если не поможет, кидай сейв сюда или в дискорж

(05.07.2021 01:09)daemon_n Wrote:  Скрипт переписан

Это всё не помогло, так как на разных ПК данные в итоге отличаются - лучшим способом всё же было отключение способности именно у существа, и именно до боя


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 24.12.2021 19:35

Наконец-то исправлена проблема, мучавшая меня годами:


Данный фикс должен быть не на ERM, а на уровне ядра:

Если у нападающего и защитника стоят разные настройки быстрой битвы, игра ляжет.
Если одинаковые (1), то оба игрока увидят лишь результат битвы, но участвовать не смогутYes


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 24.12.2021 19:37

&997/998 у флагов есть константы вида ERM_FLAG...
Спасибо, нужно включить, конечно.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 24.12.2021 19:51

Berserker, специально использовал старый синтаксис, чтобы показать работоспособность ещё на WOG


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 24.12.2021 20:03

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


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 24.12.2021 20:17

Berserker, я тоже так думаю, но проверить на чистом соде возможности нет.
Тем не менее Baratorch 100% его там исправил. Я уже ему начал писать (после десятков часов исследований), но вот полчаса назад внеазапно вспомнил этот триггер


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 24.12.2021 20:30

В том-то и дело, что сбрасывать настройки автобоя (читать: глобальную переменную) не выход. Выход в патче. Если Бара сей баг правил, странно, что не для Эры. Не грех спросить.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 25.12.2021 23:58

(24.12.2021 19:35)daemon_n Wrote:  Если у нападающего и защитника стоят разные настройки быстрой битвы, игра ляжет.
Если одинаковые (1), то оба игрока увидят лишь результат битвы, но участвовать не смогутYes

Начиная С версии hd mod 5.2 R82 данная проблема успешно устранена патчем - спасибо Baratorch

UPD: я ошибся частично или полностью. Автобитва ещё возможна


RE: ERA / WOG - сетевая игра и проблемы с ней - Suft - 29.12.2021 10:51

После тестов выяснилось что в Ера скрипт 2 функции измененные существа вызывают рассинхрон в битве - при отключении их все работает 6 битв подряд
Тесты продолжатся чуть позже - возможен вылет из за опыта существ


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 31.12.2021 01:55

(24.12.2021 19:35)daemon_n Wrote:  
Наконец-то исправлена проблема, мучавшая меня годами: (Click to View)

Как оказалось, данного исправления не хватает.

Нашёл адрес функции(спс igrik за git), вызываемой на обеих сторонах ещё до битвы и до BA:
0x75AE24

Добавил новую ф-цию в GEM,

Думаю, здесь не совсем поможет HD mod патч, так как адрес чисто Воговский. Со след. обновлением все смогут протестировать порадоваться.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 31.12.2021 11:33

Настройки автобоя слетают после этого?


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 31.12.2021 11:53

Да. BA:Q - отключает настройку.
Опять же - восстановить после боя несложно.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 05.02.2022 14:43

И вновь наши бараны)

В общем, всё оказалось куда прозаичней, зато теперь я имею больше опыта - делюсь:




RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 05.02.2022 17:47

daemon_n, шикарное решение!


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 12:01

Всем привет. Долго отсутствовал.
И какое сейчас состояние синхронизации в MP?
UPD.
Увидел, что в ERA с 3.8.1 вроде как добавлено обновление на ГСЧ, но, все же, не нашел насколько все работает теперь нормально или нет.
Может имеется обновленный список опций, которые совместимы с MP режимом?
Я даже потестирую, если что. Ab


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 15:54

ZVS, сейчас большинство опций переписаны для полной совместимости в мультиплеере.

Проблема оказалось в другом: плагин "Badluck.era" срабатывает не всегда одинаково на обеих сторонах, потому было решено удалить его из сборки и заменить скриптом из ERA scripts


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 16:34

Звучит отлично.
Какую сборку тогда лучше попробовать для игры MP с опытом монстров ну и последними MP совместимыми опциями ERA?


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 16:37

ZVS, на данный момент ту, которую я должен обновить - именно там я удалил все лишние файлы и поместил нужные скрипты.
Скачать их можно отдельно на git

ZVS, лучше скажи, как мне пропатчить воговскую таблицу заклинаний Yes

а то тут плагин на новые заклинания сделали, но ERM его не видит


    _PI->WriteDword(0x687FA8, (int)&Spell); - патч содовской таблицы, но вод где и когда патчить erm?


RE: ERA / WOG - сетевая игра и проблемы с ней - XEPOMAHT - 14.06.2022 16:59

(14.06.2022 16:37)daemon_n Wrote:  как мне пропатчить воговскую таблицу заклинаний Yes

а то тут плагин на новые заклинания сделали, но ERM его не видит

Лично я все новые заклинания пишу в оригинальную воговскую таблицу, т.к. в WoG TE (экзешник которой используется в ЭРЕ) эта таблица уже пропатчена и расширена авторами ВоГа. То, что автор плагина тупо скопировал код с аналогичного содовского плагина, забыв о нововведениях ВоГа - проблема автора плагина (у него опыта в написании плагинов уже почти 10 лет, но вот почему-то качество его dll по-прежнему хромает, хотя теоретически он уже вполне должен был работать на уровне Сава или Игрика, но... ему ещё нужно учится и учиться...).

(14.06.2022 16:37)daemon_n Wrote:      _PI->WriteDword(0x687FA8, (int)&Spell); - патч содовской таблицы, но вод где и когда патчить erm?

Здесь:

// Spells support
{0x59E467+3,DS(Spells),4},
{0x687FA8,DS(Spells),4},

Т.к. адрес базовый, то и патч крохотный. А ВоГ традиционно использует ПРЯМУЮ адресацию (базовая - только в ассемблерных вставках), поэтому там - уже колбаса.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 17:08

XEPOMAHT, проблема совместимости здесь в том, что воговская таблица подразумевает использование заклинаний существами, а не героями, а потому последующие изменения и расширения не очень легко устроить

P.S.: за адрес спасибо - попробую сделатьYes

P.P.S.: кажется, не сработало


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 17:15

daemon_n, "должен обновить" означает, что стоит подождать обновления?
Отдельно я бы не качал, т.к. хотел бы полную сборку.

По поводу правки таблицы заклинаний. Я исходники WoG не видел 18 лет...
Ну так, посмотрел, что с тех пор осталось.
ERM использует копию таблицы из SoD.
Сама таблица находится после строк "{"ZMGC03.def", "MGblock3",1}" (это конец таблицы анимаций магии).

Таблица SoD копируется в таблицу WoG так (первый - адрес таблицы SoD):
    {(Byte *)0x6854A0,(Byte *)Spells,sizeof(_Spell_)*SPELLNUM_0}, //
   
Адреса в памяти SoD таблицы подменяются на адрес WoG таблицы (адреса слева):
    {0x59E467+3,DS(Spells),4},
    {0x687FA8,DS(Spells),4},

Это по старым исходникам.
Или не эта инфа нужна?


RE: ERA / WOG - сетевая игра и проблемы с ней - XEPOMAHT - 14.06.2022 17:21

(14.06.2022 17:08)daemon_n Wrote:  проблема совместимости здесь в том, что воговская таблица подразумевает использование заклинаний существами, а не героями, а потому последующие изменения и расширения не очень легко устроить

Вроде нет, вот видим, что ВоГ выделает память для таблицы заклинаний согласно структуре:

Code:
extern _Spell_ Spells[SPELLNUM];

Если ты делаешь то же самое в плагине, то работать в купе с воговским кодом уже не будет (т.к. воговский код не использует базовую адресацию и всегда будет читать напрямую из памяти вога, а не твоего плагина).

Лично у меня в Тифоне монстры колдуют из воговской таблицы, куда во время загрузки и пишутся все данные редактора заклинаний, включая новые бланковые заклинания (которые так же видит и редактор монстров для назначения их любым монстрам в игре).


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 17:24

ZVS, да, в ближайшие дни будет обнова

адреса нужны, спасибо - шаманю потихоньку - видимо, надо оба патчить. всё так и сделано - игра вполне справляется с новыми параметрами, а вот ERM - нет102

Просто всё ещё сложно понимать всё это, даже освоив с++ базу148

XEPOMAHT, тогда придётся идти на радикальны меры и вручную вносить каждый параметр из плагина в новую таблицу через un:c 105


RE: ERA / WOG - сетевая игра и проблемы с ней - XEPOMAHT - 14.06.2022 17:29

(14.06.2022 17:24)daemon_n Wrote:  тогда придётся идти на радикальны меры и вручную вносить каждый параметр из плагина в новую таблицу через un:c 105

Нет. Повторяю ещё раз для тех, кто не понимает: в плагине на новые заклинания используй ВОГОВСКОЕ АДРЕСНОЕ ПРОСТРАНСТВО. Там памяти выделено на 200 заклинаний - неужели тебе этого мало???


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 17:35

XEPOMAHT, всё ещё не понимаю - в какой именно момент я должен переадресовать туда?
и "туда" это "куда"?

начнём с того, что в городах и у героя используется таблица по адресу 0x687FA8


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 17:40

Таблица SoD копируется в таблицу WoG при старте игры (запуск exe). После этого таблица SoD никак не используется - все внесенные в нее изменения после копирования будут проигнорированы. Изменения надо делать прямо в WoG таблице.

"Туда" (адрес WoG таблицы) найти можно, например, по адресу 0x59E46A или 0x687FA8. По этим адресам будет адрес таблицы заклинаний WoG сразу после ЗАПУСКА. В образе файла на диске (вне запуска) там будет адрес таблицы SoD.

Это если ЭТОТ код WoG не менялся с момента моего отхода от дел.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 17:42

ZVS, ааа, вот теперь дошло - то есть надо делать намного раньше?
или поместить плагин в "beforeWog"?


RE: ERA / WOG - сетевая игра и проблемы с ней - XEPOMAHT - 14.06.2022 17:44

(14.06.2022 17:35)daemon_n Wrote:  всё ещё не понимаю - в какой именно момент я должен переадресовать туда?
и "туда" это "куда"?

У тебя сейчас в плагине такая запись:

Code:
_Spell_ Spell[SPELLS_MAX];

Для ВоГа её быть НЕ ДОЛЖНО. Просто избавься от неё (правда, плагин придётся переписать чуть ли не весь). Если не понятно, что это вообще такое и с чем это едят, то... придётся учится кодингу. Просто знания Си++ тебя не спасут.

(14.06.2022 17:35)daemon_n Wrote:  начнём с того, что в городах и у героя используется таблица по адресу 0x687FA8

Начни с учёбы по кодингу. Ты совершенно не понимаешь, что "по адресу 0x687FA8" нет никакой таблицы. Там обычный dword и ничего более.

Учиться, учиться, учиться и ещё раз учиться, а не пытаться что-то сделать в готовом си-шном коде методом научного тыка.


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 17:50

C и C++ достаточно низкоуревневы. Там не трудно написать любые преобразования адресов, не хуже чем на asm.
Я могу посоветовать что-то с настройкой кода, но где плагин посмотреть весь?


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 17:51

XEPOMAHT, размер таблицы не так интересен, покуда плагин корректно добавляет новые заклинания для героя и замков, но вот WoG, как я понял, копирует таблицу до хука на изменение таблицы, а потому и эффекта на erm нет

ZVS, ссылка на плагин и ресурсы для игры

Или ссылка на оригинальный код от AlexSpl


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 18:03

XEPOMAHT, я понимаю, что по адресу 0x687FA8 указатель на таблицу, которая лежит по адресу 0x6854A0

И процесс обучения подразумевает ошибки и консультации с теми, кто понимает 118
Так что за незнание и непонимание я себя не корю, а лишь ищу возможность разобраться Yes


RE: ERA / WOG - сетевая игра и проблемы с ней - XEPOMAHT - 14.06.2022 18:04

(14.06.2022 17:51)daemon_n Wrote:  размер таблицы не так интересен, покуда плагин корректно добавляет новые заклинания для героя и замков, но вот WoG, как я понял, копирует таблицу до хука на изменение таблицы, а потому и эффекта на erm нет

Можешь бинарным патчем увеличить размер данных для копирования из таблицы, дело-то совсем плёвое. У Алекса там памяти на 128 заклов выделено, поэтому можешь копировать все 128, а можешь только реальные, без бланковых. Например в Тифоне у меня 95 заклов всего - хватило за глаза и то, чтобы сделать минимум патчей в коде игры. Но смотри - плагин Алекса переносит функции целиком, т.е. все воговские хуки на магию полетят в тар-тарары. 148 В Тифоне я сохранил работоспособность воговских хуков, т.к. сам код практически не меняю.


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 18:05

Вместо кода:
_Spell_ Spell[SPELLS_MAX];

нужно написать:
_Spell_ *Spell;

И вместо кода:
    // Spell Table
    for (int i = SPELL_SUMMON_BOAT; i <= SPELL_ACID_BREATH; ++i)
    Spell[i] = o_Spell[i];

надо написать:
    Spell=(_Spell_ *)*((int *)0x687FA8);

Это только для начала. Дальше остальное нужно смотреть, в частности, не вылезает ли SPELLS_MAX за границы таблицы WoG.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 18:08

ZVS, SPELLS_MAX = 96

(14.06.2022 18:05)ZVS Wrote:  Вместо кода:
_Spell_ Spell[SPELLS_MAX];

нужно написать:
_Spell_ *Spell;

так дальше всё равно по ссылке передача аргумента
хотя меня смутило, почему там не указатель, ведь в игре именно он и используется


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 18:12

Вопрос был как к реальной таблице WoG обращаться, а не к неработующей с ERM таблицей мода.
В ответ на это - мой код.
Однако, судя по словам XEPOMAHT, там еще куча чего патчится в SoD, а это отдельная история - надо проверять и, возможно, править код и функций тоже.

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


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 18:22

ZVS, на строке 372
Code:
_PI->WriteDword(0x687FA8, (int)&Spell);

в общем, в новом исполнении заклинания не добавляются вообще


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 18:25

daemon_n, это нужно закомментировать.

Посмотрел я DllMain. Там много чего наверняка патчится в SoD поверх WoGовских патчей. Возможно этот мод не очень вообще совместим с WoG (я не в курсе что это за мод и для чего писался).
Есть еще один вопрос. Как подгружаются DLL сейчас. Есть 2 варианта - прописанные в таблице импорта, тогда подгружаются загрузчиком и DllMain вызывается ДО вызова кода WoG (и в памяти еще адрес таблицы SoD) или с помощью LoadLibrary (или аналогов), тогда код DllMain вызывается ПОСЛЕ стартового кода WoG (и в памяти уже адрес таблицы WoG). Почти уверен, что тут второй вариант, но это вопрос к Берсеркеру.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 18:30

ZVS, тот же эффект: не добавляются спеллы - каким образом плагин сообщает, что заклинания изменены?


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 18:36

daemon_n, это вопрос не ко мне. Системы плагинов не было в WoG, когда я над ним работал. Ab


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 18:45

ZVS, ахахах - я понял: в целом, это и был основной вопрос, когда и что срабатывает - тем не менее сам плагин работает отлично ещё до наших изменений объекта на указатель, но вот erm измененеия не видит, потому и страдает мой мод на исследование заклинаний - буду пока вручную задавать параметры из ini-файла самим же erm, эмулируя тем самым работу плагина.105


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 18:48

На всякий случай. Закомментировать нужно обе строчки:
    _PI->WriteDword(0x687FA8, (int)&Spell);
    _PI->WriteDword(0x59E467 + 3, (int)&Spell);

Ну и я весь код не смотрел - он сильно большой. Может еще что насмотрю - напишу.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 18:52

(14.06.2022 18:48)ZVS Wrote:  На всякий случай. Закомментировать нужно обе строчки:
    _PI->WriteDword(0x687FA8, (int)&Spell);
    _PI->WriteDword(0x59E467 + 3, (int)&Spell);

Ну и я весь код не смотрел - он сильно большой. Может еще что насмотрю - напишу.

да, это я понял) в общем, предлагаю тебе и Alex'у скооперироваться на http://heroescommunity.com/viewthread.php3?TID=47171&PID=1562929#focus
или в Дискорде - будет универсальный мод на новые заклинания Spiteful


RE: ERA / WOG - сетевая игра и проблемы с ней - XEPOMAHT - 14.06.2022 19:06

(14.06.2022 18:25)ZVS Wrote:  Есть еще один вопрос. Как подгружаются DLL сейчас.

Либо загрузчиком HD-мода (плагин, о котором мы говорим, рассчитан на загрузку именно им, т.к. его автор - ярый фанат SoD, увы), который грузит пользовательские dll сразу после бараторческих dll, любо загрузчиком эры в середине инициализации самой эры (функция LoadPlugins('dll') с системным вызовом Windows.LoadLibrary). Т.е. примерно время подзагрузки плагинов и там и там не сильно отличается, поэтому некоторые простые содовские плагины работают на эре без перекомпиляции.

(14.06.2022 18:45)daemon_n Wrote:  тем не менее сам плагин работает отлично ещё до наших изменений объекта на указатель, но вот erm измененеия не видит, потому и страдает мой мод на исследование заклинаний

Он для СоД отлично написан и отлично там работает, Алекс всё-таки профи в этом деле. Но обо всём, что присутствует в ВоГе по части заклинаний при этом можно благополучно забыть, сам плагин не рекомендуется использовать в ЭРЕ, т.к. он написан совершенно не под ЭРУ (с той же era.dll у него совместимости нет, да и сторонние плагины не увидят новые заклинания и могут при их использовании вылетать). Маячок возможно всё же когда-нибудь додумается его адаптировать под ВоГ (но с той скоростью, с которой он адаптировал Аметист и Эмералд с его безконечными обновлениями и костылями, произойдёт это лет через 10 наверное).

(14.06.2022 18:52)daemon_n Wrote:  предлагаю тебе и Alex'у скооперироваться на http://heroescommunity.com/viewthread.php3?TID=47171&PID=1562929#focus
или в Дискорде - будет универсальный мод на новые заклинания Spiteful

Не, сейчас между русскими и украинцами не самые тёплые отношения. Там уже много раз предлагалось портировать плагин на ЭРУ, но Алекс категорически против участия в этой авантюре (плюс к этому, исходники последней версии своего плагина он выкладывать не хочет - в данный момент заниматься адаптацией старой версии бессмысленно, т.к. она содержит ошибки, исправленные в новой).


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 19:25

XEPOMAHT, в сообщении на HC, ссылку на которое я кинул, содержатся самые последние исходники, так что властью, данной мне мной, я отменяю последний аргумент. Что era, что sod не имеют (явных) политических нарративов. А если человек не хочет, то это только его дело, я считаю.


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 19:36

daemon_n, а можно уточнить, что такого особого в этом моде есть, чего не хватает сейчас и что нельзя уже реализовать?


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 19:37

ZVS, возможность получать из ГМ заклинания существ, колдовать их.

Добавлено несколько новых заклинаний в книгу и прочие объекты

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


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 19:43

Так может легче взять отдельные новые эффекты заклинаний из исходника и только их портировать в небольшой мод, согласованной с текущей моделью ERA?


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 19:47

ZVS, как? 102 Честно говоря, сам по себе плагин отлично работает и для игрока, и для ИИ - осталось лишь подвязать erm, что можно и "вручную" сделать, скажем, через ф-цию в плагине, что сама будет патчить таблицу по воговским адресам - то есть не таблицу будем перемещать, а писать прямо в неё - по адресу 0x7BD2C0,


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 20:17

Плагин патчит кучу мест. Безопасно ли и совместимо ли - вопрос. То что выглядит как "отлично работает", может быть лишь видимостью. Если он "трогает" места, на которые завязан патчинг WoG, то проявляться это будет лишь когда именно эту затронутую функциональность WoG тестировать. Естественно сам он работает, но не добавляет ли он багов в WoG?
Я бы не советовал его вообще использовать. Или детально проверять адреса, которые он патчит.


RE: ERA / WOG - сетевая игра и проблемы с ней - XEPOMAHT - 14.06.2022 20:35

(14.06.2022 19:25)daemon_n Wrote:  в сообщении на HC, ссылку на которое я кинул, содержатся самые последние исходники

Исходники от ноября прошлого года не есть последние реально существующие, но не выложенные Алексом. Исходники Маячка вообще не авторские - это переработка, не лишённая многочисленных ашибок.

(14.06.2022 19:37)daemon_n Wrote:  возможность получать из ГМ заклинания существ, колдовать их.

Из структуры текущего города считывай их через UN:C, так же можно изменять их там с помощью UN:C, если стандартный ERM не катит. Адресация на заклинания гильдии магов давно известна ещё со времён ВоГ.

(14.06.2022 20:17)ZVS Wrote:  Естественно сам он работает, но не добавляет ли он багов в WoG?

Воговские анимации на поле боя он точно подменит. И так вместо абилки духов или блока командира/драколича игрок увидит что-то другое...


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 20:36

ZVS, именно поэтому это позиционируется как "мод", который спокойно можно отключить в любой момент. В общем, пока что глухо112

XEPOMAHT, мне кажется, ты скачал не то Dry


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 14.06.2022 20:42

ZVS, кстати говоря, от себя лично и многих других игроков выражаю огромную благодарность за сделанную игру, которая позволила найти место в жизни и познакомить с множеством классных ребят!132


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 14.06.2022 20:58

Спасибо! Со своей стороны скажу, что сильно удивлен тем энтузиазмом, с которым вы все тут занимаетесь развитием проекта. Не думал в свое время, что все это продлится столько - практически уже новое поколение заменило основателей. 177


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 15.06.2022 00:24

ВНИМАНИЕ ВСЕМ!

Благодаря sokiee я понял, что неправильно копал в erm - с плагином создаётся новый указатель на таблицу, и читать надо из него - что при этом сохраняет воговскую таблицу.

В итоге я (мы) могу читать сразу из обеих таблиц, и все проблемы отпадают сами собойYes

То есть воговская таблица всё равно корректно даёт абилки существам, потому никаких проблем с оригинальными эффектами существ не будет. УРА!177


RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 15.06.2022 01:17

Значит Dll загружается после запуска WoG.
И, судя по этому:
#define o_Spell (*(_Spell_**)0x687FA8)
он читает адрес установленный в WoG.

Надо иметь в виду, что копируются WoG заклинания до номера 0x50 (SPELL_ACID_BREATH), не больше.
И таблицы становится две, что не очень хорошо, т.к. WoG про новую таблицу не знает.


RE: ERA / WOG - сетевая игра и проблемы с ней - daemon_n - 15.06.2022 01:31

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

Тем не менее согласен, что доступ к новой таблице под силу не каждому, но и задача не самая тривиальная - я бы даже сказал, что лишь меня она и беспокоит, потому что чешется всё время где-то исследования заклинаний напрашиваются быть совместимыми с данным модомYes


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 15.06.2022 03:46

ZVS, в сборке, что daemon_n ещё не довыпустил, должно уже быть последнее обновление Эры на сетевую игру. Мы один раз потестировали её с Димой, уже гораздо стабильнее всё работает и эмуляция случайности лучше.

Code:
[+] Rewrote game random number generator (RNG) engine.

  Main changes:
  - All RNGs are not thread safe now. They should be used in the main thread only.
  - There are two main RNGs: the global one (rand/srand/VR:R) and the unique one (VR:T).
  - ERA uses 3 different engines for the global RNG and switches them dynamically to provide qualitative outputs, the same battle obstacles, as they are in original Heroes 3, and network PvP battles stability.
  - VR:T generator cannot be seeded anymore. It serves as the source of unpredictable randomness.
  - At the start of game process, all generators are seeded with cryptographically safe random seeds.
  - Most of the time Xoroshiro128** engine is used for global RNG. It has both excellent speed and qualitative output.
  - The global generator engine is switched to native C rand implementation only for the phase of placing battle obstacles.
  - In network PvP battles the global generator is switched to deterministic one. Deterministic generator uses only the following information: unique battle ID, combat round ID, combat action ID, minimum and maximum value to generate. Thus any attempt to generate a sequence of numbers in the same range will produce the same result for each generation. It's recommended to replace dwarf-style resistence mechanics with golem-style resistence mechanics.
  - Global RNG is seeded with unique value at battle start/replay, thus the first action and autocasted spells are not deterministic anymore.
  - Using random functions in before battle and before battlefield visible phases does not influence battle obstacles placing anymore.
  - Extended "Debug.Rng" setting in "heroes 3.ini". 0 means no debugging, 1 is for seeding, 2 is for seeding and random_range, 3 enables debugging of all rand/srand/random_range calls.
  - rand() is guaranteed to return 0..32767 value, as it does in original Heroes 3. But random_range (VR:R/VR:T) call can return any value in int32 range (-2147483648..2147483647).
  - ERA intercepts all rand/srand calls. Previously a few functions were not tracked.
  - Deterministic RNG for network PvP battles is enabled for the whole battle (excluding obstacles placing stage). Bad morale probability and magic resistence additionaly depend on stack ID, thus producing different results for different stacks. Stack damage calculation additionally depends on iteration counter (game generates up to 10 random values for each stack damage event).



RE: ERA / WOG - сетевая игра и проблемы с ней - ZVS - 15.06.2022 04:06

Berserker, спасибо за инфу. Подожду сборки - потестирую.


RE: ERA / WOG - сетевая игра и проблемы с ней - Гноль - 17.06.2022 19:14

Тоже очень жду...


RE: ERA / WOG - сетевая игра и проблемы с ней - Suft - 01.11.2022 00:27

Сooperative no bugs settings

https://disk.yandex.ru/d/4wDMGiN_333hBQ
Вылеты в мультиплеере и как с ними бороться!
В Эра скрипт отключите всю колонку Изменение существ.
Также опыт существ даёт вылеты.
Это всё выявлено продолжительными кооперативными тестами с другом.
Вот настроенный settings.dat (стабильный мультиплеер - включать что то на свой страх и риск ибо недавно выявлено что какая то из отключённых вог опций вызывает зависание компьютера)
Тестирование в течение многих месяцев онлайна + 30+ кооперативных битв и 25 месяцев одиночной игры без единого вылета.
////////////////////////////////////////////////////////////////
Departures in multiplayer and how to deal with them!
In the Era script, disable the entire column Changing creatures.
Also, the experience of creatures gives departures.
This is all revealed by long cooperative tests with a friend.
Here is the configured settings.dat (stable multiplayer - enable something at your own risk because it was recently revealed that some of the disabled options causes the computer to freeze)
Testing for many months online + 30+ cooperative battles and 25 months of single-player play without a single departure.


RE: ERA / WOG - сетевая игра и проблемы с ней - Elmore - 01.11.2022 08:26

Лучше бы в актуальной версии из Лаунчера играли с любыми настройками и если ловите вылет, то вычислили конкретную опцию приводящую к этому. На сколько я знаю опыт существ давно исправлен.
Разумеется без TUM.


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 01.11.2022 09:25

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


RE: ERA / WOG - сетевая игра и проблемы с ней - Suft - 01.11.2022 11:16

Elmore, Тестирование одной опции на зависание ИИ занимает 2 часа - и это при условии что ИИ играет за тебя (gosolo в строке чата).
С кооперативом всё ещё сложнее - ибо нужно много времени обоих участников - есть карта для тестирования (все замки + стартовые существа по 2 героя и сундуки пандоры с артефактами для набирания опыта) - но не с кем тестировать! - аппонент больше играть хочет а не сидеть 2-3 дня тестировать - поэтому во время отключения в Эра скрипт колонки Изменение существ. (вылеты почти изчезли и за 8 тестов за разные замки остался 1 рассинхрон - мы отключил систему опыта и рассинхроны как рукой сняло - и потом за несколько кооперативных игр их не было.


RE: ERA / WOG - сетевая игра и проблемы с ней - Elmore - 01.11.2022 12:22

(01.11.2022 09:25)Berserker Wrote:  С опытом существ мы частично тестировали. Остались ли в каких способностях вроде минного поля Гремлинов проблемы, неизвестно.

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


RE: ERA / WOG - сетевая игра и проблемы с ней - Suft - 01.11.2022 12:27

Elmore, Есть они - даже в одиночной компы (из за вог скриптс) из за какой то опции зависают 96-copy


RE: ERA / WOG - сетевая игра и проблемы с ней - Vov4egk - 17.12.2022 19:46

Подскажите подалуйста знающие люди.
Невозможно провести бой с соперником при игре через онлайн лобби, если атакует не хост. Игра зависает и все..

Бой с мобами проводится нормально. Если атакует хост - бой стартует оносительно нормально, но случаются проблемы с рассинхроном.
Версии игры одинковые (перекачивали, переустанавливали, отключены все скрипты в интерфейсе самой игры)

Ошибка:
>> Core: AssertHandler
    Assert violation in file "D:\Soft\Programming\Delphi\source\SRC\Era\EventMan.pas" on line 139.
    Error at address: $5929FA0.
    Message: "TEventManager.Fire: Invalid event data for event "OnBeforeSendPreBattleData". Address: 0. Size: 4"

клиент качался отсюда:
https://heroes3wog.net/heroes-3-launcher-download/
с последующим обновлением до последней версии


RE: ERA / WOG - сетевая игра и проблемы с ней - Berserker - 17.12.2022 21:15

Ответил здесь: http://wforum.heroes35.net/showthread.php?tid=5586