Jump to content

Оптимизация нагрузки на сервер и клиента


Recommended Posts

Здравствуйте! У меня назрел вопрос про возможность оптимизации обмена данными между сервером и клиентом. Предположим на сервере играет 20 человек и при открытии карты каждый игрок видит координаты всех остальных с обновлением (пусть) 1 раз в секунду. То есть сервер передает каждому из 20-ти игроков инфомацию об других, т.е. это 20*19=380 операций за секунду. Это не много. Но если на сервере играет 100 игроков, тогда их уже будет около 10000, а если 500, то 250000 и т.д. Это уже большая нагрузка и сервер априори не может тянуть большой онлайн.

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

Хотелось бы узнать ваши мысли как это можно реализовать и можно ли вообще?

Link to comment

Сервер это уже и так делает, чтобы получить все элементы, которые тебе нужно используй функцию getElementsByType в купе с getElementPosition (если хочешь получить позицию элемента), также у этой функции есть дополнительный аргумент, который возвращает элементы, которые находятся в стриме (это те елементы, которые видит игрок - зона примерная в 250м, остальные элементы уже не будут в стриме)

Edited by Kenix
Link to comment

@Windows_user, ну если у вас на карте показывает всех игроков, тогда как же вы будете получать только тех что рядом?

Можно расспаралелить этот процесс, сделав карту на CEF, и вебсервер который будет просто получать координаты всех игроков, и выдавать им эти данные. При этом вебсервер может передавать и какие-то личные неособо конфиденциальные данные, так как известен IP клиента. Вебсервер при должной настройке будет рассходовать немного ресурсов, но главное что он может быть хоть на другой машине.

Link to comment
16 hours ago, Kenix said:

Сервер это уже и так делает, чтобы получить все элементы, которые тебе нужно используй функцию getElementsByType в купе с getElementPosition (если хочешь получить позицию элемента), также у этой функции есть дополнительный аргумент, который возвращает элементы, которые находятся в стриме (это те елементы, которые видит игрок - зона примерная в 250м, остальные элементы уже не будут в стриме)

Вы наверное меня неправильно поняли.

Когда на сервере играет 500 человек, то при открытие на F11 карта оказывается загаженная игроками. Как убрать квадратики от удаленных игроков и ники от тех, кто находится близко? Должны отображаться на радаре только те игроки, которые находятся близко и без ников.

Link to comment

Наиболее часто встречался с иррациональным использованием элемент датой, Если у клиента она будет устанавливаться в рендере, то это приведет к несоизмеримой нагрузке на cpu. Диагностируется в performance browser. Лечение - отключение синхронизации элементдаты( последний аргумент false ), пересмотр логики синхронизации, использование триггеров.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...