Внимание! Подписка на газету "Виртуальные радости" на 2-е полугодие 2017 года осуществляется на сайте ulej.by по схеме краудфандинга. Подробности читайте в теме форума. Чтобы перейти к подписке, нажмите кнопку справа.

Подписаться Виртуальные радости онлайн

 

Создание карт для Half-Life 2: основы

Posted by Anuriel on апреля 5, 2012 - 22:50

Прошло уже немало времени с момента выхода безусловно шедевральной игры Half-Life 2. За это время мы не один раз заново пережили приключения вечно молчаливого доктора Фримена: пробежались по пыльным улицам Сити 17, заброшенной территории Пустошей, посетили жуткую тюрьму Нова Проспект и множество других незабываемых локаций. И, естественно, многие почувствовали искру модмейкерства в своих сердцах, зовущую, так сказать, творить: изменять любимую игру, создавать свой вариант ее продолжения либо и вовсе что-то совершенно новое. Тем из вас, кто относится к сей категории людей и желает попробовать свои силы в создании модов и посвящается эта статья.

Подготовка.

Так чем же, собственно говоря, мы будем заниматься? Нет, мы не будем перерисовывать оригинальные текстуры или же копаться в характеристиках оружия – оставьте это неблагородное занятие. Мы будем заниматься маппингом.

Что же такое маппинг? В нашем случае маппинг – это создание уровней (карт) под Half-Life 2, а если быть точным – под движок Source. Это вовсе не такое сложное занятие, как может показаться на первый взгляд.

Что же нам необходимо? Прежде всего, наличие лицензионной версии игры Half-Life 2 либо Half-life 2 – Episode One, Steam-аккаунта и доступа в Интернет. Будем исходить из того, что вы уже скачали через систему Steam и обновили (при необходимости) Source SDK (Software Development Kit) – набор инструментов от корпорации Valve для создания однопользовательских и многопользовательских модификаций к своим играм.

Создание карт для Half-Life 2: основыЗапустите SDK. Для начала нужно указать игру, под которую вы собираетесь создавать карты. Это делается в следующем выпадающем меню (рис.1).

Рис.1. Настройка конфигурации.

Ваше меню может отличаться от моего, однако это не страшно. Выберите здесь либо Half-Life 2, либо Half-Life 2: Episode One, в зависимости от того, какая игра у вас установлена.

Что ж, мы настроили конфигурацию SDK. Теперь можно спокойно разглядеть, какие инструменты нам предлагают.

Инструменты у нас находятся в разделе Applications:

Hammer Editor – основной инструмент маппера. В нем создается вся геометрия уровней, расставляются скрипты и прочие радости.
Model Viewer – утилита для просмотра моделей в формате mdl.
Face Poser – программа для создания лицевой анимации.

С этим разобрались. Идем дальше.

Запустите Hammer Editor. Если у вас вдруг появится окошко с ошибкой "the configuration for the game you're trying to edit is invalid or missing", нажимайте "cancel". В разделе Utilities найдите пункт "Reset Game Configurations", запустите его и нажмите "reset". Если это не поможет, проверьте, установлена ли у вас игра, под которую вы собираетесь маппить.

Интерфейс редактора Hammer Editor.

Запустив редактор, создайте новую карту (File>New) и посмотрите на то, с чем нам придется иметь дело. Выглядит удручающе, не правда ли? ;) Сейчас мы разложим все по полочкам.

Создание карт для Half-Life 2: основыРис.2. Общий вид редактора Hammer.

Прежде всего, обратите внимание на четыре черных окна. По умолчанию, верхнее левое – окно 3D-проекции, верхнее правое – окно 2D-проекции Top, нижнее левое – 2D-проекции Front и нижнее правое - 2D-проекции Side.

Слева у нас находится панель инструментов, которые вы постоянно будете использовать в создании карт. Желательно запомнить их горячие клавиши, дабы не утруждать себя вождением мышки в разгар работы.

Итак, сверху вниз:

Selection Tool (Shift+S) – инструмент выделения. Служит для выделения объектов и последующего манипулирования: перемещения, вращения, а также изменения размера. Выделяются объекты одним кликом (лучше всего в 3D-проекции). Изменение размера или вращение осуществляется путем манипуляций с контрольными точками. Для перемещения достаточно же просто перетянуть объект в окне 2D-проекции.

Magnify (Shift+G) – служит для приближения/удаления камеры в окнах 2D-проекции. Ту же операцию можете проделать простым колесиком мышки.
Camera (Shift+C) – нужна для работы с камерой в 3D-проекции. Для того чтобы увидеть хоть что-то в 3D, вам необходимо установить камеру в любом окне 2D-проекций. Перемещается камера так: с зажатой левой кнопкой – вращение камеры, с зажатой правой – перемещение вверх/вниз, с зажатыми обеими клавишами – приближение/удаление. На мой взгляд, осуществлять перемещение в редакторе лучше всего не с помощью Camera, а с помощью клавиш WASD и стрелок, ибо привычнее.

Entity Tool (Shift+E) – наверное, самый важный инструмент, предназначен для создания энтитей. Энтити – это, в своем большинстве, то, что не является простой брашевой геометрией: npc, источники света, различные фильтры и триггеры, эффекты и звуки, статичные и физические объекты.

Block Tool (Shift+B) – тоже немаловажный инструмент, служит, в основном, для создания брашевой геометрии. Доступные примитивы: arch, block, cylinder, sphere, spike, wedge. Создаются браши в окнах 2D-проекции. При создании браша, когда вы определитесь с его будущими размерами, необходимо нажать кнопку enter, дабы создать его.

Texture application (Shift+A) – чудесная штука, необходима для наложения текстур на объект. Там же можно растягивать текстуры, смещать, вращать и делать некоторые другие вещи, о которых мы поговорим позднее.

Apply current texture (Shift+T) – быстро применяет к выделенному объекту последнюю использованную вами текстуру.

Apply decals (Shift+D) – служит для применения к брашам декалей, т.е. пятен крови, трещин, пулевых отверстий, подтеков, плакатов и т.д. Использовать как декали можно только текстуры из папки "decals".

Apply overlays (Shift+O) – во многом похоже на наложение декалей, однако здесь декали можно растягивать и вращать.

Clipping tool (Shift+X) – служит для "нарезки" брашей. Выделив нужный браш, укажите плоскоть сечения в окнах 2D-проекции, а затем нажмите enter. Часть браша, помеченная красным, будет удалена, белым – останется. Также вы можете разрезать браш на две части. Для этого нажимайте Shift+X до тех пор, пока части по обе стороны от плоскости сечения не станут белыми, затем жмите enter.

Vertex tool (Shift+V) – изменение объекта путем манипуляции с его точками. Ничего сложного в этом нет.

Чтобы увеличить/уменьшить масштаб сетки в 2D-проекциях, используйте клавиши скобок ][

В разделе Tools>Options вы можете настроить некоторые параметры редактора, однако трогать их для начала я бы не советовал.

Если вы внимательно прочитали все вышенаписанное, то вы готовы к созданию своей первой карты под Half-Life 2.

Создаем геометрию.

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

Создайте новый файл и сразу же сохраните его куда-нибудь под точным названием hello_world.vmf.

Установите камеру в любом окне 2D-проекций. Затем выберите Block Tool и создайте в окнах 2D-проекций параллелепипед размерами 512х512х128 юнитов. Не забудьте нажать enter, дабы подтвердить создание браша. Думаете, комната готова? Ан нет! Чтобы это был не простой блок, а комната с 4 стенами, полом и потолком, необходимо вырезать ее изнутри. Для этого выделите браш, а затем, кликнув на нем правой кнопкой в 2D, выберите пункт Make Hollow, либо нажмите Ctrl+H. В появившемся окошке вам предложат выбрать толщину стен будущей комнаты. Наберите -10 (отрицательное значение создает стены как бы "наружу", а положительное – "внутрь") и нажмите Ok.

Теперь вы получили вашу будущую комнату. Можете залететь в нее и поглядеть на эти чудесные стены :).

Скопируем нашу комнату. Для этого просто перетащим ее в окне 2D-проекции Top с помощью Selection Tool, удерживая нажатой клавишу Shift. Расположим наши комнаты друг напротив друга.

Теперь создадим коридор. Сделаем между комнатами браш шириной 164 и высотой 128 юнитов, а длину отрегулируем так, чтобы он пересекал ТОЛЬКО передние стенки комнат там, где в них будет проход. Очень важно, чтобы этот браш не пересекал пол и потолок, но подходил к ним вплотную. Также браш не должен пересекать задние и боковые стены комнат. Примерно это должно выглядеть вот так (рис.3).

Создание карт для Half-Life 2: основы
Рис.3. Подготовка к операции Carve.

