Регистрация Справка Пользователи Календарь Поиск Сообщения за день Все разделы прочитаны


Вернуться   Форум клуба Кузбасса > Игровые сервера > Counter-Strike > Counter-Strike: Source
Перезагрузить страницу Фишки, которые надо знать при игре в Counter-Strike: Source.

Ответ
 
Опции темы Опции просмотра
Старый 24.01.2009, 21:41   #1
Модератор
 
Аватар для Da[R]k
 
Мужчина
Регистрация: 23.01.2009
Адрес: Russia
Сообщений: 98
Da[R]k на пути к лучшему
Отправить сообщение для Da[R]k с помощью ICQ Отправить сообщение для Da[R]k с помощью Skype™
Хорошо Фишки, которые надо знать при игре в Counter-Strike: Source.

Ниже описана ситуация, которую я сейчас поясню.

Вы выходите из-за угла стены/ящика и тут же быстро уходите назад. Вы не видите врага, но при этом получаете повреждения.

Постараюсь изложить в максимально доступной форме.

Итак, для начала несколько определений:
Latency (ping) – пинг - временной промежуток, за который пакет, отосланный от вашего компьютера проходит до сервера (и наоборот). В миллисекундах
Server - Сервер – Выделенный сервер в Интернете, расположенный на каком-нибудь компьютере.
Client Клиент – Игра, запущенная на вашем компьютере. Клиент подключается к Серверу. На сервере может выставляться количество возможных подключаемых клиентов.
Shot Trajectory - Траектория выстрела – Линия между концом дула вашего оружия и местом, куда попала ваша пуля.
Hitbox – Хитбокс – модели игроков в Counter-Strike: Source поделены на так называемые Хитбоксы (hitboxes), которые блокируют различные участки моделей. В одной моделе существует множество хитбоксов . Если выстрелить в хитбокс, то значение здоровья и броняи игрока уменьшается.

CS:Source – Основы
В абсолютно любом сетевом 3D шутере, главной проблемой, которую решают в первую очередь, является пинг. Каждый игрок должен видеть тоже что видят и его соперники. Соперники же должны двигаться плавно, без рывков и задержек – ведь на самом деле игра обновляется периодически, а время между отправкой и получением пакета порой может быть очень длинным промежутком.

Немного информации
На карте Ваша позиция у Вас на мониторе относительно вас же на сервере и вас же на экранах других клиентов никогда не будет одинаковой. Это происходит по причине задержки, из-за того, что Ваш компьютер отсылает серверу пакет с информацией о Вашем местоположении, сервер симулирует как бы кадр игры, обновляет у себя о Вас информацию, после чего отправляет информацию о Вас другим клиентам, а они получают и обновляют уже о Вас информацию у себя. Эта проблема в связке с тем, что у вас на экране все выглядит плавно, составляет неприятную картину.
Такая картина иногда видна в самой игре, зачастую приводя к недоумению игроков.

Ситуация «Слайдшоу из хитбоксов»:
«Вы выходите из-за угла стены/ящика и тут же быстро уходите назад. Вы не видите врага ,но при этом вы получаете повреждение.»

Объяснение:
Чтобы объяснить причину такого поведения игры, мы должны принять во внимание все, что происходит на Вашем компьютере, на компьютере сервера и на компьютерах других игроков.

* Вещи, о которых Вам надо знать, перед тем, как я продолжу Фактические повреждения (ну или расположения хитбоксов, если так понятнее) просчитываются на стороне сервера. Но на стороне клиента также отслеживается положение хитбоксов, но чисто для визуализации (скажем, искры от пуль при поподании в броню, брызги крови из тела и тд.), но об этом мы подробнее поговорим, когда дойдем до третьей ситуации.
* В идеале обмен пакетами происходит в течении 10 миллисекунд. Это то время за которое сервер успевает обновить информацию о Вас, а Вы – о сервере. Но на практике эта цифра бывает в разы больше, судя по пингу.
* Время, которое тратится клиентом и сервером на обработку полученной информации столь мало, что его даже не имеет смысла брать во внимание.

Проблема в данной ситуации наблюдается в случае, если происходит так называемая «коррекция задержек (лагов)», которая встроена в движок Source. Чтобы полностью понять, зачем это нужно, для начала мы посмотрим, что происходит с игрой, если нет никакой корректировки лагов.

