Как создавать карты для half life 1

Обновлено: 14.05.2024

В HL есть несколько разных типов текстур: обычные текстуры, текстуры с маской, текстуры воды и пр. Тип, которому принадлежит текстура, определяется по её названию, а точнее по нескольким 1-ым символам (приставке, префиксу) в названии текстуры. К примеру, все текстуры воды имеют в начале названия восклицательный знак «!», а текстуры с маской (прозрачные заборы, лестницы и др.) — с фигурную скобку «

Некоторые текстуры нельзя наносить на объект вместе с другими, так как это вызовет ошибку, а посему крайне необходимо знать о совместимости разных видов текстур. Есть также специальные текстуры (всего их 7), которые применяются для создания неба, брашевых триггеров, ограничительных поверхностей и т.д.

Типы текстур:

ЧАСТЬ 1.

1. Обычные (простые) текстуры

Имена простых текстур начинаются с английских букв: a-z, A-Z или цифр от 0 до 9.

Примеры простых текстур:

Как видно из примеров выше, простые текстуры могут быть самыми различными: скалы, ящики, земля и пр. В основном уровни текстурируются ими.

2. Накладывающиеся в случайном порядке текстуры

Имена данных текстур начинаются с цифр: от –0 до –9, со знаком «минус». Затем, после цифр, идёт какое-либо простое имя.

Пример серии из 2-х накладывающихся в случайном порядке текстур:

Из примера выше видно, что текстуры из 1-ой серии называются так: –0название, –1название, –2название и т.п.

В целом, это тоже простые текстуры, как и в первом случае, только движок Half-Life, когда увидит «минус» перед названием, накладывает их случайным образом. На наш взгляд, выгода от использования данных текстур под вопросом и просто не видна обычному игроку, который не всматривается в стены по ходу игры :-)

Требование к подобным текстурам
Накладывающиеся в случайном порядке текстуры должны, как говорят, тайлиться (от английского tile — черепица), то есть хорошо подходить друг к другу. И всякая текстура должна являться продолжением предудущей и всех соседних текстур. Получается, что создавая подобные текстуры, необходимо добиваться плавности перехода между краями текстур, то есть не должно быть заметно швов.

3. Анимированные текстуры

Имена таких текстур начинаются с цифр: от +0 до +9; со знаком «+».

Пример серии анимированных текстур:

Примеры анимированных текстур

Текстуры начинающиеся с цифр от +0 до +9 в игре отображаются друг за другом, создавая таким образом анимацию. К примеру, мониторы компьютеров на cs_militia. Другой пример: водопад, где анимация создаёт иллюзию движения воды. В общем и целом, вещь достаточно нужная.

Требование к таким текстурам
Анимированные текстуры должны подходить друг к другу, то есть иметь правильную последовательность анимации.

4. Переключаемые

Имена переключаемых текстур начинаются с +А и цифр: +0 до +9.

Пример серии переключаемых текстур:

Единственное, чем отличается переключаемая текстура от анимированной, является нахождение в серии одной текстуры, имя которой начинается с +А (смотрите картинку выше).

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

5. Светящиеся текстуры

», хотя в принципе всякая текстура в HL может излучать свет, но об этом позднее.

Примеры светящихся текстур:

Текстуры с именем, начинающимся с тильды, излучают свет, только если они записаны в спец файле с расширением *.RAD. Вообще говоря, можно сделать светящейся любую текстуру (пусть даже и без тильды), главное: прописать её имя в *.RAD файл. Этот файл подключается при компиляции и используется при рассчёте освещённости.

Изначально программы-компиляторы ищут данные о светящихся текстурах в файлах lights.rad или имя_карты.rad, но, по идее, можно назвать *.RAD файл как хочешь, только при этом придётся указать имя этого файла в параметрах компиляторов.

Подробно об использовании светящихся текстур и создании *.RAD файла мы рассказываем в отдельном материале этой главы.

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

А зачем тогда светящиеся текстуры?
В самом деле, многие из вас спросят: для чего задействовать светящиеся текстуры, если значительно увеличивается время компиляции, да, ещё надо тратить драгоценное время на создание собственного *.RAD файла?

Судя по следующему рисунку, можно видеть «зачем»:

Разница между использованием светящихся текстур (слева) и объекта light

Как видно из картинки, светящаяся текстура делает лампу как бы в самом деле включённой. А вот если использовать простой источник света — энтити-объект light, то стороны лампы останутся тёмными.

Заметим попутно, что есть ещё один способ заставить энтити-объект светиться. Только при этом он совершенно не будет излучать свет, а просто будет ярким. Значительным преимуществом этого метода перед светящимися текстурами является весомая экономия времени компиляции.

Как это работает: превратите лампу в какой-нибудь брашевый энтити-объект: func_wall, func_illusionary и т.п. и выставьте параметр Minimum light level (бывает встречается _minlight) в значение отличное от нуля, к примеру: 0.7. Теперь лампа будет светиться, хоть и не излучать свет. Около лампы необходимо будет создать простой источник света light или light_spot, так как, повторимся, сама она свет не испускает.

Примечание! Чтобы использовать выше описанный метод, у вас должна быть свежая версия *.FGD файла — 0.7.7 и выше) и утилиты Зонера 2.5.3 и выше.

6. Текстуры с маской или прозрачные текстуры

Примеры текстур с маской (частично прозрачных):

Примеры текстур с маской (частично прозрачных)

Эти текстуры называются текстурами с маской, так как синие части в игре будут абсолютно прозрачными. Чтобы синие части таких текстур стали прозрачными, нужно браш превратить в энтити: func_wall, func_illusionary, func_breakable и т.п. Далее нужно выставить следующие параметры отображения:

Возможные проблемы
Часто при изготовлении своими силами подобных текстур появляются проблемы из-за неправильной цветовой гаммы. Будущие прозрачные места должны быть чистого синего цвета в формате R=0 G=0 B=255. Также рекомендуется текстурировать объект со всех сторон 1-ой и той же текстурой. Но вобщем-то разрешается раскрасить один объект различными текстурами с маской и еще SKY-текстурой.

7. Текстура воды, жидкости

Имена текстур жидкостей всегда начинаются с восклицательного знака «!».

Примеры текстур жидкостей:

Примеры текстур жидкостей

Важно! Если вы раскрашиваете некий энтити-объект текстурой воды (жидкости), то раскрашивать нужно ВСЕ СТОРОНЫ объекта. В противном случае появится ошибка.

Можно сказать, в 99 процентах случаев текстура воды наносится на объект func_water, который собственно и используются для создания жидкостей. Но можно текстуру жидкости наложить и на простой браш. В этом случае движок Half-Life автоматом сделает этот браш водой. Но! Подобная вода не будет двигаться, у нее не будет волн и она не будет прозрачной — и вообще это уже не вода :-) Лучше жидкость делать объектом func_water.

Прозрачность жидкости выставляется в параметрах отображения энтити-объекта func_water:

    Render Mode: Texture
    FX Amount: от 50 до 150 (оптимально)

Возможные проблемы
Важно! Непременно все стороны объекта должны быть закрашены в текстуру жидкости причем в 1 и ту же! Запрещается смешивать простые текстуры с текстурой жидкости. Это обязательно вызывает ошибку при компиляции уровня.

8. Scroll-текстуры (двигающиеся, скроллящиеся)

Имена таких текстур начинаются со слова «Scroll». Применяются двигающиеся текстуры при создании конвейеров, воды с течением, водопадов и других подобных объектов.

Примеры двигающихся текстур:

Примеры двигающихся текстур

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

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

Возможные трудности
Нужно опытным путем подбирать правильность нанесения движущейся текстуры, потому как она может скроллиться, к примеру, против движения конвейера или под углом 90 градусов. Раскрасте конвейер, откомпилируйте уровень и проверьте — совпадает ли движение текстуры с направлением толкания игрока.

ЧАСТЬ 2.

Специальные текстуры

  • AAAtrigger
  • SKY
  • CLIP
  • ORIGIN
  • HINT / SKIP
  • NULL

Следует запомнить, что текстурами CLIP и ORIGIN нужно ПОЛНОСТЬЮ расскрашивать объект. Эти спец текстуры не допускают наличия на объекте других текстур вместе с ними. Все данные специальные текстуры в игре прозрачны и используются в строго определённых случаях.

Помните также, что внешний вид специальных текстур, может различаться. Здесь нет ничего страшного.
Важно, чтобы текстура имела именно такое спец название. То есть если текстура названа SKY, но она не такая, как представлена здесь, то можено не боясь её использовать, ошибки не будет. Это же относится и других спец текстур. Можно даже самостоятельно нарисовать картинки для спец текстур и потом пользоваться ими при создании уровня, нужно лишь дать им точно такие же специальные, служебные названия.

9. AAAtrigger — текстура для триггеров

Используется для создания триггеров и других брашевых энтитей прозрачных в игре.

