HLFX.Ru Forum
Показать все 1 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Уроки VolatileRadiant (https://hlfx.ru/forum/forumdisplay.php?forumid=28)
-- Урок 8. Ареапорталы (https://hlfx.ru/forum/showthread.php?threadid=2558)


Отправлено XaeroX 21-01-2011 в 10:54:

Урок 8. Ареапорталы

Урок 8. Ареапорталы

На этом уроке мы поговорим об ареапорталах (area portals). Это название буквально означает «дверь между зонами». А дверь можно закрывать и открывать. Ареапорталы как раз и служат для того, чтобы вовремя закрывать двери между различными зонами, отсекая, таким образом, целые фрагменты уровня и позволяя экономить на fps.
Ареапортал может находиться в двух состояниях – открытом и закрытом. В открытом состоянии он соединяет зоны, в закрытом – разъединяет. Например, если между зонами А и Б находится закрытый ареапортал, то когда игрок находится в зоне А, зона Б рисоваться не будет, и наоборот. Но если ареапортал откроется, то обе зоны станут видны.
Сами по себе ареапорталы бесполезны, их предназначение – использование в сочетании с другими акторами, например, Door или RotatingDoor (мы рассмотрели их на предыдущих уроках). Если с дверью связан ареапортал, то движок автоматически будет открывать его при открытии двери и закрывать – при закрытии. Таким образом, мы сможем отсекать видимость объектов, которые находятся за закрытой дверью, и посредством этого оптимизировать уровень.
Звучит сложно? На самом деле практически всё это делается автоматически. Всё, что вам нужно как левел-дизайнеру – разместить areaportal-браш, т.е. специальный браш, покрытый текстурой common/areaportal. В общем случае он должен совпадать с геометрией двери. Всё остальное сделает движок.
Откройте вторую карту шестого урока (lesson6a.map). На ней есть вращающаяся дверь. Если мы запустим эту карту в игре и наберём в консоли команду r_showtris 1, которая показывает полигоны, рисуемые движком в данный момент, то увидим, что вторая комната рисуется даже тогда, когда дверь закрыта (см. рис.). Попробуем оптимизировать этот уровень с помощью ареапортала.



Выберите пункт меню Textures > Show All (Ctrl+A), чтобы показать все шейдерные текстуры, и выберите текстуру areaportal. Создайте браш, строго совпадающий по размерам с дверью.



Это и есть ареапортал, превращать его в актор не нужно – всю дальнейшую работу возьмут на себя компилятор с движком. Обратите внимание – если дверь не закрывает полностью проём или содержит окошко, то использовать ареапортал нельзя, т.к. это приведёт к визуальным артефактам.
Компилируйте карту, запускайте игру и набирайте команду r_showtris 1. Теперь при закрытой двери вторая комната не рисуется движком. Но стоит открыть дверь – и она появляется.





Вот таким простым способом можно оптимизировать довольно сложные карты – лишь бы на них были закрывающиеся непрозрачные двери. Причём количество дверей и способ их открытия значения не имеет. Можете самостоятельно попробовать установить ареапортал на карте седьмого урока (двойная автоматически открывающаяся дверь) – вы убедитесь, что всё будет работать и там.

Скачать исходник карты (map-файл) этого урока

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 14:03.
Показать все 1 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024