0 миллисекунда (Сцена 1)
Игрок 1: резко выходит из-за угла, видит Игрока 2, который находится в неподвижном состоянии.
Сервер: Ничего не происходит (Пакет не успел еще дойти)
Игрок 2: Стоит и никого не наблюдает

30 миллисекунд (Сцена 2)
Игрок 1: Уходит обратно в укрытие.
Сервер: получает пакет с информацией из Сцены 1 о том, что Игрок 1 вышел из-за своего укрытия и отправляет эту информацию Игроку 2.
Игрок 2: Ничего не происходит (помните? Пакет идет 30 миллисекунд, как от игрока до сервера, так и наоборот).

60 миллисекунд (Сцена 3)
Игрок 1: у себя на компьютере он спрятался в своем укрытии.
Сервер: Получает пакет из Ситуации 3 с информацией о том, что Игрок 1 находится опять за укрытием (так что данные сервера и Игрока 1 синхронизированы)
Игрок 2: Получает пакет с Ситуацией 1, видит Игрока 1, стреляет по нему, но естественно стреляет по пустому месту, так как игрок уже как 60 миллисекунд назад оказался опять в своем укрытии.

Ну и получается в итоге следующая картина: Сервер получает информацию о выстрелах Игрока 2 по Игроку 1, в то время как Игрок 1 находится уже совсем в другом месте, следовательно, повреждения от выстрелов не учитываются. Это не очень-то справедливо, по отношению к Игроку 2, так как он-то как раз видит в это время Игрока 1.

И вполне резонный вопрос возникает: как решать эту проблему? Движок Source делает следующее. А именно программа просчитывает траекторию выстрела Игрока 2 и переносит ее так, как будто он стрелял в реального Игрока 1, независимо от того, где последний находится сейчас.
Сервер высчитывает идеальное значение переноса траекторий выстрелов, основываясь на пинге всех игроков.
Da[R]k вне форума   Ответить с цитированием
Старый 06.04.2011, 12:08   #2
Новичок
 
Аватар для -=XP=-
 
Мужчина
Регистрация: 04.11.2010
Сообщений: 19
-=XP=- на пути к лучшему
По умолчанию

СпасибоЧКИ!
-------------

Последний раз редактировалось -=XP=-; 06.04.2011 в 12:11.
-=XP=- вне форума   Ответить с цитированием
Старый 06.04.2011, 16:04   #3
Новичок
 
Аватар для Xoxol
 
Мужчина
Регистрация: 16.09.2009
Адрес: Шира
Сообщений: 98
Xoxol на пути к лучшему
По умолчанию

XP - некропостер
Xoxol вне форума   Ответить с цитированием
Старый 07.04.2011, 02:56   #4
Новичок
 
Аватар для -=XP=-
 
Мужчина
Регистрация: 04.11.2010
Сообщений: 19
-=XP=- на пути к лучшему
По умолчанию

А по-чему бы и нет тема актуална ежедневно!
---------------
-=XP=- вне форума   Ответить с цитированием
Старый 07.04.2011, 13:23   #5
Новичок
 
Аватар для Xoxol
 
Мужчина
Регистрация: 16.09.2009
Адрес: Шира
Сообщений: 98
Xoxol на пути к лучшему
По умолчанию

Ну в данное время актуально еще бы и про lerp добавить, в таком случае.
Xoxol вне форума   Ответить с цитированием
Старый 07.04.2011, 20:57   #6
Новичок
 
Аватар для -=XP=-
 
Мужчина
Регистрация: 04.11.2010
Сообщений: 19
-=XP=- на пути к лучшему
По умолчанию

Согласен!
При любом пинге сохраняйте lerp минимальным и белым!
--------------
-=XP=- вне форума   Ответить с цитированием
Старый 07.04.2011, 21:43   #7
Почитатель Даждьбога
 
Аватар для Dark_Baron
 
Мужчина
Регистрация: 19.01.2009
Адрес: Роисся, штат Куйсбасс, г. Щеглокемерово
Сообщений: 1,409
Dark_Baron скоро придёт к известности
По умолчанию

а что такое lerp?
__________________
Писатель о истине:
Она прячется, а вы ее всюду ищете, то здесь копнете, то там. В одном месте копнули - ага, ядро состоит из протонов! В другом копнули - красота: треугольник а бэ цэ равен треугольнику а-прим бэ-прим цэ-прим. А вот у меня другое дело. Я эту самую истину выкапываю, а в это время с ней что-то такое делается, что выкапывал-то я истину, а выкопал кучу, извините... не скажу чего.
(из к/ф Сталкер)
Dark_Baron вне форума   Ответить с цитированием
Старый 08.04.2011, 07:03   #8
Новичок
 
Аватар для -=XP=-
 
Мужчина
Регистрация: 04.11.2010
Сообщений: 19
-=XP=- на пути к лучшему
По умолчанию

lerp в css

У всех после обновления в нижнем правом углу появилась переменная lerp=xxx.

Небольшой ликбез

Клиент-сервер - сетевой код игры созданый на основе обмена пакетами между сервером и клиентом. В этих пакетах информация о текущем состоянии игрового мира (расположении объектов и т.д.)
cl_updaterate - число пакетов которые клиент получает от сервера каждую секунду.
Интерполяция - получение промежуточных значений какой-либо величины, путем усреднения крайних. Интерполяция служит для сглаживания картинки, т.к. пакетов приходящих от сервера зачастую не хватает для того чтобы картинка смотрелась плавно.

Как это работает

cl_updaterate 20 означает, что клиент будет получать от сервера пакеты 20 раз в секунду, разница между пакетами - 50 мс. Чтобы предотвратить лагание от возможной потери пакета, интерполяция должна происходить в промежуток времени равный 2*50=100 мс. Чтобы обеспечить такую интерполяцию, необходимо задать параметр cl_interp 0.1. Множитель два означает, что мы хотим интерполировать две области между тремя пакетами пришедшими от сервера: "._._.". Если мы хотим итерполировать только одну область "._.", мы должны изменить соответствующий параметр. Этим параметром является переменная cl_interp_ratio. Она может принимать значения 2, 1, 0. Как не сложно догадаться, если эта переменная равна нулю, то интерполяция на клиенте будет отсутствовать. В общем случае формула для промежутка такова: lerp=cl_interp, но не может быть меньше cl_interp_ratio/cl_updaterate. Итак, тут мы приходим к самому определению:

lerp - промежуток времени в котором пакеты полученные клиентом будут интерполироваться.

По сути, значение lerp определяет пропорцию между пакетами, пришедшими от сервера, и пакетами, сгенерированными на клиенте. Чем меньше значение lerp, тем меньше пакетов будет "придумано" на клиентской стороне, тем точнее то, что вы видите, будет соответствовать тому, что происходит на сервере. Чем больше значение lerp, тем большую долю в вашей картинке будет играть интерполяция.

После теории перейдем к практике. С самого начала кажется, что в идеале lerp должен быть равен 0, ведь при таком значении lerp нет интерполяции и клиент видит то же, что видит сервер. Вы НЕ можете себе позволить lerp=0 по двум причинам.

1) Ваш интернет канал оставляет желать лучшего.
Предположим, что вы счастливый обладатель модема или в вашем городе широкополосный интернет пока по карману только избранным или ваш сосед по общежитию по вечерам заливает на торрент пачку свежих немецких фильмов. Это значит, что вы можете себе позволить исключительно скромные сетевые настройки. Скорее всего те, что стоят по умолчанию, а быть может ваши дела еще хуже. При cl_updaterate 20, даже если все пакеты благополучно приходят от сервера к клиенту, вы видите 20 кадров в секунду (не имеет значения, какой у вас компьютер). Человеческий глаз воспринимает эту картинку как дерганую. Если же, не дай бог, потери (choke) есть, то играть вы просто не сможете, так как будете видеть слайдшоу.

2) Настройки серверов непозволяют клиентской части выставлять необходимые значения некоторых переменных.
Главная проблема тут безусловно cl_interp_ratio, на данный момент ни один европейский серверный конфиг не позволяет играть с этой переменной равной нулю. На данный момент я не знаю ни одного паблика с такими настройками. Только несколько КВ-серверов позволяют отключать интерполяцию. Сейчас добавление sv_client_min_interp_rat io 0 (эта команда отвечает за минимальное значение cl_inerp_ratio, которое может иметь клиент находясь на этом сервере) в евроконфиге скорее всего вопрос времени, и я пологаю, ждать осталось не долго. Но факт остается фактом: значение этой серверной переменной по умолчанию равно 1, а это значит, что клиент не может сделать lerp меньше, чем 10 мс.

