Как сделать карту в халф лайф 1

Добавил пользователь Евгений Кузнецов
Обновлено: 05.10.2024

Команда Описание
mp_flashlight включение(1) / выключение(0) возможности использования фонарика
mp_footsteps включение(1) / выключение(0) шагов в игре
mp_friendlyfire в зависимости от этого параметра своих либо можно убивать(1), либо нет(0)
mp_mapvoteratio значение этого параметра равно той части игроков(0,1 - 1), которые должны проголосовать за смену карты
mp_roundtime время одного раунда
mp_timelimit время, через которое меняется карта
hostname имя сервера
sv_restartround значение этого параметра равно секундам, через которые произойдет рестарт

Команды управления

Команда Описание

Команды для настройки вида игры

Команды голосовой коммуникации

Команда Описание
voice_loopback 1 Создайте сервер и наберите в консоли команду voice_loopback 1. Теперь скажите что-нибудь. То, что вы услышите в наушниках и есть то, как вас слышат другие. Теперь подберите оптимальную громкость вашего голоса и расстояние от рта до микрофона.
voice_scale x Эта команда устанавливает громкость голоса всех людей, в том числе и вашего.
voice_overdrive N Ослабляет все звуки (выстрелы и т.д.) в N раз, когда кто-то говорит. Оптимальнаое значение от 1 до 2.
voice_overdrivefadetime x.xxx Определяет время в секундах, в течение которого будет действовать эффект ослабления окружающих звуков (см. предыдущую команду). Оптимально 0.4.
voice_maxgain x Сглаживает голос говорящих. Ставьте от 1 до 5. Поэкспериментируйте в онлайне.
voice_avggain x Усреднение голосовой волны (удаление шума). Установите 0.5 - 0.1.
voice_fadeouttime x.xxx Влияет на время затухания вашего голоса. Оставьте около 0.1.

Графические команды

Команда Описание
gamma Гамма
lightgamma Гамма освещения
brightness Яркость
gl_polyoffset Смешение декалей относительно поверхности
gl_texturemode Качество текстур
gl_max_size Ограничение маскимального размера текстуры, чем меньше значение, тем размытее текстуры
gl_picmip Детализация текстур 0-3.
gl_playermip Детализация моделей игроков
gl_ztrick Для карт 3DFx нужно поставить 1 для ускорения
gl_alphamin видимость прозрачных текстур
gl_monolights При значении 1 карта становится светлой везде
violence_ablood Показывать ли кровь, мясо и т.д.
violence_agibs Показывать ли кровь, мясо и т.д.
violence_hblood Показывать ли кровь, мясо и т.д.
violence_hgibs Показывать ли кровь, мясо и т.д.
r_drawentities При значении 0 не видно объектов(энтитей), в том числе и игроков
r_drawviewmodel При значении 0 не вижно модельки оружия
r_dynamic Динамическое освещение
r_shadows Тени предметов
r_mmx Для включения поддержки ММХ
r_decals Число декалей в игре
fastsprites Качество дыма
max_shells Число одновременно видимых гильз
max_smokepuffs Число одновременно видимых дымков от пуль

Команды настроки звука

Команда Описание
hisound включает высококачественный звук: 1=22kHz, 0=11kHz
nosound выключает(1) или включает звук(0)
playvol громкость проигрывания демки
s_2dvolume максимальная громкость 2d звука (0 - 1)
s_a3d включает(1), выключает(0) поддержку A3D
s_automax_distance устанавливает дистанцию для максимальной громкости
s_automin_distance устанавливает дистанцию для минимальной громкости
s_buffersize 65536 устанавливает размер буфера в байтах
s_disable_a3d выключает a3d
s_distance 60 вообщем, чем больше значение, тем ближе все слышно
s_eax включает(1) или выключает(0) поддержку EAX
s_enable_a3d включапет a3d
s_geometry включает(1)или выключает(0) геометрическое разбиение(только для a3d 2.0)
s_max_distance максимальная дистанция, когда игрок еще слышит звуки (s_min_distance - бесконечность)
s_min_distance минимальная дистанция, когда игрок начинается слышить звуки (0 - s_max_distance
s_numpolys количество полигонов, обрабатываемых в a3d
s_occfactor проницаемость материала, то есть насколько материал заглушает звук (0 - 1)
s_refdelay минимальная дистанция между источников и ближайшим отражением
s_refgain
s_verbwet контролирует "сухость" звуков. чем больше значение, тем более "влажный" звук
speak если в параметре указаны некоторые ключевые слова, то вы их услышите чере наушники или колонки, например speak mesa
stopsound прекращает проигрывать текущий звук
ambient_fade 100 устанавливает дистанцию, на которой слышны "включенные в карту" звуки, например музыка на cs_italy
ambient_level устанавливает громкость для встроенных звуков(смотри выше)

Mouse команды

Команда Описание
+mlook позволяет "осматриваться" с помощью мышки
m_filter позволяет включить "сглаживание" движения мыши
m_forward скорость мышки прямо
m_pitch 0.022 устанавливает коэффициент чувствительности мыши при движении вних и вверх, при отрицательных значениях получим invert
m_side 0.800 устанавливает скорость стрейфа мыши (например, при включенной команде +strafe)
m_yaw 0.022 устанавливает коэффициент чувствительности мыши при движении влево, вправо
sensitivity чувствительность мыши
zoom_sensitivity_ratio чувствительность мыши в приближении

Прошло уже немало времени с момента выхода безусловно шедевральной игры 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).

Рис.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 позволяет создать практически все, что вы можете вообразить. Конечно, с его продвинутой (местами дальше некуда;) физикой, в нем присутствует немало своих нюансов, но ведь трудности вас не страшат, не так ли?

Редактирование Half-Life. Создание модов

Введение.

Нестареющая игра Half-Life написана на языке Visual C++. Valve (производитель Half-Life) для нас, пользователей, в 1999-2000 году выпустила SDK (Software Development Kit). Это исходные файлы, на которых и написан наш любимый HL. С помощью программы Visual C++ 6.0 и SDK вы сможете изменять Half-Life по своему усмотрению.

1) Создавать новое оружие (например можно вставить в HL пушку m249 из Counter-Strike или огнемёт из Tea m-Fortress).

2) Изменять характеристики старого. Можно например вставить в Egon Secondary Attack - teleportal. При использовании Secondary Attack из Egon‘а вылетают телепорталы, при попадании они переносят противника в произвольную точку на карте.

3) Возможно создание собственного мода: Single, Deathmatch и даже смешанного. Представьте себе: бежите вы по карте Crossfire, забегаете в бункер, нажимаете кнопку (вы знаете о чём я) и. Вместо привычного взрыва на Crossfire появляются Zombie (или любые другие монстры). Вы преспокойно отсиживаетесь в бункере, а другие. А что другие, кто не успел, тот опоздал.

4) Изменять характеристики мостров в Single Player. Возможно создание симбиоза двух монстров. Например плюющийся кислотой, летающий, среляющий огнём Z ombie.

5) Прописать каждому оружию название. Когда выбираешь оружие, в левом-нижнем углу высвечивается его название.

6) Эффект дыма во время появления.

7) Вставка дополнительных фич. (Бинокль, прибор ночного видения, радар).

8) Лазерная указка на любое оружие.

9) Можно менять скорость перемещения, высоту прыжков.

10) Стрельба сквозь стены.

Этот список можно продолжать до бесконечности.

Итак с чего начинается мод:

1) Желание. Без желания нет мода.

2) Программы для редактирования Half-Life. Список нужных для редактирования программ приведён ниже.

3) Концепция. Нужно определиться, какой мод вы хотите сделать.

4) Команда. Одному делать движок, карты и модели нецелесобразно и очень долго.

Файлы, которые можно редактировать и программы, которые редактируют эти файлы.

DLL - В Халфе два ДЛЛ - файла доступных для редактирования (серверный и клиентный). Редактор: Visual C++ 6.0.

WAD - Это архив в котором хранятся текстуры для уровня и некоторая системная графика. Редактор: Wally.

PAK - Это архив в который можно запихнуть любые файлы вашего мода. Смотреть с помощью PakExplorer.

CFG - В таких файлах хранятся настройки. Редактор: любой текстовый редактор.

MDL - Это своеобразная модель-архив. Потому как в ней хранятся и модели, и анимация, и текстуры. Редакторы: MilkShape и 3DStudio Max.

SPR - Это обычный спрайт, то есть 2D-анимация. Смотреть с помощью SPR View, Редактор: SPR Wizard.

BSP - Формат карты. Создание и редактирование (только *.rmf и *.map) - WorldCraft, Декомпилировать (получить *.map) - WinBSP .

FGD - Этот файл не влияет на работу мода, но нужен для создания карт. Редактор: любой текстовый редактор.

Первые шаги. Создание cобственного мода.

Во-первых создаём директорию MyMod (c:/games/half-life/mymod)

Во-вторых создаём файл liblist.gam. Он выглядит примерно так:

version "BETA 1.0"

url_info "http://ваш сайт.ru/"

В-третьих создаём директорию gfxshell и записываем в неё файл splash.bmp.

В-четвёртых создаём директорию dlls и записываем в неё вашу hl.dll.

Вот и всё, заходим в half-life, custom game, выбираем появивщуюся

надпись mymod и нажимаем activate.

А где взять свою hl.dll, спросите вы, отвечаю: с помощью SDK.

Создание собственной hl.dll.

Как я уже говорил, нужен Visual C++ 6.0, если он у вас есть, приступим:

Запускаем Visual C++ 6.0, File/Open, Sdk/SourseCode/dlls/ в графе тип файлов выбираем Pojects (.dsp), затем, открываем hl.dsp. Изменяем то что нужно (об этом позже), сохраняем файл и нажимаем F5. Вправом окне смотрим путь, куда записалась готовая библиотека. Находим её на диске и вставляем в /half-life/mymod/dlls. Вот и всё, запускаем hl, активируем mymod и смотрим результат.

Пример: как добавить надпись с названием текущего оружия около цифр жизней.

ЧАСТЬ 1:

Откроем файл "weapons.h".

Нам нужно добавить поле к структуре ItemInfo.

int iFlags;
int iWeight;
const char *weaponName; //***** NEW
> ItemInfo;

Опускаемся ниже по этому файлу к CBasePlayerWeapon class. Здесь мы увидим:

virtual void UpdateItemInfo( void ) <>; // updates HUD state

virtual void UpdateItemInfo( void );

ЧАСТЬ 2:

Прямо перед "weaponbox code", добавим:

void CBasePlayerWeapon::UpdateItemInfo( void )
ItemInfo iInfo;

sprintf(szText, "%s selected. ", iInfo.weaponName);

hText.effect = 0; // Fade in/out

hText.r1 = hText.g1 = hText.b1 = 255;
hText.a1 = 255;

hText.r2 = hText.g2 = hText.b2 = 255;
hText.a2 = 255;

hText.fadeinTime = 0.2;
hText.fadeoutTime = 1;
hText.holdTime = 1.5;
hText.fxTime = 0.5;

UTIL_HudMessage(m_pPlayer, hText, szText);
>
>
>

ЧАСТЬ 3:

Теперь нужно добавить название для каждого оружия.

Для примера откроем "crowbar .cpp".

Теперь добавляем параметр WeaponName:

p->iId = WEAPON_CROWBAR;
p->iWeight = CROWBAR_WEIGHT;
p->weaponName = "Crowbar"; //***** NEW
return 1;

Фоновые карты — это трёхмерные динамические задние планы, которые появляются за игровым меню при запуске игры. Это компилированные BSP-карты, как обычные. Обычно фоновые карты используют для однопользовательских модификаций (как Half-Life 2), но их можно использовать для любых других. Фоновая карта может меняться, как только игрок проходит главу, в зависимости от настроек мода

Contents

Создание фоновой карты

Фоновые карты могут быть созданы как диорамы. Примитивы на карте должны быть жёстко лимитированы для того, чтобы они были видны только в камере. Цель — использовать как можно меньше геометрии, чтобы карта была меньше по размеру и загружалась быстрее.

Чтобы создать фоновую карту:

  • Создайте обычные примитивы на сцену, которую вы хотите добавить на фоновую карту. Они не должны содержать утечек и должны быть герметичны как обычный игровой уровень. Добавьте освещение и материалы, если нужно. Вы можете начать с уже существующего уровня — просто удалите или спрячьте ненужную геометрию и энтити. Все ненужные элементы желательно удалить.
  • Добавьте info_player_logo (для многопользовательских игр) или info_player_start (для однопользовательских игр) на карту. Их расположение на карте не важно, главное, чтобы они не висели в воздухе, иначе игрок упадёт и получит повреждения.
  • Добавьте на карту энтити point_viewcontrol в ту позицию, откуда вы бы хотели видеть карту. Задайте ей подходящее имя (например: "viewcontrol_background1" ).
  • В настройках отключите флаги Start at Player / Follow Player / Interruptable by Player и включите Freeze Player / Infinite Hold Time / Snap to goal angles / Make player non-solid.
  • Добавьте энтити info_target. Это точка, на которую будет смотреть камера после загрузки карты. Задайте ей имя, похожее на имя камеры (например: "target_background1" ).
  • Выберите point_viewcontrol. Задайте параметру Entity to look at (Энтити, на которую надо смотреть) значение info_target, которую вы создали как целевую энтити.
  • Как только фоновая карта загрузилась, point_viewcontrol должна быть активирована. Самый лёгкий способ — logic_auto. Добавьте вывод OnMapSpawn, который вводит в point_viewcontrol параметр Enable (Включено).
  • Вы можете задать другие выводы для logic_auto для событий, которые должны совершаться после загрузки карты, такие как мерцание ламп, передвижение NPC, воспроизведение звуков и т.п. Будьте аккуратны с наполнением карты. Карты на заднем плане меню должны быть хорошо оптимизированы, должны быстро загружаться и не сильно отвлекать от игрового меню
  • Сохраните и скомпилируйте карту также, как и с обычной игровой картой. Если вы хотите заменить готовую фоновую карту Half-Life 2, прочитайте пункт "Замена фоновых карт Half-Life 2" внизу, чтобы убедиться в правильности названия карты.

Тестирование фоновой карты

Чтобы проверить фоновую карту, запустите игру без прямого запуска карт. После загрузки, включите консоль разработчиков и введите:

— имя вашей фоновой карты. Как только она загрузится, поверх неё появится игровое меню.

После тестирования на работоспособность фоновой карты, вы можете вернуться в редактор, изменить её и улучшить. Вы, возможно, захотите добавить больше деталей, изменить расположение камеры или её цели. Просто скомпилируйте карту заново и используйте map_background для просмотра изменений. После того, как вы настроите финальный облик карты, хорошо бы оптимизировать уровень по максимуму, например применив материал toolsnodraw на те грани, которые не видны камере. Опять же, цель — сделать фоновую карту настолько лёгкой, насколько возможно, чтобы она быстро загружалась и рендерилась.

См. maps\sdk_background.vmf для примера фоновой карты.

Материал фоновой карты

Также важно создать материалы заднего плана для вашей фоновой карты. Это изображение появляется как только вы запускаете игру, но фоновая карта ещё не загрузилась. В Half-Life 2 это размытый скриншот фоновой карты (чтобы создать его, используйте размытие по Гауссу на 30 пикс. для картинки 1280px). Когда карта загрузилась, экран плавно переходит из статичной картинки на фоновую карту.


Для карты необходимы два материала:


Например, если ваша фоновая карта называется sdk_background.bsp, вам нужны эти два материала:


Обычно фоновыми материалами являются размытые скриншоты фоновой карты разрешением 1024x1024.

Убедитесь в том, что размер ваших изображений 1024x1024. Главная хитрость в том, как заставить изображение корректно отображаться на мониторах с разными соотношениями сторон (4:3, 16:9, или 16:10), чтобы сжать изображение исходя из разрешения с конечным соотношением сторон.

  • На мониторах 4:3 создайте изображение размером 1280x1024 и измените размер на 1024x1024.
  • На широкоэкранных мониторах создайте изображение размером 1280x800 и также измените его размер на 1024x1024


Вы можете задать клавишу для создания скриншотов в меню Настройки → Клавиатура, когда вы запустили игру. По умолчанию это кнопка F5, и изображение сохраняется в формат .JPG в папку /screenshots . Вы также можете привязать к кнопке консольную команду screenshot , которая сохраняет в формат .TGA.

Файл фонового материала .vmt может выглядеть так:

Для дополнительной информации по созданию материалов, прочтите статью Material Creation:ru. Пример фоновых материалов для карты sdk_background можно найти по этому адресу:

steamapps\common\sourcesdk_content\hl2\materialsrc\console (для исходных .TGA)

half-life 2\hl2\materials\console (для .VMT и .VTF файлов).

Скрипты для привязки фонов к главам в ваших модификациях

Как только вы создали фоновую карту, она должна быть вставлена в правильный файл скрипта для того, чтобы она автоматически отображалась во время нужной главы.

В файле \scripts\ChapterBackgrounds.txt фоновые карты соотносятся с определёнными главами игры. Это список всех игровых глав и их фоновых карт, которые должны загружаться, как только игрок дойдёт до следующей главы.

Вот пример файла ChapterBackgrounds.txt из Half-Life 2:

\scripts\ChapterBackgrounds\titles.txt содержит номера глав. Цифровое значение создаётся для каждой главы игры. Эти ключевые значения могут быть помещены в "Chapter Title Message" (Отображаемое название главы) в Map Properties (Свойства карты) (также называемой "worldspawn") через меню Map в редакторе Hammer. Реальный текст, который вы видите зависит от выбранного языка из этих:

Эти файлы содержат реальные названия глав на разных языках. Текст, введённый здесь, будет отображаться в игре везде, где есть название главы.

Проверка файла chapterbackgrounds.txt

Как только вы внесли изменения в файл chapterbackgrounds.txt , вы можете проверить фоновые карты, используя консольную команду sv_unlockchapters . Эта команда отвечает за то, какие главы игры вы уже прошли, и содержит номер той главы, фоновую карту которой вы хотите посмотреть. Чтобы выбрать фоновую карту главы, надо:

  1. Сохранить файл chapterbackgrounds.txt в папку \scripts
  2. Запустить игру
  3. Открыть консоль разработчика
  4. Ввести sv_unlockchapters n , где n — номер фоновой карты в файле chapterbackgrounds.txt , которую вы хотите посмотреть
  5. Перезапустить игру, и тогда отобразится выбранная карта.

Note: Текущее значение sv_unlockchapters сохраняется в файле настройки config.cfg , и вы можете его изменять как вам угодно. Для игры Half-Life 2, этот файл находится в hl2\cfg\config.cfg и может быть открыт в любом текстовом редакторе.

Замена фоновых карт Half-Life 2

Если вы хотите заменить встроенные фоновые карты Half-Life 2 своими, просто создайте фоновую карту и материал и замените название карты для определённой главы своим. Имена фоновых карт Half-Life 2 есть в файле chapterbackgrounds.txt :

Например, если вы хотите заменить первую фоновую карту, просто назовите вашу карту background01 . Чтобы заменить фоновую карту главы 10, переименуйте вашу карту в background06

Читайте также: