|
|
|||||
Регистрация: Jan 2013
Сообщений: 61
|
union platform задержка
Делаю мультиплеер для игры. Пока сервер стоял у меня на компе, все было отлично, открывал на два окна, двигался человечком, во втором окне все с точностью повторялось. Только поставил union platform на зареганный VPS, сразу пошли сильные задержки, то есть в одном окне двигаюсь человечком, а во втором он рывками и с опозданиями пытается повторить движения первого. В общем какая речь может вообще идти о мультиплеере, когда сообщения приходят с заметным опозданием? Тем не менее другие игры как то же работают по интернету без задержек, в чем же дело? в дешевом VPS или в union или еще в чем? Можно сократить количество сообщений серверу, но от опоздания в пол секунды или секунду это вообще не спасает. Поделитесь знаниями в этой теме
|
|
|||||
А вы как, просто без каких-либо теоретических знаний начали делать мультиплеер? По этой теме написана просто куча статей и книг. В том числе и о недостатках такого взаимодействия и способах обхода.
Тут дело не в дешевом VPS и не в юнион платформе. Просто чтобы сообщение с компа пользователя дошло на удаленный сервер (который возможно стоит за тысячи километров от него), нужно время. Плюс нужно время на обработку сообщения и на доставку ответа пользователю. Вкратце все эти временные затраты называются пингом. Почитайте про ping corrected motion, и вообще в целом про способы обхода задержек. Но сразу могу сказать, что почти все сводится к тому, что нужно предугадывать что произойдет с персонажем за время, равное пингу. Если первые сообщения передали ему, что нужно идти вперед, то нужно рассчитать сколько он пройдет в том же направлении за время пинга. То есть пока не придет другое сообщение, которое, возможно заставит его поменять направление движения или скорость. А чтобы он не дергался от резких изменений направления, надо как-то "твинить" его движения. В общем, нужно делать систему расчетов. Все это далеко не такая простая задача, как кажется вначале
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Jan 2013
Сообщений: 61
|
caseyryan, да не просто конечно, смотрел я много информации как это делается и опыт небольшой был только с игрой попроще. Просто как я понял что бы было цивилизованно то логику игры нужно переносить на сервер, тогда получается игрок жмет клавишу, отправляется сообщение на сервер, сервер его обрабатывает и присылает ответ, в общем игрок будет двигаться с заметным запозданием, ну ладно, допустим все это можно слегка предугадать и более менее сделать движения похожими на правду. С другом просто тестировали игру в ВК контра сити. Вроде и не самую жосткую игру взяли для теста, начали проверять (рисовать автоматами восьмерки в воздухе и прочие фигуры) и на втором экране все эти движения с точностью передаются в этот же момент и с точно такой же траекторией, то есть по моему у них все обходится без предсказаний. Были бы предугадывания у фигур бы срезались углы или еще что, а так в движениях можно даже проследить дрожь человеческой руки, вот просто заметно что сейчас ету фигуру человек рисует, а не код предсказывает. (За пинг спасибо, почитаю методы обхода может какие есть)
|
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Есть ещё такая вещь как UDP, в AIR это DatagramSocket (в обычном flash-player нету)
__________________
Отряд Котовскага |
|
|||||
Цитата:
Но и для игр тоже можно адаптировать. Просто по возможности делать сообщения как можно короче. Ведь они там тоже обрабатываются по полной программе, пересобираются во внутренние объекты с интерфейсом Map. Посылать сообщения с большими интервалами. Не посылать одинаковые (кстати года три назад я им писал по этому поводу, и они внедрили в сам реактор проверку на дубли, так что самому можно уже не заморачиваться). В общем, способов оптимизации можно найти много, ели покопаться
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Jan 2013
Сообщений: 61
|
caseyryan, ну ок, спасибо. Буду делать. Просто думал, что не правильно эти все предугадывания, а оказывается мультиплееры это сплошные обманы А есть для флеша что-то более быстрое или более удобное, чем union platform? И еще одно, что длина отправляемого сообщения и в правду так влияет на работоспособность, даже такие мелочи как отправка координат Number или Int?
Последний раз редактировалось KingMaks; 18.09.2014 в 03:16. |
|
|||||
Цитата:
Цитата:
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
__________________
Отряд Котовскага |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
А внутри CDATA что? json? Я просто не в теме юниона.
__________________
Отряд Котовскага |
Часовой пояс GMT +4, время: 20:25. |
|
« Предыдущая тема | Следующая тема » |
|
|