Closed nekr0z closed 1 year ago
Не простой вопрос. Сначала думал, что хватит временного штампа юниксового, но теперь не уверен.
Этот вопрос мне все не дает покоя. Нагугливается что-то не внятное и к нашей проблеме имеющее весьма натянутое отношение. Вопрос в том насколько точно нужно определять время? Можно просто ограничиваться временными метками с клиента, а можно опираться на серверное время и вычислять время пинга до клиента
А что если использовать две метки времени в формате Unix-time: сервера и клиента. Таким образом мы и пинг посчитаем от пользователя (игра на время) и учет времени организуем по серверному времени, поскольку большая часть вычислений проводится на сервисах. Потом опять же можно будет раскатать по отчетам скорости ответов сервисов
две метки времени в формате Unix-time: сервера и клиента
А если нет гарантии, что часы на сервере и клиенте синхронизированы? (А её ведь нет! Больше того, я нарочно у себя скрипт напишу, который будет системные часы на минуту назад каждый ход переводить, чтобы времени больше оставалось.)
Хорошо бы вкурить, как это устроено у взрослых. Кто-нибудь умеет читать на C?
две метки времени в формате Unix-time: сервера и клиента
А если нет гарантии, что часы на сервере и клиенте синхронизированы? (А её ведь нет! Больше того, я нарочно у себя скрипт напишу, который будет системные часы на минуту назад каждый ход переводить, чтобы времени больше оставалось.)
Хорошо бы вкурить, как это устроено у взрослых. Кто-нибудь умеет читать на C?
Ну и переводи себе. Игра идет по сервернуму времени :) Но идею я понял
Игра идет по сервернуму времени
Сервер будет думать, что у меня растёт пинг, а я-то буду тратить это время на анализ позиции :)
Тут, кстати, есть ещё связанная технологическая проблема в рамках #45 — от какого времени отсчитывать начало размышления над ходом.
Игра идет по сервернуму времени
Сервер будет думать, что у меня растёт пинг, а я-то буду тратить это время на анализ позиции :)
Тут, кстати, есть ещё связанная технологическая проблема в рамках #45 — от какого времени отсчитывать начало размышления над ходом.
почитал тут немного про эти синхронизации. Можно опираться на собственный таймер на сервере
почитал тут немного про эти синхронизации. Можно опираться на собственный таймер на сервере
Опираться всё равно придётся на собственный таймер сервера, конечно — хотя бы потому, что другим нельзя верить.
Но как-то предусмотреть, чтобы с мобильника или, например, со спутниковым интернетом игра не превращалась в боль, хочется.
почитал тут немного про эти синхронизации. Можно опираться на собственный таймер на сервере Опираться всё равно придётся на собственный таймер сервера, конечно — хотя бы потому, что другим нельзя верить. Но как-то предусмотреть, чтобы с мобильника или, например, со спутниковым интернетом игра не превращалась в боль, хочется.
Получается проблема может быть там, где не устойчивая связь или большой пинг (но насколько большой, если у нас асинхрон должен быть)
По итогам обсуждений в других местах предлагаю зафиксировать примерно такую концепцию:
Учёт времени — важный компонент современных шахмат.
Нам надо понимать, как мы будем работать со временем в партиях, и как мы будем его описывать. Это важно и для разработки сервиса сессий, и для сервиса логирования (#22 — хватит метки, или дополнительная информация нужна?)
Отдельный вопрос — будем ли мы пытаться в синхронизацию с клиентом, и как при этом обеспечивать целостность. Большинство современных решений используют довольно замороченные протоколы, чтобы «отвязать» время, которое есть у игрока на ход, от задержки, неизбежной при передаче хода по сети…