1. Форумом пользоваться...

хороший вопрос

, попробуй понажимать все кнопки подряд

, только с минусиками не балуй
2. выложи карты или скинь мне на мыло!
2. 1. если самому интересно... Слухай сюда:
Что такое R_SPEEDS?R_SPEEDS — это специальный параметр, который показывает количество полигонов, видимых игроком на карте. Чем больше полигонов одновременно отображаются, тем меньше FPS (количество кадров в секунду). Если полигонов слишком много, то карта начинает, как говорится, «тормозить». Итак, FPS зависит от количества полигонов, а значит от показаний параметра R_SPEEDS. Чем больше R_SPEEDS (чем больше полигонов), тем меньше FPS и наоборот.
R_SPEEDS параметр динамичный, он меняется в зависимости от положения игрока на карте и от направления его взгляда. Действительно, если Вы будете смотреть в стену или угол, то количество кадров в секунду скорее всего будет максимальным 99-100. Если же Вы выйдете на открытое пространство, то FPS будет уже поменьше, а R_SPEEDS соответственно побольше.
________________________________________________________________
Итак, как же нам посмотреть R_SPEEDS на своей карте?Проверьте, что в ярлыке для CS у Вас прописан параметр -console, который позволит нам открыть консоль в игре. Т.е. строка запуска игры выглядит примерно так: C:\Games\HL\hl.exe -game cstrike -console.
Создадим сервер на своей карте. После загрузки уровня, выдвинем консоль и напишем:
developer 1
r_speeds 1
После этого в левом углу экрана и в консоли побегут циферки, которые будут изменяться при перемещении игрока по карте или при изменении направления взгляда.
Как Вы можете видеть, цифры разбиты на 4 колонки. Нас интересуют колонки со словами wpoly и epoly (это 2 правые колонки).
310 wpoly — (от англ. world polygons) количество полигонов, которые создают браши: земля, стены, крыши, скалы и т.п. Это основной показатель R_SPEEDS. Чем больше wpoly, тем больше тормозит карта.
988 epoly — (от англ. entity polygons) количество полигонов, которые создают модели (руки с оружием, игроки, другие модели). Когда Вы видите на экране 4-5 игроков, то epoly заметно выше, нежели если Вы видите 1 игрока.
Если набрать в консоли команду r_drawviewmodel 0, то это уберет с экрана изображение рук и оружия и тем самым, снизит показатель epoly до нуля (если Вы не видите других игроков). На слабых компьютерах это может значительно повысить FPS (примечание: данная консольная команда была актуальна для CS версии 1.5 и более ранних, в CS 1.6 убрать оружие с экрана нельзя из-за щита).
На двух картинках ниже наглядно продемонстрирована зависимость R_SPEEDS (и FPS) от размера видимого пространства.
_________________________________________________________________
Каким должен быть максимальный R_SPEEDS?Споров на тему максимального R_SPEEDS много. Одни говорят, что параметр wpoly не должен быть больше 600, другие допускают 1000 wpoly, приводя в качестве аргумента тот, факт, что компьютеры на данный момент довольно мощные.
Мы придерживаемся следующего мнения:
1) В местах стычек команд, там, где постоянно происходят перестрелки, количество wpoly должно быть минимально — до 600 (в идеале: 400-450).
2) На базах команд, в тех местах, где игроки появляются редко или встречаются 1 на 1, а не 5 на 5, количество wpoly может быть больше — до 750.
После того, как Вы откомпилировали карту, необходимо побегать по всем ее местам и посмотреть R_SPEEDS. Если Вы заметите высокие значения wpoly (больше 750), то это место карты необходимо оптимизировать (см. ниже) или полностью переделать.
И еще один совет, побегайте по стандартным CS картам с включенным параметром R_SPEEDS. Вы увидите, что количество wpoly на них довольно низкое, что позволяет комфортно играть даже на слабых машинах. Итак вывод: чем меньше R_SPEEDS на Вашей карте, тем лучше.
Epoly не такой важный показатель как wpoly, однако слишком высокие значения (больше 4000-5000 epoly) этого параметра также вызывают существенное понижение FPS. В принципе, на показатель epoly внимания обращать не следует. При тестировании карты необходимо учитывать лишь значения wpoly.
Причины большого R_SPEEDSИтак, мы уже знаем, что количество кадров в секунду зависит от количества полигонов, которое в своем максимуме должно составлять 500-700 wpoly. А теперь давайте посмотрим от чего же зависит количество полигонов и вообще из чего получаются полигоны.
Разбиение на полигоны при соприкосновении брашей
Игровой движок Half-Life устроен таким образом, что при соприкосновении малого браша с более крупным (например, ящик стоит на земле) происходит разбиение земли на более мелкие полигоны. Вот как это происходит (белые полосы обозначают границы полигонов).
Абсолютно неважно какой энтити-объект Вы используете (func_wall, func_breakable, func_train, func_illusionary, func_button, func_vehicle или любой другой энтити-объект) — при соприкосновении с брашами разбиения не происходит!
Еще один пример: светильник, сделанный из нескольких брашей, разбивает стену.
Но если мы превратим светильник в func_illusionary, разбиения уже не будет и несколько полигонов мы тем самым сбережем.
Кстати, очень часто в узких местах на картах (корридоры, туннели) мелкие объекты (светильники, картины ...) превращают func_illusionary. Это помогает, во-первых, сберечь несколько полигонов, а? во-вторых, не мешает игроку передвигаться (игрок может спокойно проходить сквозь func_illusionary).
Из всего этого, конечно же, не следует, что Вы должны все ящики на карте превращать в func_wall. В большенстве случаев мапперы оставляют их брашами. Но бывают моменты, когда просто необходимо превратить тот или иной браш в энтити-объект. Вот один из таких примеров.
ВАЖНО: никогда не превращайте в энтити-объекты стены (или не дай Бог пол!), которые составляют основу Вашей карты. Дело в том, что игровой движок «видит» сквозь энтити-объекты и рисует все, что находится за ними. Например, если за какой-то стеной находится полкарты и Вы превратите ее в func_wall, то в этом месте будут большие «тормоза» из-за высокого R_SPEEDS._________________________________________________________________Разбиение на полигоны текстурамиКак Вы знаете, текстуры имеют определенный размер, например, 128х128 пикселей. Давайте представим, что у нас на карте есть стена с размерами, бОльшими, чем размер текстуры, например, 256х256 юнитов. В этом случае хоть браш у нас и один, но полигонов будет больше.
Например, если стена имеет размеры 256х256, а текстура 128х128, то данный браш будет разбит на 4 полигона, т.к. площадь текстуры ровно в 4 раза меньше площади браша.
В редакторе Hammer у нас есть возможность менять масштаб текстуры. Делается это (напомним

) на панели «Face Properties» в параметре Scale.
_______________________________________________________________Большие открытые пространства
Ну, и последней причиной большого R_SPEEDS, которая, на самом деле, вытекает из выше перечисленных двух, является открытость карты и чрезмерная насыщеность деталями.
Игровой движок Half-Life не расчитан на большие пространства (необязательно, что это открытое пространство (с небом). Большой пребольшой ангар с массой деталей тоже будет тормозить). Помните для какой игры Вы создаете карты, это Вам не Unreal

