Quote:
Originally Posted by mendisabal
да нет ,просто принято считать ,что фпс от пинга не зависит ,как и наоборот
В ММО ?? Это как ?
Нет, я понимаю, что всё необходимое для собственно отрисовки фрейма есть на стороне клиента. Но есть еще ведь и расчет коллизий, т.е. взаимодействие игрока с объектами окружающего мира. Те, в свою очередь, делятся, грубо говоря, на активные ("ящики", неписи, другие игроки) и пассивные (грубо говоря, стена/обрыв/что-то вроде, на что действия игрока повлиять не могут в принципе, но что, в свою очередь, влияет на действия игрока - может остановить движение, например).
Вот и вопрос - где рассчитываются конкретно в TESO коллизии ?
Я даже верю, что коллизии с пассивными объектами считаются на стороне клиента - именно отсюда взялись летающие и телепортирующиеся боты (путем редактирования соответствующих функций, отвечающих за проверку этого дела, прямо в памяти процесса). Но уж наверняка коллизии с активными объектами, в т.ч. и др. игроками, считаются на стороне сервера. И вот тут возникают грабли с подготовкой исходных данных для отрисовки фрейма, если ответ сервера клиенту тормозит.
Я видел джва варианта решения:
- "мелкий роллбэк" - когда персонаж игрока возвращается "назад во времени", ненадолго - на доли секунды, и всё остальное тоже. В итоге неприятно, некрасиво, но - без потери фпс совсем. В WoT так сделано, например.
- таки ждать, пока сервер не даст инфу, и уже потом рисовать фрейм - и вот тут-то фпс и проседает. Подозреваю, что именно этот вариант и реализован в ТЕСО.
Почему в случае с супер-зергом, донесшим скролл на базу, фпс не проседает ? А потому, что оных коллизий - нет, friendly fire - нет, игроки свободно проходят друг сквозь друга. Считать меньше, сервер успевает.
Не великий специалист, прошу ногами не пинать, вот такое вот моё представление о данном процессе. Ну, в упрощенном виде.