Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.12.2016, 19:09
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 21  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Цитата:
Сообщение от Партизан Посмотреть сообщение
Думаю если округлять до 5 секунд расхождение будет еще больше...
округление тут никак не влияет, разница не накапливается. бывает отставание и на минуту

Старый 23.12.2016, 19:26
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 22  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Цитата:
Сообщение от faraday Посмотреть сообщение
округление тут никак не влияет, разница не накапливается. бывает отставание и на минуту
Т.е. вперед они не убегают, да?

Старый 23.12.2016, 19:31
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 23  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
иногда и вперед уходят, но реже

Старый 23.12.2016, 20:03
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 24  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
faraday,
Не надо считать время таймером! Так конечно, гарантированно будет расхождение. Изучите листинг приведённого мною класса. Там вообще нет никакого таймера.
__________________
Дети не должны знать о своих родителях

Старый 23.12.2016, 20:32
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 25  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Tails, вариант когда считается в гетере я пробовал тоже. таймер тут служит только для создания события, собственно по этому событию время и сверяется с сервером. так что на момент срабатывания оно равно тому которое в вашем примере.
Все обращения к гетеру в игре, происходят только по событию TICK, так что проблема не в этом

Старый 23.12.2016, 20:35
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 26  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Вообще не надо считать текущее время и сохранять его в переменную. Считайте текущее время от фиксированной отметки тогда, когда это нужно. Тут как минимум, не учитываются пикосекунды. Ещё расходы на саму операцию сложения и сохранения накладываются и увеличиваются с каждым тиком.
__________________
Дети не должны знать о своих родителях

Старый 23.12.2016, 20:44
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 27  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
я пробовал вариант без сохранения с гетером getTime()+timeDiff, результат тот же. А почему расход увеличивается с каждм тиком, если каждый тик оно так же отсчитывает от getTimer(), и разве точность времени не ограничена тут миллисекундами, почему пико?
Вы пробовали сверять время клиента с сервером, раз в несоклько минут и сохранять результат при дельте? я тоже долгое время не подозревал о существовании проблемы, и у меня всегда все работало и работает норм.

Старый 23.12.2016, 20:59
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 28  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Есть такая грабля - Когда производишь цикличные вычисление используя в каждом шаге результат предыдущего вычисления - точность неизбежно падает, из-за не идеальности эвм. Это не только в часах, ещё например, с ротацией дисплей объектов бывает такая проблема.

Используйте мой пример. В нём рассинхронизация если и будет, то только из-за реально не корректной работы getTimer(), ну или если клиент находится в гравитационной яме. (Теорию относительности никто не отменял)
__________________
Дети не должны знать о своих родителях

Старый 23.12.2016, 21:44
faraday вне форума Посмотреть профиль Отправить личное сообщение для faraday Найти все сообщения от faraday
  № 29  
Ответить с цитированием
faraday
 
Аватар для faraday

Регистрация: Apr 2009
Сообщений: 409
Хм, так а где у меня использование предыдущего результата? берется дельта высчитанная при инициализации, и новое значение getTimer. Я в свое время остановился на том, что проблемма все таки в не идеальности Эвм, в коментах тут разъясняется http://www.flasher.ru/forum/blog.php?b=368

Старый 23.12.2016, 23:58
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 30  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Да, не используешь. Мудрёный у тебя код конечно. Из-за реализации через таймер, в любом случае падает точность часов до частоты срабатывания таймера. А срабатывание таймера может снижаться при переходе приложения в неактивное состояние. Это нужно учесть.

Но сам код выглядит рабочим. Если погрешность постоянно растёт без синхронизации, то, скорее всего, бажит getTimer. Вроде wvxvw ещё говорил, что getTimer в некоторых ос может вернуть и того - отрицательное значение! (При определённых обстоятельствах.)
__________________
Дети не должны знать о своих родителях

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:17.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.