-Поиск по дневнику

Поиск сообщений в нетман

 -Фотоальбом

Посмотреть все фотографии серии Название серии
Название серии
18:46 14.06.2021
Фотографий: 5

 -Цитатник

Безопасность Liveinternet - (2)

Безопасность LiveinternetУже не первый раз говорю, что безопасность ЛИРУ далеко не на самом высоком ...

История любви - (0)

Это цитата сообщения yashar Оригинальное сообщениеЭто цитата сообщения yashar Оригинальное сообщение...

Без заголовка - (0)

Это цитата сообщения Лэнс Оригинальное сообщениеЭто цитата сообщения Лэнс Оригинальное сообщение... ...

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 03.11.2005
Записей:
Комментариев:
Написано: 38824


Новая старая Counter Strike Source

Четверг, 01 Июля 2010 г. 15:14 + в цитатник
Эпилог

Этим летом свершилост то чего все ждали. Ждали конечно не совсем того, что вышло, но мыши продолжают плакать и колоться одновременно. Собственно Counter Strike Source перевели на движок Team Fortress 2. До 26го июня новая версия игры (движка) была на стадии закрытого тестирования в котором мне, к сожалению, не удалось поучаствовать. Собственно незнание всех особенностей подогревало интерес, а утекшие в интернет кадры с демонстрацией прекрас новой графической составляющей движка игры потряасли, чтовызывало непроизвольное извержение кирпичей из пятой точки.

Часть первая - что это блин такое?

В первый же день официального выхода новой версии движка все были принудительно обновлены и поэтому многим пришлось лезть в настройки дабы повысить частоту кадров, которая заметно упала.В настройках конечно же появилось много нового. Это и «многоядерный рендеринг» и возможность отключить скачивание бесчисленных звуков которые проигрываются при победе, в общем всё то что было в Team Fortress 2 теперь появилось и в Counter Strike Source. Игра стала заметно лучше и красивше. Изменена скорость бега с ножом, смерти теперь не столь реалистичные (это для понижения возрастного рейтинга), стрельба стала ещё более простой и так далее.

Самое интересное это конечно же так называемые «Достижения», или в простонародье ачивки, они развивают соревновательный дух (смайл) Всего в игре появилось 144 достижения, которые делятся на категории : подрывник, спасатель, убийца, эксперт по оружию, ветеран игры на карте, и специальные достижения которые вобрали в себя достижения типа «получи 100.000 баксов», «убей всю команду врага в одиночку», «убей со снайперки без прицела», «ломай и круши», ...

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

Часть вторая - баги

До сих пор новый движок пестрит багами. Основной баг в анимации. Бывает что игрок бежит и стреляет, но звука неслышно и на самом деле он не стреляет. Бывает так, что видишь игрока, выстреливаешь в него всю обойму, а он всё стоит и стреляя в другую сторону убивает тебя... Это очень странно. Ещё можно встретить игрока в шкуре террориста начиная играть за контер-террористов, особенно это весело если видишь своего друга, а он начинает в тебя стрелять, убивает и оказывается что это не друг, а враг. Причём это никакой не WarCraft сервер, где есть фича с возможностью появиться на базе у противника, а обычный сервер. Можно заметить игрока, который ползёт на корторчках со скоростью бега. Бывает что кидая слеповую гранату видишь как летит дымовая граната, а уже на земле она ведёт себя как взрывная граната. Очень много негативных эмоций по поводу решения Valve сделать публичный принудительный тест назвав это релизом.

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

Множество этих графических багов решает простой финт. Пишем в консоли «record 123; stop» и радуемся обновлению моделей игроков.

Часть третья - стрельба

В этой части я опишу как же можно вернуть старую анимацию смертей, чтобы игроки не падали как брёвна и как сделать нормальную стрельбу и другие ухищрения. Итак обо всём по порядку:

Мастер на все рукиДруг врагНе все полюбили обновлениеВообще без палеваЭх, Коперфильд...


1. Каквернуть стрельбу из старой CSS?
Для того чтобы вернуть стрельбу как в старой CSS достаточно научиться правильно регулировать новый параметр "lerp". Основное правило, lerp должен быть белого цвета (если он становится оранжевым, то следует подправить в процессе игры значение переменной cl_interap за счет биндов) и его значение должно быть в районе 20, при тике 100, при тике 66 значение lerpa должно соответствовать 15. Понятие «белый лерп» означает, что если набрать в консоли net_graph 1, то значение lerp должно быть отображено белым цветом
Перед тем, как вписывать эти команды, отрубите STEAM Cloud, иначе, он будет подгружать ваш старый конфигурационный файл...

