Войти
ПрограммированиеФорумСеть

Серверная часть для масштабной MMORPG (8 стр)

Страницы: 17 8 9 1018 Следующая »
#105
15:12, 2 авг 2022

kipar
> 100мбит
Не сходится, ты не описал как в 80 раз сократить размер контролзов.

#106
15:25, 2 авг 2022

kkolyan
> если детерминизм, то зачем?

Я уже говорил, раза 3: разные тайминги.

Ошибка накапливается. В итоге, ты у себя видишь слегка фантомного клиента.
А инпут приходит от реального.

В реальном мире (клиент-нициатор инпута) он допустим перепрыгнул через яму и бежит дальше.
А в твоём фантомном, он вовремя не прыгнул, свалился в яму и умер.

#107
(Правка: 15:43) 15:41, 2 авг 2022

Der FlugSimulator
ты точно понимаешь что такое детерминизм? в детерминированной системе нет никакого накопления расхождения. из идентичного состояния одни и те же действия у разных игроков приводят к идентичному состоянию. нет полагания на тайминги. все игроки апдейтят свой мир идентичным тикам, а не DeltaTime. и инпуты строго привязаны к своим тикам. при этом FPS симуляции у всех ограничивается по самому медленному игроку, разумеется.

#108
15:44, 2 авг 2022

kkolyan
> при этом FPS симуляции у всех ограничивается по самому медленному игроку,
> разумеется.
Хахаха, я под столом!
Один игрок с 1 фпс уничтожит весь твой бизнес

#109
(Правка: 16:01) 15:59, 2 авг 2022

kkolyan
> при этом FPS симуляции у всех ограничивается по самому медленному игроку,
> разумеется.
Хороший план, при онлайне в пару тысяч все будет ждать пока у владельцев архаичных вычислительных машин разогреются лампы?)

А конкуренты просто будут счастливы от такого подгона, не нужно будет закупать ботнеты для ддоса. Достаточно приоритет процессу игры скинуть на low

#110
15:59, 2 авг 2022

Вий
Не хочется портить твое торжество, но в чем проблема отключать игрока, который не вписывается в тайминг других игроков?

#111
(Правка: 16:05) 16:04, 2 авг 2022

kkolyan
> Не хочется портить твое торжество, но в чем проблема отключать игрока, который
> не вписывается в тайминг других игроков?
А сколько нужно ждать до вынесения вердикта что пора его отключать? А что если он будет секунду лагать, секунду норм работать?)

#112
16:05, 2 авг 2022

Mephistopheles
1. убедиться что игра способна играться на машинах указанных в минимальных системных требованиях без просадки FPS
2. отделять шаг симуляции от шага рендеринга, чтобы игра могла красиво рендериться при относительно низкой частоте симуляции. (если по какой-то причине это еще не сделано)
3. дисконнектить тех кто не вписывается
4. тюнить частоту симуляции и партиционирование игроков, чтобы минимизировать п3.

#113
16:08, 2 авг 2022

Блин мужики - Вы бы попробовали что то сделать.
Как шкуру не убитого медведя делите.
А если так, ... нет, а если вот так, а если у тебя 1000х1000 биться будут, а если их больше будет, а давайте трафик посчитаем ...
Тут бы человек 500 играло - уже счастье.

В равной степени может получиться и что 20к держать нормально будет, и что 50 игроков уже лагать будут.

#114
16:09, 2 авг 2022

kkolyan
> 3. дисконнектить тех кто не вписывается
Знаешь какое дело... громче кричат те у кого игра лагает и вылетает, чем те у кого все норм.
А игра теряет продажи ниже 90% почти на порядок.

#115
(Правка: 16:31) 16:16, 2 авг 2022

Mephistopheles
А хотя, вообще-то режим "все ждут медленного" прям уж необходим только для p2p как в Factorio. Если все через сервер идет, то медленных можно ущемлять мягко, пропуская их инпуты и обновляя мир с задержкой.

Mephistopheles
> Знаешь какое дело... громче кричат те у кого игра лагает и вылетает, чем те у кого все норм.
> А игра теряет продажи ниже 90% почти на порядок.
дак если игрок не успевает прогревать лампы - у него будут "ньюансы" и на другой архитектуре, из-за которых по этой логике он точно так же пойдет минусить игру.

UPDATE: но вообще да, в локстеп-варианте медленные игроки будут ущемлены больше чем при "обычной" архитектуре и, возможно, это шоустоппер.

563
что сделать? тема изначально исключительно про поговорить.

#116
(Правка: 16:51) 16:45, 2 авг 2022

kkolyan
раньше в старых играх была настройка "плохая сеть" включая которую сервер с клиентом переходил на упрощенный протокол и более редкое обновление стейтов. Да и вообще резалось все что не сильно то нужно для геймплея.
Но интернет стал быстрый, прогеры ленивые, а манагеры не терпеливые. И такой настройки больше не встретить)

Ну а настройку графики "лижбы работало" тоже можно добавить.

#117
(Правка: 17:30) 16:53, 2 авг 2022

563
> если так, ... нет, а если вот так
у всех противоречивый опыт, у кого-то вычисления с плавающей точкой детерминированы
у меня на сервере gcc, на клиенте cl и все стремительно расходится

#118
(Правка: 18:31) 18:17, 2 авг 2022

kkolyan
> все игроки апдейтят свой мир идентичным тикам, а не DeltaTime.

Ну да, физику обычно считают по фиксированному DeltaTime, а не по экранной частоте.

Однако, ты физически не можешь на разных машинах выдержать этот DeltaTime одинаковым, без синхронизации.

Я же писал, в #71, даже на одной машине, аппаратный таймер плавает, std::chrono::high_resolution_clock будет давать физически разное время.
Погрешность небольшая, но она есть, и достаточна для накопления ошибки.

  |----------|----------|     Real time clock ticks
  |--------|--------|    Player1  ticks
  |-----------|------------|  Player2  ticks


И уж тем более, они не будут синхронизированы с инпутами.

#119
(Правка: 18:45) 18:44, 2 авг 2022

Der FlugSimulator
Еще раз, в детерминированной системе нет полагания на тайминги (#107).
Для определения величины на которую персонаж сдвигается не используется никакой std::chrono::high_resolution_clock.
DeltaTime берется один и тот же (из константы, например) на всех тачках.

Страницы: 17 8 9 1018 Следующая »
ПрограммированиеФорумСеть