Выделите будущий коридор и примените к нему операцию Carve, выбрав ее из контекстного меню, вызывающегося правым кликом на выделенном браше в окнах 2D-проекции, либо нажав Ctrl+Shift+C. Этим мы как бы "вырежем" проход в нужных нам стенах комнат. Теперь сделаем коридор "пустотелым", применив к нему операцию Make Hollow, с толщиной стенок -10 юнитов. Удалим переднюю и заднюю стенки коридора, выделив их и нажав клавишу Delete. Вы можете заметить, что вместо отдельных стенок выбирается весь коридор целиком. Это потому, что все стенки нашего коридора по умолчанию принадлежат к одной группе. Чтобы работать с каждой стеной по отдельности, разгруппируем наш коридор (Tools>Ungroup или Ctrl+U). Также можно просто включить режим игнорирования групп объектов (Ctrl+W).

Теперь выровняйте все стыки при помощи Selection Tool. Важно, чтобы между стенами не было абсолютно никаких зазоров, так как это приведет к ошибкам. Также желательно, чтобы стены не входили друг в друга, а были подогнаны вплотную. В результате мы должны получить что-то вроде этого (рис.4).

Создание карт для Half-Life 2: основы
Рис.4. Готовый коридор.

Коридор готов.

Текструирование.

Теперь весьма интересная часть – покроем наши комнаты и коридор текстурами. Залетите внутрь какой-либо комнаты и нажмите Shift+A, дабы вызвать окошко Face Edit Sheet. Не закрывая этого окошка, удерживая Ctrl, выберите все внутренние стены на нашей карте. Каждая выбранная стена помечается красным цветом. Когда вы выберите все стены, не снимая выделения, нажмите кнопку Browse в окне Face Edit Sheet. Перед вами предстанет список доступных вам текстур. В поле Filter наберите plasterwall, дабы отобрать текстуры обоев. Выберите понравившуюся вам текстуру и нажмите enter. Я лично выбрал plasterwall005c. Не закрывайте окно Face Edit Sheet.

Скорее всего, ваша текстура ляжет не полностью подогнанной под стену. Исправим положение вручную. В том же окне Face Edit Sheet найдите пункт Texture Shift, а под ним два поля – X и Y. Первое смещает текстуру по оси X (по горизонтали, если хотите), а второе – по оси Y (по вертикали). Изменяя значения в этих окошках, выровняйте вашу текстуру.

Вы также можете увеличивать размер вашей текстуры в окошках Texture Scale. Однако учтите, что при увеличении размера текстуры, теряется ее качество.
Теперь самостоятельно покройте текстурами пол и потолок коридора и комнат. Для пола я взял текстуру tilefloor001a, для потолка –
concreteceiling003a.

Поздравляю, вы только что научились самостоятельно накладывать текстуры!

Создаем освещение.

Теперь сделаем источники света для наших комнат.

Для начала создадим сами лампы. Для этого нам придется поставить на карту соответствующие модели ламп. Это делается при помощи энтитей. Выберите на панели инструментов Entity Tool (Shift+E). Найдите в правой части редактора вот эту область (рис.5).
Создание карт для Half-Life 2: основы
Рис.5. Выбор энтитей.

Под надписью Objects при активном Entity Tool мы можем видеть выпадающее меню со списком всех доступных энтитей. Мы собираемся поставить на карту модель потолочной лампы. Это – статичный объект. Статичные модели делаются энтитей prop_static. Выберите ее и поставьте на середину потолка какой-либо комнаты в 3D-проекции (так удобнее). Наша энтитя пока представляет из себя всего только желтый кубик. Для того чтобы превратить ее в лампу, мы зададим ей соответствующую модель.

Зайдите в свойства нашей энтити, дважды кликнув на ней в 3D-проекции. Появится окно с ее свойствами. Нам необходим пункт World Model. Выберите его и нажмите кнопку Browse. Откроется Model Browser. В окошке Filter наберите lamp, затем выберите модель лампы props_wasteland\prison_lamp001a.mdl. Жмите Ок, а затем Apply в окне настройки энтити, и вуаля – модель вставлена на карту! Выровняйте ее при необходимости.

Лампа готова, однако светить она пока не будет. Добавим освещение. За него у нас отвечает энтитя light. Поставьте ее на карту, прямо под моделью лампы. Зайдите в свойства light и найдите пункт Brightness. Это поле отвечает за цвет и яркость света. Первые три значения устанавливают цвет в формате RGB, а последнее – яркость источника. Установим первые три значения цвета как 254 255 223, а последнее, то бишь яркость – в 400. Теперь перейдем к пункту Maximum Distance и установим его значение в 500.

Лампа создана и готова светить. Выберите, удерживая Ctrl, модель лампы и энтитю света и скопируйте их в проекции Top во вторую комнату. Освещение готово.

