Source Modding — Часть 1 — Основы основ
В мире существует множество игровых движков, но нет ни одного движка, похожего на Source своей историей и особенностями.
В этом (пилотном) уроке мы разберем простейшие действия с исходными кодами SDK, а также внесем наше первое изменение в код Half-Life 2.
Вступление
Немножко терминов
Сам по себе Source SDK — набор утилит и программ, помогающих в разработке собственных уровней и модификаций для игры, а также исходные коды Half-Life 2 и эпизодов.
Игра/Мод (Для сурса нет никакой разницы, игра это или мод :p) — скомпилированные исходные коды SDK.
Так почему же именно Source?!
Что нам необходимо?
Введение в сурс дела
Репозиторий
Исходный код SDK находится в репозитории на GitHub. Склонируйте его в любое удобное для вас место:
Выбор ветки
Если вы хотите написать свой первый мод для Half-Life 2/Episode 1/2, то используйте директорию sp/ и Source SDK Base 2013 Singleplayer.
Стиль кода
Поля класса именуются с префиксом m_, использование венгерской нотации рекомендуется (на то есть свои причины, которые здесь обсуждать нет смысла):
Структура кода
SDK, так же как и движок, разделён на несколько частей.
Вот пути до некоторых таких файлов:
ВАЖНО: При внесении ЛЮБЫХ изменений в VPC файл решение должно быть заново перегенерировано!
Генерация проектов
Исключение HL2
SDK имеет внутри себя также разделение на HL2 и Episodic. Использование второго позволит нам иметь некоторые фичи, например отдельную от стамины шкалу заряда фонарика.
И поэтому, чтобы не компилировать лишний код, мы можем просто исключить HL2 из скриптов:
Другие скрипты
Рядом с creategameprojects.bat также лежит его клон для bash а также два интересных файла — createallprojects.bat и его клон для bash.
Эти два скрипта заставляют VPC создавать проекты не только для чистых библиотек мода, но и для различных утилит, таких как vrad (Radiosity!) или height2normal.
Сейчас использовать я его вам настоятельно не рекомендую, так как свои собственные компиляторы карт нам пока не нужны.
Первичная сборка и запуск
Сборка
Чтобы удостовериться, что вы всё сделали правильно, необходимо собрать всё сгенерированное решение. Итак, собираем (вы же ведь открыли решение в IDE?):
После сборки в папке game/mod_hl2/bin/ или game/mod_episodic/bin/ должны появится наши клиентская и серверная библиотеки!
Запуск — Способ 1 — Steam
Запуск — Способ 2 — Visual Studio
Я рекомендую использовать именно этот способ — не копировать же бинарники мода каждый раз после сборки!
Если карта загрузилась и вы можете передвигаться и двигать камеру мышью — сборка успешна!
Первая модификация в коде
Функции семейства Msg()
Заключение
Чему мы научились?
[Я надеюсь, что] из данного урока мы выяснили:
Что дальше?
Во второй части мы разберем систему сущностей Source SDK.
Установка Source SDK












Contents
Source SDK доступен бесплатно всем пользователям Steam Он используется для разработки модов и контента для Source 2006, Source 2007 и Source 2009.
Более поздние игры от Valve используют свой собственный набор инструментов SDK или Authoring Tools:
Authoring Tools в настоящее время поставляется в виде бета-версии соответствующих игр
Мы переводим на Authoring Tools следующие дистрибутивы игр:
Ранее эти средства распространялись отдельно от игры объединенные в один пакет (приложение «Source SDK» ). Сейчас же мы делаем схожую с L4D и CS:GO модель инструментов. Согласно той модели SDK Tools по умолчанию является частью игры, поэтому все, что вам нужно сделать, чтобы запустить утилиты SDK Tools, это запустить игру и обновить её до последней существующей версии. Пожалуйста, обратите внимание, что эти инструменты будут доступны только под ОС Windows.
Теперь обратите внимание на папку BIN. (Например: [steam]/steamapps/common/Team Fortress 2/bin ). Там Вы уведите несколько новых *.bat файлов, который можно использовать для настройки среды разработки и запуска соответствующих инструментов:
Если у Вас есть проблема с запуском, убедитесь что не где в путях не прописана переменная среды VPROJECT. Если Вы все же используете VPROJECT, то проверьте значение этой переменной среды в системе Windows, командой set в командной строке и установите правильное значение.
Установка и запуск
Следующие инструкции подходят только для установки Source SDK. Если Вам нужно установить Authoring Tools к какой либо игре, то смотрите разделы соответствующих игр..
Для установки новой версии Source SDK 2013 смотри: Source SDK 2013
Инструкция для установки старой версии Source SDK:
После того, как загрузка была завершена, Вы можете запустить SDK из вкладки Tools. Вы также можете создать ярлык на рабочем столе, совершив клик правой кнопкой мыши по SDK и нажав на Create desktop shortcut из появившегося контекстного меню.
Запуск
Как только Steam закончит загрузку, Вы сможете запустить SDK из вкладки Tools (Инструменты). Вы так же можете создать иконку на рабочем столе, нажав правой кнопкой мыши по SDK во вкладке Tools (Инструменты) и нажав на Create desktop shortcut (Создать ярлык на рабочем столе) в появившемся контекстном меню.
При первом запуске SDK, он будет в течении длительного времени извлекаться на жесткий диск. Этого не случится снова, пока SDK не обновится.
Что дальше?
Source SDK
![]() | Внимание! Эта статья ещё не доведена до высоких стандартов качества, согласно нашему проекту очистки. Она может содержать фактические ошибки и глупости, а также иметь грамматические, орфографические и структурные ошибки или просто проблемы со структурой. Статью рекомендуется читать с осторожностью. |
Вы можете помочь очистить эту страницу, исправив орфографические и грамматические, убрав фактические ошибки, переписав разделы, чтобы сделать их чёткими и краткими, и переместив некоторые части по мере необходимости.
Пожалуйста, обратите внимание администраторов прежде, чем снимать шаблон, или Вы будете заблокированы.
Source SDK — набор утилит, позволяющих создавать собственный контент для игр на движке Source 2006, 2007, 2009 и 2013 годов.
Содержание
Обзор [ ]
Source SDK является бесплатным (для некоммерческого использования) набором программ. Source SDK полностью совместим с Half-Life 2 и его эпизодами, а также с некоторыми другими играми на данном движке. При этом, стоит помнить, что многие игры на Source, имеют собственные, модифицированные SDK. К таким играм относятся:
Также, в виде бета-версий, существуют отдельные SDK для:
Содержание [ ]
В SDK входит пять утилит и их компоненты:
Source SDK 2013



Contents
Для начала скачайте исходный код размещённый на GitHub Valve Software Source SDK repository. А теперь вперёд, к созданию великих и прекрасных модов!
Скачивание исходников с GitHub
Git репозиторий
Установка клиента для GitHub (Windows & Mac)
Если Вы хотите обновить код, вы можете сделать это, нажав «Sync» в самом клиенте или кнопку «Sync Branch» в самом репозитарии.
Git CLI (Для всех платформ)
Подробные инструкции о том, как работать с Git на любой платформе с использованием командной строки, включая обновление с репозитария, смотрите на GitHub.
Так, например, с помощью командной строки можно создать копию source sdk 2013 на Вашем компьютере (только с установленным CLI клиентом):
Скачивание
Можно просто скачать ZIP архив со всеми обновлениями, но соответственно загружать и обновлять код придется в ручную.
Особенности создания файлов проекта на различных ОС
Создание файлов проекта и make-файлов
SDK 2013 использует Valve Project Creator (VPC) для создания специальных файлов платформы и make-файлов проекта. Эти специальные файлы, необходимы для создания SDK. Если после выполнения этого шага, Вы обновили какие-либо файлы, то необходимо все действия выполнить повторно.
ОС Windows
В результате должны появиться файлы с расширением *.vcxproj (Visual Studio Project) и *. SLn(Solution) в директории SRC.
ОС Mac OS X & Linux
В результате в Mac OS X должны появиться файлы проекта `*.mak` и Xcode в директории SRC.
в ОС Linux, `.mak` файлы будут сгенерированы в SRC директории.
Информация о VPC
Для получения дополнительной информации о том, как можно использовать скрипты VPC перейдите на страницу, или выполните следующую команду под любой ОС:
Информация о Git репозиторий и игнорируемых файлах
Все сгенерированные файлы с помощью VPC перечислены в файле с расширением *.gitignore и игнорируются при обмене с Git репозиторием.
ОС Windows
Требования к компонентам системы
Чтобы создать Source SDK 2013 под ОС Windows вам нужно Microsoft Visual Studio 2010 с Service Pack 1. Также можно использовать Visual Studio 2012 но только при установленном Visual Studio 2010, при этом в настройках проекта не выбирать «updating», при новой компиляции (Дополнительно в комментариях на GitHub).
Если для создания вашего проекта нужен phonemeextractor, то вам необходимо скачать SAPI 5.1 от Microsoft. Мы не поставляем Speech SDK с Source SDK. Для установки просто поместите sapi51 в каталог src/utils/.
Создание
В результате у Вас должны появиться client.dll и server.dll, необходимые для загрузки Вашего мода под Source движком.
Создание шейдеров
Для добавления шейдеров в ваш мод вам необходимо создать специальные файлы. Для этого, откройте окно командной строки и введите:
Более подробную информацию об инструментах работы с шейдерами Вы можете найти в Source SDK здесь.
Mac OS X
Требования к компонентам системы
В Mac OS X, вам понадобится установленные Xcode 4.2 и «инструменты командной строки» («Command Line Tools»). Вы можете найти это в:
Создание
Запустите инструменты, введите следующую комманду в Terminal:
Когда успешно соберется, вы должны увидеть client.dylib и server.dylib файлы загруженными вместе с Source SDK Base 2013 на ваш выбор.
Linux
Время выполнения клиента Steam
Для построения Source SDK 2013 на Linux ОС, вы должны иметь Steam Client Runtime.
Замените на ту версию, которую только что распаковали.
Выберите вашу архитектуру и debug/release свойства. Затем ответьте Y ко всему остальному.
Постройка SDK
Выполните следующую команду:
В результате у Вас должны появиться client.so и server.so, необходимые для загрузки Вашего мода под Source движком.
Организация кода
Принятые обозначения в названиях файлов
Каждому каталогу требуется свой Source SDK 2013 Base AppID (Идентификатор приложения) для получения базовых файлов:
Эти два базовых приложения очень похожи, различаются в основном графиком обновления. Singleplayer база обновляется только при обновлении HL2 или Эпизодов, которые происходят не так часто. Multiplayer база обновляется несколько раз в год чтобы включить изменения в движке от TF2 и Counter-Strike: Source. Ни одно из этих обновлений не должно сломать совместимость модов.
Структура папок
У всех папок примерно одинаковая структура:
Мы рекомендуем вам следовать данного соглашения при создании собственного мода.
Общие ошибки
Здесь перечислены общие ошибки SDK 2013, имеющиеся на данный момент. Используйте Discussion перед написанием других решений.
«RegKey ошибки при генерации проектов»
Эта проблема обычна вызвана отстутствием ассоциаций с расширениями файлов в вашем реестре.
Visual Studio 2010
error MSB8008: Specified platform toolset (v120_xp) or (v120)
(Project->Properties->Configuration Properties->General->Platform toolset = Visual Studio 2010(v100))
Вы так же можете увидеть действия на скриншоте.
Это работает в Microsoft visual C++ 2010 SP1, как при «release» так и при «debug».
Visual Studio 2012
Утилита созданная участником сообщества для исправления такого типа ошибки в Visual Studio 2012. Используйте на свой риск. Скачать здесь: GitHub (Требуется AutoIt v3).
Не компилируется vgui_controls
Проблема решается приобретением свежей копии дистрибутива SDK. Если вы используете локальный GitHub репозиторий, синхонизируйте (pull) ваши репозитории. Иначе можете скачать ZIP-архив и обновить файлы вручную.
Играем в Source SDK, руководство по маппингу для начинающих
Да, именно играем, а не модим или разрабатываем, смотрим на скриншот ниже. В нашей первой статье мы расскажем, как сделать первые шаги в создании собственных карт с помощью Source SDK.
Создавать игровые уровни сложно, но интересно, и вы не только сами сможете порадоваться (хотя иногда можно и огорчиться) результатам своих трудов, но и возможно их оценят тысячи других игроков по всему свету.
Этот урок будет сфокусирован на создании однопользовательских карт для Half-Life 2, но полученные навыки пригодятся вам и в работе над любыми другими играми, от Garry’s Mod до Portal 2. В руководстве будут затронуты некоторые моменты работы с Source SDK, изменившиеся после ввода системы SteamPipe.
Приступаем
Для первого эксперимента с дизайном уровней давайте сразу отправимся в редактор. Инструменты Source SDK больше не запускаются через Steam. Вместо этого нужно зайти в папку Steam\SteamApps\common и найти игру, для которой вы хотите сделать карту. В нашем случае это папка half-life 2, далее заходим в папку bin. Среди прочего вы найдёте здесь программы, являющиеся частью SDK. Если запускать через стим, то SDK может не очень правильно все переварить и постоянно выдавать ошибки. Там все дело в правильных путях к подгружаемым файлам, опустим этот момент, все прекрасно работает при запуске hammer в папке игры.
Запускаем hammer.exe (на будущее добавьте ярлык на рабочий стол). Вы уже могли слышать про Hammer – это редактор движка Source, в котором и создаются все карты. Здесь вы проведёте большую часть времени, работая над картой или модом. С первого взгляда такого не скажешь, но Hammer – очень мощная утилита.
Создаём новую карту выбором пункта меню File>New. Экран разделится на четыре части. В левой верхней части расположен 3D-вид, где можно перемещаться по карте, словно в режиме noclip. Остальные части – это 2D-виды, где правая верхняя показывает карту сверху, а нижние с боковых сторон.
Инструменты
Для начала немного занудства, а немного ниже начнем уже разбирать примеры. В правой части окна редактора вы можете заметить набор значков. Это инструменты, с которых вы и будете начинать работу.
Selection Tool
Этот инструмент используется преимущественно для выделения блоков, которые нужно переместить или изменить их форму. Блок можно выделить, нажав на его грань или на перекрестье в центре, также можно обвести его рамкой. Выделенный блок помечается красным цветом. Чтобы снять выделение, просто кликните на свободном пространстве.
Magnify
Это не особо важный инструмент. Он используется для масштабирования 2D-видов. Для этого удобнее пользоваться колёсиком мыши. Если по какой-то причине на вашей мыши нет колёсика, то он вам пригодится.
Camera
Тоже далеко не самый важный инструмент. Он помещает на один из 2D-видов синий круг, олицетворяющий камеру. При перемещении камеры на 3D-виде, синие круги на плоских видах тоже будут двигаться, чтобы вы понимали, где находитесь.
Entity Creation Tool
Этот инструмент помещает на карту объект (entity). Мы подробно рассмотрим его работу в дальнейших уроках, сейчас просто знайте, что с его помощью создаются, к примеру, стулья и столы.
Block Creation Tool