Ниже вы можете видеть, как выглядит эта текстура (может быть другое изображение при использовании другого *.wad файла):

Эта текстура расположена в главном WAD-файле HL — halflife.wad в директории Valve. Используется для создания триггеров и других прозрачных в игре брашевых энтитей. Примеры объектов: trigger_once, trigger_multiple, trigger_hurt, trigger_push, env_bubbles, func_buyzone, func_bomb_target, func_ladder и др. Не советуется расскрашивать простые объекты этой текстурой, так как это может привести к ошибке.

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

10. SKY — текстура неба.

Используется при создании неба. Браши, окрашенные текстурой SKY-текстурами (они называются SKY-брашами), создаются вокруг карты, образуя некий колпак. При компиляции программой-компилятором HLRAD.EXE при помощи одного объекта light_environment со SKY-брашей распространяется свет.

Эта текстура расположена в главном WAD-файле HL — halflife.wad в директории Valve. Важно! Все стороны брашей, составляющих небо, должны быть окрашены специальной текстурой SKY. Если в уровне есть точечный объект light_environment (солнышко), то данная текстура будет излучать свет. Именно таким образом создается общее освещение в уровне.

Также эта текстура применяется мапперами для снижения количества рисуемых полигонов (параметр r_speeds). Это происходит при нанесении SKY-текстуры на те стороны объектов, которые игрок в игре не видит (крыши домов, обратные стороны стен, дно карты и др.). Подробнее об использовании текстуры SKY для повышения FPS (числа кадров в секунду) в уровне мы рассказываем в материале: «Улучшенная версия ZHLT Custom Build» и «Все об r_speeds».

Возможные проблемы
Проблемы с данной текстурой могут возникнуть лишь тогда, когда вы используете стандартные программы-компиляторы, идущие вместе с Hammer'ом: qcsg, qbsp2, vis, qrad, а не утилиты Зонера. При использовании этих старых компиляторов, игрок может «пролетать» сквозь небо. Чтобы этого не было, нужно около SKY- брашей неба создавать и CLIP-браши. Но так как мы используем утилиты Zoner's Half-Life Tools, то проблем с этой не будет и нет необходимости создавать какие-либо CLIP-браши.

11. CLIP — ограничение передвижения игроков

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

Эта текстура расположена в главном WAD-файле HL — halflife.wad в директории Valve.

В Учебнике находится подробный материал о применении CLIP-брашей (смотрите главу VII).

Возможные проблемы
CLIP-браш должен быть расскрашен спец текстурой CLIP совершенно со всех сторон, иначе появится ошибка при компиляции уровня.

12. ORIGIN — определяет размещение оси вращаюшихся объектов

Используется для определения оси вращающихся объектов (func_door_rotating, func_vehicle и пр.).

Эта текстура расположена в главном WAD-файле HL — halflife.wad в директории Valve. Этой спец текстурой окрашивается ORIGIN-браш — простой браш, но расскрашенный со всех сторон спец текстурой ORIGIN. ORIGIN-браш своим центром определяет точку, через которую проходит ось вращения энтитей: вращающихся дверей, вентиляторов, платформ, маятников, поезда, автомобиля, вращающейся платформы. В целом, если энтити хоть как-то вращается, то он без сомнения должен иметь один ORIGIN-браш.

ORIGIN-браш должен входить в состав энтити, то есть быть его неотделимой частью. Сначала создается браш (дверь, машина и пр.), потом создается ORIGIN-браш, своим центром определяющий ось вращения, и далее всё вместе: и браш, и ORIGIN-браш, превращаются в энтити, к примеру, func_rotating (вентилятор). Такой же порядок действий необходимо соблюдать при создании любого вращающегося объекта.

Подробно об использовании ORIGIN-брашей мы рассказываем в материале: «Использование ORIGIN-брашей».

Предостережение
ORIGIN-браш должен быть раскрашен специальной текстурой ORIGIN совершенно со всех сторон! Абсолютно не допускается наносить какую-либо другую текстуру вместе с ORIGIN. Такой браш должен всенепременно входить в состав энтити, а не состоять отдельно. Если в составе одного вращающегося энтити будет сразу 2 или более ORIGIN-брашей, появится ошибка. Ось вращения для всякого вращающегося энтити-объекта должна быть только 1. Форма и размер ORIGIN-браша не важны, главное, расположение его центра.

13. HINT/SKIP — оптимизация карты, повышение FPS