Халф любит закрытые помещения, всякого рода коридорчики и очень расстраивается, когда Вы его заставляете рисовать высоченные горы или 50 многоэтажных зданий на одной улице. Если, созданная Вами карта тормозит, и R_SPEEDS приближается к нескольким тысячам wpoly — нужно координальным образом (хирургическими методами

изменять карту.
_________________________________________________________________
Методы снижения R_SPEEDSНесколько основных методов снижения R_SPEEDS мы только что разобрали в пункте 4. Существуют и другие хитрости, которых помогут снизить R_SPEEDS на Вашей карте.
Превращение мелких брашей в энтити (рассмотрено)
Увеличение масштаба текстур (рассмотрено) Закрытие обзора игрокам
Метод зазора в 1 юнит
Применение SKY-текстур
«Разделение» карты на отдельные пространства _________________________________________________________________
Закрытие обзора игрокамСобственно, это даже не метод как таковой. Просто карту необходимо строить таким образом, чтобы не было больших открытых пространств.
Итак, создавая открытое пространство, не выходите за рамки разумного. Все пути и подходы к такому «нагруженному» месту должны быть или чем-то отгорожены (как на de_cbble огромными толстыми воротами), или просто они должны быть изогнутыми:
______|---|
|---______|
|---|________
|---------------|
|---------------|
|---------------|
|---------------|
Примитивно но понятно.
В обоих случаях обзор игроку закрывается, он видит меньше полигонов, следовательно карта меньше тормозит. Естественно, мы привели лишь несколько вариантов, например, можно еще «поиграть» с рельефом (сделать подходы наклонными, как на базу контров на de_cbble), тем более, что «многоэтажные» карты очень нравятся игрокам (de_aztec, de_dust2).
__________________________________________________________________
Метод зазора в 1 юнитЭто очень распространенный метод, суть которого заключается в поднятии браша на 1 юнит (можно и больше) над поверхностью земли.
Действительно, если подумать, то в таком случае ящик, висящий над землей на расстоянии всего в 1 юнит, не касается ее поверхности. А если нет соприкосновения, то нет и разбиения земли на полигоны. К тому же обычный игрок (не маппер

не заметит, что ящик висит над землей, ведь он подвешен совсем на чуть-чуть. Естественно, в таком случае ящик не нужно превращать в энтити-объект.
Естетсвенно, не стоит впадать в крайности и подвешивать абсолютно все ящики и пр. объекты. Делайте это в случае необходимости, при большом R_SPEEDS.
__________________________________________________________________
Применение SKY-текстур
Вы уже знаете, что SKY-текстуры применяются для создания неба. Но они обладают еще одним очень хорошим свойством: стороны объектов, окрашенные текстурой SKY, не создают полигонов! То есть, если мы покрасим какие-нибудь объекты SKY-текстурой, то они не создадут полигонов, правда, при этом будут абсолютно прозрачными (через них будет видно небо

.
SKY-текстуры нужно наносить на те поверхности, которые игрок в игре увидеть не может. Что это за поверхности? Крыши домов, верхние грани заборов, стен — в общем все то, что игрок в нормальных условиях не видит.
Теперь у нас на карте полигонов станет поменьше, плюс меньше времени уйдет на компиляцию, т.к. SKY-поверхности не нуждаются в просчете освещения (они попросту игнорируются).
Все мы замечали, играя например на de_dust, что, если в режиме спектатора подняться чуть выше стен, то потолки становятся прозрачными
Это как раз и является доказательством того, что на них была нанесена текстура SKY с целью уменьшения количества полигонов.
Примечание: если Вы по каким-либо причинам создаете небо в виде большой коробки вокруг карты, то следует закрасить SKY-текстурой все внешние стороны карты, а также ее дно В этом случае мы резко уменьшаем время компиляции (т.к. теперь внешние стороны карты (и ее дно), которые игрок все-равно никогда не увидит, не просчитываются на освещение).
Ну, а если Вы строите правильное небо (куполом над картой), то делать этого нет необходимости. А вот крыши в любом случае необходимо закрашивать, т.к. они в 100% случаев подвержены освещению.
__________________________________________________________________
Разделение карты на отдельные пространстваТеперь давайте рассмотрим последний метод (в данной статье) — метод разделения карты на отдельные пространства.
В принципе данный метод по сути является методом создания правильного неба, когда SKY-браши строятся по периметру карты, как бы повторяя ее внешние и внутренние стены.
Пришло время познакомить Вас с еще одной полезной для тестирования карты консольной командой: r_draworder 1.
Эта команда работает только в режиме Software и при условии, что карту Вы запускаете из консоли, а не через игровое меню.
При использовании этой команды Вы можете видеть, как работает игровой движок, какие области карты он отрисовывает.
Здесь виден весь центральный проход (несмотря на ворота) и часть базы «В». Все остальное также отбрасывается.
А теперь давайте представим, что было бы, если бы наша карта представляла из себя эдакую коробку, в которой не было бы никаких внутренних стен и проходов?
В этом случае движок отрисовывал бы всю карту, что, естественно, заметно повысило бы ее «тормознутость».
Вывод из всего этого таков: карту необходимо разбивать на области. Области должны соединяться какими-то проходами или находиться на разных высотах (одна область ниже, другая выше).
Но бывают ситуации, когда игровой движок, не смотря на наличие перед взором игрока высокой стены, все же рисует пространства, находящиеся за этой стеной.
Какой высоты должна быть стена сказать сложно. Иногда кажется, что ты сделал действительно высокую стену, скажем 320 юнитов, а движок все-равно рисует то, что находится за ней. А если Вы не хотите делать все стены на Вашей карте высотой по 400 юнитов? Что делать?
Исправляется это созданием над стеной SKY-браша. Этот SKY-браш повторяет форму стенки и занимает все пространство от ее верхней части до неба (верхнего SKY-браша).
Так необходимо поступить со всей картой — разделить ее SKY-брашами на отдельные области. Кстати, при создании общего освещения можно сделать лишь 1 объект light_environment, поместить его в любую из областей, и все области будут нормально освещены, т.е. делать несколько «солнышек» нет необходимости (это раньше приходилось освещать каждую область отдельно).
____________________________________________________________________
Консольные командыИ в заключении статьи напомним консольные команды, которые мы использовали для тестирования карты.
developer 1 — отображает на экране различные служебные сообщения;
r_speeds 1 — выводит на экран показатели wpoly и epoly;
gl_wireframe 1 / 2 — показывает границы полигонов (OpenGL);
r_drawflat 1 — заменяет текстурные поверхности на цветные (Software);
r_draworder 1 — показывает какие области карты отображает игровой движок (Software)
Последние 3 команды будут работать только в случае запуска карты из консоли (как одиночного уровня Half-Life).
На этом все. Не позволяйте R_SPEEDS прыгать слишком высоко и принимайте вовремя меры.P.S. Думаю хватит, а то и так слииишком Бо-о-о-о-ольшая статья получилась