Go vs Rust для realtime бэкэнда игры (20 запросов в секунду с каждого клиента)?

Есть задача сделать бэкэнд для realtime игры. А-ля counter-strike, но проще, смысл тот же: есть игроки, которыt в реальном времени стреляются, но всю картинку контролирует сервер, как в World Of Tanks.

Сервер будет каждые 50 мс связываться с каждым клиентом для оповещения о происходящем (т.е. 20 раз за секунду). Так же будет принимать с такой же частотой информацию с устройств ввода (направление движения игрока). Нужно по 250-500 человек на карту. Следовательно. минимально 5000 запросов в секунду с карты(комнаты). Подозреваю, что это будет предел на один сервер.

Проблема: есть онлайн игры которые тормозят, подергиваются, а есть которые работают плавно и четко не смотря на пинг. Так вот это характерно для Valve игр.

Может кто, чем помочь технологиями, либами, документациями, какой язык лучше подойдет?
С++ че-т не хочется рассматривать, писать кода надо много (дублировать функционал игры на сервере)
  • Вопрос задан
  • 3410 просмотров
Решения вопроса 1
@Duke565 Автор вопроса
Итого я выяснил: нафиг Go и Rust:
  1. Половина браузерных, реалтайм игр написаны на node.js.
  2. Скорость работы Go и Node.js почти одинаковая - во истину в шоке...
  3. Раз уже скорость работы у Node достаточная, то выбор в пользу нее, так как и код писать на ней писать в 2 раза быстрее.


Ссылки про синхронизацию сервера, клиента и радости вроде: интерполяция, экстраполяция, лагокомпенсация:
  1. Интерполяция или удивительный мир обмана
  2. Сетевое программирование в Source

Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@Beltoev
Живу в своё удовольствие
Не смотрели в сторону C# и ASP NET Core?

Следовательно. минимально 5000 запросов в секунду с карты(комнаты). Подозреваю, что это будет предел на один сервер.

Вот тут, например, говорят о том, как смогли выжать 1.15 млн. запросов в секунду:
web.ageofascent.com/asp-net-core-exeeds-1-15-milli...

Это порядка ~ 200-230 карт(комнат) на одном сервере.

Проблема: есть онлайн игры которые тормозят, подергиваются, а есть которые работают плавно и четко не смотря на пинг. Так вот это характерно для Valve игр.

Здесь нужно думать об алгоритмах синхронизации. Есть много статей и обсуждений, затрагивающих эту проблему. Например, тут близко по теме: www.gamedev.ru/code/forum/?id=152443
Ответ написан
sim3x
@sim3x
Скорее раст
Но у тебя проблема не с рпс, а работа с предсказаниями
Те как бы часто ты не рассылал текущее сотояние на сервере, ты будешь опаздывать на один- два пинга пользователя. Что для шутера не приемлемо
Ответ написан
Комментировать
VGrabko
@VGrabko
Golang, Php, Js
я раст не знаю так что не могу сказать о нём но Golang около 500 комнат на сервере с нормальным каналом удержит если юзать прото буфер
Ответ написан
Комментировать
poimtsev
@poimtsev
CEO / Founder в Progress Engine
Я бы предложил использовать Websocker + Elixir/Phoenix, с производительностью у него все ок - www.phoenixframework.org/blog/the-road-to-2-millio...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы