XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
kocs

offline
Опыт: 427
Активность:
Рассинхронизация клиентов.
Кто сталкивался с проблемой дисинхронизации клиентов, прошу подсказать как вы с этим боролись... Как мы выяснили, дисинхронизация происходит из-за того что создаются объекты локально (только на одном клиенте), а на других клиентах не создаются, в связи с этим гарантированная дисинхронизация. Погуглив выяснил, что могут вызывать дисинхрон texttag и GetLockalPlayer().
Ну вообщем знания очень обобщенные... вообще как известно дисинхронизация клиентов один из самых сложных багов, не только в варкрафте, а вообще в любой сетевой игре. Если кто-то поборол этого жука, прошу поделитесь своим опытом.
У меня еще была мысль, что также может вызывать дисинхрон вычисления флоатов. Ведь как известно на разных машинах они вычисляются с небольшой погрешностью.
Собственно баг:
Играем некоторые кол-во времени, после которого человека 4(несколько) выкидывает сразу же. А остальные продолжают играть.

Отредактировано kocs, 27.11.2012 в 00:45.
Старый 27.11.2012, 00:38
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
kocs:
У меня еще была мысль, что также может вызывать дисинхрон вычисления флоатов.
С каких пор флоат у нас стал объектом? Это вам не шарпы ._.
kocs:
вообще как известно дисинхронизация клиентов один из самых сложных багов, не только в варкрафте
o\ В блоке локальных действий не должно быть объектов, что сложного ?!
Боже мой, когда ж люди научаться пользоваться поиском :|
Старый 27.11.2012, 00:46
kocs

offline
Опыт: 427
Активность:
по подробней можно? Как вылечить эту штуку?
Старый 27.11.2012, 00:49
ScorpioT1000
Работаем
offline
Опыт: отключен
флоаты реально могут вызвать десинк, но вероятность, что у тебя десинк именно из-за них примерно 0.0000001F
Старый 27.11.2012, 01:15
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
kocs:
по подробней можно? Как вылечить эту штуку?
Faion:
В блоке локальных действий не должно быть объектов
Используем поиск, все давно подробно описано в статье дока. Тему клоз.
Старый 27.11.2012, 10:13
DemoN2099
annihilator
offline
Опыт: 4,418
Активность:
GetLockalPlayer
Омг.
дисинхронизация происходит из-за того что создаются объекты локально
Ну так не создавай их локально ._.
Старый 27.11.2012, 11:18
kocs

offline
Опыт: 427
Активность:
Faion:
В блоке локальных действий не должно быть объектов
Используем поиск, все давно подробно описано в статье дока. Тему клоз.
Ну собственно как и ожидал =), что могло бы решить проблему не нашли (по крайней мере от вас), много понта и выпендрежей... говорит о том, что либо у вас минимум заний или не большой возраст.
kocs добавил:
ScorpioT1000
флоаты реально могут вызвать десинк, но вероятность, что у тебя десинк именно из-за них примерно 0.0000001F
Ну смотря как мы их будем использовать. Если у тебя стоит несколько циклов которые выполняются по 10-20 раз в секунду и такие несколько циклов, то вполне себе можно получить дисинхрон рано или поздно (просто повышается вероятность). Я чесно не особо знаю все тонкости джасса, я сущу по С# ибо сейчас делаю игры на unity3d.
То что "вычисления флоатов могут быть различны с вероятностью 0.0000001 " не совсем так... ведь еще зависит с какой точностью их вычислять.
Просто здорово было бы получить инфу от опытного джассера который сталкивался с такой проблемой
kocs добавил:
DemoN2099
Ну так не создавай их локально ._.
Ну а как же такие скиллы как "торрент кунки". Все союзные игроки видят метку где произойдет торрент, а враги не видят?
Старый 27.11.2012, 23:10
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
kocs:
Ну а как же такие скиллы как "торрент кунки". Все союзные игроки видят метку где произойдет торрент, а враги не видят?
спецэффект создаётся для всех, а его модель задаёться локально
Старый 27.11.2012, 23:14
youtube
сктыщь
offline
Опыт: 8,025
Активность:
kocs,
Ну а как же такие скиллы как "торрент кунки". Все союзные игроки видят метку где произойдет торрент, а враги не видят?
...

string s=""
effect e
if GetLocalPlayer()==все дела
 set s="ur effect"
endif
e=AddSpecailEffe....
...
ну как то так, ага
Старый 28.11.2012, 00:11
kocs