Эта пара текстур используется для снижения числа отрисовываемых движком полигонов (параметр r_speeds). Подробно об использовании HINT-брашей мы рассказываем в материале: «Оптимизация карты (R_Speeds)».

Ниже вы можете видеть изображения текстур HINT/SKIP (могут быть другими при использовании других *.wad файлов):

Эти текстуры можно нарисовать самому или отыскать их в текстурных wad-файлах zhlt.wad и zeditor.wad, которые идут вместе с компиляторами Зонера. Грамотное использование HINT/SKIP-брашей помогает снизить «тормоза» на карте, то есть увеличить FPS (количество кадров в секунду).

В игре HINT-браши совершенно прозрачны и через них можно безпроблемно проходить. Не советуем расскрашивать обычные объекты этими текстурами!

Возможные проблемы
Трудно понять принцип действия HINT/SKIP-брашей, ещё труднее грамотно разместить их в уровне. Неправильное применение HINT/SKIP-брашей может вызвать обратный эффект — повышение параметра R_Speeds в уровне. Помните, что браш, закрашенный данными текстурами, не может быть окрашен какой-либо другой текстурой.

14. NULL — оптимизация карты, повышение FPS

Наносится на стороны объектов, которые игрок не видит в игре, тем самым уменьшает количество отрисовываемых полигонов и повышает FPS (количество кадров в секунду).

Ниже вы можете видеть изображение текстуры (может быть другое при использовании других *.wad файлов):

Как создавать моды или карты для Half-Life 1 ?

Как создавать моды или карты для Half-Life 1? В Source SDK (STEAM) нету создания карт для Half-Life 1 (хотя half-life 1 у меня есть в стиме). Как создать мод или карту для самый первой части Half-Life .

Эээ. Мил человек. Это тебе для начала нужно забыть слово Стим как кошмар.
Потом взять в зубы Гугл и искать русскоязычные форумы по моддингу Халвы. И читать их до усёру.
Потом подучиться программированию - хотя-бы азам С++

Редактор карт


У кого нибудь есть он?
У меня есть.
Где его скачать?
В интернете.
Трудно ли делать карты?
Зависит от человека.



Онотолевич- Да, в хл играю уже двенадцать лет, но просто творческий бум у меня недавно появился. Я уже освоил второй UnrealEd и первый CryEngine Sandbox, так что думаю с хаммером проблем не будет.


Джек Карвер.
Лучше сразу садись за Source SDK, имхо.



Голдсорс-маппинг проще. Лучше начать с него.
+1 Особенно учитывая, каким глючным стал ССДК, его баги могут легко отпугнуть ньюфага. К тому же, в любом случае, навыки, которые получишь при работе с глдсрц тебе пригодятся и в срц, и тебе будет легче работать там.
При обучении пользуйся этим учебником - хоть он и для КС, практически всё сказанное там относится и к ХЛ, к тому же, это действительно лучший учебник по глдсрц, для Сорца ты ничего подобного, по крайней мере, на русском языке, не найдёшь. Там же можешь скачать весь необходимый софт (только Зонеры оттуда не качай, там устаревшие, пользуйся ссылкой Киллера). Если планируешь перебраться на Сорс, советую учить моделинг, т.к. там практически вся более-менее сложная геометрия (кроме дисплейсментов) - модельная. В общем-то, и в современном глдсрц-маппинге тоже наблюдается тенденция активного юза моделей.
Кроме Хаммера, кстати, есть ещё куча альтернативных редакторов - QuArK, bsp, Qoole, NetRadiant, GtkRadiant, но лично я не советую ими пользоваться, всё-таки Хаммер заточен под ХЛ, да и он довольно удобен, по крайней мере, на то время он действительно считался очень удобным.

Трудно ли делать карты?
Хорошие - разумеется. Но, в принципе, работать в Хаммере несложно, особенно если ознакомишься с вышеуказанным учебником, со временем освоишься в любом случае, и будешь чувствовать себя как рыба в воде.

Игре уже 13 лет, между прочим.
И, между прочим, под неё существует такой мод, как Paranoia, глядя на который с трудом дашь движку такую цифру. Я уже молчу про HLFX, на основе которого вышел Lost in Black Mesa - этот мод умудрялся подтормаживать на моей 3х-летней видеокарте. И вообще, сделать хорошую, красивую и интересную карту можно на любом движке - был бы скилл, трудолюбие, и, конечно же, желание. Даже не юзая навороты спирита и ХЛФХ можно, заюзав текстуры 512*512 (максимальный размер текс примерно 540*540, если не ошибаюсь) и детальные текстуры, сделать довольно графонные пейзажи.

(есть бета 3.5, но она возможно менее стабильна)
Нет, она мало чем отличается от 3.4, зато она отображает модели прямо в редакторе, что удобно (нужен специально отредактированный фгд, на кс-маппере ты найдёшь для КС, при необходимости, найди нужный код и вставь его в фгдшник ХЛ, либо, если не хочешь этим заморачиваться, для расстановки моделей просто загружай свою карту как КСную). К тому же, можно без проблем хранить оба экзэшника в одной папке. Кроме того есть CSM Hammer Editor (даже целый СДК для ХЛ1 от CSM), хотя какими-то особенными фичами он не может похвастать, так что я рекомендую классический Хаммер.

Я уже освоил второй UnrealEd и первый CryEngine Sandbox
Ы, осталось освоить только ХЛ и Q3 для полного счастья. Если вдруг надумаешь помаппить и под Q3 - советую юзать NetRadiant. Хотя после Хаммера под ним (как и под любым Радиантом) поначалу сложно работать, я два дня ругался, пока наконец освоился ^_^

Введение в сурс дела

Репозиторий

Исходный код SDK находится в репозитории на GitHub. Склонируйте его в любое удобное для вас место:

Выбор ветки

Если вы хотите написать свой первый мод для Half-Life 2/Episode 1/2, то используйте директорию sp/ и Source SDK Base 2013 Singleplayer.

Если же вы извращенец и хотите написать свой первый мод для Half-Life 2: Deathmatch, то используйте директорию mp/ и Source SDK Base 2013 Multiplayer.

ВАЖНО: Туториал будет рассматривать программирование под ветку SP, поэтому пути, содержащие hl2 в пересчете на MP могут содержать hl2mp вместо hl2 .

Стиль кода

Клиентские (client.dll) классы именуются с префиксом C_ , а серверные (server.dll) — с префиксом C :

Поля класса именуются с префиксом m_, использование венгерской нотации рекомендуется (на то есть свои причины, которые здесь обсуждать нет смысла):

Структура кода

SDK, так же как и движок, разделён на несколько частей.

  • client.dll
    Клиентская часть игры.
    Отвечает за рендеринг, предсказания и ввод.
    Расположена: src/game/client/
  • server.dll
    Серверная часть игры.
    Отвечает за игровую логику, ИИ и т.д.
    Расположена: src/game/server/
  • tier1.lib
    Библиотека, содержащая в себе множество полезных фич, например UTL ("валвовская" версия STL), interface convention и т.д.
    Расположена: src/tier1/
  • raytrace.lib
    Библиотека, внезапно содержащая в себе функции и типы, предназначенные для рейтрейсинга. Честно говоря, я так и не понял, что библиотека для компиляторов делает здесь.
    Используется компилятором vrad и, судя по утечкам исходных кодов, редактором уровней Valve Hammer Editor.
    Расположена: src/raytrace/
  • mathlib.lib
    Библиотека, содержащая в себе множество типов и функций, используемых в "повседневной" математике Source.
    Расположена: src/mathlib/
  • vgui_controls.lib
    Библиотека, содержащая в себе реализации разных элементов (кнопки, панели) VGUI2.
    Используется почти повсеместно.
    Расположена: src/vgui2/vgui_controls/

Source SDK имеет свой генератор проектов (sln, Makefile, etc.) с блэкджеком и… кхм…
Называется он Valve Project Creator и находится в src/devtools/bin .

Проекты генерируются автоматически с использованием специальных .VPC файлов. Синтаксис этих файлов прост до безобразия — простой набор пар ключ-значение.

Вот пути до некоторых таких файлов:

ВАЖНО: При внесении ЛЮБЫХ изменений в VPC файл решение должно быть заново перегенерировано!

Генерация проектов

Проекты генерируются вызовом скрипта, расположенного в директории src/ .
В самом простом случае — достаточно просто открыть src/creategameprojects.bat .
После генерации в src/ будет находиться games.sln.


Исключение HL2

SDK имеет внутри себя также разделение на HL2 и Episodic. Использование второго позволит нам иметь некоторые фичи, например отдельную от стамины шкалу заряда фонарика.

И поэтому, чтобы не компилировать лишний код, мы можем просто исключить HL2 из скриптов:

  1. Откройте src/creategameprojects.bat в любом текстовом редакторе.
  2. Удалите из командной строки часть /hl2
  3. Сохраните файл и сгенерируйте проект.
Другие скрипты

