Unreal Zones
Last Updated: 07/21/99
Аудитория: Level designers.
Концепция зон
Уровни в Unreal могут быть огромны; многие из них состоят из более чем 20,000 полигонов. Тем не менее, одновременно игрок видит только крошечную часть этих 20,000 полигонов, обычно порядка 100-200. Движку, при этом, требуется значительное время CPU, для выяснения какие же 200 полигонов из потенциально возможных 20,000 видны в данный момент. В Unreal используется несколько способов для ускорения процесса "определения видимых поверхностей". Большинство из них автоматические, не требующие вмешательства мап-дизайнера (map-designer). Но один из самых мощных приемов, разбиение на зоны (zoning), требует от дизайнера самостоятельной установки специальных, невидимых полигонов - "zone portals" на уровне. Зоны значительно ускоряют вычисления движка на "видимость", и они, также, позволяют дизайнерам создавать множество спецэффектов присущих определенному пространству, например, окружающий свет или модифицировать гравитацию.
Зона является абстрактной составляющей 3D пространства, например, это может быть комната или группа нескольких, соединенных между собой комнат.
Разбивая уровень на зоны, Вы выигрываете по нескольким параметрам:
Отображение зон
В UnrealEd предусмотрен специальный режим, позволяющий графически отображать зоны на уровне, при этом каждая из них выполнена отдельным цветом. Для этого, в любом окне 3D вида в меню Mode выберите Zones/Portals. Если необходимо отобразить зоны во время игры, наберите в консоли "RMODE 2" (без кавычек).
Во время работы в едиторе, зонные порталы (zone portals) нормально отображаются, и Вы не можете видеть сквозь них. Для того чтобы их "спрятать", нажмите кнопку с изображением джойстика на заголовке окна 3D вида - это включит режим реального времени. Используйте его только для предварительного просмотра архитектуры, т.к. этот режим значительно замедляет работу UnrealEd и интерфейса.
Разбиение уровня на зоны
Дизайнеры могут разбивать уровни на зоны при помощи специального вида брашей - зонных порталов (zone portals), как бы "закупоривая" отдельную часть уровня, обеспечивая ее "водонепроницаемость".
В UnrealEd присутствует два инструмента, позволяющие создать зонный портал:
Для разбиения на зоны, сперва добавьте необходимое количество зонных порталов (используйте при этом оба инструмента: "Add Special Brush" для добавления полигонов в уровень и "Sheet Brush" для их постройки). Затем, перестройте (Build) Ваш уровень. UnrealEd при этом обнаружит все "закупоренные" при помощи зонных порталов пространства, и назначит каждому из них уникальную зону. Теперь можете активизировать режим отображения зон, для проверки правильности разбиения уровня.
Если в режиме отображения зон (Zones/Portals), Вы видите, что движок не распознал их, Вы, скорее всего, сделали зонные порталы не "герметичными". Вам необходимо увеличить размер "неудавшихся" порталов, отделяющих зоны, для абсолютной их изоляции друг от друга.
Если во время игры, Вы видите так называемый "Hall Of Mirrors" (HOM - "Зал Зеркал") в том месте, где Вы установили зонный портал, то убедитесь, чтобы этот портал полностью изолировал пространство, которое он отделяет. В случае, если портал не полностью закрывает проход (есть "утечка"), Вы будет видеть через него "ничто".
Где устанавливать зонные порталы
Для "специальных" зон, таких как, например, вода, Вы, конечно, установите их где это необходимо.
При определении зон, предназначение которых является только ускорение движка, Ваша цель разделить их зонными порталами как можно меньшими по размеру. Чем меньше портал, тем меньше ресурсов затратит движок при их обсчете. Именно поэтому, все порталы в игре установлены обычно в переходах, отделяющих большие пространства - например, в дверных проемах или коридорах. Такой подход позволяет качественно разбить уровень на зоны, не используя при этом огромные по размеру порталы.
Нет никакой пользы (Вы скорее за это поплатитесь производительностью) устанавливать зонные порталы посередине огромных комнат. Порталы такого размера сами "сжирают" больше CPU времени, чем его экономят. Поэтому, старайтесь размещать их в коридорах, дверях и узких проходах.
Установка актеров ZoneInfo для определения свойств зоны
Если Вы хотите назначить определенные свойства зоне, такие как, вода, окружающий свет или реверберацию, Вам нужно будет для нее установить актер ZoneInfo. Делать это нужно только в том случае, если Вы хотите "настроить" зону. Если же зона - итог Вашей борьбы за производительность движка, то ZoneInfo устанавливать не нужно.
Откройте Браузер Актеров (Actor Class Browser), перейдите к пункту Info и в нем выберите ZoneInfo. Устанавливать этот актер можно в любой точке зоны. Если Вы установили его в пустом (незанятом) пространстве зоны (например, внутри брашей устанавливать их нельзя) и в этой зоне не присутствуют другие актеры ZoneInfo, то никаких проблем у Вас возникнуть не должно, и ZoneInfo будет отлично работать. Для того, чтобы движок "понял" установленные Вами актеры ZoneInfo, Вам необходимо перестроить (Build) уровень.
Загляните в окно свойств актера ZoneInfo для ознакомления с его настройками. Здесь Вы найдете множество прикольных параметров, например, сопротивление, гравитация, окружающий свет, зона "боли", вода и пр.
Зона воды и прозрачные порталы
Для создания зоны с водой (water zone) просто добавьте в эту зону актер ZoneInfo и в его свойствах установите bWaterZone в положение true. Код Unreal, просчитывающий физику (в классах Pawn.uc и PlayerPawn.uc) автоматически распознает водную зону и меняет физическую модель поведения игрока с состояния "хождения" на "плавание".
Если Вы хотите, чтобы вода была прозрачной (по сути, чтобы портал был прозрачен), выделите поверхность зонного портала в UnrealEd, откройте окно его свойств и установите галочку напротив Translucent.
Предупреждение
Уровень может содержать максимум 64 зоны. Если Вы создадите их больше чем 64, то движок вынужден будет объединить некоторые из них, что скажется на производительности. Это ограничение может быть изменено в будущем.
Автор
Tim Sweeney
Epic MegaGames, Inc.
http://www.epicgames.com
Перевод сделан 32_Pistoleta