offline
Опыт: 427
Активность:
16GB
Ну а как же такие скиллы как "торрент кунки". Все союзные игроки видят метку где произойдет торрент, а враги не видят?
спецэффект создаётся для всех, а его модель задаёться локально
Спасибо, поправим. В будущем будем делать по этой же схеме... А сейчас нам в такой ситуации, как можно отловить жука?
youtube
Тоже благодарю
Старый 28.11.2012, 00:35
crymchanin

offline
Опыт: 4
Активность:
Faion:
o\ В блоке локальных действий не должно быть объектов, что сложного ?!
А если таковых не имеется?
Старый 28.11.2012, 01:05
Faion
Noblesse Oblige
offline
Опыт: 30,395
Активность:
kocs:
что либо у вас минимум заний или не большой возраст.
либо вы тупой.
crymchanin:
А если таковых не имеется?
В некоторых (но не в этом) случаях причиной может быть кривой клиент.
[+] 1 пункт от Кет: грубо
Старый 28.11.2012, 02:20
ScorpioT1000
Работаем
offline
Опыт: отключен
То что "вычисления флоатов могут быть различны с вероятностью 0.0000001 " не совсем так... ведь еще зависит с какой точностью их вычислять.
Суть не в jass, а в том, что разные процессора могут немного по-разному считать числа с переменной точностью, что и приводит к рассинхронизации клиентов. Однако, случается это в специфических условиях
ScorpioT1000 добавил:
Faion:
В блоке локальных действий не должно быть объектов
тут всё верно сказано, любое попрождение объекта на одной машине изменяет структуру и нумерацию хештейбла хендлов и она начинает отличаться от остальных машин
Старый 28.11.2012, 11:20
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Карточка, да вы что? а про модели мы забыли? так же насколько нужно быть тупым чтобы создавать объекты в блоке GetLocalPlayer() если пишеш на jass и читал статьи, ну я поражаюсь....
Старый 29.11.2012, 17:33
DioD

offline
Опыт: 45,134
Активность:
модели и прочая ересь вызывает десинки только в крайне специфичных ситуациях, столь же специфичных что и реалки.
по реалкам, в джаз реалки это ОБЪЕКТЫ, точно такие же как строки, что доказывалось на пальцах РБ против реалки, точность реалки на сравнение обрезается до 3х знаков, на "НЕ РАВНО" не обрезается.
1.00001 == 1.00002 TRUE
1.00001 != 1.00002 TRUE
что малость доставляет, но одновременно с тем, полностью исключает любые глюки интел против амд если правильно кодить.
Старый 29.11.2012, 18:48
Toadcop

offline
Опыт: 54,313
Активность:
можно даже разные типы юнитов создавать локально. главное что бы все существенные параметры у них были одинаковыми.

Цитата:
по реалкам, в джаз реалки это ОБЪЕКТЫ, точно такие же как строки, что доказывалось на пальцах РБ против реалки, точность реалки на сравнение обрезается до 3х знаков, на "НЕ РАВНО" не обрезается.

неа ) там просто IEEE флоаты. но емулированые вроде, а не апаратные, хотя тут неуверен. ну т.е. то что даёт РБ = флоат ас инт просто.
Старый 29.11.2012, 19:19
Doc

offline
Опыт: 63,163
Активность:
Toadcop, я про это писал
Старый 29.11.2012, 19:39
J64_

offline
Опыт: 4,724
Активность:
Расскажите, что этот код делает. Когда-то пытался понять\тестить - ни чего не выяснил, ровно как и не нашел практического применения.
function R2Ix takes real x returns integer
	return x
	return 0
endfunction
function Ix2R takes integer x returns real
	return x
	return 0.0
endfunction
Старый 29.11.2012, 19:41
ScorpioT1000
Работаем
offline
Опыт: отключен
по реалкам, в джаз реалки это ОБЪЕКТЫ, точно такие же как строки, что доказывалось на пальцах РБ против реалки, точность реалки на сравнение обрезается до 3х знаков, на "НЕ РАВНО" не обрезается.
1.00001 == 1.00002 TRUE
1.00001 != 1.00002 TRUE
гонево офк там православные флоаты между прочим
Старый 29.11.2012, 19:43
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Judycaster64, фактически это ретурн баг, только предназначенный не ради записи ид объектов в кеш и обратно, а суде по всему для получения большей точности при переводе числа из целого в дробное (float, real), чего нельзя было добиться пользуясь близзордовскими функциями...
Старый 30.11.2012, 06:33
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 22:42.