Рядом с creategameprojects.bat также лежит его клон для bash а также два интересных файла — createallprojects.bat и его клон для bash.

Эти два скрипта заставляют VPC создавать проекты не только для чистых библиотек мода, но и для различных утилит, таких как vrad (Radiosity!) или height2normal.

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

Первичная сборка и запуск

Сборка

Чтобы удостовериться, что вы всё сделали правильно, необходимо собрать всё сгенерированное решение. Итак, собираем (вы же ведь открыли решение в IDE?):

  1. Переключите конфигурацию в Release.
    ВАЖНО: При сборке в Debug мод крайне нестабилен.
  2. Соберите ВСЁ решение (F6)
  3. Если сборка закончилась с ошибками, повторите шаг 2.
  4. Если ошибки повторяются, пересоздайте проекты (creategameprojects) и повторите все шаги начиная с 1.

После сборки в папке game/mod_hl2/bin/ или game/mod_episodic/bin/ должны появится наши клиентская и серверная библиотеки!

Запуск — Способ 1 — Steam
  1. Копируем нашу папку mod_xxx в путь/до/Steam/steamapps/sourcemods/
  2. Перезапускаем Steam (либо запускаем, если еще этого не сделали. )
  3. Ищем в библиотеке "My First Episodic Mod" или "My First HL2 Mod"
  4. В свойствах устанавливаем дополнительные параметры командной строки:
  5. Запускаем, в консоли запускаем карту sdk_vehicles (SP) или dm_lockdown (MP)
Запуск — Способ 2 — Visual Studio

Я рекомендую использовать именно этот способ — не копировать же бинарники мода каждый раз после сборки!

  1. Заходим в свойства проекта (не решения. ) во вкладку Debugging
  2. В поле Command вписываем:
  3. В поле Working Directory вписываем:
  4. В поле Command Arguments вписываем:
  5. Сохраняем, запускаем (F5)!
  6. Запускаем, в консоли запускаем карту sdk_vehicles (SP) или dm_lockdown (MP)

Если карта загрузилась и вы можете передвигаться и двигать камеру мышью — сборка успешна!


Первая модификация в коде

Функции семейства Msg()

Функции Msg() , DevMsg() , Warning() , DevWarning() и ConColorMsg() являются чем-то вроде классического printf() , но в мире программирования под Source SDK. Эти функции так или иначе выводят какой-то текст в консоль разработчика и debug output.

Говорящий пистолет!

Вступление

Немножко терминов

Сам по себе Source SDK — набор утилит и программ, помогающих в разработке собственных уровней и модификаций для игры, а также исходные коды Half-Life 2 и эпизодов.

Игра/Мод (Для сурса нет никакой разницы, игра это или мод :p) — скомпилированные исходные коды SDK.

Так почему же именно Source?!

  1. Модульность. Это может показаться минусом для некоторых, но почти все подсистемы движка вынесены в отдельные модули, каждый из которых может быть заменен без пересборки всего движка.
  2. Чрезвычайная гибкость. При достаточном количестве усилий вы можете сделать на Source игру абсолютно любого жанра.
  3. Движок и SDK разрабатывались огромным количеством людей, поэтому код SDK (а также утекший в сеть три раза код движка разных версий, но об этом позже ( ͡° ͜ʖ ͡°) ) состоит из множества разных стилей программирования! Я почти уверен, что именно работа с Source SDK подарила мне умение (но не желание. ) читать чужой код.
  4. Порог вхождения. Он не слишком низок и не слишком высок. Достаточно знать C++ и уметь вчитываться в документацию!
  5. К моменту появления идеи о написании туториала у автора попросту не было новой версии юнити.

Что нам необходимо?

  1. Ну прежде всего хотя бы базовые знания C++ (Достаточно знать его на уровне Си с классами).
  2. Любая Microsoft Visual Studio с Multibyte MFC Library и Microsoft Build Tools 2013 (v120/v120_xp). Чтобы не морочить себе голову, можно просто установить VS2013. или любой другой.
  3. Steam с установленным Source SDK Base 2013 [Single|Multi]player (также необходимо в свойствах "игры" установить бета-версию upstream, иначе мод будет падать)
  4. В будущем также знание HLSL, но не сейчас :)

Source Modding — Часть 1 — Основы основ

В мире существует множество игровых движков, но нет ни одного движка, похожего на Source своей историей и особенностями.

В этом (пилотном) уроке мы разберем простейшие действия с исходными кодами SDK, а также внесем наше первое изменение в код Half-Life 2.


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