Консольная переменная ex_interp

  • Азы

Консольная переменная ex_interp

Всем привет. В этой статье я постараюсь максимально понятно рассказать о консольной переменной ex_interp, что это, и с чем это едят.

ex_interp – консольная переменная, которая отвечает за перемещение объектов, а точнее за нахождение точек, через которые этот объект проходит. Данная переменная является клиентской, и для обеспечения комфортной игры очень важно правильно её настроить. Начнём с того, что под названием переменной подразумевается слово «интерполяция». Интерполяция – это способ нахождения промежуточных значений величины по набору известных значений. Иными словами, у нас есть функция, и есть значения этой функции в определённых точках. Задачей интерполяции является восстановление значений функции в точках, расположенных между точками с известным значением.

Зачем интерполяция в Counter-Strike? Всё просто. Ваш клиент не может быть на 100% синхронизирован с сервером в каждый момент времени. А это значит, что вы не сможете получать абсолютно все обновления с сервера. Здесь приходит на помощь интерполяция. Сначала вы получаете от сервера один пакет с обновлениями, затем второй. На основании данных этих пакетов ваш компьютер выстраивает картинку на экране. Рассмотрим принцип работы переменной ex_interp на двух примерах.

Пример первый. На сервер поступает обновление от одного из игроков-клиентов (пусть роль игрока будет изображать контр-террорист), что моделька этого игрока находится в точке A1 и начинает движение (см. рис. 1).

Азы: Консольная команда ex_interp
Обработав этот пакет, сервер посылает его вам. Ваш компьютер получает этот пакет и выстраивает картинку согласно полученным данным. Таким образом, вы также видите контр-террориста в точке A1. Пока происходил обмен данными между сервером и вашим компьютером, сервер снова получает обновление от этого же игрока, что моделька прошла определённое расстояние с определённой скоростью (и т.д., на самом деле, данных очень много) и оказалась в точке A2. Сервер обрабатывает эти данные и посылает их вам. Соответственно, вы также видите модельку контр-террориста в точке A2. И так этот обмен происходит постоянно. Но остановимся пока на двух полученных вами обновлениях. Здесь в дело вступает интерполяция. У вашего компьютера есть информация, что наш контр-террорист находился в точке A1 и переместился в точку A2. Теперь перед вашим компьютером стоит задача показать само это движение, т.е. для каждого отображаемого кадра поставить модельку контр-террориста в правильное место. Движок игры при помощи функций, описывающих движение модельки, находит неизвестные значения точек, находящихся между точками A1 и A2 (например, B1, B2, …, Bn, т.е. количество этих точек бесконечно) и ставит модельку куда надо.

Пример второй. Допустим, вы играете с 100 fps и получаете от сервера порядка 30 обновлений в секунду. Таким образом, вам известна всего лишь треть истинной информации, оставшиеся две трети просчитываются вашим компьютером. Но вашему компьютеру нужно время, чтобы просчитать эти 70 кадров. Специально для этого вводится задержка в 100 миллисекунд (ex_interp 0.1) между получением информации и выводом её на экран. За эти 100 миллисекунд ваш компьютер выполнит все необходимые операции по просчёту необходимых координат и отрисовке кадров и выведет изображение на экран.

Теперь, зная принцип работы переменной ex_interp, мы приступим к её настройке. Чем ниже значение ex_interp, тем чаще будет происходить обновление местоположения игроков в пространстве. Стандартным значением переменной ex_interp является «0.1». В ранних версиях Counter-Strike (до 1.6) было возможно выставлять любое значение ex_interp вплоть до «0». Это вызвало много споров. Ведь фактически можно было видеть модельку игрока на некоторое время раньше, чем её видели другие игроки или другой игрок, играющий со стандартным значением переменной, видел вас.

Рассмотрим ситуацию, когда значение ex_interp установлено на «0.05». Время интерполяции снижается вдвое, т.е. до 50 мс. Следовательно, контуры будут приближаться друг к другу, причём движение контуров будет направлено в сторону синего контура (см. рис. 2). Таким образом, мы сможем увидеть модельку в два раза раньше.

Азы: Консольная команда ex_interp

В итоге, значение ex_interp теперь выставляется принудительно по формуле 1/cl_updaterate. Я рекомендую установить значение «0», таким образом, дав возможность движку игры самостоятельно выставить нужное значение. Более подробно о настройке переменной ex_interp и других связанных с ней переменных мы поговорим в следующей статье.

Статью подготовил: Lincoln “Maverick” Burrose
Поделиться:

Нет комментариев