![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
Появилась такая проблема. Игра мультиплеер, на карте к примеру 10 игроков, и каждый клиент должен получать координаты остальных девяти. Каким образом эти координаты передавать будет правильнее, в плане улучшения производительности для сервера?
Т.е., чтобы понять вопрос правильно, я, например, передаю каждый кадр (уроков на данную тему не нашел вообще, всё пришлось самому пробовать, поэтому попробовал первым, что пришло в голову), но так как каждый кадр это 30 раз в секунду, то когда игроков на карте > 10, то сервер начинает тормозить. Если передавать только нажатие клавиш, а двигались игроки уже чтобы только у самих клиентов, то малейшие проблемы с интернетом, и один и тот же игрок на разных экранах будет в разных местах. И ещё по поводу передачи в каждом кадре: ещё же ведь должны быть комнаты, и в каждой, например, по 10 человек. 10 комнат это 100 человек, и сервер вообще потухнет). Для каждой комнаты отдельный vps регистрировать что ли? Накладно было бы. Заранее благодарю за ответы). |
|
|||||
|
Цитата:
Добавлено через 43 секунды Лучше начинайте читать сначала. Внизу есть содержание.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
Цитата:
|
|
|||||
|
Не надо ничего передавать каждый кадр. Нужно передавать только изменившиеся данные. Наверняка все игроки не меняют координаты в каждом кадре. Кто-то стоит на месте, кто-то, возможно копается в инвентаре. Зачем отправлять данные о них на сервер?
У меня всегда на клиенте есть проверка на то изменились ли данные перед отправкой. Если нет, отправки не происходит. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
Цитата:
|
|
|||||
|
Советую почитать статьи от Valve на эту тему, начать можно с этой, она мне в свое время очень помогла: https://developer.valvesoftware.com/..._Networking:ru
|
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
Цитата:
С этим с самого начала разобрался, чтобы само себе не отправляло в подобных случаях, так что тут всё в порядке (код небольшой, путаться негде), сервер просто не хочет больше 10 игроков нормально обрабатывать). Цитата:
|
|
|||||
|
Значит надо придумывать как сократить количество данных. Ну и проверки все равно ввести.
Плюс фрейм рейт можно уменьшить, и данные отправлять не в каждом кадре, а, скажем, через кадр Есть масса способов уменьшить трафик и нагрузку на сервер |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 137
|
Ну в общем-то можно так, просто думал есть какие-то существующие способы.
|
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
А это и есть существующие способы. Например. Средний пинг - не менее 50ти. Это означает, что нет смысла посылать данные чаще, чем 20 раз в секунду. Особенно, если tcp/ip, они только будут скапливаться в буфере.
У тебя же не такие большие объемы данных, чтобы архивировать посылку. А вообще странно, что у тебя на 10 игроках начинает тормозить. На чем написан сервер, на php что ли? Или там много математики-физики считается на сервере?
__________________
мой пустой блог |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:52. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|