func_occluder
Описание
Объект func_occluder используется для динамического контроля видимости Prop-объектов на карте, и используется для оптимизации карт, скрывая объекты, которые находятся за ним.
Особенности использования
- Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах. Удаление объекта во время игры лишае возможности контролировать объект.
- Объект должен быть установлен там, где будет использоваться.
- На карте может быть установлено множество этих объектов
- Объект НЕ делит пространство карты на листья (Leaves) для BSP-дерева.
- При использовании этого объекта могут активно расходоваться ресурсы CPU компьютеров игроков, потому что постоянно проверяется видимость Prop-объектов сквозь этот объект. Неправильное применение этого объекта может существенно снизить быстродействие карты. Смотрите пункт "Как работает этот объект".
- Объект не задерживает пуль, через него можно свободно проходить и он не уменьшает область видимости для ботов. Он используется только для динамического контроля видимости Prop-объектов на карте.
- Объект должен быть покрыт материалом tools/toolsoccluder.
- Объект не должен иметь на себе DISPLACEMENT-поверхностей.
- Объект может иметь любую форму и может состоять из любого количества брашей. Но чем сложнее конструкция этого объекта, тем сложнее расчёты во время игры.
- Объект скрывает Prop-объекты, но не скрывает Lightmap-тени и динамические тени.
- Для настройки объектов func_occluder используется объект worldspawn.
Ошибки
Не обнаружены.
Как работает этот объект
Объект func_occluder работает по следующему принципу:
- вокруг объекта func_occluder, в том направлении куда смотрит игрок, ищутся абсолютно все "prop_" объекты и отбираются только те, размер которых подходит для того, чтобы быть скрытыми;
- проверяется: можно ли видеть "Bounding Box" каждого отобранного объекта через объект func_occluder; каждый "prop_" объект имеет вокруг себя так называемый "Bounding Box" – это габаритный параллелепипед вокруг всех точек модели Prop-объектов;
- видимые объекты будут рисоваться, а невидимые будут скрыты.
Очень важно осознавать как работает объект func_occluder и в каких случаях его лучше всего применять. Неправильное или неуместное применение объекта func_occluder может повлечь за собой снижение производительности карты.
Объекты func_occluder уместно размещать внутри стен, за которыми игроки точно не смогут ничего увидеть.
Эффективность использования объекта func_occluder может быть достигнута только в том случае, когда скрываемые объекты используют много видеопамяти на свои текстуры и/или состоят из большого количества полигонов. Таким образом при помощи объекта func_occluder можно уменьшить нагрузку на видеокарту, ценой увеличения нагрузки на центральный процессор. Используйте объект func_occluder только тогда, когда это действительно необходимо.
Движок Source не даёт гарантии, что будет использоваться абсолютно любой объект func_occluder, находящийся в поле зрения игрока. В целях сокращения нагрузки на центральный процессор, объекты func_occluder будут использоваться в зависимости от их размеров и удалённости от игрока.
Заметки
Модели игроков тоже являются Prop-объектами, поэтому тоже будут скрываться объектом func_occluder, однако оружие, находящееся в руках игроков, не скрывается. Эту особенности можно применять против читерства на вашей карте, делая жизнь читерам ещё сложнее.
Для отладки объектов func_occluder предусмотрены следующие консольные команды:
- r_occlusion - (0 или 1, по умолчанию 1) включить/выключить использование объектов func_occluder;
- r_visocclusion (0 или 1, по умолчанию 0) скрыть/показать объекты func_occluder, а так же того, что они делают; красным цветом будут отмечены все prop-объекты, которые не скрыты, а зелёным – те, которые скрыты;
- r_occlusionspew (0 или 1, по умолчанию 0) включить/выключить отображение эффективности использования объектов func_occluder; в консоли будет выводиться отношение количества скрытых Prop-объектов, к общему количеству обрабатываемых Prop-объектов;
- r_occludermincount (по умолчанию 0) минимальное количество объектов func_occluder, которые будут обрабатываться одновременно; 0 – количество не ограничено, но лимитируется размерами объектов func_occluder, которые видит игрок; (см. консольную команду "r_occluderminarea");
- r_occludeemaxarea (от 0.0 до 100.0, по умолчанию 0) используется для определения максимального количества пикселей на экране, которое могут занимать Prop-объекты, для того чтобы обрабатываться (скрываться) объектами func_occluder; например: размер экрана 1024x768, поэтому на экране всего 1024 * 768 = 786432 пикселей; если "r_occludeemaxarea = 50", то Prop-объект будет обрабатываться только в том случае, если он будет занимать на экране меньше чем 786432 / 2 = 393216 пикселей, в противном случае такой Prop-объект не будет обрабатываться (скрываться); если "r_occludeemaxarea = 100", то любой Prop-объект сможет быть скрыт объектами func_occluder; если "r_occludeemaxarea = 0", то используется значение по умолчанию; в редакторе Hammer это значение настраивается в свойствах объекта worldspawn: Main menu > Map > Map Properties... > свойство "Max Occluder Area";
- r_occluderminarea (по умолчанию 0) эта команда используется совершенно по-другому, нежели команда "r_occludeemaxarea"; используется для определения минимального размера, который должны иметь объекты func_occluder на экране игрока, для того чтобы использоваться игрой для скрывания Prop-объектов; настраивая значение для этой команды, можно регулировать расстояние от игрока, на котором будут работать объекты func_occluder; в редакторе Hammer это значение настраивается в свойствах объекта worldspawn: Main menu > Map > Map Properties... > свойство "Min Occluder Area".
Параметры
Initial State – состояние объекта (Неактивен/Активен).
- Initial State – состояние объекта в начале каждого раунда (Включен/Выключен);
Inputs
- Activate – активизировать объект (заставить его работать);
- Deactivate – деактивировать объект;
- Toggle – переключить состояние объекта (Включен/Выключен);
Карта
csssdk_func_occluder.vmf
Используются объекты
- func_occluder
- func_button
- func_detail
- prop_static
- prop_physics
- prop_door_rotating
- prop_ragdoll
- logic_auto
- point_servercommand
Описание карты
На карте расставлено несколько объектов prop_static, раскидано несколько объектов prop_physics и положен один prop_ragdoll. Между точкой появления игрока и большинством из этих объектов находится пульт управления объектом func_occluder и сам невидимый объект func_occluder, вставленный в большую раму посреди карты. На пульте три кнопки. Первая кнопка включает и выключает объект func_occluder. Вторая кнопка включает и выключает режим отображения работы объекта func_occluder. Третья кнопка включает и выключает суровые настройки объекта func_occluder.
Включите объект func_occluder, если он ещё не включен, и нажмите вторую кнопку на пульте. Включится режим отображения работы объекта func_occluder. Объект func_occluder будет рисоваться белым цветом, зелёным цветом - "Bounding Box" у скрытых объектов, а красным – у отображаемых. Не нажимая на третью кнопку побегайте по карте и посмотрите как работает объект func_occluder. Обязательно постреляйте из своего оружия и посмотрите, что использованные гильзы пуль тоже скрываются объектом func_occluder. Теперь нажмите на третью кнопку пульта и сравните разницу с тем что будет если её отжать. При нажатии на третью кнопку пульта выполняется консольная команда "r_occludeemaxarea", которая используется для отладки объектов func_occluder. В своих картах ни в коем случае не используйте эту консольную команду! В этой карте-примере она используется в учебных целях и только для того, чтобы показать возможности использования объекта func_occluder. Так вот, если нажать на третью кнопку пульта, то радиус действия объекта func_occluder увеличится и начнут скрываться даже довольно крупные объекты – такие как деревья. Отойдите от пульта немного назад и опустите "зрение" немного вниз. Можете заметить, что даже когда дерево находится в поле зрения игрока, но игрок не может его видеть – оно всё равно скрывается.
Функции "r_occludeemaxarea" и "r_occluderminarea" нельзя использовать на ваших картах, но вы всегда можете настроить эти параметры через объект worldspawn, указав в свойствах "Min Occluder Area" и "Max Occluder Area" нужные вам значения. Для того чтобы найти объект worldspawn нужно в редакторе Hammer открыть меню: Main menu > Map > Map Properties...
Если Вам понравилась эта страница, Вы можете разместить где-нибудь ссылку на неё: