Ru/Source SDK 2013

Для начала скачайте исходный код размещённый на GitHub Valve Software Source SDK repository. А теперь вперёд, к созданию великих и прекрасных модов!
=Скачивание исходников с GitHub=
Существует несколько способов получения и обновления исходников с GitHub . Обзор основных способов, описан в разделе помощи по GitHub, но прежде всего обратите внимание на использование в связке Git и GitHub.
==Git репозиторий==
Самый простой способ, поддерживать исходники Source SDK в актуальном состоянии - это использование Git репозитория. 
По сути Git является набором утилит командной строки с параметрами (CLI), но для работы с GitHub можно установить клиенты как с CLI, так и с графическим (GUI) интерфейсом.
===Установка клиента для GitHub (Windows & Mac)===
# Загрузите GitHub клиент:
#* Windows
#* Mac OS X
# Установите GitHub клиент.
# Перейдите на репозитарий Source SDK 2013 в вашем браузере и нажмите на кнопку "Clone in Desktop".
#* В результате нажатия на кнопку откроется GitHub клиент. Далее, следуйте инструкциям, чтобы создать копию рабочего стола (Desktop) на Вашем компьютере.
Если Вы хотите обновить код, вы можете сделать это, нажав "Sync" в самом клиенте или кнопку "Sync Branch" в самом репозитарии.
===Git CLI (Для всех платформ)===
Подробные инструкции о том, как работать с Git на любой платформе с использованием командной строки, включая обновление с репозитария, смотрите на GitHub.
Так, например, с помощью командной строки можно создать копию source sdk 2013 на Вашем компьютере (только с установленным CLI клиентом):
 > git clone git@github.com:ValveSoftware/source-sdk-2013.git
==Скачивание==
Можно просто скачать ZIP архив со всеми обновлениями, но соответственно загружать и обновлять код придется в ручную. 
# Перейдите на репозитарий Source SDK 2013 в вашем браузере.
# Нажмите кнопку "Download ZIP".
=Особенности создания файлов проекта на различных ОС=
== Создание файлов проекта и make-файлов ==
SDK 2013 использует для создания специальных файлов платформы и make-файлов проекта. Эти специальные файлы, необходимы для создания SDK. Если после выполнения этого шага, Вы обновили какие-либо файлы, то необходимо все действия выполнить повторно.
===ОС Windows===
 # Проект для одного игрока
 > <SDK_ROOT>/sp/src/creategameprojects.bat
 
 # Многопользовательский проект
 > <SDK_ROOT>/mp/src/creategameprojects.bat
В результате должны появиться файлы с расширением *.vcxproj (Visual Studio Project) и *. SLn(Solution) в директории SRC.
===ОС Mac OS X & Linux===
 # Проект для одного игрока
 > <SDK_ROOT>/sp/src/creategameprojects
 
 # Многопользовательский проект
 > <SDK_ROOT>/mp/src/creategameprojects
В результате в Mac OS X должны появиться файлы проекта `*.mak` и Xcode в директории SRC.
в ОС Linux, `.mak` файлы будут сгенерированы в SRC директории.
=== Информация о VPC ===
Для получения дополнительной информации о том, как можно использовать скрипты , или выполните следующую команду под любой ОС:
 > <SDK_ROOT>/<gameType>/src/devtools/bin/vpc /help
=== Информация о 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/.
=== Создание ===
Помните, сперва нужно создать файлы проекта & make-файлы!
# Откройте файл everything.sln вашего проекта.
# Откомпилируйте everything.sln.
# Откройте games.sln вашего мода.
# Откомпилируйте games.sln.
В результате у Вас должны появиться client.dll и server.dll, необходимые для загрузки Вашего мода под Source движком.
=== Создание шейдеров ===
Для добавления шейдеров в ваш мод вам необходимо создать специальные файлы. Для этого, откройте окно командной строки и введите: 
# CD sp/src/materialsystem/stdshaders (или mp/src для многопользовательского мода.)
# copy build<game>shaders.bat buildmyshaders.bat
# notepad buildmyshaders.bat
#* Измените переменную среды SDKBINDIR указанную в файле buildmyshaders.bat на значение <steaminstallpath>\SteamApps\common\Source SDK Base 2013 Singleplayer\bin
# buildmyshaders.bat
Более подробную информацию об инструментах работы с шейдерами Вы можете найти в Source SDK здесь.
==Mac OS X==
===Требования к компонентам системы===
В Mac OS X, вам понадобится установленные Xcode 4.2 и "инструменты командной строки" ("Command Line Tools"). Вы можете найти это в:
XCode свойства -> "Загрузки" -> "Компоненты" (XCode Preferences -> "Downloads" -> "Components")
===Создание===
Помните, сперва нужно создать файлы проекта & make-файлы!
Запустите инструменты, введите следующую комманду в Terminal:
 > make -f games.mak
Когда успешно соберется, вы должны увидеть client.dylib и server.dylib файлы загруженными вместе с Source SDK Base 2013 на ваш выбор.
==Linux==
=== Время выполнения клиента Steam ===
Для построения Source SDK 2013 на Linux ОС, вы должны иметь Steam Client Runtime.
# Скачать Steam Client Runtime.
# Выполните следующие комманды для распаковки:
 > tar xvf steam-runtime-sdk_latest.tar.xz
 > cd steam-runtime-sdk_<version>
Замените <version> на ту версию, которую только что распаковали.
 > ./setup.sh
Выберите вашу архитектуру и debug/release свойства. Затем ответьте Y ко всему остальному.
 > ./shell.sh --arch=i386
=== Постройка SDK ===
Помните, сперва нужно создать файлы проекта & make-файлы!
Выполните следующую команду:
 > make -f games.mak
В результате у Вас должны появиться client.so и server.so, необходимые для загрузки Вашего мода под Source движком.
=Организация кода=
==Принятые обозначения в названиях файлов==
Source SDK использует следующую иерархию папок: вначале идет <Тип Игры>, затем подкаталог <Название игры>. Для типа игры используйте названия каталога "sp", если это мод для одиночной игры, или "mp", если это мод для многопользовательской игры.
Более наглядно структуру каталога мода смотрите ниже:
* <gameType>
** sp (одиночная игра)
** mp (мультиплеер)
* <gameName>
** hl2 (Half-Life 2)
** episodic (Half-Life 2 Эпизоды)
** hl2mp (Half-Life 2: Deathmatch)
Каждому каталогу требуется свой Source SDK 2013 Base AppID (Идентификатор приложения) для получения базовых файлов:
* [steam://install/243730 Source SDK Base 2013 Singleplayer]
** Клиентский AppID: 243730
* [steam://install/243750 Source SDK Base 2013 Multiplayer]
** Клиентский AppID: 243750
** Серверный AppID: 244310 (смотрите для инструкций по установке)
Эти два базовых приложения очень похожи, различаются в основном графиком обновления. Singleplayer база обновляется только при обновлении HL2 или Эпизодов, которые происходят не так часто. Multiplayer база обновляется несколько раз в год чтобы включить изменения в движке от TF2 и Counter-Strike: Source. Ни одно из этих обновлений не должно сломать совместимость модов.
==Структура папок==
У всех папок примерно одинаковая структура:
* game - Ресурсы и исполняемые файлы для мода (DLL, модели, звуки, скрипты, конфиги, прочее). Ваш контент мода будет лежать здесь. 
* src - Все исходные коды мода. Главная папка содержит .sln (Решение Visual Studio) или .mak (Makefile) файлы для постройки кода.
** common - Некоторые файлы, нужные в клиентской и серверной DLL
** devtools - Скрипты и утилиты используемые для построения исходного кода. Вызываются makefile'ами и проектами и вам не нужно взаимодействовать с ними напрямую.
** game - Весь исходный код игры. 
*** client - Используется в client.dll (или client.dylib / client.so). Здесь также имеются специфические папки с кодом для конкретных игр.
*** server - Используется в server.dll. Здесь также имеются специфические папки с кодом для конкретных игр.
*** shared - Используется как client.dll, так и server.dll
** gcsdk - Набор инструментов, используемых при построении DLL
** lib - Построенные версии библиотек, от которых зависят исходные коды. Также требуется в построении для vgui_controls, tier1, и mathlib.
** mathlib - Математическая библиотека, используемая в коде игры.
** public - Заголовочные файлы движка для всех DLL и библиотек используемых игрой. Также включает несколько исходных файлов.
** thirdparty - Сторонние библиотеки, нужные для постройки кода. На текущий момент содержит только библиотеку Google Protocol Buffers (protobuf).
** tier1 - Полезные утилиты-классы. Отстраиваются в tier1.lib
** utils - Различные утилиты для разработки
** vgui2 - Исходный код для vgui_controls, используемый client.dll.
Мы рекомендуем вам следовать данного соглашения при создании собственного мода.
=Общие ошибки=
Здесь перечислены общие ошибки SDK 2013, имеющиеся на данный момент. Используйте перед написанием других решений.
=="RegKey ошибки при генерации проектов"==
Эта проблема обычна вызвана отстутствием ассоциаций с расширениями файлов в вашем реестре.
=== Visual Studio 2010 ===
* Открытие Редактора реестра
*# Кнопки Windows + R или Выполнить
*# Впишите 'regedit' без скобок в поле и нажмите Enter
* Найдите один из следующий ключей, исходя из вашей ОС:
 # Для 32-битных (x86) ОС:
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{60dc8134-eba5-43b8-bcc9-bb4bc16c2548}
 
 # Для 64-битных (x64) ОС:
 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Projects\{60dc8134-eba5-43b8-bcc9-bb4bc16c2548}
* Вам нужно создать новый строковый параметр. 
*# Пройдите по: Правка->Создать->Строковый параметр (New->String Value)
*# Заполните следующую информацию:
*#* Имя: DefaultProjectExtension
*#* Значение: vcproj
*# Нажмите "OK" чтобы сохранить ключ.
===error MSB8008: Specified platform toolset (v120_xp) or (v120)===
1 - Выберите все файлыв проекте
2 - Правой кнопкой мышки на файлы, затем выберите "Свойства"
3 - Затем "Свойства конфигурации" 
4 - И последнее в "Набор инструментов платформы" поставте это -> (v100)
(Project->Properties->Configuration Properties->General->Platform toolset = Visual Studio 2010(v100))
Вы так же можете увидеть действия на скриншоте.
Это работает в Microsoft visual C++ 2010 SP1, как при "release" так и при "debug".
--Slam12f (talk) 02:08, 22 May 2015 (UTC)
===Visual Studio 2012===
Утилита созданная участником сообщества для исправления такого типа ошибки в Visual Studio 2012. Используйте на свой риск.
Скачать здесь: GitHub (Требуется AutoIt v3).
==Не компилируется vgui_controls==
Проблема решается приобретением свежей копии дистрибутива SDK. Если вы используете локальный GitHub репозиторий, синхонизируйте (pull) ваши репозитории. Иначе можете скачать ZIP-архив и обновить файлы вручную.