Сообщение от Nikich
Игра быстрая, вид сбоку, есть прыжки.
|
Зависит на сколько шустро перемещаются, если как в Tee World, то да, тут экстраполяция очень важна.
Сообщение от Nikich
А можно подробнее об экстраполяции? Если игрок двигается только при нажатой клавише и прыжке, то экстраполировать получится только прыжки, да?
|
Наоборот. Экстраполировать движение проще, чем действие по нажатию, такое как прыжок или выстрел из рэйлгана.
В общем есть "сетевая политика", я 3 раза уже писал в разных местах на форуме. То что тебе нужно это чтоб сервер делал симуляцию игры, при этом эта симуляция будет сичтаться "главной", далее рассылая данные клиентам, они должны предсказывать данные в будущее о других клиентах, в будущение на продолжительность времени их пинга. Если пинг 200+ то никакая игра уже не будет нормально играться.
Предсказывать (экстраполировать) нужно так чтобы все клиенты старались иметь "идентичную" симуляцию с сервером в реальном времени. В вебе симулировать задержку просто - поставь таймеры при отправке пакета и при получении (до обработки пакетов), тестируй как со стабильной долгой задержкой (120 мс например), так и с "шумной" (100 +/- 80).
Экстраполяция - это предсказывание. Методов много, у тебя будут скорее всего spline'ы, я для простоты делал так: если прошлые данные, текущие, и я предсказываю точку где будет игрок исходя из этих данных, всякие бизье для твоего варианта хорошо подойдут.
Сообщение от Nikich
И ещё вопрос, касательно TCP. Насколько я знаю, браузеры в UDP не умеют, а значит, точно придется использовать TCP, который куда медленнее UDP. Сейчас сервер поднимаю на своем компе, инет совсем не сильный( 4 мбита прием, 0.5 отдача ). Средний пинг -- 40-60, но иногда скачет до 300. Связано ли это с TCP( как мне известно, он будет ждать до тех пор, пока пакет точно не отправится, что точно может поднять пинг ) и можно ли это пофиксить улучшением пропускной способности сервера?
|
Забей про это, просто забей. Т.к. на самом деле когда народ "доводит" их UDP до стабильного состояния (RUDP), то по производительности получается один хрен.
Если WebRTC - но это другая фигня.
Если ты делаешь игру на реакцию, и хочешь чтобы игрок с пингом 150+ не имел лагов, тут UDP не поможет. Ты ничего не можешь сделать с его интернетом, в Web'е это или Native'ное приложение. Почти все игры на мобилках (нативные) что имеют realtime мультиплеер, требуют играть по WiFi, и не разрешают 3G/4G, по очевидным причинам.
Следственно твоя игра должна ставить перед фактом - "говно интернет - не поиграешь".
На вопросы протокола на ранних стадиях вообще не задумывайся.
http://tanks.moka.co/ - работает ок, интерполяция, 20 UPS (Update Per Second).
http://moka.co/beatemup/ - тоже ок, чуток похуже т.к. нету сглаживаний перемещения и т.п. (намеренно) 10 UPS при этом весьма играбельно на 3G. Тут геймплей важен для такого. (открой 4 закладки игры).
http://boxes.moka.co/ - тут вообще нету цикла и физика считается на клиентах, сервер - обменная точка. Частота отсылки данных с клиента 10 UPS.