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

Регистрация: Mar 2007
Сообщений: 319
Цитата:
Nooob, объясни с чем может быть связано такое острое нежелание хранить полный стейт на сервере?
Это не нежелание, я говорю о том что есть другие наиболее интересные и удобные альтернативы многопользовательского взаимодействия, а то всех кого не спросишь про это всегда отвечают авторитарный сервер.
Цитата:
Сообщение от undefined Посмотреть сообщение
Сервер шлет только дифы к стейту(игрок 1 выделил группу из 1к юнитов и направил их в x,y).Это не так много данных.
Давай посчитаем, худший случай 1к юнитов которые куда-то бегут и по пути атакуют по пути врагов, сталкиваются друг с другом, с объектами, отрабатывают поиск пути и перемещаются по всем канонам steering behaviors
4 байта id юнита
4 байта x позиция
4 байта y позиция
4 байта здоровье
4 байта стейт
4 байта x вектора скорости
4 байта y вектора скорости

28 байт на юнита. 28 000 байт на один тик, для приемлемой игры нужно отправлять состояние/дифы каждые 33 мс, если у нас игра работает под 30 fps так как юниты всегда что то делают и не стоят на месте то отправляется вся инфа. за одну секунду должно отправиться 840000 байт. игроков 6 каждому нужно отправлять это состояние, стало быть сервер должен отдавать данные через канал 38,45 Мбит/сек и это лишь одна игровая сессия. 820 Кбайт данных каждую секунду клиент должен обработать своевременно, и это в противовес 16 байтам в секунду. И сервер должен в реальном времени все это проигрывать, если 1 тик считается 2 мс, то на один сервер можно повесить лишь 500 игровых сессий.
__________________
RocketJump