Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.04.2013, 17:24
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 1  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
По умолчанию Передача координат положения игроков

Появилась такая проблема. Игра мультиплеер, на карте к примеру 10 игроков, и каждый клиент должен получать координаты остальных девяти. Каким образом эти координаты передавать будет правильнее, в плане улучшения производительности для сервера?
Т.е., чтобы понять вопрос правильно, я, например, передаю каждый кадр (уроков на данную тему не нашел вообще, всё пришлось самому пробовать, поэтому попробовал первым, что пришло в голову), но так как каждый кадр это 30 раз в секунду, то когда игроков на карте > 10, то сервер начинает тормозить. Если передавать только нажатие клавиш, а двигались игроки уже чтобы только у самих клиентов, то малейшие проблемы с интернетом, и один и тот же игрок на разных экранах будет в разных местах.
И ещё по поводу передачи в каждом кадре: ещё же ведь должны быть комнаты, и в каждой, например, по 10 человек. 10 комнат это 100 человек, и сервер вообще потухнет). Для каждой комнаты отдельный vps регистрировать что ли? Накладно было бы.
Заранее благодарю за ответы).

Старый 04.04.2013, 17:30
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
уроков на данную тему не нашел вообще, всё пришлось самому пробовать, поэтому попробовал первым, что пришло в голову
http://www.ant-karlov.ru/PlayerIO-re....html#item6318

Добавлено через 43 секунды
Лучше начинайте читать сначала. Внизу есть содержание.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 04.04.2013, 17:41
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 3  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от alatar Посмотреть сообщение
http://www.ant-karlov.ru/PlayerIO-re....html#item6318

Добавлено через 43 секунды
Лучше начинайте читать сначала. Внизу есть содержание.
Спасибо!! Именно что-то подобное и искал!

Старый 04.04.2013, 18:08
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 4  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Не надо ничего передавать каждый кадр. Нужно передавать только изменившиеся данные. Наверняка все игроки не меняют координаты в каждом кадре. Кто-то стоит на месте, кто-то, возможно копается в инвентаре. Зачем отправлять данные о них на сервер?
У меня всегда на клиенте есть проверка на то изменились ли данные перед отправкой. Если нет, отправки не происходит.

Старый 04.04.2013, 21:34
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 5  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Не надо ничего передавать каждый кадр. Нужно передавать только изменившиеся данные. Наверняка все игроки не меняют координаты в каждом кадре. Кто-то стоит на месте, кто-то, возможно копается в инвентаре. Зачем отправлять данные о них на сервер?
У меня всегда на клиенте есть проверка на то изменились ли данные перед отправкой. Если нет, отправки не происходит.
Это такой "активный платформер", в котором все двигаются почти всегда, т.е. без движения умираешь почти сразу. Так что даже с проверками данные все равно будут отправляется почти постоянно.

Старый 06.04.2013, 02:46
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 6  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Советую почитать статьи от Valve на эту тему, начать можно с этой, она мне в свое время очень помогла: https://developer.valvesoftware.com/..._Networking:ru

Старый 14.04.2013, 01:26
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 7  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от iflamberg Посмотреть сообщение
А это и есть существующие способы. Например. Средний пинг - не менее 50ти. Это означает, что нет смысла посылать данные чаще, чем 20 раз в секунду. Особенно, если tcp/ip, они только будут скапливаться в буфере.
У тебя же не такие большие объемы данных, чтобы архивировать посылку.
А вообще странно, что у тебя на 10 игроках начинает тормозить. На чем написан сервер, на php что ли? Или там много математики-физики считается на сервере?
Ничего на сервере сложного нет, просто передаются коорты и всё. Сервер на Java (UnionPlatform). Просто так получается, что когда я проверял, много копий игры запускал, и по-мимо той нагрузки, которая сама по себе есть (передача координат), ноут ещё нагружается этими запущенными копиями с десятком игроков в каждой. Поэтому и игра тормозит, и сервер скорее всего, так как он тоже на ноуте ведь). Ну это так, догадки, так как тоже не понравилось, что 10 игроков это предел.
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Вполне возможно зацикливание сообщений
С этим с самого начала разобрался, чтобы само себе не отправляло в подобных случаях, так что тут всё в порядке (код небольшой, путаться негде), сервер просто не хочет больше 10 игроков нормально обрабатывать).
Цитата:
Сообщение от C4Grey Посмотреть сообщение
Советую почитать статьи от Valve на эту тему, начать можно с этой, она мне в свое время очень помогла: https://developer.valvesoftware.com/..._Networking:ru
Тут больше конкретно про Source идет речь, немного не то, что искал.

Старый 04.04.2013, 21:46
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 8  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Значит надо придумывать как сократить количество данных. Ну и проверки все равно ввести.
Плюс фрейм рейт можно уменьшить, и данные отправлять не в каждом кадре, а, скажем, через кадр
Есть масса способов уменьшить трафик и нагрузку на сервер

Старый 05.04.2013, 11:22
TurboDizel вне форума Посмотреть профиль Отправить личное сообщение для TurboDizel Найти все сообщения от TurboDizel
  № 9  
Ответить с цитированием
TurboDizel
 
Аватар для TurboDizel

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Значит надо придумывать как сократить количество данных. Ну и проверки все равно ввести.
Плюс фрейм рейт можно уменьшить, и данные отправлять не в каждом кадре, а, скажем, через кадр
Есть масса способов уменьшить трафик и нагрузку на сервер
Ну в общем-то можно так, просто думал есть какие-то существующие способы.

Старый 05.04.2013, 14:59
iflamberg вне форума Посмотреть профиль Отправить личное сообщение для iflamberg Найти все сообщения от iflamberg
  № 10  
Ответить с цитированием
iflamberg
 
Аватар для iflamberg

Регистрация: Jan 2009
Сообщений: 1,651
А это и есть существующие способы. Например. Средний пинг - не менее 50ти. Это означает, что нет смысла посылать данные чаще, чем 20 раз в секунду. Особенно, если tcp/ip, они только будут скапливаться в буфере.
У тебя же не такие большие объемы данных, чтобы архивировать посылку.
А вообще странно, что у тебя на 10 игроках начинает тормозить. На чем написан сервер, на php что ли? Или там много математики-физики считается на сервере?
__________________
мой пустой блог

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:52.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.