Der FlugSimulator
> синхронизированы с инпутами.
Ну по классике инпуты уходят на сервер и он определяет в каком Тике инпуты пришли. А дальше все хором симулируют одинаковый мир по инпутам от сервера. Только те у кого пинг большой имеют слегка дубовое управление а те у кого маленький могут уворачиваться от пуль как в матрице
Der FlugSimulator
это да, ты хочешь систему без тиков
fixed dt проще и используется для всего, в т.ч. для инпута
kkolyan
Дельта тайм берётся один. Но это происходит в разные моменты времени, у кого-то Вася выстрелил в Петю в 17:50:10.78 а у кого-то в 17:50:10.01. На компьютерах часы не одинаково идут. Их можно рядом поставить и смотреть как в разные моменты будет происходить то что должно происходить одновременно
Вий
ну и что? да, на всех машинах с разными задержками происходит строго одно и то же. в чем проблема? без экспериментов вроде "поставить рядом два компа, один с ВПН, а другой напрямую" этого и не заметишь. Так-то в играх без детерминизма у более медленных игроков вместо дубового управления будут телепортации противников. чем это принципиально лучше для игрока в контексте обсуждаемых в треде игр? (а не шутеров от первого лица)
Вий
> А дальше все хором симулируют одинаковый мир по инпутам от сервера
так-то клиент может сдвигать своего персонажа и сам, не дожидаясь возврата своего инпута с сервера. это конечно усложняет код, но предикшн с резолвингом конфликтов так и так может понадобиться (в факторке, например, он есть, что при переходе на клиент-серверную архитектуру легко позволит избежать и дубовое управление)
kkolyan
А как у тебя не будет телепортации противников? Скажем вот у тебя пинг 200 мс и канал 128 килобит/с. Инпуты к тебе приходят с задержкой и когда на сервере становится Более 200 игроков вовсе перестают пролезать.
Вий
телепортации появятся при реализации предикшна, разумеется. без предикшна (а в #120 ты вроде предполагаешь его отсутствие) не будет телепортаций - а будет просто все очень лагучее.
kkolyan
Но погоди, вот от сервера идут инпуты, 129 кб/с, а мой канал имеет скорость 128 кб/с. Что будет? Телепортация? Дисконнект?
Вий
при реализованном предикшне - нарастание телепортаций. без него - нарастание лага управления. скорее всего ты не сможешь играть во сколько-угодно длинные сессии. разработчик игры должен это учитывать при выборе ЦА, оформлении странички в стиме, выборе настроек вроде шага симуляции, степеней свободы и точности инпутов, а также усилий на оптимизацию.
будет ли дисконнект - зависит от выбора разработчика. при желании можно мурыжить игрока лагами вместо дисконнекта.
PS: ты назвал только throughput сети. в абзаце выше я исхожу из того что latency хороший (а вполне возможно что при таком канале он будет плохим)
kkolyan
Ну то есть когда онлайн 199 игроков я смогу играть, а как придёт 200 у меня вся игра будет портиться? Круто придумано!
Вий
ну да, эксплуатировать игру с deterministic lockstep на пределе возможностей канала - плохая идея и это тоже надо учитывать при разработке. как и много других ньюансов. иначе разработчики бы столько не получали :) не понимаю почему ты видишь в этой особенности шоустоппер.
kkolyan
Потому что у многих игроков канал вовсе не 100 мегабит/с
Вий
а при недетерминистик подходе это не шоу-стоппер?
рассылка состояния локации каждый фрейм драматически экономичнее рассылки инпутов локации?
Производительность WiFi ограничена 56 мегабитами в секунду, но и это значение редко достижимо. Провайдеры хоть и заявляют суперпупермегаскорости, и деньги за них берут, реальная скорость чаще всего около 5-10 мегабит/с. И это в условиях Москвы или Питера, в других местах хуже.
#!
> это да, ты хочешь систему без тиков
Это не я хочу, а так было заявлено samrrr
Рассылка номера тика - уже и есть некая синхронизация времени.
А по его утверждениям, можно обойтись без них.
kkolyan
> DeltaTime берется один и тот же (из константы, например) на всех тачках.
Да я вкурсе, и говорил об этом.
Проблема в том, что в реальном мире, эти тики будут происходить у всех в разное время.
И без синхронизации не обойтись.
Der FlugSimulator
и что что они будут происходить в разное время? инпуты привязаны к тикам. на моей тачке твой инпут будет прмименен к модели в кадр с тем же порядковым номером что и на твоей тачке. одинаковые начальные условия + одинаковые апдейты = одинаковое состояние. одинаковое состояние и через 2 дня, т.к. все эти два дня на всех тачках будут применяться идентичные изменения к идентичным состояниям. время прихода сообщений НИКАК не учитывается в вычислениях.
при детерминизме не нужна синхронизация.
> Рассылка номера тика - уже и есть некая синхронизация времени.
ахахах. окей, тогда так: в deterministic lockstep подходе некая синхронизация предусмотрена by design. его просто невозможно реализовать без нее. так что никакой дополнительной синхронизации не надо. в отличие от других подходов, которые как-то могут работать и с ней и без нее.