Как вообще эту дичь синхронизировать для мультиплеера? xgm.guru/p/wc3/160205
Даже если закоментить все строчки в функциях, все равно вызывает десинк. Есть кто работал с этим?

Принятый ответ

именно эта система не совсмем удачна в плане синхов, если у меня не совсем склероз, то там идёт асинхрон уже на этапе хаштаблицы (в итогде будет синх уже на этапе инициализации системы),
Из того что попроще могу посоветовать RENDEREDGE
Там события нажатия кнопок явно прописаны, но в любом случае, быстро не засинхронить, но для каких локальных манипуляций, самое то
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
19
5 лет назад
2
Похожие вопросы:

ответ
когда игроки подгрузили данные из прелоада и синхронизировали их то устанавливаем им флаг загрузил
а потом просто сохраняем всё что надо у тех у кого нету флага
подробнее в статье про прелоад
данные надо синхронить со всеми иначе десинк
ответ
Разработчики игры не доделали синхронизацию строк. Тебе придется искать обходные пути.
ответ
если длинно, то вот
рандом в сетевых, да и не только, играх - всегда псевдорандом, т.к. события происодят у всех, счетчик рандома всегда синхронен
blog.d1stats.ru/blog/dm/214.html о чё писал, тоже немного есть
ответ
как-то делается, но тонкостей дохера - нельзя иметь регионы на карте, чтобы это работало, нельзя иметь события на unitInRange, и тд. и тп. Проще говоря - обломись, дешевле сделать статичный магаз где-то в неиспользуемой зоне
ответ
здесь можно разделить нужные задачи на 2 категории:
  1. работа с игровыми объектами (юниты, разрушаемые объекты, таймеры и т.д)
  2. работа с визуальным отображением (положение камеры, интерфейс, и т.д)

В первом случае если не синхронизировать данные - то будет десинхрон
А во втором случае можно как угодно шаманить с GetLocalPlayer()

Если надо каждому игроку вывести координаты его мышки:
call BJDebugMsg(R2S(GetMouseX())+" - "+R2S(GetMouseY()))
//У каждого игрока на экране будут свои координаты мышки

Если надо определенному игроку вывести координаты его мышки:
if( GetLocalPlayer() == p ) then
	call BJDebugMsg(R2S(GetMouseX())+" - "+R2S(GetMouseY()))
endif
//У игрока "p" на экране будут выведены координаты его мышки

Если надо определенному игроку создать спецэффект:
local string s = ""
if( GetLocalPlayer() == p ) then
	set s = "effect.mdx"
endif
call AddSpecialEffect(s, x, y)
//Игроку "p" будет создан спецэффект в координатах x,y (спецэффект не будет виден другим игрокам)

А вот если нужно будет создать юнита в координатах мышки игрока:
call SyncReal(p, GetMouseX(), GetMouseY())
call CreateUnit(p, 'hfoo', sync_x, sync_y, 270.)
//Игроку "p" будет создан пехотинец в координатах его мышки
//Функцию SyncReal смотри в статье GetLocalPlayer(), но надо будет чуть её дополнить, чтобы она писала синхронизированные значение в глобалки sync_x, sync_y
//Ну и как говорилось выше - для синхронизации требуется время

0
26
5 лет назад
0
Bergi_Bear работал и вопрос подобный задавал.
0
29
5 лет назад
0
Можно покопать в сторону Sync.
0
32
5 лет назад
0
именно эта система не совсмем удачна в плане синхов, если у меня не совсем склероз, то там идёт асинхрон уже на этапе хаштаблицы (в итогде будет синх уже на этапе инициализации системы),
Из того что попроще могу посоветовать RENDEREDGE
Там события нажатия кнопок явно прописаны, но в любом случае, быстро не засинхронить, но для каких локальных манипуляций, самое то
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.