Этот инструмент вам придётся использовать очень часто. Пожалуй, в Hammer он самый важный. Он создаёт блоки – то, что у вас будет стенами, полом, потолком и т.д. Перетащите инструмент на 2D-вид, там он отобразится белым пунктирным контуром. Выбрав нужную позицию для блока, жмите Enter для его создания.
Texture Application Mode
Этот инструмент нужен для наложения нескольких текстур на один блок. Выбор инструмента откроет вот такое меню:
В следующих уроках я подробнее разберу этот инструмент, так что не пугайтесь обилию кнопок, там всё не так уж сложно.
Apply Current Texture to Selection

Не совсем понимаю, для чего здесь этот инструмент. Вообще никогда им не пользовался. Он накладывает текущую текстуру на всё, что у вас выделено.
Decal Appliance Tool/Overlay Appliance Tool
Оба инструмента накладывают на ваши блоки 2D-изображения – кровь, грязь, граффити и т.д. Разница в том, что используя второй, вы сможете изменять их размер, но для обработки потребуется больше памяти.
Clipping Tool

Этот инструмент используется для отсечения части блока. На картинке ниже показан блок и голубая линия с белыми квадратами на концах.
Линия – это инструмент отсечения. Для её создания просто перенесите инструмент на желаемый 2D-вид. Белая часть блока – та, что сохранится. Когда вас устраивает результат, нажимайте Enter.
Vertex Manipulation Tool
Этот инструмент нужен для создания сложных форм путём манипулирования вершинами блоков. Выделите блок, затем выберите этот инструмент. Должно выглядеть примерно вот так:
Жёлтые квадраты трогать не советую, для начала будет достаточно белых. Поэкспериментируйте с перемещением квадратов. В дальнейших уроках я подробнее расскажу об этом инструменте. Для завершения нажмите на инструмент выделения. Попробуйте реалистично исказить форму. Затем превратите блок во что-нибудь сумасшедшее, что вызовет ошибку.
Блок, не приводящий к ошибке:
Блок, приводящий к ошибке:
Базовые конструкции
Выбираем инструмент Block Tool в левой панели. Для создания блока жмём и растягиваем конструкцию на виде сверху. Заметьте, что его границы привязываются к сетке, это позволяет избежать нежелательных зазоров между разными блоками. Создаём блок 512×512 единиц. Вы увидите, как он появится на двух нижних видах.
Сделать сетку помельче можно, нажав на значок Smaller Grid в верхней панели. Уменьшите высоту блока с помощью боковых видов (16 единиц будет достаточно) и нажмите Enter. Чтобы посмотреть на своё творение в 3D-виде, наведите на него курсор и нажмите Z – так вы сможете передвигаться клавишами WASD, а мышью поворачивать камеру. Вы должны увидеть блок со стандартной текстурой (при этом нужно переключиться в вид с текстурами, нажав на 3D Textured в меню View), как показано в правой части экрана.
Попробуйте проделать то же самое для создания стен своей комнаты. Обычная стена имеет высоту 128 единиц и толщину 8-16 единиц. (Размер большинства текстур 128×128, и таким образом мы убедимся в их правильном наложении. Кроме того, для движка предпочтительнее размеры блоков в виде степени с основанием 2, но это не жёсткое правило). После этого создайте потолок, перетащив пол вверх с зажатой клавишей Shift на одном из боковых видов.
На этом этапе я должен указать на первое правило Hammer: сохраняйтесь чаще! Программа славится вылетами в самый неподходящий момент, и даже лучшие из нас тратили впустую по нескольку часов работы. Ctrl+S – это бесценная комбинация клавиш. Для больших карт даже рекомендуется сохранять несколько резервных копий на случай потери или повреждения данных.
Текстуры
Оглядите получившуюся комнату 3D-камерой. Вы заметите, что все блоки выглядят одинаково, как кирпичная стена. Это далековато от идеала, так что взглянем на меню текстур в правой части.
В правой части редактора вы должны видеть вот такое меню:
Нажмите Browse для открытия списка всех текстур из игры. Вы сможете выбрать практически любую, но при создании раннего прототипа люди обычно останавливаются на «мерных» текстурах, предоставленных Valve и позволяющих оценить масштаб карты и убедиться в должном положении текстур. Наберите «measure» в поле Filter и двойным кликом выберите dev_measurewall1101c (это текстура с очертанием персонажа игрока).
Теперь вы видите эту оранжевую текстуру в правой части экрана. Чтобы наложить её на свои стены, поочерёдно выделите их, удерживая Сtrl, затем нажмите Apply Current Texture в левой панели.
Если хотите наложить текстуру только на одну поверхность блока, нажмите Toggle Texture Application, открыв небольшое окно. Теперь выберите пол комнаты в 3D-виде и, нажав Browse, выбирайте другую текстуру. В 3D-виде показывается, как изменилась только одна из сторон блока. Это окно также пригодится для выравнивания и поворота текстур.
Каждая из текстур соответствует определённому материалу из игры, так что металлическая текстура будет издавать звенящий звук при ходьбе или выстрелах по ней.
Переберите несколько вариантов текстур, познакомьтесь с настройками окна и давайте двигаться дальше.
Объекты
Статичные стены – это хорошо, но если вы хотите хоть какой-то интерактивности, вам понадобятся объекты. Объекты бывают двух типов: блоковые (создаются из уже знакомых вам блоков) и точечные (point entities). Давайте остановимся на вторых.
Нажмите на значок под названием Entity Tool. В правой части экрана найдите два выпадающих списка. Второй из них включает в себя множество объектов, которые вы можете поместить на карту. В этом списке вы, помимо всего прочего, найдёте врагов (npc_zombie), предметы (weapon_rpg) и спецэффекты (env_spark). Не поддавайтесь искушению пробовать каждый из них и найдите info_player_start. Этот объект определяет точку появления игрока на карте. Перейдите на 3D-вид и расположите где-нибудь зелёного Фримена (этот объект тоже помогает оценить масштабы карты). Как и блоки, объекты можно двигать по карте на 2D-видах (а вот размеры изменять нельзя). Чтобы поворачивать уже выделенный объект, нажмите на него ещё раз.
Если хотите разнообразить и расширить карту, добавьте ещё несколько комнат и коридоров.
Начнём с простого: разместим на карте объект prop_static. Он появится в виде маленького куба и мы должны назначить ему модель. Откройте свойства объекта двойным кликом на 3D-виде или выбрав Properties на 2D-виде. В этом меню меняются различные опции всех объектов, включая входные и выходные данные, контролирующие их функции и необходимые для скриптовых событий.
Пока что выберите World Model и нажмите Browse: здесь вы увидите все модели, существующие в игре. Как и в случае с текстурами, список можно фильтровать по названию. Например, фильтр «foliage» покажет деревья и различные растения для обустройства уровня за пределами помещения. Попробуйте подобрать другие ключевые слова для поиска нужных вам моделей. Вкладка Info покажет поддерживаемый тип модели (static, physics или dynamic). Когда найдёте, что вам нужно, расположите объект на карте с помощью 2D-видов.
Таким же образом добавьте несколько моделей prop_physics – к примеру, бочек, которые можно расшвыривать гравипушкой (в Hammer она называется weapon_physcannon). Следите, чтобы добавленные модели нигде не пересекались с блоками.
Компиляция
Прежде, чем компилировать уровень, его нужно проверить на наличие «утечек», то есть мест, где можно попасть в пустоту за пределами карты через какой-либо из объектов. Есть несколько способов обнаружить утечки, но на маленьких картах они должны быть сразу заметны. Утечки не помешают запуску карты (как это происходит при создании карт для, например Quake3), но могут привести к нежелательным последствиям.



