Раскидываем физические объекты.

Теперь давайте создадим обещанные бочки и ящики. Это объекты физические, за которые отвечает энтитя prop_physics. Создайте где-нибудь на полу такую энтитю. Зайдите в ее свойства, пункт World Model, и нажмите Browse. В поле Filter наберите oildrum. Вы увидите модели бочек: простой – oildrum001, и взрывчатой – oildrum001_explosive. Выберите модель простой бочки и примените ее к энтити. Выровняйте свежесозданную бочку в проекции Side, приблизив ее к полу, иначе при запуске карты она упадет и стукнется, что не есть гут. Скопируйте нашу бочку раз 5, чтобы получить укрытие для солдат. Укрепим его ящиками. Ящики создаются так же, как и бочки, модель ящика - wood_crate002a, например. Расставьте все объекты в приятном вам порядке. Можете также добавить другие физические либо статические модели. Имейте в виду, что не любая модель может быть как физической, так и статической. Чтобы посмотреть, какой может быть модель на карте, в окне Model Browser зайдите во вкладку Info. Галочками будет отмечен возможный тип модели.

Используем декали.

За декали, как вы помните, у нас отвечает инструмент Apply decals (Shift+D). Откроем Texture Application (как вы помните, Shift+A либо соответствующя кнопка на левой панели инструментов). Нажмем Browse и в открывшемся окне в поле Filter наберем decals. Вы увидите доступные вам декали – следы крови, трещины, граффити и т.д. Выберите понравившуюся декаль (к примеру, какое-нибудь граффити) и нажмите enter. Закройте окно Texture Application. Теперь выберите инструмент Apply Decals (Shift+D). Кликните на место, где вы хотите декаль, в окне 3D-проекции, чтобы применить ее. Адски красиво, правда? ;) Вы можете украсить ваши комнаты другими декалями по вкусу.

Создаем NPC.

Сейчас мы добавим несколько метрокопов, чтобы Фримену не было скучно. Ничего сложного в добавлении NPC нет. За метрокопов у нас отвечает энтитя npc_metropolice. Добавьте ее куда-либо на пол в окне 3D-проекции - и метрокоп твердо встанет на пол, готовый перестрелять все то, что его черной душе придется не по вкусу. Хотя с этим у него могут возникнуть проблемы, так как у только что созданного метрокопа в качестве оружия по умолчанию стоит пистолет. Давайте вооружим его чудом прогресса – полуавтоматической пушкой, в простонародье именуемой SMG. Для этого, зайдя в свойства нашего полицая, в пункте Weapons выберите SMG1. Если вы хотите, чтобы метрокоп выпускал мэнхэков, найдите в его свойствах пункт Number of Manhacks и измените его, к примеру, на 2. Создайте несколько метрокопов и поставьте их за нашим импровизированным укрытием.

Теперь создадим место старта игрока. За это у нас отвечает энтитя info_player_start. Поставьте ОДНУ такую энтитю на нашей карте.
Проследите, чтобы она не ушла в пол, так как игрок потом попросту застрянет в нем.

Важно заметить, что в игре Фримен появляется на карте без своего знаменитого костюма. Сделаем ему костюм энтитей item_suit, и прямо в редакторе "натянем" его на энтитю info_player_start, чтобы игрок автоматически одел его в начале игры.

Дадим игроку оружие. Для примера, возьмем Магнум. Создадим энтитю Магнума weapon_357 и положим ее рядом с местом старта игрока. Обеспечим игрока коробкой с патронами при помощи энтити item_ammo_357. Теперь Фримену ничего не страшно.

Компиляция.

Наконец-то карта готова к компиляции! Нажмите F9, чтобы вызвать соответствующее меню. Установите все параметры в Normal. Уберите галочку с пунктов HDR и Don't run the game after compiling, если они там есть. Нажимайте Ок – и, после непродолжительной компиляции, ваша карта запустится в игре. Ура!

Только что вы научились создавать несложные уровни для Half-Life 2, размещать статичные и физические объекты, освещение и противников. Думаю, на этом вы не остановитесь. Маппинг – весьма увлекательный процесс, тем более, что движок Source позволяет создать практически все, что вы можете вообразить. Конечно, с его продвинутой (местами дальше некуда;) физикой, в нем присутствует немало своих нюансов, но ведь трудности вас не страшат, не так ли?

Alex_51

№ 91

Geek Bar Подвал

Перепечатка материалов разрешается только с указанием индексируемой ссылки на первоисточник.

Наши самые актуальные статьи вы найдете в газете "Виртуальные радости".