Если вторая причина вопрос времени, то вот с первой причиной совладать способов не очень много.
Если у вас плохой коннект и постоянно теряются пакеты, то lerp=0 не для вас. Вам нужна интерполяция cl_interp_ratio 2.
Если же интернет не проблема, то тогда рецепт очень прост. Поднимайте рэйты: cl_cmdrate 66; cl_updaterate 66; rate 20000 - это ваш минимум. В идеале на 100 тиковом сервере у вас должно быть cl_cmdrate 100; cl_updaterate 100; rate 25000. Если сервер позволяет, ставьте cl_interp_ratio 0; cl_interp 0.
66, а тем более 100, кадров в секунду - вполне достаточно, чтобы комфортно воспринимать игру без интерполяции и лагов. Если же сервер не позволяет вам играть без интерполяции (пока что, это самый распространенный случай), рецепт очень прост:

1) Напишите в консоли cl_updaterate и запомните значение этой переменной
2) Напишите в консоли cl_interp_ratio 1
3) Разделите 1 на значение cl_updaterate
4) Напишите в консоли cl_interp и присвойте ему то что получили в пункте 3

Например:
Я играю с cl_updaterate 66, это значит что в 3 пункте я получу 0.0152, следовательно мне нужно написать cl_interp 0.0152. Это даст мне lerp=15. Что уже довольно неплохо. Так как интерполяция таких временных промежутков не слишком сильно добавляет неточности вашим действиям.
Если вы пишите значение cl_interp меньшее, чем cl_interp_ratio/cl_updaterate, то на net_graph lerp будет отображаться оранжевым цветом. Если же lerp окрашен в желтый, то значит значение lerp больше промежутка времени между отсылаемыми пакетами на этом сервере. В обоих случаях lerp (а значит cl_interp) нужно увеличивать пока тот не станет белым. Если вы будете пытаться играть с НЕ БЕЛЫМ lerp, то вы обрекаете часть своих выстрелов застревать в промежутке клиент-сервер.

Вывод

Добивайтесь минимального значения lerp, оставляя его белым на каждом сервере, на котором играете. Это позволит вам снизить к минимуму все проблемы, связанные с вашим соединением с интернетом.

На последок замечу, что существует миф, будто бы lerp должен быть равен пингу. Пинг - время за которое пакет доходит от сервера к клиенту и он не имеет никакого отношения к интерполяции. Бесполезно пытаться найти связи в этих двух понятиях. И при любом пинге сохраняйте lerp минимальным и белым!
_____________

-=XP=- вне форума   Ответить с цитированием
Старый 24.07.2017, 21:43   #9
Новичок
 
Аватар для lukabest
 
Мужчина
Регистрация: 23.07.2017
Сообщений: 12
lukabest на пути к лучшему
По умолчанию Фишки которые надо знать при игре в Counter Strike Source

Сегодня будет матч, нужно будет обязательно посмотреть hltv.
После просмотра отпишусь здесь, как играли, характеристика, тактика, а возможно и видео скину.
lukabest вне форума   Ответить с цитированием
Старый 03.08.2017, 01:32   #10
Новичок
 
Аватар для lukabest
 
Мужчина
Регистрация: 23.07.2017
Сообщений: 12
lukabest на пути к лучшему
По умолчанию

Браво, эта замечательная мысль придется как раз кстати


__________________

как продать земельный участок быстро расклейка объявлений цена как найти клиентов на маникюр на дому

Добавлено через 11 минут
Да, действительно. И я с этим столкнулся.


__________________

как можно рекламировать магазин продать автомобиль быстро и дорого как найти клиентов маникюра

Последний раз редактировалось lukabest; 03.08.2017 в 01:32. Причина: Добавлено сообщение
lukabest вне форума   Ответить с цитированием
Ответ

Закладки

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +7, время: 20:59.


  
Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot