Глубина просмотра сайта и методы оптимизации. Depth оптимизация
Оптимизация глубины диагностирования. — КиберПедия
Под глубиной диагностирования будем понимать среднее количество состояний, с точностью до которых может быть локализован дефект на основании количества информации I(S,Y), доставляемых диагностическим экспериментом.
Очевидно, что глубина диагностирования растёт с увеличением количества информации I(S,Y) или с увеличением коэффициента K.
Задача максимизации глубины диагностирования сводится к выбору из допустимого множества точек контроля такого подмножества заданного размера, при котором диагностический эксперимент доставляет максимальное количество информации о системе.
С целью получения конструктивных решений предлагается следующий эвристический алгоритм последовательного выбора точек контроля.
На первом шаге выбирается точка контроля, которая доставляет максимальное количество информации о системе.
На каждом из последующих шагов выбирается та точка контроля, которая доставляет максимальное дополнительное количество информации.
Процедура выбора точек контроля заканчивается после того, как будет выбрано заданное число точек контроля.
Аналогично решается задача выбора минимального множества точек контроля, которое обеспечивает заданную глубину диагностирования. В этом случае процедура выбора точек контроля заканчивается, когда количество снимаемой с них информации обеспечивает заданную глубину диагностирования.
Идея алгоритма очень проста, эффективность его реализации зависит от методики расчёта коэффициента K. Непосредственный (или точный) метод расчёта коэффициента K, очевидно, становится трудоёмким для систем большей размерности. Можно предложить, например, не рассматривать те состояния, которые маловероятны и вносят ²малый² вклад в соответствующую вероятность p(yi), т.е. рассматривать лишь наиболее вероятные состояния из подмножеств . Таким образом, на вычисление коэффициента затрачивается значительно меньше машинного времени при незначительной потере точности вычислений.
КЛАССИФИКАЦИЯ МНОГОМЕРНЫХ ДАННЫХ
Постановка задачи.
В природе практически все объекты (физические, биологические, технические, социальные) описываются множеством физических величин или параметров (переменных), которые в совокупности образуют модель объекта как структурированный состав, т.е. систему.
Анализ свойств модели на основе системного подхода и экспериментальная проверка результатов анализа являются основной целью современных научных исследований. Объект (образец) обнаруживает себя во вне как совокупность наблюдаемых переменных, значения которых интерпретируются как свойства объекта, его состояния.
Кроме непосредственно наблюдаемых переменных существуют скрытые (латентные) переменные, непосредственное наблюдение и измерение которых не представляется возможным, но которые существенно влияют на состояние системы и могут быть использованы в исследованиях как индикаторы её состояния. Например, скрытой переменной является здоровье человека, непосредственное измерение которого не представляется возможным. Тем не менее врачи выносят решение о его состоянии по совокупности результатов анализов и значений других наблюдаемых переменных на основе личного опыта.
Скрытые параметры являются интересующими нас структурными свойствами системы, которые представляют собой различного рода взаимодействия (отношения) компонентов (переменных) системы.
Скрытые переменные (параметры) системы могут иметь иерархическую организацию, в которой должна существовать количественная связь между совокупностью непосредственно измеряемых переменных и переменными более высокого уровня, т. е. такой скрытой переменной, которая нас интересует. Установление этих связей и выбор самих скрытых переменных является основной целью анализа системы, при этом анализ должен быть не формальным, а целесообразным, в контексте решаемой задачи. Наиболее интересным с практической точки зрения является обобщающий скрытый параметр (свойство), который описывает состояние системы как некоторой целостности, например, здоровье человека. В общем виде эту задачу не удается решить, но тем не менее здоровье человека можно оценить по некоторому промежуточному скрытому параметру (переменной) в соответствующей иерархии параметров. В качестве другого примера скрытого параметра можно выбрать код, который в форме определенной структуры присутствует в закодированном тексте, но непосредственное наблюдение кода в тексте не представляется возможным.
Таким образом, состояние объекта описывается значениями измеряемых переменных ξ=(ξ1, ξ2, …, ξn), последовательность которых можно рассматривать как вектор в n-мерном евклидовом пространстве, пространстве переменных. В литературе переменные называют часто компонентами, поскольку в совокупности они образуют систему – модель объекта. Обнаружить структурные закономерности (свойства) системы т.е. различного рода зависимости между компонентами, по единственному состоянию системы не представляется возможным, поскольку зависимость отражает характер совместного изменения значений переменных. Для решения поставленной задачи необходимо располагать по крайней мере, множеством состояний, каждое из которых изображается точкой в n-мерном пространстве переменных, в совокупности образуя облако. Все множество многомерных состояний называют многомерными данными. Многомерные данные могут описывать как состояния одного объекта, в котором он может находиться в разные моменты времени, так и состояния разных объектов (образцов), принадлежащих одному и тому же виду, например, множество текстов (образцов), записанных в одном и том же коде (виде). Состояния здоровья людей, образующих некоторое подмножество (репрезентативную выборку) всех людей, так же можно представить в виде многомерных данных, при этом состояние отдельного человека описывается совокупностью значений, выбранных переменных ξ=(ξ1, ξ2, …, ξn). Переменные, которые описывают состояние объекта, могут быть как детерминированными так и случайными величинами в зависимости от их физической природы и содержания решаемой задачи. В зависимости от этого методы обработки данных можно разделить на детерминированные и статистические. Случайность возникает, когда объект случайным образом выбирается из некоторого множества объектов (образцов) или один объект случайным образом может оказаться в одном из возможных состояний.
Многомерные данные являются априорными данными, на основании которых в результате их соответствующей обработки делается оценка интересующего нас свойства объекта (скрытого параметра, переменной), например, здоров человек или болен.
Может быть неограниченное количество задач, связанных с обработкой многомерных данных, тем не менее, можно выделить наиболее важные, актуальные, чаще всего встречающиеся задачи:
1. Кластеризация и классификация состояний объекта.
Кластеризация – это разбиение многомерных данных на подмножества (кластеры) состояний (образцов), обладающих некоторым общим свойством. Например, многомерные данные, описывающие состояния здоровья людей, можно разделить на подмножества здоровых и больных людей. Алгоритм кластеризации не требует какой либо информации кроме той, которая содержится в структуре многомерных данных, он работает без учителя. Кластеризация основана на сравнении состояний (образцов) между собой на основе выбранной метрики, которая в сущности есть скрытый параметр (ненаблюдаемая переменная), которая вычисляется как функция наблюдаемых переменных. В зависимости от вида выбранной метрики результаты кластеризации могут получиться разными. Метрика выбирается экспериментально.
При классификации разбиение многомерных данных на подмножества задается априорно. Задача классификации заключается в определении какому из подмножеств принадлежит наблюдаемое состояние (образец).
2. Обнаружение и исследование зависимостей (закономерностей) между переменными, в том числе, и скрытыми, которые позволяют эффективно решить поставленную задачу. В зависимости от содержания задачи модели, используемые при решении задачи и методы ее решения, могут быть как детерминированными так и статистическими..
Одним из способов выбора, наиболее информативного для решения поставленной задачи, параметра (свойства) является метод проекций или метод главных компонент. Суть его заключается в вычислении проекций векторов, изображающих соответствующие состояния объекта (образцов), на специально выбранное направление в пространстве многомерных переменных. С выбранным направлением будет связана некоторая скрытая переменная, компонента, которая используется в качестве метрики в пространстве переменных.
Рассмотрим пример скрытого параметра (свойства). Пусть некоторый объект описывается вероятностной моделью, параметрами которой являются вероятности p1 ,…,pn,а результатами наблюдения статистические оценки их значений p1= ξ1,…,pn= ξn(крышки или Звездочки) Априори (заранее) мы знаем, что сумма значений всех вероятностей равна единице ( сумма ), но непосредственные наблюдения оценок этих вероятностей не доставляют информацию об этом свойстве и поэтому оно является скрытым параметром. Если бы мы этого свойства не знали, то выявить (угадать) его можно, используя метод проекций, при соответствующем выборе направляющего вектора. Если в качестве направляющего вектора выбрать вектор с координатами , равными единице, то скалярное произведение вектора ξ=(ξ1, ξ2, …, ξn) и направляющего вектора, значение которого равно ,будет оценкой значения скрытого параметра, равного единице. В общем случае выбор направляющего вектора является отдельной проблемой, если априори мы не располагаем какими либо сведениями о свойствах объекта кроме значений наблюдаемых параметров.
Рассмотрим пример классификации наблюдаемого состояния биоценоза на основе многомерных данных с вероятностным описанием его состояний.
5.2. Классификация состояний биоценоза.[3]
В настоящее время актуальным является внедрение информационных технологий в процесс научных и прикладных исследований состояний биоценоза с целью повышения их эффективности. Биоценоз - это системно-организованная совокупность растений, животных или микроорганизмов, обитающих в определённой среде, на состояние которого можно влиять через среду и тем самым управлять развитием биоценоза или его уничтожением. Частным случаем биоценоза является микробиота желудочно-кишечного тракта (ЖКТ) человека. Это чувствительная индикаторная система, которая своими количественными и качественными изменениями реагирует на любые нарушения состояния здоровья человека. Правильная трактовка результата бактериологического исследования имеет исключительное значение в решении вопроса о природе кишечного заболевания и соответствующих методах лечения.
До настоящего времени в рамках научного исследования для этой цели были разработаны методы, основанные на сравнении результатов бактериологических исследований с эталонной группой здоровых людей, выбранных с помощью экспертных оценок, а также исследованы возможности применения нейросетевых технологий.
Цель данной работы заключается в разработке алгоритма классификации состояний микрофлоры ЖКТ пациента на основе статистического анализа априорных многомерных данных [2,8,9,10], полученных в результате бактериологических исследований качественного и количественного состава микрофлоры ЖКТ больных и здоровых пациентов.
Теоретический анализ
Базовая модель, описывающая состояния ЖКТ, построена на исходных данных, которые представляют собой результаты бактериологических исследований состояния ЖКТ отдельно для больных и здоровых людей. Результат исследования состояния ЖКТ отдельного пациента представлен в виде вектораξ=(ξ1, ξ2, …, ξn) в n-мерном евклидовом пространстве, координатами которого являются скалярные величины, каждая из которых равна количеству микроорганизмов данного вида. Таким образом, базовая модель представляет собой n-мерное пространство признаков, которые априорно разделены на два класса, соответствующие здоровым и больным пациентам. Проблема заключается в принятии оптимального решения, какому из классов принадлежат результаты анализа пациента.
В общем случае количество микроорганизмов каждого из видов является случайной величиной с произвольным неизвестным законом распределения, что делает невозможным непосредственное использование классических методов оптимального статистического синтеза правил принятия решения о состоянии микробиоты. В работе предлагается перейти от случайной векторной величины к ее проекции x на специально выбранное направление, определяемое единичным вектором α. Проекция x оказалась достаточно информативной для решения проблемы классификации микробиоценоза, если вектор α параллелен прямой, проходящей через две точки n-мерного пространства, которые изображают математические ожидания многомерных случайных величин соответственно для «здоровых» и «больных» людей. Проекция x на данное направление вычисляется как скалярное произведение векторов ξ=(ξ1, ξ2, …, ξn) и α=(α1, α2, …, αn) [3]
[]
, (5.1)
где α1, α2, …, αn – косинусы углов, которые единичный вектор α образует с осями координат. Поскольку проекция x является весовой суммой случайных величин, то на основании центральной предельной теоремы теории вероятностей можно предположить, что ее закон распределения будет близок к гауссову. В этом случае законы распределения для здоровых и больных людей будут практически гауссовыми, и различаться будут только математическим ожиданием и дисперсией. В работе установлено, что гипотеза о гауссовом законе распределения по критерию согласия χ2 не противоречит опытным данным с уровнем значимости 0,05 и поэтому ее можно считать правдоподобной.
Гистограммы соответственно для здоровых и больных пациентов представлены на рис.5.1.
Рис. 5.1. Гистограмма для здоровых (а) и больных (б) пациентов. x – значение проекции, N – относительная частота значения проекции x
Методика
Построение правила принятия решения о состоянии здоровья пациента начинается с формирования двух классов в пространстве признаков для здоровых и больных пациентов на основании анализа количественного и качественного состава микрофлоры ЖКТ и экспертных оценок. В каждом из классов по экспериментальным данным вычисляются оценки математического ожидания и дисперсии проекции случайного вектора ξ.Для решения поставленной задачи диагностирования используется критерий отношения правдоподобия L, который обеспечивает минимум средней вероятности ошибки. Пороговое значение x0 , которое делит пространство на критическую и допустимую области (рис.5.2) при равенстве априорных вероятностей того здоров пациент или болен вычисляется при L=1 и σ1 ≠σ2 по формуле [2]
. (5.2)
где M1 и M2 – математические ожидания проекций соответственно для групп здоровых и больных пациентов, σ1 и σ2 – среднеквадратические отклонения.
При σ1=σ2 пороговое значение вычисляется по формуле х0=(M1+ M2)/2.
Рис. 5.2. Визуализация метода проекций
Получив результаты бактериологического анализа для диагностируемого пациента в виде многомерного вектора, вычисляется проекция x этого вектора и, в зависимости от взаимного расположения получившейся проекции и заранее вычисленного значения величины х0, принимается решение о том, болен пациент с данным результатом анализа или нет. Если значение проекции окажется очень близким к значению порога, то целесообразнее отказаться от указанных решений и отнести диагностируемого пациента к группе риска. С этой целью вводится некоторая окрестность (w1,w2) точки х0. Пациент относится к группе риска, если значение проекции попало в этот интервал (рис. 5.3).
Рис. 5.3. Блок-схема алгоритма классификации
Результаты эксперимента
В качестве экспериментальных данных были отобраны и систематизированы результаты бактериологических исследований микрофлоры ЖКТ 2576 человек с n=29. Выполнен сравнительный анализ предложенного метода с методом, использующим нейросетевые технологии. Используя нейросетевые технологии, не удалось провести классификацию состояний биоценозов для всех возрастных групп, используя одну конкретную нейронную сеть. Поскольку состав микрофлоры у людей различных возрастов имеет существенные качественные и количественные различия, было принято решение производить обучение нейронных сетей для некоторых возрастных групп отдельно (таблица 5.1).
Таблица 5.1 – Результаты сравнительных экспериментов
возраст метод | 0-23ч | 1-6сут | 7-29сут | 1-11мес | 1-6л | 7-17л | 18-59л | 60л и > |
Сеть Кохонена | - | - | + | + | + | + | + | + |
Сеть Ворда | + | + | + | - | + | + | + | + |
Метод проекций | + | + | + | + | + | + | + | + |
Плюс в таблице обозначает работоспособность выбранного метода, а минус – невозможность отличить «норму» от «патологии». Лучшие результаты показал предлагаемый в работе метод проекций. Классификация с использованием сети Ворда, которая показала лучшие результаты среди нейронных сетей, обеспечило в среднем 85% правильных решений, а предлагаемый метод проекций - 96%.
Условные вероятности ошибок, правильного принятия решения и отнесение пациента к группе риска представлены в виде вероятностной диаграммы (рис. 5.4).
Рис. 5.4. Вероятностная диаграмма, З-здоровые, Б-больные, Р-риск
Таким образом, практические результаты подтвердили эффективность разработанного метода и достоверность теоретических выводов.
ЗАКЛЮЧЕНИЕ
В учебном пособии рассмотрены современные методы обработки многомерных данных с целью выявления скрытых параметров, которые характеризуют совокупность многомерных данных как некоторую целостность. Приведен обзор задач и методов их решения, которые сформировались к настоящему времени. Подробно рассмотрен метод проекций на примере классификации состояний биоценоза.
В качестве инструментария используются классические методы теории вероятностей, теории информации и математической статистики, которые подробно изложены в соответствующих разделах.
Список литературы
1. Боровков А.А. Математическая статистика: оценка параметров, проверка гипотез; , 2007. - 472 c.
2. Горелик А.А. Методы распознавания/ А.А. Горелик, В.А. Скрипкин — М.: Высшая школа, 2010. - 220с.
3. Федоткин М.А. Основы прикладной теории вероятностей и статистики; М. : Высшая школа, 2008. – 368с.
4. Вентцель Е.С.Теория вероятностей: учебник/Е. С. Вентцель. - 10-е изд.,стер. М. : Высш.шк., 2006.
5. Гмурман В.Е.Руководство к решению задач по теории вероятностей и математической статистике: учеб.пособие/В.Е. Гмурман /-9-е изд., стер М. : Высш.шк., 2004.
6. Кудряшов Б.Д. Теория информации/Б.Д. Кудряшов. – СПб.: Питер, 2009. – 320с.
7. Гмурман В.Е. Теория вероятностей и математическая статистика. Базовый курс/ В.Е. Гмурман. – М.: Юрайт, 2013. – 480с.
8. Kim H.Esbensen. Multivariate Date Analysis In Practice. 5 th Edition.1994-2002 CAMO Process AS, Oslo, Norway.
9. Эсбенсен К. Анализ многомерных данных. Избранные главы/ Пер. с англ. С.В. Кучерявского. Под ред. О.Е. Родионовой.- Черноголовка: Изд-во ИПХФ РАН, 2005. – 160 с.
10. Большаков А.А. Методы обработки многомерных данных и временных рядов/А.А. Большаков, Р.Н. Каримов. – М.: Горячая Линия – Телеком, 2007. – 520с.
11. Барсегян А.А. Методы и модели анализа данных: OLAP и DATA Mining/А.А. Барсегян, М.С. Куприянов, В.В. Степаненко, И.И. Холод. – СПб.: БХВ-Петербург, 2004. – 336с.
[1] Функция распределения вероятностей связывает между собой два понятия теории вероятностей: случайное событие и случайная величина – численное значение результатов опыта (эксперимента).
[2] Если плотность распределения вероятностей всюду на интервале [a,b] равна нулю, то и вероятность попадания реализации случайной величины на этот интервал тоже будет равна нулю.
[3] Данный раздел подготовлен совместно с С.А. Зеленцовым
cyberpedia.su
Глубина просмотра сайта и методы оптимизации
Автор: Юлия Федотова
«Глубина просмотра - поведенческий фактор, влияющий на ранжирование сайта. Правильно анализируя данный параметр, вы оптимизируете работу с сайтом и научитесь давать пользователям наиболее полезные и конвертирующие материалы»
Глубина просмотра сайта — это количество страниц, которые посетил пользователь за время одной сессии. Яндекс учитывает глубину просмотра при ранжировании. Вебмастера рассматривают глубину просмотра как метрическое отражение вовлеченности и интереса пользователя к ресурсу. Чем меньше глубина просмотра, тем хуже шансы сайта выйти в ТОП и конвертировать посетителя в постоянного клиента.
Давайте разберемся, что такое средняя глубина просмотра, как отслеживать данный показатель, а также рассмотрим простые способы увеличения глубины просмотра сайта.
Значение глубины просмотра для сайта
Глубина просмотра — поведенческий фактор, прямо влияющий на позиции сайта в поиске. Данный фактор тесно связан с временем пользователя на сайте. Чем больше интересных страниц обнаружит пользователь, тем дальше он пойдет по сайту и тем больше времени проведет на его страницах, не говоря уже об отказе и возврате в поисковую выдачу. Данный параметр определяют:
- Задачи, которые решает сайт — глубина просмотров интернет-магазинов, социальных сетей существенно отличается от глубины погружения пользователя в информационный сайт. Поэтому говорить об стандартах крайне сложно. Данный параметр необходимо отслеживать в динамике, чтобы понять, что является нормой для анализируемого сайта и как оптимизировать над ним работу.
- Юзабилити сайта — от того, насколько сайт удобен, функционален, прост и доступен пониманию пользователя зависит его желание изучать сайт далее.
- Оптимизация страниц сайта — как страницы вовлекают пользователя в жизнь сайта и рекомендуют ему другие материалы/страницы/товары.
- Релевантность сайта запросу пользователя — насколько точно и правильно отвечает сайт на вопрос — соответствие сайта/страницы/информации/товара ожиданиям пользователя.
- Наличие интерактивных элементов — опции взаимодействия пользователя с сайтом, увеличивающие вовлеченность. Это калькуляторы, видеоролики, фотогалереи — все те элементы, которые привлекают внимание и задерживают пользователя на сайте.
Важно! Глубина просмотра сайта может отражать не интерес пользователя к сайту, а указывать на непонятную навигацию, плохую структуру сайта. Для этого необходимо анализировать глубину просмотра в связке со средним временем на сайте. Большая глубина просмотра за короткое время на сайте при низкой конверсии говорит о том, что пользователи не находят того, что искали.
Яндекс Метрика: глубина просмотра сайта
Узнать глубину просмотра сайта можно в Яндекс Метрике в сводке и в одноименной вкладке. Данный интерфейс показывает наиболее важные параметры состояния ресурса: отказы, глубина просмотра, время на сайте.
Средняя глубина просмотра рассчитывается следующим образом:
количество просмотренных страниц за определенный период : количество визитов на сайт за этот же интервал времени
Открыв вкладку Глубина просмотра в Яндекс Метрике, вы увидите изменения показателей за период:
Этот параметр полезно отслеживать для того, чтобы определять качество контента и оптимизации страницы в определенный момент времени. Если глубина просмотра мала, то это указывает на:
- Нерелевантность страницы/контента запросу пользователей — проанализируйте, по каким запросам пользователи попадают на страницы сайта. Отвечает ли страница запросу.
- Плохая оптимизация страниц — пользователь не получает предложений двигаться дальше по сайту. Отсутствие интерактивных элементов определяет низкий уровень вовлеченности.
Низкая глубина просмотра сайта — что делать?
В первую очередь необходимо понять, что является нормой для типа анализируемого сайта. Глубина просмотра в 3-4 страницы для информационного сайта является нормой, тогда как для интернет-магазина этого мало.
Внутренняя перелинковка
Одним из наиболее популярных методов увеличения глубины просмотра является правильная внутренняя перелинковка — это проставление тематических ссылок на странице:
Не ставьте ссылку просто так. Больше можете узнать «здесь» не зацепит пользователя. Задайте интригу, рекомендуйте, увлекайте пользователя. Каждая ссылка в материале должна работать как CTA-кнопка.
Интерактивные элементы
Наиболее полезной для увеличения глубины просмотров опцией является фото галерея. Именно за счет просмотра изображений и фотографий глубина просмотра интернет-магазинов и социальных сетей достигает критических максимумов.
Узнать, какие изображения работают на конверсию
К тому же высокая вовлеченность пользователя в сайт увеличивает время пребывания на сайте, что также учитывается поисковыми системами при ранжировании.
Блоки рекомендуемых материалов (статьи или товары)
Если пользователь может пропустить ссылки в тексте, то тематические статьи в блоках с рекомендациями привлекут внимание.
Важно, чтобы заголовок и сниппет статьи были максимально цепляющими и привлекающими внимание.
В интернет-магазинах это реализуется так:
Упрощение навигации
Пользователь должен видеть, где он находится на сайте в каждый момент времени. В этом помогают хлебные крошки. Цепочка ссылок упрощает навигацию и переходы в желаемые разделы и подразделы.
Как использовать хлебные крошки правильно?
GetGoodRank не рекомендует
Существуют методы искусственного повышения глубины просмотров за счет вынуждения пользователей совершать дополнительные клики, чтобы достичь желаемого.
Для этого контент разделяется на части и публикуется на разных страницах, как это делает один из популярных зарубежных медицинских порталов.
Для получения полной информации по препарату пользователь вынужден посетить все вкладки. На некоторых ресурсах контент разделяют на 10 и более частей.
Такое структурирование контента допустимо в случаях, когда информации много, она сложная. Однако такая подача контента должна преследовать цель не увеличения глубины просмотров, а улучшения пользовательского опыта.
Другие сайты используют метод искусственного вовлечения пользователя в сайт, предлагая найти ему купон со скидкой или получить подарок на страницах сайта.
Если сайт предлагает бесполезный контент для пользователя, то никакие «приманки» не конвертируют его в клиента.
Выводы
Глубина просмотра отражает потенциал сайта заинтересовать пользователя и привести его к конверсии. В сочетании с таким фактором, как время на сайте, можно определить качество оптимизации и навигации. Если глубина просмотра достаточная, а время на сайте крайне мало, это указывает на то, что пользователям непонятна структура сайта. Скорее всего пользователи не находят требуемые материалы.
Анализ глубины просмотра в динамике показывает, какие материалы наиболее заинтересовали пользователя, побудили его посетить рекомендуемые страницы, и что работает лучше для роста конверсии.
Глубина просмотра должна определяться индивидуально для каждого сайта. Не существует стандартных значений, применимых к каждому типу сайтов.
Низкая глубина просмотра не всегда говорит о плохой оптимизации или некачественном контенте, нерелевантности страницы запросу. Данный фактор невозможно анализировать в отрыве от страницы. Существуют вполне самодостаточные страницы сайта, которые полностью удовлетворяют запрос пользователя.
blog.getgoodrank.ru
Оптимизация S.T.A.L.K.E.R.: Shadow of Chernobyl
Ретро-игры · Моды для игр · Софт для игр · Оптимизации игр · Смешные скриншоты Assassin's Creed · BioShock · Crysis · Fallout 3 · Gothic 3 · Mass Effect · Neverwinter Nights 2 · Oblivion · S.T.A.L.K.E.R. · S.T.A.L.K.E.R.: CS · Two Worlds · Unreal Tournament 3Настройки конфигурации в S.T.A.L.K.E.R.е хранятся в файле User.ltx, который находится по адресу \Documents and Settings\All Users\Shared Documents\STALKER-SHOC в Windows XP, либо Users\Public\Documents\STALKER-SHOC в Windows Vista. Файл можно открыть с помощью Блокнота. Прежде чем вносить в него изменения, сделайте резервную копию. Рассмотрим некоторые настройки из этого файла. В квадратных скобках записаны возможные значения параметров.
Нижеследующие опции с приставками r1_ относятся к режиму работы С.Т.А.Л.К.Е.Р.а в режиме DX8, в меню игры это называется Статическое освещение. Опции r2_ - к режиму DX9, что называется игрой Динамическое освещение.
Первыми пойдут опции DX8. Если вы используете DX9, то изменение этих опций ничего не даст.
r1_dlights [on,off] – вкл/выкл динамическое освещение в DX8. Странная опция, ведь DX8 уже подразумевает выключение динамического освещения. Возможно, это удаляет источник света вашего фонаря.
r1_dlights_clip [10.000 - 150.000] – дистанция динамического освещения при задействованном статическом… Странная опция, ведь при DX8 динамическое освещение не используется вообще. Возможно, это влияет на дальность освещения вашим фонарём.
r1_glows_per_frame [2 - 32] – Установка числа источников света. Влияет на качество графики и на ФПС.
r1_lmodel_lerp [0.000 - 0.333] – регулирует величину линейной интерполяции освещения модели. Короче, при повышении значения возрастёт качество графики некоторых моделей, например, вашего оружия.
r1_ssa_lod_a [16.000 - 96.000] - Регулирует основной Уровень Детализации (LOD), чем выше величина, тем больше детализация и видимость объектов на расстоянии, но за счет легкого падения FPS.
r1_ssa_lod_b [16.000 - 64.000] – Установка подобна предыдущей, но управляет детализацией некоторых объектов в пределах мира игры. Снова, чем выше значение, тем меньше ФПС.
r1_tf_mipbias [-0.500 - 0.500] – Управляет чёткостью текстур на расстоянии. При уменьшении значения текстуры будут более чёткие, но за это придется платить незначительным падением ФПС. Повышение параметра сделает текстуры размытыми, но может чуть-чуть поднять ФПС. До установки патча 1.0004 было возможно менять это значение в пределах от -3.000 до 3.000.
Теперь опции DX9. Если вы используете DX8, то изменение этих опций ничего не даст.
r2_gi [on,off] – Вкл/выкл более реалистичный метод освещения, при котором свет может отражаться с поверхностей и освещать другие поверхности. Включение этой опции сильно бьёт по производительности.
r2_gi_refl – Регулирует отражающий эффект поверхностей при включенной предыдущей опции.
r2_aa [on,off] – Эта опция включает псевдосглаживание. Это не является настоящим антиальясингом, а просто немного размазывает картинку на экране. Если у вас ЖК монитор, вы можете получить похожий эффект нахаляву, поставив разрешение экрана отличное от родного :). При его включении немного падает ФПС.
r2_aa_kernel [0.300 - 0.700] – Регулирует величину псевдосглаживания. Чем выше значение, тем сильнее размытие.
r2_aa_break [0.000000 - 1.000000,0.000000 - 1.000000,0.000000 -1.000000] – Эта опция регулирует расстояние, на котором действует псевдосглаживание. Вы можете сами подобрать удобное вам значение. Например, значение r2_aa_break 0.000000,1.000000,0.000000 даст чёткие закрытые помещения и размытые открытые пространства.
r2_aa_weight [0.000000 - 1.000000,0.000000 - 1.000000,0.000000 - 1.000000] – Этот параметр нужен для более точного управления псевдосглаживающим эффектом. Чем выше значения, тем сильнее смазывание.
r2_allow_r1_lights [on,off] – При включении опции частично будет использоваться DX8 освещение. Вроде бы, производительность должна подняться, но на деле может быть наоборот…
r2_gloss_factor [0.000 - 10.000] – Чем больше значение этого параметра, сильнее блестят глянцевые поверхности.
r2_ls_bloom_fast [on,off] – Усиливает эффект HDR, что может привести к тому, что картинка может быть слишком яркой и смазанной, на ФПС почти не влияет. Но это по вкусу…
r2_ls_bloom_kernel_b [0.010 - 1.000] – управляет уровнем размытия HDR, чем больше величина, тем сильнее картинка смазана.
r2_ls_bloom_threshold [0.000 - 1.000] – Регулирует яркость HDR, чем больше значение, тем менее яркость HDR. В результате, при значении 1, картинка будет как на DX8 с bloomом.
r2_ls_depth_bias [-0.500 - 0.500] – Регулятор дальности вида источников света. Низкие значения увеличивают глубину и границу источника, повышение параметра может практически полностью удалить источники света.
r2_ls_depth_scale [0.500 - 1.500] – Аналогичная предыдущей установка.
r2_mblur [0.000 - 1.000] – регулирует смазывание при движении. Отлично смотрится со значением 0.1, причём это не влияет на ФПС. Чтобы активировать это, недостаточно изменить параметр в конфиг-файле, нужно запустить игру с параметром –mblur. Открываете свойства ярлыка игры, и в пути к запускающему экзешнику дописываете –mblur через пробел. Получится примерно так: D/Supergames/STALKER/XR_3DA.exe -mblur
r2_parallax_h [0.000 - 0.500] – Эта опция должна управлять Parallax Mappingом, но никаких визуальных изменений не наблюдается. Тем не менее, установка значения 0,04 может поднять ФПС.
r2_slight_fade [0.020 - 2.000] – Поднимая это значение можно улучшить ФПС.
r2_ssa_lod_a [16.000 - 96.000] - Регулирует Уровень Детализации (LOD) для мира игры, чем выше величина, тем больше детализация и видимость объектов на расстоянии, но за счет легкого падения FPS.
r2_ssa_lod_b [32.000 - 64.000] – Опция подобна предыдущей, но управляет детализацией объектов.
r2_sun [on,off] – Вкл/выкл Солнце как источник света. Если выкл, деревья и дома не будут отбрасывать тени.
r2_sun_depth_far_bias [-0.500 - 0.500]
r2_sun_depth_far_scale [0.500 - 1.500]
r2_sun_depth_near_bias [-0.500 - 0.500]
r2_sun_depth_near_scale [0.500 - 1.500]
Эти параметры регулируют r2_sun, если оно включено. Это по существу управление уровнем детализации теней и границей солнечного света и теневых областей.
r2_sun_details [on,off] – Тени травы
r2_sun_lumscale [-1.000 - 3.000] – Определяет яркость солнечного света, с величинами ниже нуля выключая Солнце :).
r2_sun_lumscale_amb [0.000 - 3.000] – регулирует яркость окружающего мира, не влияет на яркость солнечного света.
r2_tf_mipbias [-0.500 - 0.500] – Определяет, насколько чёткими будут текстуры на расстоянии. . При уменьшении значения текстуры будут более чёткие, но за это придется платить незначительным падением ФПС. Повышение параметра сделает текстуры размытыми, но может чуть-чуть поднять ФПС. До установки патча 1.0004 было возможно менять это значение в пределах от -3.000 до 3.000.
r2_tonemap [on,off] – Вкл/выкл Tone Mapping. Включение сделает HDR более качественным без падения производительности. Следующие опции r2_tonemap_ позволяют его настраивать.
r2_tonemap_lowlum [0.000 - 1.000] - Эта установка регулирует Tone Mappingа в темных областях. Чем выше эта установка, тем темнее HDR.
r2_tonemap_middlegray [0.000 - 2.000] - Эта установка имеет наиболее сильное влияние на HDR, и если её поднять, эффект HDR будет более богатый. Например, попробуйте величину 1.2, чтобы HDR в С.Т.А.Л.К.Е.Р.е выглядел как в Oblivionе.
Общие настройки. Работают как в DX9, так и в DX8.
ai_use_torch_dynamic_lights [on,off] – Вкл\выкл тени от объектов, освещаемых фонарями.
g_always_run [on,off] – по умолчанию, когда вы жмёте Вперёд, Меченый бежит, если эту опцию выключить, он будет идти шагом. Не путайте это со Спринтом, когда Меченый бежит очень быстро, тратя силы.
rs_stats [on,off] - Вкл/выкл статистику, включая показ FPS.
snd_acceleration [on,off] - Вкл/выкл аппаратное ускорение звука
snd_cache_size [4 - 32] – Настраивает, сколько оперативной памяти используется для кэширования звуков, чтобы предотвратить заедания. При этом используется в два раза больше памяти, то есть, если вы поставите 16, будет использовано 32 МБ.
snd_targets [4 - 32] – Опция определяет число одновременных источников звука, повышение влияет на производительность при слабой (читай-встроенной) звуковой карте.
vid_mode [WxH] - Настройка разрешения экрана
texture_lod [0 - 6] - Уровень детализации удалённых текстур. Чем ниже значение, тем лучше текстуры.
r__geometry_lod [0.2 - 1.4] - Уровень детализации объектов. Меньшие значения соответствуют лучшей детализации.
rs_v_sync [on,off] - Вертикальная синхронизация. Рекомендую отключить это.
Параметры командной строки.
Существуют дополнительные команды, которые выполняются через командную строку запуска игры. Правый клик по ярлыку, выбираете Свойства, затем в строке пути к объекту дописываете команды. Например, так: C:\Program Files\THQ\S.T.A.L.K.E.R. - Shadow of Chernobyl\bin\XR_3DA.exe -nointro -noprefetch -noshadows.
Сейчас я перечислю некоторые важные команды.
-center_screen - Центрирует окно игры при оконном режиме.
-dsound - Использует звук DirectSound вместо OpenAL.
-gpu_nopure – Переключает Pure Hardware режим видеокарты на простой Hardware режим. На новых картах это не прибавит производительности.
-gpu_ref - Переключает режим видеокарты на режим по-умолчанию
-gpu_sw - Переключает режим видеокарты на режим Software
-load [ваш сэйв] – Загрузка определённого сэйва сразу после запуска игры.
-ltx [filename.ltx] - Загружает и выполняет определенный файл «filename.ltx» конфигурации.
-nodistort – Удаляет эффекты искажения: воздух от костра, аномалии. Это может помочь обладателям старых видеокарт.
-nointro – Не показывает интро-ролики, сразу грузится меню
-nolog – Отключает лог
-noprefetch – Отключает prefetch. Игра станет грузиться быстрее, но в игре могут быть резкие падения ФПС.
-noshadows – Отключает тени от динамических источников света (Солнце не в счёт), повышается ФПС.
-nosound – Отключает весь звук в игре
-overlay [путь к папке] – Указание пути к другой папке с сэивами/конфигами/профилями
-psp – Включает вид от третьего лица
-smap1536
-smap2048
-smap2560
-smap3072
-smap4096
Эти команды устанавливают разрешение карт теней. Чем оно выше, тем красивее тени и ниже ФПС.
-ss_tga – Скриншоты будут делаться в формате .TGA с более высоким качеством
Assassin's Creed · BioShock · Crysis · Fallout 3 · Gothic 3 · Mass Effect · Neverwinter Nights 2 · Oblivion · S.T.A.L.K.E.R. · Two Worlds · Unreal Tournament 3 ROCK AND METAL.ruCopyleft «центаз.народ.ру» 2006-2009. Хостинг от uCoz. Копирование материалов с данного сайта запрещено вашей совестью! |
centaz.narod.ru
Оптимизация перебора / Хабр
Дисклеймер: для понимания этой статьи требуются начальные знания теории графов, в частности знание поиска в глубину, поиска в ширину и алгоритма Беллмана — Форда.Введение
Наверняка вы сталкивались с задачами, которые приходилось решать перебором. А если вы занимались олимпиадным программированием, то точно видели NP-полные задачи, которые никто не умеет решать за полиномиальное время. Такими задачами, например, является поиск пути максимальной длины без самопересечений в графе и многим известная игра — судоку, обобщенная на размер . Полный перебор крайне долгий, ведь время его работы растёт экспоненциально относительно размера входных данных. Например, время поиска максимального пути в графе из 15 вершин наивным перебором становится заметным, а при 20 — очень долгим.В этом посте я расскажу как можно оптимизировать большинство переборов, чтобы они стали работать на порядки быстрее.
Поподробнее про перебор
Пример
Рассмотрим наивное решение задачи о нахождении пути максимальной длины без самопересечений в графе G.Запускаем немного измененный обход в глубину. А именно, вместо проверки на то, посетили ли мы вершину делаем проверку на принадлежность вершины к текущему пути. И теперь, если на каждой итерации обновлять текущий глобальный результат, то в итоге в этой переменной будет лежать ответ на задачу.
Если посмотреть в это решение чуть глубже, то можно увидеть, что по-настоящему был запущен классический поиск в глубину, но на другом графе — графе состояний S. В этом графе вершины задаются маской вершин графа G, принадлежащих текущему пути, и номером последней вершины. Рёбра задаются наличием ребра в графе G между последними вершинами путей и равенством остальной маски.
Большинство переборов можно представить в виде поиска по графу состояний.
А что мы собственно ищем
Переборы бывают трёх типов:1) Проверка существования. 2) Максимизация/Минимизация на не взвешенном графе. 3) Максимизация/Минимизация на взвешенном графе.
Для решения наивным методом первых двух задач используется поиск в глубину или поиск в ширину, а для третьей — алгоритм Беллмана — Форда по графу состояний S.
А теперь сами оптимизации.
Оптимизация №1: мемоизация, или ленивость
Не нужно делать одно и тоже несколько раз. Можно просто запомнить результат, и когда в следующий раз нужно будет сделать ту же работу, просто взять её результат. Это работает на задачах проверки существования, а на двух других это иногда работает частично. Есть два варианта: или результат состояния кодируется им же, или нет. Если да, то мемоизация работает отлично. Если нет, то мемоизация может помочь не делать работу, когда текущий ответ состояния хуже, чем был когда-то до этого момента в этом же состоянии.Если граф состояний S мал, то нам повезло — можно сделать булевский массив, иначе мемоизацию лучше всего реализовать хеш-таблицей.
Обычно реализовать это не сложно. Нужно добавить 2 строчки: в начале проверять, что нас здесь ещё не было, а в конце записывать, что мы здесь были.
Оптимизация №2: отсечение по ответу
Оптимизация заключается в том, что мы сравниваем оценку наилучшего ответа, достижимого из этого состояния, с текущим глобальным результатом. Эта оптимизация работает, если нам надо что-либо максимизировать или минимизировать. В случае проверки существования можно сделать оценку достижимости результата. Например, в проверке является ли граф гамильтоновым, можно добавить проверку достижимости всех вершин графа G, не проходя через вершины, лежащие на текущем пути.Хорошим примером для этой оптимизации является поиск пути максимальной длины без самопересечений в графе G. Эта задача NP-полная.
Допустим, мы находимся в каком-то состоянии s графа S. Если нам, как ни крути, не удастся улучшить результат, то стоит вернуться. Теперь надо научиться это проверять. Например, можно посчитать количество достижимых вершин графа G из последней вершины пути состояния s и прибавить длину уже полученного пути, то полученное число будет верхней границей максимального ответа, достижимого из s. Значит, если оно меньше текущего результата, то можно не запускать перебор из этого состояния.
Если абстрагироваться от конкретной задачи, то надо подобрать такую функцию , чтобы было оценкой ответа достижимого из s, где — это текущий ответ состояния s.
Если функция будет достаточно хорошо отражать реальность, то эта оптимизация может ускорить работу алгоритма на порядки.
Отсечение по ответу, пожалуй, самая важная оптимизация, потому что её используют многие другие оптимизации и методы.
Оптимизация №3: жадность
Жадность — это когда мы хватаем всё самое, на первый взгляд, хорошее. То есть идём по ребру, которое нам показалось перспективней остальных. Проблема в том, что ответ, который находит жадность, необязательно самый хороший, но чем лучше наша оценка, тем лучше результат. За функцию оценки можно взять из отсечения по ответу.А теперь по порядку.
Отсечение по ответу срабатывает чаще, если есть хороший ответ. Тогда можно вначале запустить жадный алгоритм и получить какой-то ответ. Это будет неплохим началом, чтобы отсекать совсем плохие ветки перебора.
Посмотрим на работу поиска в глубину. В состоянии s мы перебираем рёбра в каком-то случайном порядке и запускаемся от них дальше. Так давайте перебирать рёбра в порядке убывания оценки . Для этого просто отсортируем их в поиске в глубину перед переходом в следующие состояния. Тогда отсечение по ответу будет сперва получать более качественные состояния. Стоит заметить, что в таком виде поиск в глубину в самом начале будет действовать как жадный алгоритм, значит отдельно его можно не запускать.
Пара слов про взвешенные графы
Обычно алгоритм Беллмана — Форда пишут примерно так:for v in vertices: for e in edges: relaxation(e) А можно его написать немного по-другому: как поиск в ширину, но при проверке на то, посетили ли мы раньше это состояние, сравнивать текущий и мемоизированный, и, если мемоизированный лучше, то отрубать эту ветку перебора.Чем «плох» поиск в глубину и поиск в ширину
Немного картинок: Красным выделены множества посещённых состояний графа S после некоторого времени работы поиска в глубину и в ширину соответственно.Обе эти области очень сильно локализованы в каком-то одном месте. Нужен какой-то механизм, который будет распределять красную область по всему графу S, чтобы быстрее улучшать ответ, который поможет отрубать плохие ветки перебора.
Если мы решаем задачу минимизации, то действия поиска в ширину выглядят логично, но, к сожалению, он вряд ли получит какой-то ответ для отсечения.
Механизмы выбора области поиска
Жадность
И опять к нам пришла жадность, но теперь немного в другом ключе. В прошлый раз мы сортировали рёбра и переходили по ним всем последовательно, но это нам слабо поможет искать более глобально, чем на картинках сверху.Все помнят, что есть число 1 и есть число N, но многие забывают, что есть ещё и числа между ними. Жадность — это выбор одного ребра, а поиск в глубину — выбор N рёбер. Давайте напишем жадный поиск в глубину, который будет переходить по первым k рёбер.
Если использовать этот метод, то перебор будет обходить намного большие поддеревья графа S.
Проблема в том, что если взять слишком маленькое k, то ответ может оказаться неправильным, а если слишком большое, то времени может не хватить. Решение довольно простое: надо выбрать все возможные k. То есть написать внешний цикл, перебирающий k от 1 до бесконечности, пока время не кончилось, а в теле цикла запускать поиск решения.
Здесь стоит понять, что так как количество просмотренных состояний графа S растёт экспоненциально относительно роста k, то перебор этой переменной от 1 до k-1 не будет увеличивать асимптотическую сложность. В худшем случае время работы увеличится не более чем в константу раз, а на практике значительно уменьшится из-за отсечения по хорошему ответу.
Iterative deepening
Этот метод как бы заставляет поиск в глубину выполнять не те задачи, которые он обычно выполняет.Суть метода заключается в том, чтобы создать глобальную переменную — максимальная глубина, на которую должен спускаться поиск в глубину. Так же как и с k запускаем внешний цикл по этой глубине.
Теперь поиск в глубину больше напоминает поиск в ширину, но с той разницей, что он сразу получает какой-то ответ для отсечения.
Ограничение размера очереди поиска в ширину
Это тоже жадность, но теперь для поиска в ширину. Из названия понятно, что мы будем ограничивать очередь. Для этого опять заведём глобальную переменную — размер очереди и переберём её от 2 до бесконечности. Но перебирать будем не по +1, а умножать на константу, например, на 2.В какой-то момент размер очереди превысит выбранный максимальный размер и придётся кого-то выбросить за борт. Чтобы выбрать, надо отсортировать по какому-то признаку. Будем использовать, как всегда, функцию для сравнения состояний.
Что из всего этого теперь писать
Для наилучшего результата надо написать почти всё и почти сразу.Вначале запускаем поиск в глубину на некоторое время с мемоизацией, отсечением по ответу, сортировкой рёбер, и перебором k, но без Iterative deepening. Далее запускаем поиск в ширину с отсечением по ответу и ограничением размера очереди.
Поиск в глубину нужен, чтобы найти неплохой ответ для отсечения в поиске в ширину, а поиск в ширину нужен, чтобы найти уже наилучший ответ. Эта сборная солянка неплохо показывает себя во многих задачах на перебор.
Теперь немного практики
Поиск максимального пути без самопересечений в графеСлучайный граф: 18 вершин, 54 ребра. Время работы: Нет оптимизаций ~ 4 сек. Мемоизация, отсечение по ответу ~0.2 мс.
Случайный граф: 30 вершин, 90 рёбер. Нет оптимизаций > 1 часа (не дождался). Мемоизация, отсечение по ответу ~ 0.5 с. Мемоизация, отсечение по ответу, жадность ~ 10 мс.
habr.com
VPS сервер под Debian: анализ проблем и оптимизация настроек
Список разделов
К сожалению, при эксплуатации серверов, так же, как и любых других компьютеров, неизбежно возникают проблемы того или иного рода. Особенно это заметно при эксплуатации VDS-серверов, так как зачастую они обладают ограниченными ресурсами. Если не учитывать этот момент в настройке VDS, то могут возникать ситуации при которых один из ресурсов будет исчерпан и сервер перестанет работать так, как должен.
Для начала рассмотрим полезные утилиты и методы диагностики тех или иных проблем. Затем взглянем на возможные проблемные ситуации более детально. Все технические детали относятся к дистрибутиву Debian.
Нагрузка на процессор
Чтобы прикинуть ситуацию на сервере прежде всего стоит воспользоваться утилитой top, или atop, если он установлен.
В top видна информация по аптайму, нагрузке на процессор и использованию оперативной памяти. Также видна статистика по запущенным процессам. Утилита atop более информативна, однако ее нужно предварительно установить.
Быстро узнать LA можно с помощью команды uptime.
LA - параметр характеризующий общую нагрузку на систему. Приблизительно можно считать, что LA равный (или менее) количеству процессорных ядер является нормальным.
Свободная оперативная память
Быстро получить информацию по использованию оперативной памяти можно командой free -m (-m - отображать в мегабайтах):
#free -m total used free shared buffers cachedMem: 3439 890 2548 0 181 227-/+ buffers/cache: 481 2958Swap: 4729 0 4729
Использование дискового пространства
Статистика по смонтированным файловым системам доступна по команде df -h:
Filesystem Size Used Avail Use% Mounted onrootfs 97G 5.0G 87G 6% /udev 10M 0 10M 0% /devtmpfs 344M 6.6M 338M 2% /runtmpfs 5.0M 0 5.0M 0% /run/lock
Чтобы узнать сколько занимает директория, нужно перейти в неё и выполнить команду du -hs (s - суммарно). Если же требуется узнать информацию о каждой поддиректории, то используйте следующий вариант: du -h --max-depth=1, где 1 - уровень вложенности.
# du -h --max-depth=1197M ./bin129M ./local22M ./include354M ./lib4.0K ./src6.3M ./lib3230M ./sbin379M ./share1.1G .
Если начать проверку с корневой директории, то можно выявить самые тяжёлые директории.
Также существует утилита ncdu, которая позволяет просканировать все вложенные директории и построить топ по самым тяжёлым с возможностью заходить в них и смотреть информацию по поддиректориям. Очень удобно, но в случае большой вложенности и большого количества файлов для получения результата придётся подождать.
Пакет sysstat
vmstat отображает информацию об использовании памяти, раздела подкачки, дисков, процессора с заданной периодичностью заданное количество раз (опционально).
# vmstat 2 5 -S Mprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----r b swpd free buff cache si so bi bo in cs us sy id wa0 0 0 2081 271 357 0 0 1 10 45 4 3 1 95 00 0 0 2081 271 357 0 0 0 0 458 307 5 1 94 00 0 0 2081 271 357 0 0 0 0 625 346 19 9 73 00 0 0 2081 271 357 0 0 0 30 542 309 5 1 93 10 0 0 2081 271 357 0 0 0 0 447 280 4 1 95 0
В команде первая цифра задаёт периодичность, вторая - количество проверок. Параметр -S позволяет задать в каких единицах отображать информацию об использовании памяти, в данном случае - в мегабайтах.
mpstat позволяет просмотреть информацию по использованию процессора как суммарно, так и для отдельных процессоров (ядер), как с заданной периодичностью, так и единожды.
# mpstat 2 2 -P ALLLinux 3.2.0-4-amd64 (debgate) 10/30/2013 _x86_64_ (2 CPU)
10:02:25 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle10:02:27 AM all 5.30 0.00 0.51 0.00 0.00 0.00 0.00 0.00 94.1910:02:27 AM 0 8.59 0.00 1.01 0.00 0.00 0.51 0.00 0.00 89.9010:02:27 AM 1 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.00
10:02:27 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle10:02:29 AM all 4.02 0.00 0.25 0.75 0.00 0.25 0.00 0.00 94.7210:02:29 AM 0 6.63 0.00 0.51 1.02 0.00 0.00 0.00 0.00 91.8410:02:29 AM 1 1.01 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.99
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idleAverage: all 4.66 0.00 0.38 0.38 0.00 0.13 0.00 0.00 94.46Average: 0 7.61 0.00 0.76 0.51 0.00 0.25 0.00 0.00 90.86Average: 1 1.51 0.00 0.00 0.00 0.00 0.00 0.00 0.00 98.49
Параметр -P ALL как бы намекает, что нужно отображать информацию по процессорам (ядрам) в отдельности, иначе будут показаны только суммарные значения. В случае, если не задать периодичность, то информация отобразится только один раз.
iostat - утилита для мониторинга использования дисков. Отображает информацию о том, сколько данных было передано и с какой скоростью идёт считывание. Первая строка отображает данные с момента перезапуска системы, остальные - с момента вывода предыдущей строки.
# iostat 2 5 -dhkzLinux 3.2.0-4-amd64 (debgate) 01.11.2013 _x86_64_ (2 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda 0,81 3,58 5,91 276896 457728
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtnsda 0,50 0,00 2,00 0 4
Параметр -d позволяет выводить только данные по дисковой подсистеме, иначе выводится также информация по процессору. -h - позволяет отображать данные в человекопонятном виде, -k - значения будут выведены в килобайтах, -z - ничего не отображать, если ничего не изменилось.
pidstat позволяет узнать большое количество информации по запущенному процессу, такой как утилизация процессора, потребление памяти, использование диска и прочую. Можно получать информацию как об одном, так и о нескольких процессах:
# pidstat 1 -p 24219 -p 24130Linux 3.2.0-4-amd64 (debgate) 07/26/2014 _x86_64_ (2 CPU)
03:48:40 AM PID %usr %system %guest %CPU CPU Command03:48:41 AM 24219 2.00 0.00 0.00 2.00 1 apache203:48:41 AM 24130 0.00 0.00 0.00 0.00 0 apache2
В данном случае отображается информация об использовании процессора двумя указанными процессами раз в секунду. Можно задать количество и периодичность запросов для каждого процесса в отдельности.
Дополнительную информацию можно получить на сайте разработчика: http://sebastien.godard.pagesperso-orange.fr/documentation.html
Трафик
Для мониторинга соединений в режиме реального времени можно использовать утилиту iftop (устанавливается отдельно). Чтобы отключить преобразование адресов в доменные имена нужно нажать n, чтобы включить отображение портов - p. Также отображается скорость передачи.
Вторым инструментом является утилита iptraf с псевдографическим интерфейсом (также ставится отдельно). Позволяет в более наглядной форме просмотреть скорость соединения, а также целый набор прочей информации о сетевых соединениях.
Стоит также упомянуть о довольно простой утилите bwm-ng, которая позволяет в режиме реального времени отслеживать использование канала. iptraf и iftop также предоставляют данную информацию, но в менее наглядной форме и с бОльшим количеством подробностей.
Логи
По умолчанию в Debian логи (журналы работы) расположены в директории /var/log. Основные файлы логов:
auth.log - содержит в себе записи об авторизациях в различных системах: FTP, SSH, cron.cron.log - информация обо всех выполненных заданиях.daemon.log - сюда демоны пишут служебные сообщения.debug - сюда пишутся системные сообщения и сообщения от приложений, для которых выбран уровень лога debug.dmesg - в этот лог пишутся сообщения выдаваемые при загрузке системы.dpkg.log - тут собрана информация о последних установках ПО с помощью apt-get и aptitude.kern.log - содержит сообщения выдаваемые ядром. Информация может пригодиться в случае проблем с новым, самостоятельно собранным, ядром.messages - здесь можно найти сообщения от системных служб и приложений, которые ведут лог на уровне info. Часть информации может дублироваться с другими логами.syslog - системный лог, может содержать информацию, которой нет в других логах.
В зависимости от ситуации можно смотреть различные логи. Хотите узнать, не пытаются ли подобрать пароль к сервису или думаете, что уже подобрали? Вам в auth.log. Что-либо не запустилось при перезапуске системы? Добро пожаловать в dmesg. Требуется определить что и когда было установлено? Обратитесь к dpkg.log. Неудачно собрали ядро и система на нем не запускается? Посмотрите содержимое kern.log. И так далее. Не забывайте, что в директории /var/log обычно содержатся файлы логов одного типа за некоторый период времени.
Apache
Логи
Логи веб-сервера Apache по умолчанию пишутся в директорию /var/log/apache2. В директории создается два файла: access.log - содержит логи доступа и error.log - содержит информацию об ошибках в работе веб-сервера и сайтов.
Логи можно проанализировать с помощью простого просмотра или конвейера из консольных команд. К примеру, мы можем построить топ IP-адресов генерирующих определённый код ответа:
cd /var/log/apache2 tail -n1000 access.log | grep " 302 " | awk '{print $1}' | sort | uniq -c | sort -gРезультат:
1 77.66.215.97 1 82.145.220.175 2 207.241.226.231 8 199.192.207.146 29 178.154.160.29 751 37.140.141.35
То есть мы взяли последнюю 1000 строк лог-файла access.log, выбрали строки с определенным кодом, из них вырезали только IP-адреса с которых идут запросы, отсортировали, посчитали количество уникальных адресов идущих подряд, отсортировали по количеству вхождений.
Время обработки запроса
Также полезным может оказаться запись в лог времени обработки запроса, что можно сделать создав собственный формат лога и добавив в него параметр %T. К примеру, в случае базовой установки Apache в Debian, в файле /etc/apache2/apache2.conf нужно найти строку начинающуюся с LogFormat и заканчивающуюся на combined, скопировать её в новую строку внести изменения:
- Переименовать combined в combined-time
- Перед последней кавычкой добавить следующее: CPU_TIME: %T
В результате должно получиться:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" CPU_TIME: %T" combined-time
Теперь правим файл какого-либо виртуального хоста в директории /etc/apache2/sites-available, корректируя (добавив) строку начинающуюся с CustomLog, в которой указываем путь до файла лога и указывая наш новый формат. В итоге получается строка вида:
CustomLog /var/www/logs/domain.tld-access.log combined-time
Теперь в лог будет записываться время обработки запроса в секундах. К примеру:
81.95.28.26 - - [26/Dec/2013:12:01:31 +0400] "POST /wp-admin/admin-ajax.php HTTP/1.0" 200 850 "http://gesu.su/wp-admin/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36" CPU_TIME: 9
Страница статуса
Включить страницу статуса Apache можно с помощью следующих директив в конфигурационном файле:
<Location /server-status> AllowOverride All SetHandler server-status Order allow,deny Allow from 12.34.56.78 127.0.0.1 Satisfy any</Location>
В данном случае доступ ограничен с локального хоста и адреса 12.34.56.78, который следует заменить на используемый вами внешний IP-адрес.
На странице видна общая информация по работе веб-сервера и по обслуживаемым в настоящий момент запросам. Страницей статуса стоит пользоваться для анализа текущей ситуации на сервере.
Nginx
Логи
По умолчанию, ведётся два лога error.log и access.log в директории /var/log/nginx. Приёмы анализа аналогичны тем, которые применяются для анализа логов Apache.
Страница статуса
Nginx также позволяет получить информацию о текущем состоянии, однако более простую, чем для Apache. Фактически выводится информация только о количестве соединений.
Чтобы включить вывод данной информации необходимо внутри контекста server добавить строки:
location /nginx_status { stub_status on; access_log off; allow 12.34.56.78; deny all;}
Где 12.34.56.78 - IP-адрес с которого разрешён доступ к статистике.
Расшифровка показателей в статистике:
- Reading - получение заголовков запросов,
- Writing - чтение тел запросов, обработка запросов и выдача результатов,
- Waiting - активных keep-alive соединений (reading + writing).
MySQL
Логи
По умолчанию, после установки MySQL в Debian информация пишется в лог /var/log/syslog
Можно задать путь до лога ошибок добавив файл /etc/mysql/my.cnf строки:
log_error = /var/log/mysql/mysql.errlog_warnings = 1
mytop
В Debian установить mytop можно командой
aptitude install mytopДалее потребуется создать конфигурационный файл, чтобы не указывать каждый раз данные для подключения вручную. Файл создается для каждого пользователя в отдельности (~/.mytop). Содержимое файла:
user=rootpass=XXXhost=localhostdb=delay=2port=3306socket=batchmode=0header=1color=1idle=1
Вообще говоря, из всех этих параметров можно оставить только указание пароля и адрес сервера.
Обратите внимание, что пароль пользователя root сервера баз данных указывается в открытом виде, поэтому стоит озаботиться настройкой прав, чтобы остальные пользователи не смогли прочесть содержимое файла.
Mytop позволяет посмотреть нагрузку в текущий момент, активные запросы, их состояние. Кроме того, можно убить процессы, посмотреть подробности (explain) и так далее. Информация, выдаваемая с помощью explain может пригодиться при создании индексов и совершенствовании запросов к базам.
Mysqltuner
Mysqltuner - скрипт на perl, который анализирует показатели работе MySQL-сервера, накопленные за период времени и выдаёт статистическую информацию и рекомендации по оптимизации настроек.
Получить скрипт можно командой:
wget https://raw.github.com/major/MySQLTuner-perl/master/mysqltuner.plПри использовании под Debian какие-либо настройки не требуется, при использовании, к примеру, в CentOS, может понадобиться указать данные для доступа к MySQL.
Пример вывода:
# perl mysqltuner.pl>> MySQLTuner 1.2.0 - Major Hayden <[email protected]>>> Bug reports, feature requests, and downloads at http://mysqltuner.com/>> Run with '--help' for additional options and output filtering[OK] Logged in using credentials from debian maintenance account.
-------- General Statistics --------------------------------------------------[--] Skipped version check for MySQLTuner script[OK] Currently running supported MySQL version 5.5.33-0+wheezy1[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------[--] Status: +Archive -BDB -Federated +InnoDB -ISAM -NDBCluster[--] Data in MyISAM tables: 1M (Tables: 82)[--] Data in InnoDB tables: 96K (Tables: 6)[--] Data in PERFORMANCE_SCHEMA tables: 0B (Tables: 17)[!!] Total fragmented tables: 6
-------- Security Recommendations -------------------------------------------[OK] All database users have passwords assigned
-------- Performance Metrics -------------------------------------------------[--] Up for: 22h 56m 26s (674K q [8.169 qps], 83K conn, TX: 483M, RX: 65M)[--] Reads / Writes: 99% / 1%[--] Total buffers: 480.0M global + 2.7M per thread (151 max threads)[OK] Maximum possible memory usage: 885.8M (25% of installed RAM)[OK] Slow queries: 0% (0/674K)[OK] Highest usage of available connections: 3% (6/151)[OK] Key buffer size / total MyISAM indexes: 16.0M/640.0K[OK] Key buffer hit rate: 99.2% (46K cached / 364 reads)[OK] Query cache efficiency: 91.7% (311K cached / 340K selects)[OK] Query cache prunes per day: 0[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 12K sorts)[OK] Temporary tables created on disk: 7% (118 on disk / 1K total)[OK] Thread cache hit rate: 99% (6 created / 83K connections)[!!] Table cache hit rate: 19% (129 open / 655 opened)[OK] Open file limit used: 8% (212/2K)[OK] Table locks acquired immediately: 100% (27K immediate / 27K locks)[OK] InnoDB data size / buffer pool: 96.0K/128.0M
-------- Recommendations -----------------------------------------------------General recommendations: Run OPTIMIZE TABLE to defragment tables for better performance MySQL started within last 24 hours - recommendations may be inaccurate Enable the slow query log to troubleshoot bad queries Increase table_cache gradually to avoid file descriptor limitsVariables to adjust: table_cache (> 1200)
Далее остается подправить конфиг MySQL (/etc/mysql/my.cnf) и перезапустить его. Затем подождать около суток, снова запустить скрипт и следуя рекомендациям внести очередные коррективы в конфигурационный файл. Следует следить за максимальным значением, которое может использовать сервер баз данных, так как большинство изменений приводит к его увеличению.
Запись состояния сервера
atop - утилита, похожая на утилиту top, но с значительно расширенным функционалом. Отображает больше различных параметров и делает это более подробно. Однако наиболее интересной функцией является возможность записи состояния сервера с определённой периодичностью, что позволяет восстановить ситуацию на сервере перед, во время и после аварии. И вообще отслеживать ситуацию на сервере.
Установка классическая:
aptitude install atopЗадать путь до директории, в которой будут храниться логи и периодичность, с которой будет записываться состояние системы, можно прямо в стартовом скрипте /etc/init.d/atop.
Просмотреть содержимое лога можно командой вида:
atop -r /var/log/atop/atop_20131231Перемещаться по шкале времени можно с помощью t и T (shift+t).
Отладка скриптов
Медленные запросы MySQL
MySQL: индексы, EXPLAIN, прфилирование
Время выполнения скриптов php
Узнать время выполнения скрипта php можно узнать либо из лога Apache при включённом логировании времени обработки запроса, либо выполнив скрипт из консоли и воспользовавшись командой time. К примеру, команда:
time php test.phpВыдаст результат работы скрипта, после чего покажет время затраченное на его выполнение:
real 0m0.114suser 0m0.040ssys 0m0.036s
Если вы используете php-fpm, то можно включить лог медленных запросов по аналогии с MySQL:
slowlog = /var/log/php5/slow.logrequest_slowlog_timeout = 10s
Дебаггинг
Это уже для программистов на php. Xdebug устанавливается легко:
aptitude install php5-xdebugПосле чего может понадобиться дополнительная настройка в конфиге. Подробнее: http://romych.com.ua/ru_RU/blog/view/post/19
Xdebug позволяет использовать точки останова, менять значения переменных на лету, осуществлять удалённую отладку и так далее.
Профилирование
XHProf и xDebug - профилирование кода PHP
Проблемные ситуации
Конечно, все проблемы, возникающие на VDS серверах, уникальны. Однако зачастую они попадают в одну из следующих категорий:
- Место на диске кончилось,
- Закончилось свободное место в оперативной памяти,
- Крайне высокая нагрузка на процессор,
- Скачки посещаемости,
- Спам с сервера,
- Сервер взломали,
- Забился канал (DoS),
- Эксплуатация ошибок в настройках сервисов,
- Проблемы с файловой системой.
Прочие:
- Лёгкий пароль рута.
- Обновление ядра пользователем.
Описание ситуаций
1. Недостаток свободного места на диске мешает нормальной работе программ. Зачастую в первую очередь перестаёт работать MySQL. Сразу увидеть проблему позволяет утилита df. Затем требуется определить какие конкретно файлы и директории занимают больше всего места. Для поиска наиболее объёмных директорий можно использовать утилиты du и ncdu. Затем для поиска наиболее крупных файлов в директории можно использовать команду ls -lS | head.
Далее требуется очистить некоторое количество места и принять меры для того, чтобы ситуация не повторилась. К примеру, настроить ротацию логов. Для восстановления нормального функционирования системы может понадобиться перезагрузка сервера.
2. В случае, если возникает недостаток оперативной памяти, то начинает использоваться swap, который находится на диске, который работает значительно медленнее и сервер начинает тормозить. В случае же острой нехватки ОП начинает работать OOM Killer (Out Of Memory Killer), который убивает наиболее тяжёлые, по его мнению, процессы, что может привести к неработоспособности программ и трудностям с их перезапуском, так как в случае их экстренного завершения на диске может оставаться pid-файл. В отдельных случаях возможно зависание сервера вследствие паники ядра.
Посмотреть информацию по ОП можно с помощью утилиты free. Узнать, был ли задействован OOM Killer, можно проанализировав лог syslog. Вообще, достаточно универсальным способом найти информацию является команда:
egrep -i 'killed process' /var/log/*Часто проблемы с наличием свободной оперативной памяти возникают в случае активного размножения процессов веб-сервера Apache. Чтобы не допустить этого стоит чётко рассчитать сколько процессов выдержит ваш VDS и внести коррективы в настройки апача. С помощью top или ps aux узнаем сколько занимает один процесс и делим общее количество ОП (за вычетом 20% на прочие программы) на полученное значение. В итоге узнаем количество процессов и прописываем его в конфигурационном файле.
3. Проблемы с нагрузкой на процессор могут возникать, к примеру, в случае, если кто-то ведёт перебор паролей для доступа в административную часть сайта или панели управления сервером. В этом случае используется как веб-сервер, так и интерпретатор скриптов, а также сервер баз данных. Что суммарно может создавать высокую нагрузку. Информацию по использованию процессора можно получить с помощью утилит top или atop. Затем необходимо анализировать логи соответствующих программ и блокировать плохишей.
4. В случае скачков посещаемости сайтов могут наблюдаться проблемы как с нагрузкой на процессор, свободной оперативной памятью, так и с нагрузкой на дисковую подсистему и интернет-канал. То есть создаётся суммарная нагрузка. Выявить, кто генерирует нагрузку можно проанализировав логи веб-серверов. В случае, если нагрузка полезная, то необходимо экстренно предпринимать соответствующие меры. Если нагрузка полезная и запланированная, то стоит заранее провести соответствующие оптимизации. В качестве таких оптимизаций может выступать кэширование, переход на более мощный сервер, отказ от apache и прочие действия.
В случае, если скачек посещаемости вызван бесполезными ботами или DoS-атакой с небольшого количества IP-адресов, то доступ с них можно закрыть либо на файрволе, либо с помощью блокировки на уровне веб-сервера nginx. Nginx можно свободно использовать в качестве веб-файрвола, так как он достаточно легковесен и способен выдерживать значительные нагрузки.
5. Если вы по глупости все ещё используете Joomla 1.5 и ваш сайт взломали и начали использовать для рассылки спама с него, то SMTP-сервер также может генерировать значительную нагрузку, в зависимости от его настроек. Отследить это можно по очереди почтового сервера либо с помощью мониторинга утилитой atop. В логе будут видны моменты, когда было слишком много одновременных процессов SMTP-сервера.
6. Если ваш сервер взломали, то это можно увидеть по логу авторизаций - есть успешные подключения по ssh со сторонних IP-адресов. Кроме того, при просмотре запущенных процессов можно увидеть подозрительные и непонятные, которые вы не запускали. Можно попробовать просканировать сервер с помощью clamav и rkhanter. Найденные гадости удалить. Однако наилучшим вариантом будет полная переустановка операционной системы. В любом случае требуется изменить пароль пользователя root.
Никогда не ставьте слишком лёгкий пароль пользователя root. Был случай, когда для пользователя root был установлен пароль root. Не делайте так никогда.
7. Если ваш сервер DDoS-ят так сильно, что к нему не подключиться, то, скорее всего, провайдер заблокирует ваш IP-адрес до момента окончания атаки. В любом случае что-то можно сделать только в обход основного интеренет-канала, то есть с помощью VNC-подключения к консоли. В данной ситуации обратитесь за помощью к вашему хостинг-провайдеру.
Для того, чтобы сервер мог выдержать не слишком сильные атаки не забудьте заранее установить ограничения на количество одновременных подключений с одного IP-адреса и прочие.
8. Как показывает практика, злоумышленники могут эксплуатировать не правильно настроенные программы, установленные на VPS-серверах. В том числе, это могут быть и предустановленные программы. Особо стоит выделить DNS и NTP - серверы. Если вы не планируете использовать собственные DNS-серверы, то соответствующее ПО лучше отключить совсем или даже удалить. В случае, если вы используете свои DNS-серверы, то отключите возможность рекурсивных ответов или установите ПО, которое их не поддерживает.
Определить такой тип проблем может быть затруднительно, но в случае их наличия с вами свяжутся представители соответствующих контор.
9. Ещё одной проблемой могут быть неполадки в работе файловой системы. Они могут как накапливаться, так и возникать в случае экстренного отключения вашего VDS, к примеру, в случае неполадок в работе головного сервера или проблем с электричеством в дата-центре. Некоторые проблемы могут быть обнаружены при анализе лога kernel.log. Другие - экспериментальным путём, например, в случае, если ваш сервер не загружается после перезагрузки VPS. Если у вас нет VNC-доступа, то в подобной ситуации стоит обратиться в техническую поддержку хостинга.
Оптимизация VDS
Часто VDS-серверы предоставляются с базовыми настройками, которые далеки от оптимальных. К примеру, установлен только Apache с некими стандартными настройками. В таком случае может возникать избыточная нагрузка на процессор и на оперативную память, которую можно избежать.
Общие предложения для оптимизации настроек:
- Установка проксирующего веб-сервера Nginx,
- Установка opcode-кэшера для php,
- Оптимизация настроек Apache,
- Оптимизация настроек MySQL.
Дополнительно:
- Настройка связки Nginx + php-fpm и удаление Apache,
- Использование различных уровней кэширования: на уровне движка сайта, opcode-кэшера, веб-сервера nginx,
- Настройка собственных скоростных DNS-серверов,
- Оптимизация запросов к базе данных,
- Оптимизация кода сайта.
Описание оптимизаций
1. Установка Nginx и соответствующая настройка позволяет снизить количество обращений к Apache, тем самым снизив потребление оперативной памяти и нагрузку на процессор. То есть настраивать следует так, чтобы Nginx выдавал статику самостоятельно, в то время как к Apache поступали запросы только на обработку скриптов.
2. Рекомендуется использовать OPCache для кэширования php-скриптов и APCu для пользовательского кэширования. Либо можно установить xCache, который может и то, и другое. Кэширование опкода позволяет не компилировать повторно одни и те же скрипты, что значительно повышает скорость их выполнения при повторном обращении.
Чтобы установить OPCache и APCu в Debian вам понадобиться модуль php-pear:
aptitude install php-pearПосле чего можно будет установить необходимые модули с помощью команд:
aptitude install libpcre3-dev pecl install zendopcache-7.0.3 apcu-4.0.63. Оптимизация настроек Apache заключается, в основном, в отключении не нужных модулей, которые дополнительно потребляют ОП в расчёте на один процесс, а также установка лимита на максимально возможное количество параллельных процессов, что позволяет не допустить недостатка оперативной памяти в случае скачков посещаемости.
4. Дополнительный тюнинг настроек MySQL позволяет как оптимизировать потребление оперативной памяти, так и ощутимо повысить производительность. Для этого можно использовать MySQLTuner, речь о котором уже шла выше.
Про дополнительные оптимизации здесь говорить не будем, так как каждая из них требует отдельной статьи.
Если у вас возникли вопросы или дополнения, добро пожаловать в комментарии.
Наверх
Опубликовано 22 August 2014
debian-help.ru
Настройки графики в играх: на что они влияют?
В современных играх используется все больше графических эффектов и технологий, улучшающих картинку. При этом разработчики обычно не утруждают себя объяснением, что же именно они делают. Когда в наличии не самый производительный компьютер, частью возможностей приходится жертвовать. Попробуем рассмотреть, что обозначают наиболее распространенные графические опции, чтобы лучше понимать, как освободить ресурсы ПК с минимальными последствиями для графики.
Анизотропная фильтрация
Когда любая текстура отображается на мониторе не в своем исходном размере, в нее необходимо вставлять дополнительные пикселы или, наоборот, убирать лишние. Для этого применяется техника, называемая фильтрацией.
трилинейная | анизотропная |
Билинейная фильтрация является самым простым алгоритмом и требует меньше вычислительной мощности, однако и дает наихудший результат. Трилинейная добавляет четкости, но по-прежнему генерирует артефакты. Наиболее продвинутым способом, устраняющим заметные искажения на объектах, сильно наклоненных относительно камеры, считается анизотропная фильтрация. В отличие от двух предыдущих методов она успешно борется с эффектом ступенчатости (когда одни части текстуры размываются сильнее других, и граница между ними становится явно заметной). При использовании билинейной или трилинейной фильтрации с увеличением расстояния текстура становится все более размытой, анизотропная же этого недостатка лишена.
Учитывая объем обрабатываемых данных (а в сцене может быть множество 32-битовых текстур высокого разрешения), анизотропная фильтрация особенно требовательна к пропускной способности памяти. Уменьшить трафик можно в первую очередь за счет компрессии текстур, которая сейчас применяется повсеместно. Ранее, когда она практиковалась не так часто, а пропуская способность видеопамяти была гораздо ниже, анизотропная фильтрация ощутимо снижала количество кадров. На современных же видеокартах она почти не влияет на fps.
Анизотропная фильтрация имеет лишь одну настройку – коэффициент фильтрации (2x, 4x, 8x, 16x). Чем он выше, тем четче и естественнее выглядят текстуры. Обычно при высоком значении небольшие артефакты заметны лишь на самых удаленных пикселах наклоненных текстур. Значений 4x и 8x, как правило, вполне достаточно для избавления от львиной доли визуальных искажений. Интересно, что при переходе от 8x к 16x снижение производительности будет довольно слабым даже в теории, поскольку дополнительная обработка понадобится лишь для малого числа ранее не фильтрованных пикселов.
Шейдеры
Шейдеры – это небольшие программы, которые могут производить определенные манипуляции с 3D-сценой, например, изменять освещенность, накладывать текстуру, добавлять постобработку и другие эффекты.
Шейдеры делятся на три типа: вершинные (Vertex Shader) оперируют координатами, геометрические (Geometry Shader) могут обрабатывать не только отдельные вершины, но и целые геометрические фигуры, состоящие максимум из 6 вершин, пиксельные (Pixel Shader) работают с отдельными пикселами и их параметрами.
Шейдеры в основном применяются для создания новых эффектов. Без них набор операций, которые разработчики могли бы использовать в играх, весьма ограничен. Иными словами, добавление шейдеров позволило получать новые эффекты, по умолчанию не заложенные в видеокарте.
Шейдеры очень продуктивно работают в параллельном режиме, и именно поэтому в современных графических адаптерах так много потоковых процессоров, которые тоже называют шейдерами. Например, в GeForce GTX 580 их целых 512 штук.
Parallax mapping
Parallax mapping – это модифицированная версия известной техники bumpmapping, используемой для придания текстурам рельефности. Parallax mapping не создает 3D-объектов в обычном понимании этого слова. Например, пол или стена в игровой сцене будут выглядеть шероховатыми, оставаясь на самом деле абсолютно плоскими. Эффект рельефности здесь достигается лишь за счет манипуляций с текстурами.
Исходный объект не обязательно должен быть плоским. Метод работает на разных игровых предметах, однако его применение желательно лишь в тех случаях, когда высота поверхности изменяется плавно. Резкие перепады обрабатываются неверно, и на объекте появляются артефакты.
Parallax mapping существенно экономит вычислительные ресурсы компьютера, поскольку при использовании объектов-аналогов со столь же детальной 3D-структурой производительности видеоадаптеров не хватало бы для просчета сцен в режиме реального времени.
Эффект чаще всего применяется для каменных мостовых, стен, кирпичей и плитки.
Anti-Aliasing
До появления DirectX 8 сглаживание в играх осуществлялось методом SuperSampling Anti-Aliasing (SSAA), известным также как Full-Scene Anti-Aliasing (FSAA). Его применение приводило к значительному снижению быстродействия, поэтому с выходом DX8 от него тут же отказались и заменили на Multisample Аnti-Аliasing (MSAA). Несмотря на то что данный способ давал худшие результаты, он был гораздо производительнее своего предшественника. С тех пор появились и более продвинутые алгоритмы, например CSAA.
AA off | AA on |
Учитывая, что за последние несколько лет быстродействие видеокарт заметно увеличилось, как AMD, так и NVIDIA вновь вернули в свои ускорители поддержку технологии SSAA. Тем не менее использовать ее даже сейчас в современных играх не получится, поскольку количество кадров/с будет очень низким. SSAA окажется эффективной лишь в проектах предыдущих лет, либо в нынешних, но со скромными настройками других графических параметров. AMD реализовала поддержку SSAA только для DX9-игр, а вот в NVIDIA SSAA функционирует также в режимах DX10 и DX11.
Принцип работы сглаживания очень прост. До вывода кадра на экран определенная информация рассчитывается не в родном разрешении, а увеличенном и кратном двум. Затем результат уменьшают до требуемых размеров, и тогда «лесенка» по краям объекта становится не такой заметной. Чем выше исходное изображение и коэффициент сглаживания (2x, 4x, 8x, 16x, 32x), тем меньше ступенек будет на моделях. MSAA в отличие от FSAA сглаживает лишь края объектов, что значительно экономит ресурсы видеокарты, однако такая техника может оставлять артефакты внутри полигонов.
Раньше Anti-Aliasing всегда существенно снижал fps в играх, однако теперь влияет на количество кадров незначительно, а иногда и вовсе никак не cказывается.
Тесселяция
С помощью тесселяции в компьютерной модели повышается количество полигонов в произвольное число раз. Для этого каждый полигон разбивается на несколько новых, которые располагаются приблизительно так же, как и исходная поверхность. Такой способ позволяет легко увеличивать детализацию простых 3D-объектов. При этом, однако, нагрузка на компьютер тоже возрастет, и в ряде случаев даже не исключены небольшие артефакты.
На первый взгляд, тесселяцию можно спутать с Parallax mapping. Хотя это совершенно разные эффекты, поскольку тесселяция реально изменяет геометрическую форму предмета, а не просто симулирует рельефность. Помимо этого, ее можно применять практически для любых объектов, в то время как использование Parallax mapping сильно ограничено.
Технология тесселяции известна в кинематографе еще с 80-х годов, однако в играх она стала поддерживаться лишь недавно, а точнее после того, как графические ускорители наконец достигли необходимого уровня производительности, при котором она может выполняться в режиме реального времени.
Чтобы игра могла использовать тесселяцию, ей требуется видеокарта с поддержкой DirectX 11.
Вертикальная синхронизация
V-Sync – это синхронизация кадров игры с частотой вертикальной развертки монитора. Ее суть заключается в том, что полностью просчитанный игровой кадр выводится на экран в момент обновления на нем картинки. Важно, что очередной кадр (если он уже готов) также появится не позже и не раньше, чем закончится вывод предыдущего и начнется следующего.
Если частота обновления монитора составляет 60 Гц, и видеокарта успевает просчитывать 3D-сцену как минимум с таким же количеством кадров, то каждое обновление монитора будет отображать новый кадр. Другими словами, с интервалом 16,66 мс пользователь будет видеть полное обновление игровой сцены на экране.
Следует понимать, что при включенной вертикальной синхронизации fps в игре не может превышать частоту вертикальной развертки монитора. Если же число кадров ниже этого значения (в нашем случае меньше, чем 60 Гц), то во избежание потерь производительности необходимо активировать тройную буферизацию, при которой кадры просчитываются заранее и хранятся в трех раздельных буферах, что позволяет чаще отправлять их на экран.
Главной задачей вертикальной синхронизации является устранение эффекта сдвинутого кадра, возникающего, когда нижняя часть дисплея заполнена одним кадром, а верхняя – уже другим, сдвинутым относительно предыдущего.
Post-processing
Это общее название всех эффектов, которые накладываются на уже готовый кадр полностью просчитанной 3D-сцены (иными словами, на двухмерное изображение) для улучшения качества финальной картинки. Постпроцессинг использует пиксельные шейдеры, и к нему прибегают в тех случаях, когда для дополнительных эффектов требуется полная информация обо всей сцене. Изолированно к отдельным 3D-объектам такие приемы не могут быть применены без появления в кадре артефактов.
High dynamic range (HDR)
Эффект, часто используемый в игровых сценах с контрастным освещением. Если одна область экрана является очень яркой, а другая, наоборот, затемненной, многие детали в каждой из них теряются, и они выглядят монотонными. HDR добавляет больше градаций в кадр и позволяет детализировать сцену. Для его применения обычно приходится работать с более широким диапазоном оттенков, чем может обеспечить стандартная 24-битовая точность. Предварительные просчеты происходят в повышенной точности (64 или 96 бит), и лишь на финальной стадии изображение подгоняется под 24 бита.
HDR часто применяется для реализации эффекта приспособления зрения, когда герой в играх выходит из темного туннеля на хорошо освещенную поверхность.
Bloom
Bloom нередко применяется совместно с HDR, а еще у него есть довольно близкий родственник – Glow, именно поэтому эти три техники часто путают.
Bloom симулирует эффект, который можно наблюдать при съемке очень ярких сцен обычными камерами. На полученном изображении кажется, что интенсивный свет занимает больше объема, чем должен, и «залазит» на объекты, хотя и находится позади них. При использовании Bloom на границах предметов могут появляться дополнительные артефакты в виде цветных линий.
Film Grain
Зернистость – артефакт, возникающий в аналоговом ТВ при плохом сигнале, на старых магнитных видеокассетах или фотографиях (в частности, цифровых изображениях, сделанных при недостаточном освещении). Игроки часто отключают данный эффект, поскольку он в определенной мере портит картинку, а не улучшает ее. Чтобы понять это, можно запустить Mass Effect в каждом из режимов. В некоторых «ужастиках», например Silent Hill, шум на экране, наоборот, добавляет атмосферности.
Motion Blur
Motion Blur – эффект смазывания изображения при быстром перемещении камеры. Может быть удачно применен, когда сцене следует придать больше динамики и скорости, поэтому особенно востребован в гоночных играх. В шутерах же использование размытия не всегда воспринимается однозначно. Правильное применение Motion Blur способно добавить кинематографичности в происходящее на экране.
Эффект также поможет при необходимости завуалировать низкую частоту смены кадров и добавить плавности в игровой процесс.
SSAO
Ambient occlusion – техника, применяемая для придания сцене фотореалистичности за счет создания более правдоподобного освещения находящихся в ней объектов, при котором учитывается наличие поблизости других предметов со своими характеристиками поглощения и отражения света.
Screen Space Ambient Occlusion является модифицированной версией Ambient Occlusion и тоже имитирует непрямое освещение и затенение. Появление SSAO было обусловлено тем, что при современном уровне быстродействия GPU Ambient Occlusion не мог использоваться для просчета сцен в режиме реального времени. За повышенную производительность в SSAO приходится расплачиваться более низким качеством, однако даже его хватает для улучшения реалистичности картинки.
SSAO работает по упрощенной схеме, но у него есть множество преимуществ: метод не зависит от сложности сцены, не использует оперативную память, может функционировать в динамичных сценах, не требует предварительной обработки кадра и нагружает только графический адаптер, не потребляя ресурсов CPU.
Cel shading
Игры с эффектом Cel shading начали делать с 2000 г., причем в первую очередь они появились на консолях. На ПК по-настоящему популярной данная техника стала лишь через пару лет, после выхода нашумевшего шутера XIII. С помощью Cel shading каждый кадр практически превращается в рисунок, сделанный от руки, или фрагмент из детского мультика.
В похожем стиле создают комиксы, поэтому прием часто используют именно в играх, имеющих к ним отношение. Из последних известных релизов можно назвать шутер Borderlands, где Cel shading заметен невооруженным глазом.
Особенностями технологии является применение ограниченного набора цветов, а также отсутствие плавных градиентов. Название эффекта происходит от слова Cel (Celluloid), т. е. прозрачного материала (пленки), на котором рисуют анимационные фильмы.
Depth of field
Глубина резкости – это расстояние между ближней и дальней границей пространства, в пределах которого все объекты будут в фокусе, в то время как остальная сцена окажется размытой.
В определенной мере глубину резкости можно наблюдать, просто сосредоточившись на близко расположенном перед глазами предмете. Все, что находится позади него, будет размываться. Верно и обратное: если фокусироваться на удаленных объектах, то все, что размещено перед ними, получится нечетким.
Лицезреть эффект глубины резкости в гипертрофированной форме можно на некоторых фотографиях. Именно такую степень размытия часто и пытаются симулировать в 3D-сценах.
В играх с использованием Depth of field геймер обычно сильнее ощущает эффект присутствия. Например, заглядывая куда-то через траву или кусты, он видит в фокусе лишь небольшие фрагменты сцены, что создает иллюзию присутствия.
Влияние на производительность
Чтобы выяснить, как включение тех или иных опций сказывается на производительности, мы воспользовались игровым бенчмарком Heaven DX11 Benchmark 2.5. Все тесты проводились на системе Intel Core2 Duo e6300, GeForce GTX460 в разрешении 1280×800 точек (за исключением вертикальной синхронизации, где разрешение составляло 1680×1050).
Как уже упоминалось, анизотропная фильтрация практически не влияет на количество кадров. Разница между отключенной анизотропией и 16x составляет всего лишь 2 кадра, поэтому рекомендуем ее всегда ставить на максимум.
Сглаживание в Heaven Benchmark снизило fps существеннее, чем мы того ожидали, особенно в самом тяжелом режиме 8x. Тем не менее, поскольку для ощутимого улучшения картинки достаточно и 2x, советуем выбирать именно такой вариант, если на более высоких играть некомфортно.
Тесселяция в отличие от предыдущих параметров может принимать произвольное значение в каждой отдельной игре. В Heaven Benchmark картинка без нее существенно ухудшается, а на максимальном уровне, наоборот, становится немного нереалистичной. Поэтому следует устанавливать промежуточные значения – moderate или normal.
Для вертикальной синхронизации было выбрано более высокое разрешение, чтобы fps не ограничивался вертикальной частотой развертки экрана. Как и предполагалось, количество кадров на протяжении почти всего теста при включенной синхронизации держалось четко на отметке 20 или 30 кадров/с. Это связано с тем, что они выводятся одновременно с обновлением экрана, и при частоте развертки 60 Гц это удается сделать не с каждым импульсом, а лишь с каждым вторым (60/2 = 30 кадров/с) или третьим (60/3 = 20 кадров/с). При отключении V-Sync число кадров увеличилось, однако на экране появились характерные артефакты. Тройная буферизация не оказала никакого положительного эффекта на плавность сцены. Возможно, это связано с тем, что в настройках драйвера видеокарты нет опции принудительного отключения буферизации, а обычное деактивирование игнорируется бенчмарком, и он все равно использует эту функцию.
Если бы Heaven Benchmark был игрой, то на максимальных настройках (1280×800; AA – 8x; AF – 16x; Tessellation Extreme) в нее было бы некомфортно играть, поскольку 24 кадров для этого явно недостаточно. С минимальной потерей качества (1280×800; AA – 2x; AF – 16x, Tessellation Normal) можно добиться более приемлемого показателя в 45 кадров/с.
itc.ua
Оптимизация STALKER: Clear Sky
Ретро-игры · Моды для игр · Софт для игр · Оптимизации игр · Смешные скриншоты Assassin's Creed · BioShock · Crysis · Fallout 3 · Gothic 3 · Mass Effect · Neverwinter Nights 2 · Oblivion · S.T.A.L.K.E.R.: CS · S.T.A.L.K.E.R.: SoC · Two Worlds · Unreal Tournament 3Настройки конфигурации в S.T.A.L.K.E.R.: Clear Sky хранятся в файле User.ltx, который находится по адресу \Documents and Settings\All Users\Общие документы\STALKER-STCS в Windows XP, либо \Users\Public\Documents\STALKER-STCS в Windows Vista. Файл можно открыть с помощью Блокнота. Прежде чем вносить в него изменения, сделайте резервную копию. Рассмотрим некоторые настройки из этого файла. В квадратных скобках записаны возможные значения параметров.
Большинство опций аналогичны таковым из S.T.A.L.K.E.R.: Shadow of Chernobyl. Все эти опции можно вводить в консоли, чтобы наглядно видеть из действие. Влияющие на графику опции идут с прставками r1_ , r2_ или r3_. На r1_ начинаются опции для DX8-режима игры (Статическое освещение), r2_ – DX9 (Динамическое освещение) и r3_ – DX10 (Улучшенное полное динамическое освещение). Т.е. если вы играете с Динамическим освещением, а меняете опции r1_*, то это не даст никакого эффекта в игре. Параметры r2_* оказывают влияние при игре в режиме DirectX 10.
После редактирования файла User.ltx нежелательно менять настройки в меню игры, этим можно сбить все изменения в конфиг-файле.
Параметры r1_* (для режима DirectX 8)
r1_dlights [on,off] Вкл./Выкл. свет от вашего фонарика. Не рекомендую его выключать, а то ночью слишком страшно будет :)
r1_dlights_clip [10.000 - 150.000] Возможно, это влияет на дальность освещения вашим фонариком.
r1_glows_per_frame [2 - 32] Установка числа источников света. Не сильно влияет на качество графики и на ФПС.
r1_lmodel_lerp [0.000 - 0.333] Регулирует величину линейной интерполяции освещения модели. Короче, при повышении значения возрастёт качество графики некоторых моделей, например, вашего оружия.
r1_ssa_lod_a [16.000 - 96.000] Регулирует основной Уровень Детализации (LOD), чем выше величина, тем больше детализация и видимость объектов на расстоянии, но за счет легкого падения FPS.
r1_ssa_lod_b [16.000 - 64.000] Установка подобна предыдущей, но управляет детализацией некоторых объектов на карте. Снова, чем выше значение, тем меньше ФПС.
r1_tf_mipbias [-0.500 - 0.500] Управляет чёткостью текстур на расстоянии. При уменьшении значения текстуры будут более чёткие, но за это придется платить незначительным падением ФПС. Повышение параметра сделает текстуры размытыми, но может чуть-чуть поднять ФПС.
Параметры r2_* (для режима DirectX 9)
r2_aa [on,off] Эта опция включает т.н. псевдосглаживание. Это не является настоящим антиальясингом, а просто немного размазывает картинку на экране. Если у вас ЖК монитор, вы можете получить похожий эффект нахаляву, поставив разрешение экрана чуть меньше родного :) При его включении немного падает ФПС. Если включить эту опцию в DX10-режиме, это может привести к появлению артефактов.
r2_aa_kernel [0.300 - 0.700] Регулирует величину псевдосглаживания. Чем выше значение, тем сильнее размытие. Значение 0.300 даёт разумную величину размытия.
r2_aa_break [0.000000 - 1.000000,0.000000 - 1.000000,0.000000 -1.000000] Эта опция регулирует расстояние, на котором действует псевдосглаживание. Вы можете сами подобрать удобное вам значение, но их увеличение не обязательно означает прирост качества. Например, значение r2_aa_break 0.000000,1.000000,0.000000 даст чёткие закрытые помещения и размытые открытые пространства.
r2_aa_weight [0.000000 - 1.000000,0.000000 - 1.000000,0.000000 - 1.000000] Этот параметр нужен для более точного управления псевдосглаживающим эффектом. Чем выше значения, тем сильнее смазывание.
r2_allow_r1_lights [on,off] При включении опции частично будет использоваться DX8 освещение. Вроде бы, производительность должна подняться, но на деле может быть наоборот…
r2_dof [0.000000 - 1.000000,0.000000 - 1.000000,0.000000 - 1.000000] Эта фича регулирует величину постфильтра Depth of Field. Но всё же, лучше менять значения рассмотренных ниже опций r2_dof_*.
r2_dof_far [0.000 - 10000.000] Эта настройка управляет расстоянием, на котором включается DoF. Это не относится к временному повышению DoF (при перезарядке оружия), а действует постоянно. Понижение опции с значения 600 по-умолчанию увеличит размытость картинки.
r2_dof_focus [-10000.000 - 10000.000] Чем ниже значение этой величины (по дефолту 1.4), тем меньшая часть вашего поля зрения будет «в фокусе». Это будет особенно заметно при изменении значений r2_dof_far и r2_dof_near.
r2_dof_kernel [0.000 - 10.000] Эта опция регулирует общий уровень DoF. При установке 0, DoF не будет заметен вообще, а более высокие числа повышают его уровень.
r2_dof_near [-10000.000 - 10000.000] Уровень размытия приближенных к игроку предметов (например, ваша пушка). По умолчанию значение -1.25.
r2_dof_sky [-10000.000 - 10000.000] Уровень DoF применительно к небу. По умолчанию 30, и чем выше оно, тем более размытое небо.
r2_gi [on,off] Вкл/выкл более реалистичный метод освещения «Global Illumination», при котором свет может отражаться с поверхностей и освещать другие поверхности. Включение этой опции сильно бьёт по производительности. Опция не работает в двух режимах «Улучшенное полное динамическое освещение».
r2_gi_clip [0.000 - 0.100] Настройка расстояния действия Global Illumination.
r2_gi_depth [1 - 5] Настройка глубины теней.
r2_gi_photons [8 - 256] Опция регулирует уровень Global Illumination. Значения должны быть кратны 8.
r2_gi_refl [0.001 - 0.990] Регулирует отражающий эффект поверхностей.
r2_gloss_factor [0.000 - 10.000] Чем больше значение этого параметра, сильнее блестят глянцевые поверхности.
r2_ls_bloom_fast [on,off] Эта опция включает усиленную форму Bloom’a, но не заменяет HDR Bloom’ом. При включении картинка будет слишком яркой и смазанной, на ФПС почти не влияет. Вам не нужно включать эту опцию, чтобы использовать другие параметры r2_ls_bloom_*.
r2_ls_bloom_kernel_b [0.010 - 1.000] Управляет уровнем размытия Bloom’a, чем больше величина, тем сильнее засветка от источников света.
r2_ls_bloom_threshold [0.000 - 1.000] Регулирует яркость Bloom’a, чем больше значение, тем менее яркость Bloom’a, использующегося вместе с HDR. В результате, при значении 1, картинка будет как на DX8. Можете попробовать значение 0.350, чтобы блум был более красивым.
r2_ls_depth_bias [-0.500 - 0.500] Регулятор дальности вида источников света. Низкие значения увеличивают глубину и границу источника, повышение параметра может практически полностью удалить источники света. Оптимально значение по умолчанию.
r2_ls_depth_scale [0.500 - 1.500] Аналогичная предыдущей установка.
r2_ls_squality [0.500 - 1.000] Настройка качества теней.
r2_mblur [0.000 - 1.000] Регулирует смазывание при движении. Отлично смотрится со значением 0.1, причём это не влияет на ФПС. Чтобы активировать это, недостаточно изменить параметр в конфиг-файле, нужно запустить игру с параметром –mblur. Открываете свойства ярлыка игры, и в пути к запускающему экзешнику дописываете –mblur через пробел. Получится примерно так: «D/Supergames/STALKER/XR_3DA.exe» –mblur. Опция не работает в двух режимах «Улучшенное полное динамическое освещение».
r2_steep_parallax [on,off] Вкл./выкл. Parallax Mapping
r2_parallax_h [0.000 - 0.500] Эта опция должна управлять Parallax Mapping’ом, но никаких визуальных изменений не наблюдается.
r2_slight_fade [0.020 - 2.000] Настройка дистанции освещения.
r2_ssa_lod_a [16.000 - 96.000] Регулирует Уровень Детализации (LOD) для мира игры, чем выше величина, тем больше детализация и видимость объектов на расстоянии, но за счет легкого падения FPS.
r2_ssa_lod_b [32.000 - 64.000] Опция подобна предыдущей, но управляет детализацией объектов.
r2_sun [on,off] Вкл/выкл Солнце как источник света. Если выкл, деревья и дома не будут отбрасывать тени. Если опция включена, можно поиграться с параметрами r2_sun_depth_*
r2_sun_depth_far_bias [-0.500 - 0.500] r2_sun_depth_far_scale [0.500 - 1.500] r2_sun_depth_near_bias [-0.500 - 0.500] r2_sun_depth_near_scale [0.500 - 1.500] Эти параметры регулируют r2_sun, если оно включено. Это управление уровнем детализации теней и границей солнечного света и теневых областей. Оптимальны значения по умолчанию.
r2_sun_near [1.000 - 50.000] Контролирует качество солнечного света на близких к игроку поверхностях.
r2_sun_far [51.000 - 180.000] Контролирует качество солнечного света на далёких от игрока поверхностях.
r2_sun_details [on,off] Тени травы
r2_sun_lumscale [-1.000 - 3.000] Определяет яркость Солнца, с величинами ниже нуля выключает Солнце :).
r2_sun_lumscale_amb [0.000 - 3.000] Регулирует яркость предметов, которые освещены Солнцем.
r2_sun_lumscale_hemi [0.000 - 3.000] Регулирует общую яркость всех предметов.
r2_tf_mipbias [-0.500 - 0.500] Определяет, насколько чёткими будут текстуры на расстоянии. При уменьшении значения текстуры будут более чёткие, но за это придется платить незначительным падением ФПС. Повышение параметра сделает текстуры размытыми, но может чуть-чуть поднять ФПС. Не работает в DX10-режиме.
r2_tonemap [on,off] Вкл/выкл Tone Mapping. Включение сделает HDR более качественным без падения производительности. Следующие опции r2_tonemap_* позволяют его настраивать.
r2_tonemap_adaptation [0.010 - 10.000] Опция указывает время адаптации зрения к изменению уровня освещения.
r2_tonemap_lowlum [0.000 - 1.000] Эта установка регулирует Tone Mapping’а в темных областях. Чем выше эта установка, тем темнее HDR.
r2_tonemap_middlegray [0.000 - 2.000] Эта установка имеет наиболее сильное влияние на HDR, и если её поднять, эффект HDR будет более богатый. Например, попробуйте величину 1.2, чтобы HDR в С.Т.А.Л.К.Е.Р.е выглядел, как в Oblivion’е.
r2_exp_donttest_shad [on,off] Экспериментальная опция, включение непротестированных шейдеров. Скорее всего, приведёт к снижению производительности или артефактам.
r2_soft_particles [on,off] Вкл./выкл. мягкие частицы.
r2_soft_water [on,off] Вкл./выкл. мягкую воду.
r2_ssao st_opt_high [off,high] Настройка ssao.
r2_ssao_blur [on,off] Настройка блюра.
r2_sun_quality st_opt_high [low,high] Качество солнца.
r2_sun_shafts st_opt_high [off,high] Солнечные лучи, сильно влияют на ФПС. Поэтому их можно выключить, ФПС хорошо поднимется, а качество упадёт несильно.
Параметры r3_* (для режима DirectX 10)
r3_dynamic_wet_surfaces_far [30.000 - 100.000] Эта фича контролирует расстояние, на котором видны мокрые поверхности. Значение по умолчанию 30, чем оно выше, тем дальше видны мокрые поверхности.
r3_dynamic_wet_surfaces_near [10.000 - 70.000] Эта фича контролирует расстояние, на котором видны мокрые поверхности рядом с игроком. Значение по умолчанию 10, чем оно выше, тем менее детализированы близкие к игроку мокрые поверхности.
r3_dynamic_wet_surfaces_sm_res [64 - 2048] Настройка разрешения карт мокрых поверхностей. Изначально стоит 256, если его повысить, качество этих поверхностей возрастёт, но FPS уменьшится.
r3_gbuffer_opt [on,off] Вкл./выкл. специальную оптимизацию рендеринга под DX10. Включение может поднять FPS, но вызвать некоторые артефакты, а может и не вызвать :)
r3_msaa [st_opt_off,2x,4x,8x] Это управление сглаживанием в DX10-режиме. Для сохранения изменений необходим перезапуск игры.
Параметры для всех режимов
r__supersample [1 - 8] Настройка сглаживания. Чтобы работало в DX10, вместе с этой опцией нужно включить r3_msa.
r__tf_aniso [1 - 16] Настройка анизотропной фильтрации.
r__dtex_range [5.000 - 175.000] Настройка расстояния, на котором видны высокодетализированные текстуры. Чем выше значение, тем дальше их видно.
r__wallmark_ttl [1.000 - 300.000] Время жизни таких эффектов, как следы от пуль, кровь и т.п. Выше значение – дольше они будут оставаться.
r__geometry_lod [0.1 - 1.2] Уровень детализации объектов. Большие значения соответствуют лучшей детализации.
r__detail_density [0.2 - 0.6] Уровень детализации травы. Большие значения соответствуют лучшей детализации.
rs_stats [on,off] Когда включено, на экране будет показана всякая техническая статистика, в т.ч. число кадров в секунду – FPS.
snd_acceleration [on,off] Вкл/выкл аппаратное ускорение звука.
snd_cache_size [4 - 32] Настраивает, сколько оперативной памяти используется для кэширования звуков, чтобы предотвратить заедания. При этом используется в два раза больше памяти, то есть, если вы поставите 16, будет использовано 32 МБ. Желательно ставить максимальное значение (32), чтобы предотвратить подгрузки звука во время игры.
snd_targets [4 - 32] Опция определяет число одновременных источников звука, повышение отрицательно влияет на производительность при слабой (читай-встроенной) звуковой карте. На слабых звуковухах лучше ограничиться значением 24.
vid_mode [WxH] Настройка разрешения экрана, здесь можно выставить разрешение, которого нет в меню игры.
ai_use_torch_dynamic_lights [on,off] Вкл\выкл тени от объектов, освещаемых фонарями.
g_always_run [on,off] По умолчанию, когда вы жмёте Вперёд, игрок бежит, если эту опцию выключить, он будет идти шагом.
texture_lod [0 - 6] Уровень детализации удалённых текстур. Чем ниже значение, тем лучше текстуры.
rs_v_sync [on,off] Вертикальная синхронизация. Рекомендую отключить это.
rs_vis_distance [0.4 - 1.5] Настройка дальности видимости.
Параметры командной строки.
Существуют дополнительные команды, которые выполняются через командную строку запуска игры. Правый клик по ярлыку, выбираете Свойства, затем в строке пути к объекту дописываете команды, разделённые пробелом. Например, так: «C:\Program Files\STALKER\bin\XR_3DA.exe» -noprefetch -noshadows.
-center_screen – Центрирует окно игры при оконном режиме.
-dsound – Использует звук DirectSound вместо OpenAL.
-gpu_nopure – Переключает полное аппаратное ускорение видеокарты на неполное. На новых картах это не прибавит производительности.
-gpu_ref – Переключает режим видеокарты на режим по-умолчанию
-gpu_sw – Полностью отключает аппаратное ускорение видеокарты. Не рекомендуется.
-load [ваш сэйв] – Загрузка определённого сэйва сразу после запуска игры.
-ltx [filename.ltx] – Загружает и выполняет определенный файл «filename.ltx» конфигурации. Например, вы можете создать свой конфиг-файл вместо User.ltx, и запускать его этой командой.
-nodistort – Удаляет эффекты искажения: воздух от костра, аномалии. Это может помочь обладателям старых видеокарт.
-nolog – Отключает лог
-noprefetch – Отключает prefetch. Игра станет грузиться быстрее, но в игре могут быть резкие падения ФПС.
-noshadows – Отключает тени от динамических источников света (Солнце не в счёт), повышается ФПС.
-nosound – Отключает весь звук в игре
-overlay [путь к папке] – Указание пути к другой папке с сэивами/конфигами/профилями.
-psp – Включает вид от третьего лица.
-smap1536, -smap2048, -smap2560, -smap3072, -smap4096 – Эти команды устанавливают разрешение карт теней. Чем оно выше, тем красивее тени и ниже ФПС. Можно использовать только одну из этих команд!
-ss_tga – Скриншоты будут делаться в формате .TGA с более высоким качеством.
Напоследок. Рекомендую установить мод Float32 Shader Mod, который немного повышает качество шейдеров и вместе с тем увеличивает скорость их исполнения.
Assassin's Creed · BioShock · Crysis · Fallout 3 · Gothic 3 · Mass Effect · Neverwinter Nights 2 · Oblivion · S.T.A.L.K.E.R.: CS · S.T.A.L.K.E.R.: SoC · Two Worlds · Unreal Tournament 3 ROCK AND METAL.ruCopyleft «центаз.народ.ру» 2006-2009. Хостинг от uCoz. Копирование материалов с данного сайта запрещено вашей совестью! |
centaz.narod.ru