alias lerpa+ "incrementvarcl_interp 0.01 0.09 +0.0001"/cl_interp+0.0001
alias lerpa- "incrementvarcl_interp 0.01 0.09 -0.0001"/cl_interp -0.0001
alias lerpb+ "incrementvarcl_interp 0.01 0.09 +0.001" /cl_interp +0.001
alias lerpb- "incrementvarcl_interp 0.01 0.09 -0.001"/cl_interp -0.001
alias lerpc+ "incrementvarcl_interp 0.01 0.09 +0.01"/cl_interp +0.01
alias lerpc- "incrementvarcl_interp 0.01 0.09 -0.01"/cl_interp +0.01

bind "INS" "lerpa+"
bind "DEL""lerpa-"
bind "HOME" "lerpb+"
bind "END""lerpb-"
bind "PGUP" "lerpc+"
bind "PGDN""lerpc-"


И жмём в процессе игры на кнопки Insert, Home, PageUp чтобы повышать значение, и Delete, End, PageDown чтобы понижать.

2. Как отключить замедленный показ вашего убийцы после смерти?
Options » Multiplayer » Advanced »Disablefreeze
Опции » Сетевой режим » Дополнительно » Отключить остановку камеры


3. Как отключить новую анимацию смерти врага и добавить кровь?
Вписываем эти команды в конфигурационный файл, предварительно отключив STEAM Cloud:

cl_ragdoll_physics_enable 1
violence_ablood1
violence_ablood 1
violence_agibs 1
violence_agibs 1
violence_hblood 1
violence_hblood 1
violence_hgibs 1
violence_hgibs 1


4. В процессе игры слышны непонятные трещания и звуки, что делать?
Пропишите в консоли команду snd_mixahead 0.06

5. У меня Windows 7 и на любом сервере лаги и высокий пинг!
Проблема возникает из-за сервиса мультимедийных задач, его следует отключить:
Пуск» Все программы » Стандартные » Выполнить » вводим services.msc и нажимаем Enter

Ищем в списке "Планировщик классов мультимедиа", нажимаем свойства и нажимаем остановить. Далее идем в Пуск» Все программы » Стандартные » Выполнить » вводим regedit и нажимаем Enter

Переходим в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Audiosrv

Находим строчку "DependOnService", щелкаем по ней 2 раза и в появившемся окне удаляем "MMCSS".

Сохраняем, и перезагружаем компьютер

6. Как отключить «Steam Cloud»?
В свойствах игры, на вкладке «обновления»

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

Интерполяция- получение промежуточных значений какой-либо величины путём усреднения крайних. Интерполяция служит для сглаживания картинки, т.к. пакетов приходящих от сервера зачастую не хватает для того, чтобы картинка смотрелась плавно.
Настройки клиентской части по умолчанию: cl_updaterate20; cl_interp_ratio 2; cl_interp 0.1

Как это работает
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 по двум причинам:
  • Ваш интернет канал оставляет желать лучшего.
    Предположим, что вы счастливый обладатель ADLS-модема или в вашем городе(районе) широкополосный интернет пока доступен только избранным, или ваш сосед по общежитию по вечерам заливает на торрент пачку свежих немецких фильмов. Это значит, что вы можете себе позволить исключительно скромные сетевые настройки. Скорее всего те, что стоят по умолчанию, а быть может ваши дела ещё хуже. При cl_updaterate 20, даже если все пакеты благополучно приходят от сервера к клиенту, вы видите 20 кадров в секунду (не имеет значения, какой у вас компьютер). Человеческий глаз воспринимает эту картинку как дёрганную. Если же, недай бог, потери (choke) есть, то играть вы просто не сможете, таккак будете видеть слайдшоу.

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

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

Например: Я играю с cl_updaterate66, это значит что в 3 пункте я получу 0.0152, следовательно мне нужно написать cl_interp 0.0152. Это даст мне lerp = 15.Что уже довольно неплохо, так как интерполяция таких временных промежутков не слишком сильно добавляет неточности вашим действиям.

Если вы пишите значение cl_interpменьшее,чем cl_interp_ratio/cl_updaterate,то на net_graphlerpбудет отображаться оранжевым цветом.Если же lerp окрашен в желтый, то значит значение lerpбольшепромежутка времени между отсылаемыми пакетами на этом сервере. В обоихслучаях lerp (а значит cl_interp) нужно увеличивать покатот не станет белым. Если вы будете пытаться играть с НЕ БЕЛЫМ lerp,то вы обрекаете часть своих выстрелов застревать в промежуткеклиент-сервер.

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

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

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку