Игра в материале
Half-Life 2
?Рейтинг
Игромании
9.5Рейтинг
игроков
PC   Xbox   PS3   X360
Жанр: Боевик, Боевик от первого лица
Серия: Half-Life
Мультиплеер:  Интернет, локальная сеть (до 32 игроков)
Разработчик: Valve Corporation
Издатель: Vivendi Games
Издатель в России: Бука
Локализатор: Valve Corporation
Дата выхода: 16 ноября 2004
Дата выхода в России: 22 ноября 2004
Редактор Half-Life 2, часть 2. Геометрия уровня

Редактор Half-Life 2, часть 2. Геометрия уровня

Мастерская — Редактор Half-Life 2, часть 2. Геометрия уровня
предлагаю вам выполнить небольшое задание на использование взаимодействующих объектов. Видели в Half-Life 2 дверь, закрытую на навесной замок — когда его ломаешь, дверь открывается? Именно такую дверку мы и создадим
Игроманияhttps://www.igromania.ru/
Мастерская
Редактор Half-Life 2, часть 2. Геометрия уровня
    В предыдущей статье мы с вами настроили Hammer для работы с Half-Life 2 и научились создавать простые помещения. Сегодня же мы изучим основные принципы создания более сложной геометрии уровня. Мы сделаем два помещения, соединенных дверным проемом (сама дверь, конечно же, будет прилагаться). Но для начала немного теории. Прежде чем что-либо делать, необходимо тщательно представить себе, как именно и какими средствами вы собираетесь это реализовывать. Таким образом вы сможете избежать выполнения лишней работы. Существует ряд неписаных правил о том, как следует состыковывать коридоры, вырезать дверные проемы, цилиндрические отверстия и так далее. Зная все нюансы и руководствуясь описанными приемами, вы сможете легко создавать сколь угодно сложные помещения и не впадать в панику, если вдруг понадобится что-то подправить.

    Архитектура уровней
   
Запустите редактор, создайте новую карту и сразу сохраните ее, например под именем secondroom.vmf. Теперь при помощи инструмента Block Tool (Shift+B) проведите область размером 704x384 в проекции Top и задайте ей высоту, равную 128, на проекции Side. “Опустошите” созданный браш при помощи команды Make Hollow с параметром “-8”. Чтобы упростить последующую работу над помещением, советую сразу назначить все необходимые текстуры для пола, потолка и стен. Я выбрал текстуры со следующими именами:
30 Kb
Привязка к сетке позволяет
идеально точно выравнивать
объекты.
concretefloor031a, plasterceiling008a, brickwall026f соответственно. Для того чтобы сделать из получившегося помещения два, я предлагаю скопировать одну из стен и расположить ее в центре в виде перегородки. Пытаясь выделить одну из стен комнаты, вы обнаружите, что выделяются все ее стены, включая потолок и пол. Чем же это вызвано?
    Дело в том, что когда вы использовали команду Make Hollow, все полученные стены были автоматически объединены редактором в группу. Вы можете сами группировать и разгруппировывать объекты при помощи команд Tools/Group/Ungroup (Shift+G/Shift+U). Разгруппируйте все объекты и выберите одну из коротких стен вашего помещения. Удобнее всего выделять объекты, пользуясь 3D-камерой. Зажмите Ctrl и перетащите стену к центру фигуры на проекции Top. Будет создана ее копия. Используя клавиши [ и ] для изменения масштаба сетки на проекциях, а клавиши D и C — чтобы приближать и отдалять вид, поставьте перегородку точно в центр фигуры (центр обозначен серым крестиком). Подгоните размер перегородки, чтобы она точно вписывалась внутрь помещения и совпадала с плоскостью перпендикулярных стен, как показано на рисунке (см. рис. 1).
    На данный момент у нас построено одно помещение, разделенное перегородкой на две комнаты. Чтобы игрок мог свободно переходить между ними, следует создать дверной проем и дверь. Начнем с дверного проема. Создайте браш высотой 112, шириной 56 и толщиной большей, чем толщина перегородки. Этот браш мы будем использовать как примитив сечения, то есть им мы вырежем отверстие в перегородке для дверного проема. Теперь самый ответственный момент. Требуется перенести этот браш так, чтобы он полностью пересекал перегородку с двух сторон, касался пола, но не пересекал его! Все зоны примитивов, которые попадут в зону сечения, будут отрезаны, следовательно, в эту зону должна попадать только перегородка, как на рисунке (см. рис 2).
    Для того чтобы
59 Kb
Все объекты, попадающие в
плоскость сечения, будут
урезаны.
точно разместить браш сечения, пользуйтесь привязкой к сетке и изменением ее масштаба. Если вы уверены, что все точно совпадает, нажмите правой кнопкой мышки над выделенной областью сечения в любой проекции и выберите из падающего меню пункт Carve (Вырезать) или нажмите Ctrl+Shift+C. Будет создано отверстие в перегородке. Чтобы это увидеть, вы можете удалить плоскость сечения. Конечно, удалять ее преждевременно, но если вы все-таки это сделали, нажмите отмену.
    Так как браш сечения имеет поразительно схожий размер с дверным проемом, то нам ничего не остается, как сделать из него дверь. Хочу отметить, что также двери можно делать при помощи подгружаемых моделей. Измените толщину двери на 4 юнита и расположите ее точно в центре проема. При этом можете увеличить толщину перегородки на 2 юнита в обе стороны для создания более глубокого эффекта. На получившуюся дверь наложите текстуру metaldoor052a с коэффициентом увеличения, равным 0.25 по обеим осям, и координатами 0.0. Дверь примет конечный вид, но не будет работать по назначению.
    Пришло время заняться ее функциональными возможностями. Так как дверь будет вращающейся, игре необходимо знать, по какой оси она будет совершать поворот. Для задания оси используется браш со служебной текстурой origin. Создайте его и расположите, как показано на рис. 3.
    Зажмите кнопку Ctrl и выделите дверь вместе с осью вращения. На панели настроек, справа, нажмите кнопку To Entity. В появившемся окне требуется указать класс объекта — в нашем случае это будет func_door_rotating. Теперь дверь полностью готова. Единственное, возможно вам захочется изменить некоторые параметры. Вот основные из них: Speed — скорость открытия двери, Start/Stop Sound — звук при открытии и остановке двери, Delay Before Reset — время, через которое дверь закроется сама, если указать -1, то дверь останется открытой, Distance — радиус открытия двери, по умолчанию равен 90 градусам.

    Проба пера
   
На основе полученных знаний я предлагаю вам выполнить небольшое задание на использование взаимодействующих объектов. Видели в Half-Life 2 дверь, закрытую на навесной замок — когда его ломаешь, дверь открывается? Именно такую дверку мы и создадим. Для начала необходимо сделать так, чтобы дверь была первично заперта. Для этого в ее настройках поставьте галочку Starts locked на закладке Flags и задайте имя, например room01_door01. Теперь создайте точечный объект класса prop_physics. В его настройках найдите параметр World model и укажите файл prison_padlock001a.mdl из библиотеки props_wasteland. Перейдите на закладку Outputs и нажмите кнопку Add.... В списке My output named выберите событие OnBreak (При разрушении), в списке Targets entities namedroom01_door01 (Имя двери), а в списке Via this inputUnlock (Отпереть дверь). Повторите последнее действие, но в списке Via this input укажите Open (Открыть дверь).
    При разрушении замка происходит отпирание двери, а затем ее открытие — два действия, указанных нами в таблице. Вам остается только расположить замок рядом с дверной ручкой и в его свойствах поставить галочку Start Asleep (это не даст замку сразу упасть после появления). Также следует растянуть зону прорисовки модели на ширину всей комнаты. И еще одно — не забудьте разместить на карте оружие, чтобы сломать замок, воспользуйтесь классом weapon_crowbar (Лом).

    Доводка интерьера
   
Не забудьте разместить на уровне место появления игрока и два источника света для каждой комнаты. Можете поэкспериментировать, изменяя различные
28 Kb
Ось вращения двери
задается специальным
брашем.
параметры двери.
    Мы рассмотрели создание дверей, основанных на примитивах, но когда речь заходит о высокой детализации или тем более о вращающейся ручке двери — тут не обойдешься без встраиваемых моделей. При помощи инструмента Entity Tool (Shift+E) создайте объект класса prop_door_rotating. В его настройках выберите пункт World Model и нажмите кнопку Browse. Перед вами откроется менеджер моделей. Выберите подходящую модель двери (воспользоваться библиотекой props_c17) и нажмите кнопку Open, а затем Apply. На фронтальной проекции перенесите две белые точки в левый нижний и левый верхний углы выделенной двери. Получившийся отрезок и будет являться осью вращения.
    Следующее, о чем я хотел бы рассказать, — это создание вертикальных лестниц. В Half-Life 2 лестница состоит из двух частей: модели и триггера, отвечающего за подъем и опускание игрока. Давайте разберем принцип работы стандартной
лестницы на практике. Создайте на карте помещение произвольной ширины и высотой, равной 256 юнитам. Внутри помещения разместите стену высотой 128 юнитов — это возвышение, на которое игроку предстоит забраться. Далее вам потребуется использовать два объекта типа prop_static со следующими подгруженными моделями: models/props_c17/metalladder002.mdl (перила с перекладинами) и models/props_c17/metalladder002b.mdl (замыкающая верхушка). У каждой модели есть зона прорисовки, которая указывается белым кругом
32 Kb
Лестница состоит из 3D-модели
и подъемного триггера.
на проекциях. Растяните данную зону у обеих моделей на ширину всего помещения.
    Первую модель поставьте к возвышению, а вторую так, чтобы она стыковалась с первой и при этом касалась “рогами” горизонтальной поверхности. Визуальная часть готова, но как движок поймет, что эти две модели есть лестница и по ней следует перемещать игрока? Для этого используется объект func_ladder, покрытый служебной текстурой ladder. Любая плоскость данного браша будет поднимать и опускать игрока, но при этом объект будет полностью невидимым. Просто создайте еще один браш высотой с функциональную часть лестницы и шириной с ее перекладины, толщину следует указать минимальную. У вас должна получиться структура, показанная на рис. 4.

50 Kb
В редакторе некоторые текстуры
также имеют прозрачность.
    Окно в...
   
Какая комната без окон? Давайте научимся делать прозрачные разбиваемые стекла. Для начала сделайте вырез в том участке стены, куда предполагается вставить стекло. Затем в полученном отверстии разместите браш с минимальной толщиной, окрашенный текстурой стекла по фильтру glass. Также следует наложить служебную текстуру nodraw на торцевые грани браша, дабы не перегружать игровой движок лишними задачами по прорисовке ненужных поверхностей. Приведите стекло к классу func_breakable (Разрушаемое) и задайте требуемые настройки. У вас должно получиться нечто, похожее на изображение на рис. 5. Вообще, описанный класс подойдет для любых типов разрушаемых объектов, достаточно изменить параметр Material type (Тип материала), и стекло станет металлом или деревом. А если вписать число в строке Explode Magnitude, то объект будет инициировать взрыв указанной силы при разрушении. Поиграв с различными классами объектов и их настройками, вы можете открыть для себя много нового, не бойтесь экспериментировать!
    Мы разобрали базовые операции по созданию геометрии уровня, размещению точечных и солидных объектов; теперь вы полностью готовы к разработке достаточно сложной карты с использованием различных настраиваемых объектов. В следующей статье мы научим вас оперировать персонажами и создавать небольшие сценки, то есть вплотную подойдем к созданию однопользовательской модификации — вроде тех, что мы регулярно выкладываем на наших CD/DVD.
Комментарии
Загрузка комментариев