Current time: 25.11.2024, 00:28 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ERA / WOG - сетевая игра и проблемы с ней
» Очень актуальная тема на день её создания
Author Message
daemon_n Offline
Administrators

Posts: 4343
Post: #46

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

Справочник 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;

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


Image: widget.png?style=banner2

Новейший Heroes Launcher
31.01.2021 01:48
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #47

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
31.01.2021 01:53
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #48

Berserker, дополнил


Image: widget.png?style=banner2

Новейший Heroes Launcher
31.01.2021 01:57
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #49

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
31.01.2021 02:03
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #50

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

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

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


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

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


Image: widget.png?style=banner2

Новейший Heroes Launcher
31.01.2021 02:06
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #51

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
31.01.2021 03:36
Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #52


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


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
16.02.2021 11:40
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #53

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
16.02.2021 15:54
Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #54

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

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


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
16.02.2021 19:48
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #55

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

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
16.02.2021 20:50
Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #56

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

Еще у тебя пропущена константа 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 секунд? А то может я пропустил.


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
16.02.2021 21:41
Visit this user's website Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #57

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


Image: widget.png?style=banner2

Новейший Heroes Launcher
16.02.2021 21:58
Visit this user's website Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #58

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


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
16.02.2021 22:12
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #59

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
16.02.2021 23:07
Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3881
Post: #60

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


BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
16.02.2021 23:10
Visit this user's website Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group