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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.08.2010, 16:39
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 1  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
По умолчанию RTT, Latency и другие

Есть реалтайм игра. Я не знаю деталей. Моя задача - серверная часть.

На клиенте и на сервере есть часто выполняемые участки кода, ответственные за обмен данными и актуализацию.
Каждый участок кода может выполняться в течение различного времени. Время выполнения зависит от возможностей и загрузки клиентского компа и загрузки сервера.
(Latency)

Кроме того пакеты летают от сервера к клиенту и обратно также всегда с различной скоростью. Которая также зависит от загрузки канала у клиента и у сервера Round-trip-time RTT)

Задача состоит в том, чтобы в определенные моменты времени приблизительно точно знать:
- время доставки пакета от сервера к клиенту
- время доставки пакета от клиента к серверу
- время, затрачиваемое обоими на обработку пакета
( Latency обеих сторон, RTT down и up)
Задача простая вроде бы. Но решение осложняется тем, что решить задачу нужно на серверной стороне.

На сервере есть доступ ко всей инфе, которую способно дать ядро Linux.
На клиенте - как обычно (netstream.info и иже с ним)

Третий день туплю - не знаю, с какой стороны подойти.

С газелями как то проще
__________________
Trapatatupatupa

Старый 13.08.2010, 15:22
maxlapshin вне форума Посмотреть профиль Отправить личное сообщение для maxlapshin Найти все сообщения от maxlapshin
  № 2  
Ответить с цитированием
maxlapshin
Erlyvideo

Регистрация: Aug 2008
Сообщений: 197
Отправить сообщение для maxlapshin с помощью ICQ
А что мешает написать код, который будет слать на клиента сообщение с текущим временем, после чего получать его обратно и сравнивать?

Старый 20.08.2010, 10:30
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 3  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
Решение оказалось до безобразия простым!
Самое замечательное в том, что синхронизация таймеров сервера и клиента происходит за один шаг, без лишнего обмена данными и самое главное - с точностью до 1 мсек.
Я доволен
__________________
Trapatatupatupa

Старый 20.08.2010, 13:14
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 4  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
и? где решение то?))
Колись уж давай.
__________________
Отряд Котовскага

Старый 20.08.2010, 20:55
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 5  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
Код AS3:
var stream:Object = new Object();
var LocalTime:Date = new Date();
stream.LOCALTIME = LocalTime.time.toString();
myStream.play(stream);
Задержки на сервере или на клиенте, связанные с выполнением фрагментов кода, исчисляются микросекундами. Поэтому ими пренебрегаем.
FP при отсчете timestamp чанков принимает за НОЛЬ момент вызова метода NetConnection.Connect.
Далее в каждом чанке timestamp равен разнице во времени между НОЛЕМ и моментом формирования чанка.
Network Latency измеряем в самом начале коннекта, когда в обе стороны идет обмен пакетами, превышающими TCP MSS.
Вызов myStream.play(stream) передает локальное время клиента. На сервере сравниваем chunk timestamp и значение LOCALTIME.VALUE, по которому можно вычислить момент начала сеанса.
Далее зная NetLatency вычисляем расхождение Tdelta между часами сервера и клиента.
Если прибавить Tdelta к timestamp чанка, получаем точное время отправки чанка от клиента на сервер.
Дальше не имеет значения как будет меняться NetLatency, поскольку каждый прибывший на сервер пакет имеет timestamp - время отправки.

Таким образом мы будем знать время отправки каждого чанка по серверным часам. А если засечь время прибытия чанка, можно в каждый момент времени знать BDP

[IMG]http://img44.**************/img44/5671/timelineb.jpg[/IMG]
__________________
Trapatatupatupa


Последний раз редактировалось Crenth; 20.08.2010 в 21:22.
Старый 27.08.2010, 16:42
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 6  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
Цитата:
Сообщение от Котяра Посмотреть сообщение
и? где решение то?))
Колись уж давай.
не впечатлило ?
или нужны пояснения ?
__________________
Trapatatupatupa

Старый 28.08.2010, 03:30
maxlapshin вне форума Посмотреть профиль Отправить личное сообщение для maxlapshin Найти все сообщения от maxlapshin
  № 7  
Ответить с цитированием
maxlapshin
Erlyvideo

Регистрация: Aug 2008
Сообщений: 197
Отправить сообщение для maxlapshin с помощью ICQ
Цитата:
Сообщение от Crenth Посмотреть сообщение
FP при отсчете timestamp чанков принимает за НОЛЬ момент вызова метода NetConnection.Connect.
Далее в каждом чанке timestamp равен разнице во времени между НОЛЕМ и моментом формирования чанка.
Вообще, уже это неверно. Таймстемпы в RTMP не обязаны быть монотонно возрастающими по всем потокам, начиная с нуля.

Старый 29.08.2010, 03:14
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 8  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
не обязаны.
но когда мы говорим о синхронизации для целей реалтайм игры, то будут
__________________
Trapatatupatupa

Старый 29.08.2010, 07:30
maxlapshin вне форума Посмотреть профиль Отправить личное сообщение для maxlapshin Найти все сообщения от maxlapshin
  № 9  
Ответить с цитированием
maxlapshin
Erlyvideo

Регистрация: Aug 2008
Сообщений: 197
Отправить сообщение для maxlapshin с помощью ICQ
А, я тебя кажется понял. Ты хочешь ориентироваться по NetStream.time?
Если так, то проверь хорошенько. Не знаю как у тебя будет, но использовать его для того, что бы узнать, что именно сейчас играет на видео, невозможно. audioBytes гораздо точнее.

Старый 30.08.2010, 17:56
Crenth вне форума Посмотреть профиль Отправить личное сообщение для Crenth Найти все сообщения от Crenth
  № 10  
Ответить с цитированием
Crenth
[+1 19.06.10]
[+1 27.07.10]
 
Аватар для Crenth

Регистрация: Aug 2009
Адрес: UTC+2
Сообщений: 353
нет.
этот метод для реализации синхры на сервере практически без участия клиентского приложения.
т.е. сервак вычисляет поправку ко времени клиента.
таким образом, если игрок кликнул мышкой на своем компе, то мы будем знать, когда по серверному времени это произошло


Проблема русскоязычных форумов: не с кем обсудить фундаментальные вопросы. Либо потому, что знающие предпочитают держать при себе добытые потом знания, либо потому, что никто глубоко не копает.
В любом случае не гут.
__________________
Trapatatupatupa


Последний раз редактировалось Crenth; 30.08.2010 в 18:01.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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