kocs
offline
Опыт:
427Активность: |
Рассинхронизация клиентов.
Кто сталкивался с проблемой дисинхронизации клиентов, прошу подсказать как вы с этим боролись... Как мы выяснили, дисинхронизация происходит из-за того что создаются объекты локально (только на одном клиенте), а на других клиентах не создаются, в связи с этим гарантированная дисинхронизация. Погуглив выяснил, что могут вызывать дисинхрон texttag и GetLockalPlayer().
Ну вообщем знания очень обобщенные... вообще как известно дисинхронизация клиентов один из самых сложных багов, не только в варкрафте, а вообще в любой сетевой игре. Если кто-то поборол этого жука, прошу поделитесь своим опытом.
У меня еще была мысль, что также может вызывать дисинхрон вычисления флоатов. Ведь как известно на разных машинах они вычисляются с небольшой погрешностью.
Собственно баг:
Играем некоторые кол-во времени, после которого человека 4(несколько) выкидывает сразу же. А остальные продолжают играть. Отредактировано kocs, 27.11.2012 в 00:45. |
27.11.2012, 00:38 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
kocs:
С каких пор флоат у нас стал объектом? Это вам не шарпы ._.
kocs:
o\ В блоке локальных действий не должно быть объектов, что сложного ?!
Боже мой, когда ж люди научаться пользоваться поиском :| |
27.11.2012, 00:46 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
kocs
offline
Опыт:
427Активность: |
по подробней можно? Как вылечить эту штуку? |
27.11.2012, 00:49 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
флоаты реально могут вызвать десинк, но вероятность, что у тебя десинк именно из-за них примерно 0.0000001F |
27.11.2012, 01:15 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
|
27.11.2012, 10:13 | #5
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DemoN2099
annihilator
offline
Опыт:
4,418Активность: |
Омг. Ну так не создавай их локально ._. |
27.11.2012, 11:18 | #6
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
kocs
offline
Опыт:
427Активность: |
Ну собственно как и ожидал =), что могло бы решить проблему не нашли (по крайней мере от вас), много понта и выпендрежей... говорит о том, что либо у вас минимум заний или не большой возраст.
kocs добавил:
Ну смотря как мы их будем использовать. Если у тебя стоит несколько циклов которые выполняются по 10-20 раз в секунду и такие несколько циклов, то вполне себе можно получить дисинхрон рано или поздно (просто повышается вероятность). Я чесно не особо знаю все тонкости джасса, я сущу по С# ибо сейчас делаю игры на unity3d.
То что "вычисления флоатов могут быть различны с вероятностью 0.0000001 " не совсем так... ведь еще зависит с какой точностью их вычислять.
Просто здорово было бы получить инфу от опытного джассера который сталкивался с такой проблемой kocs добавил:
Ну а как же такие скиллы как "торрент кунки". Все союзные игроки видят метку где произойдет торрент, а враги не видят? |
27.11.2012, 23:10 | #7
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
16GB
GhostOne User
offline
Опыт:
60,317Активность: |
kocs:
спецэффект создаётся для всех, а его модель задаёться локально |
27.11.2012, 23:14 | #8
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
youtube
сктыщь
offline
Опыт:
8,025Активность: |
kocs,
ну как то так, ага |
28.11.2012, 00:11 | #9
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
kocs
offline
Опыт:
427Активность: |
Спасибо, поправим. В будущем будем делать по этой же схеме... А сейчас нам в такой ситуации, как можно отловить жука?
Тоже благодарю |
28.11.2012, 00:35 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
crymchanin
offline
Опыт:
4Активность: |
Faion:
А если таковых не имеется? |
28.11.2012, 01:05 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
crymchanin:
В некоторых (но не в этом) случаях причиной может быть кривой клиент. [+] 1 пункт от Кет: грубо
|
28.11.2012, 02:20 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Суть не в jass, а в том, что разные процессора могут немного по-разному считать числа с переменной точностью, что и приводит к рассинхронизации клиентов. Однако, случается это в специфических условиях
ScorpioT1000 добавил:
тут всё верно сказано, любое попрождение объекта на одной машине изменяет структуру и нумерацию хештейбла хендлов и она начинает отличаться от остальных машин |
28.11.2012, 11:20 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
Карточка, да вы что? а про модели мы забыли? так же насколько нужно быть тупым чтобы создавать объекты в блоке GetLocalPlayer() если пишеш на jass и читал статьи, ну я поражаюсь.... |
29.11.2012, 17:33 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
модели и прочая ересь вызывает десинки только в крайне специфичных ситуациях, столь же специфичных что и реалки.
по реалкам, в джаз реалки это ОБЪЕКТЫ, точно такие же как строки, что доказывалось на пальцах РБ против реалки, точность реалки на сравнение обрезается до 3х знаков, на "НЕ РАВНО" не обрезается.
1.00001 == 1.00002 TRUE
1.00001 != 1.00002 TRUE что малость доставляет, но одновременно с тем, полностью исключает любые глюки интел против амд если правильно кодить. |
29.11.2012, 18:48 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
можно даже разные типы юнитов создавать локально. главное что бы все существенные параметры у них были одинаковыми.
Цитата:
неа ) там просто IEEE флоаты. но емулированые вроде, а не апаратные, хотя тут неуверен. ну т.е. то что даёт РБ = флоат ас инт просто. |
|
29.11.2012, 19:19 | #16
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Doc
offline
Опыт:
63,163Активность: |
Toadcop, я про это писал |
29.11.2012, 19:39 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J64_
offline
Опыт:
4,724Активность: |
Расскажите, что этот код делает. Когда-то пытался понять\тестить - ни чего не выяснил, ровно как и не нашел практического применения.
|
29.11.2012, 19:41 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
гонево офк там православные флоаты между прочим |
29.11.2012, 19:43 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
Judycaster64, фактически это ретурн баг, только предназначенный не ради записи ид объектов в кеш и обратно, а суде по всему для получения большей точности при переводе числа из целого в дробное (float, real), чего нельзя было добиться пользуясь близзордовскими функциями... |
30.11.2012, 06:33 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|