Итак... оптимизация нужна я думаю для тех, у кого работает хреново: Основными проблемами пользователей в онлайн-играх типа DoDS являются, разумеется, отсутствие достаточно мощного железа и отсутствие же стабильной высокоскоростной связи (как правило решение этих вопросов также упирается в отсутствие денег smile вообще dod:s это: Этап первый - моделирование. Здесь задействованы центральный процессор и оперативная память, изредка используются расчетные возможности видеоускорителя. Все объекты, будь то элементы местности, предметы или фигуры игроков, должны быть привязаны к системе координат и сориентированы в игровом пространстве, проверяется физика (столкновения игроков с предметами и между собой, влияние ветра на подвижные объекты вроде висящих проводов и тд). Все расчеты ведутся в векторном виде (каждый объект как набор ящиков - boxes), без учета перекрытия объектов. То есть если вы стоите и тупо пялитесь в стенку, за которой идет настоящая баталия, процессор все равно просчитывает все, что находится в "поле зрения" (и даже немного больше) как бы просвечивая рентгеном, почему - увидим дальше. Второй этап - просчет непосредственной видимости объектов (vertex shading). Все векторные объекты обретают объем с помощью треугольников, образующих поверхность - их называют вершинами (от английского термина vertex - угол, вершина). При этом учитывается, видны ли вершины пользователю или перекрываются самим объектом. То есть вершины, расположенные сзади не прорисовываются, вершины, перекрытые частично, разбиваются на более мелкие и прорисовывается только часть из них. Этим занимается как правило видеокарта, если она этого "не умеет", то задача ложится на процессор. Третий этап - наложение текстур и просчет освещения (rendering, pixel shading). Собственно здесь пиксели изображения и приобретают свой цвет. При этом происходит как бы "натягивание" материи текстур (часто - одновременно наложение нескольких) на каркасы объектов. Кроме того, на данном этапе учитывается глобальное и локальное освещение, влияющее в итоге на яркость каждого пикселя. Важным моментом является предварительный просчет "глубины" - пиксели, находящиеся ближе к зрителю "перекроют" пиксели в глубине. Возвращаясь к нашему примеру со стеной - здесь у нас будет большая экономия времени расчета, поскольку прорисовка "невидимых" пикселей не производится, но при этом мы видим к примеру отсветы вспышек выстрелов и дым пролетающих гранат базуки. "Прорисовывание" пока что происходит только в особой области памяти - фреймовом буфере. Наиболее сложный этап, практически всегда необходимо использование специфических свойств видеоускорителя. Некоторые операции может выполнять центральный процессор, но либо очень упрощенно, либо очень медленно. Четвертый этап - наложение фильтров и эффектов (pixel shading). Здесь происходит пост-обработка изображения, на уже целиком сформированную картинку накладываются различные эффекты освещения (гамма-коррекция, слепящие блики) или эффекты связанные с геймплеем (размытие при контузии, эффект старого кино после смерти). Используется, аналогично предыдущему этапу, видеоускоритель либо - в редких случаях - процессор. переходим к оптимизации конфига. Следует твердо уяснить, что волшебных настроек не бывает, повышение комфортности игры непременно ведет к понижению других характеристик, например качества звука или изображения. Поэтом большинство "безопасных" настроек, дает также и минимальный эффект. В какой-то мере "волшебными" можно считать следующие команды-переменные: r_mmx "1" r_sse "1" r_sse2 "1" r_3dnow "1" Они активизируют так называемые "мультимедийные" наборы команд центрального процессора и соответственно обеспечивают некоторое ускорение стандартных 3D-функций. Заметного на глаз прироста скорости ожидать правда не приходится (тем более что вполне возможно, что они уже были включены автоматически), но как и последующие команды, они как минимум не помешают. commentary "0" //commentary "1" "0" отключает показ сопроводительного комментария (на тех картах, где он есть). cl_dynamic_crosshair "0" //cl_dynamic_crosshair "1" "0" отключает динамически расширяющийся при стрельбе прицел, который все равно только сбивает с толку (можно также отключить и через меню). На этом с волшебством, пожалуй, покончено. Займемся прозой жизни.
DirectX
Каждый игрок, пусть он хоть какой "чайник" в компьютерных технологиях, хоть краем уха да слышал что вот мол бывают видеокарты с DirectX8, а бывают 9, а то и все 10. Чем больше, тем лучше... Лучше то оно лучше, но чем? Не будем вдаваться в историю трехмерных игр и видеокарт, при желании все можно найти в поисковиках, остановимся сразу на главном. DirectX - это набор стандартных функций, необходимых для просчета трехмерного изображения. С развитием техники, набор этих функций расширялся и соответственно выходили новые версии DirectX. Насколько тот или другой видеочип поддерживает "железное" исполнение этих функций как раз и определяется номером версии DirectX (кроме того существует альтернативный стандарт OpenGL, но он не получил такого широкого распространения и в последние годы практически не поддерживается производителями игр).
Короткий обзор версий DirectX и поддерживающих их видеокарт: DirectX6 - истинный динозавр, встречается едва ли. Видеокарты на Nvidia TNT2 и Matrox G400. DirectX7 - версия с минимумом необходимых DoDS функций. Типичные видеокарты - с чипами Nvidia GeForce 256, Nvidia GeForce 2, Nvidia GeForce 2/4MX, ATI Radeon 7000й серии. DirectX8 - основательно расширен набор функций для работы со светом (тени, отражения, блики). Видеокарты Nvidia GeForce3,GeForce4 Ti и ранние GeForce FX 5000й серии. DirectX8.1 - более стабильная чем предшествующая версия, добавлены некоторые функции динамических теней. Видеокарты на Nvidia GeForce FX 5700-5900 и серии ATI Radeon 8500, ATI Radeon 9000-9200. DirectX9 - наиболее продвинутая из стабильных версий, добавлены функции просчета сложных эффектов освещения, продвинутые алгоритмы текстурирования, в том числе и псевдообъемного, улучшена прорисовка воды. Видеокарты на Nvidia GeForce 6600-6800, GeForce 7000й серии, ATI RADEON 9500-9800, X300-X800. DirectX10/10.1 (не поддерживается графическим движком Source) - последняя версия, упор сделан на увеличение детализации и реалистичности анимированных изображений, доступна только для Windows Vista и видеокарт нового поколения: ATI Radeon HD2000й серии и выше, Nvidia GeForce 8000й серии и выше.
К чести разработчиков надо заметить, что они попытались оптимизировать параметры видео при установке игры - рекомендованные настройки графики, с учетом имеющегося оборудования и драйверов DirectX, будут помечены звездочкой (*). Однако же, если видеокарта поддерживает скажем только функции директ-икс 8, игра не будет автоматически отключать недоступные возможности, а возложит просчет недостающих эффектов на центральный процессор (так называемый программный уровень директ-икс). Как результат - подтормаживания в игре.
Если у вас видеокарта с директ-икс поколения 8 или даже 7, очень полезно задать в конфиге соответствующее ограничение: mat_dxlevel "81" //mat_dxlevel "80" //mat_dxlevel "70" Параметром, как можно догадаться, служит необходимая версия, умноженная на 10, по умолчанию -"90" (есть также версия "95" для самых последних вариантов DirectX9). Альтернативой может стать добавление соответствующей опции в строку запуска: <Диск>:\Program Files\Steam\Steam.exe -applaunch 300 -dxlevel 81 Еще один вариант - активировать поддержку OpenGL, в движке Source она есть но только как часть строки запуска: <Диск>:\Program Files\Steam\Steam.exe -applaunch 300 -gl Как правило именно эти настройки дают самый ощутимый прирост fps, зачатую возможна также комбинация обоих команд с положительным эффектом.
Для владельцев директ-икс 9 снижение версии как правило особого смысла не имеет. Оправдаться это может только в том случае, если видеокарта поддерживает DirectX9 только номинально, на бумаге, а в действительности с вычислениями расширенных функций лучше справляется достаточно быстрый процессор. В противном случае (поскольку драйвера DirectX в операционной системе как правило версии 9c) процессор будет перегружен, и конечный результат может оказаться прямо противоположным - появятся лаги. ОСВЕЩЕНИЕ И ТЕКСТУРЫ Эффекты HDR видны только на тех картах, где включена их поддержка, что может привести к проседанию fps на слабых машинах на картах от Valve и многих "турнирных" картах. Отключить HDR можно либо в меню, либо прописав в конфиге: mat_hdr_enabled "0" mat_hdr_level "0" или оставить только наиболее заметный эффект bloom: mat_hdr_enabled "1" mat_hdr_level "1" //mat_hdr_level "2"
Блум - это эффект очень яркого света, проявляющийся в виде свечения вокруг ярких поверхностей, после применения bloom фильтра такие поверхности не просто получают дополнительную яркость, свет от них (ореол) частично воздействует и на более темные области, соседствующие с яркими поверхностями в кадре. Этот эффект также присутствует и в режиме LDR, хотя и в гораздо меньшей степени. Его можно выключить командой: mat_bloom "0" //mat_bloom "1" Бампмэппинг (bumpmapping) - это техника симуляции неровностей (или моделирования микрорельефа, как больше нравится) на плоской поверхности без больших вычислительных затрат и изменения геометрии. Бликовая (specular) составляющая освещения проявляется в бликах отражения лучей света от поверхности. Используется как правило вместе с бампмэппингом. Эффект красивый, но в принципе без него можно обойтись. Поддерживается начиная с DirectX8, отключение как правило дает некоторую разгрузку ЦПУ.
Очень приличную нагрузку обеспечивает графической подсистеме расчет динамических теней. Часто отключение теней, отбрасываемых объектами и моделями приносит хорошие плоды. К тому же, отключение динамических теней не слишком сказывается на качестве картинки: r_shadows "0" r_shadowrendertotexture "0" //r_shadows "1" //r_shadowrendertotexture "1"
Несколько менее эффективно действует отключение динамического освещения (отсветы от объектов): r_dynamic "0" //r_dynamic "1" и отключение отсветов от выстрелов (но не самих вспышек): cl_muzzleflash_dlight_1st "0" cl_muzzleflash_dlight_3rd "0" muzzleflash_light "0" //cl_muzzleflash_dlight_1st "1" //cl_muzzleflash_dlight_3rd "1" //muzzleflash_light "1"
Команды работы с текстурами: mat_mipmaptextures "0" //mat_mipmaptextures "1" - отключает механизм компенсации качества текстур на удалении от поверхностей. mat_picmip "2" //mat_picmip "1" //mat_picmip "0" - понижение качества текстур, сильно ухудшающая картинку мера. Параметр "2" переключает качество отображения текстур на низкое (работает также через меню игры), "1" - на среднее, "0" - высшее. Низкое качество оправдывает себя как правило только на видеокартах с маленьким объемом памяти (128, или даже скорее 64 Мб). Для экономии видеопамяти лучше применять компрессию текстур - тогда они не так искажаются и при этом занимают меньший объем: mat_compressedtextures "1" //mat_compressedtextures "0"