Форум 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 Посмотреть сообщение
Не надо ничего передавать каждый кадр. Нужно передавать только изменившиеся данные. Наверняка все игроки не меняют координаты в каждом кадре. Кто-то стоит на месте, кто-то, возможно копается в инвентаре. Зачем отправлять данные о них на сервер?
У меня всегда на клиенте есть проверка на то изменились ли данные перед отправкой. Если нет, отправки не происходит.
Это такой "активный платформер", в котором все двигаются почти всегда, т.е. без движения умираешь почти сразу. Так что даже с проверками данные все равно будут отправляется почти постоянно.

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

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

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

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

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

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

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
А вообще странно, что у тебя на 10 игроках начинает тормозить.
Ничего странного. Вполне возможно зацикливание сообщений. У меня как-то раз в игре такая хрень получилась, долго не мог понять в чем проблема, пока активное логирование не прикрутил к серверу, и выяснил, что одно и то же сообщение гуляет по кругу. Получалось так: солдат посылает серверу сообщение о том, что он пошел, сервак его принимает и рассылает всем клиентам в комнате (в том числе и тому клиенту, за которым закреплен солдат). Сообщение на клиенте обрабатывалось, и вот тут вступал в действие баг. Вызывалась та же функция Soldier#go(toX:int, toY:int) которая и отсылала сообщение о том, что он должен идти. Отсюда возникал этот бесконечный круговорот. Сервак, каким то чудом справлялся, а вот флеш плеер крашился через 10 - 20 секунд игры. Нервов этот баг помотал немало )

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

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

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

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

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


 


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


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