Неполадки        27.07.2023   

Создание игр на движке source. Игровые движки: Valve GoldSrc и Source


История команды Valve, их первого эпического творения - игры Half-Life - и его продолжения и многочисленных вариаций на тему, - довольно-таки противоречивая штука.

С одной стороны, это продолжение истории движка Quake, поскольку Half-Life начался именно с того, что основатели Valve лицензировали его у id Software (это произошло даже ещё до того момента, как выкристаллизовалась сама идея проекта и сценарий игры). Поэтому невольно приходит на ум поговорка "на чужом горбу да в рай".

С другой, Valve внесли колоссальный вклад в развитие 3D-шутеров: их заслуга состоит не столько в технологических усовершенствованиях движка (хотя и они были, и довольно существенные), сколько в новаторском подходе к дизайну игр такого рода. Half-Life прославила скриптовая "кинематографичность" - когда игрок не просто носится по уровню, отстреливая всё, что движется, а оказывается свидетелем и участником каких-то глобальных и не очень событий, на которые он ещё и не всегда способен повлиять.

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

Скриншот Half-Life. Фомка в качестве первого - и на долгое время основного - оружия. Давайте сюда хэдкрабов!

История разработки

Тот первый Half-Life, который мы все знаем, фактически, по словам его создателей, является Half-Life 2 (а игра, вышедшая именно под этим названием - de facto Half-Life 3).

Дело в том, что, несмотря на гигантскую проделанную работу, создатели Half-Life пришли в какой-то безрадостный момент к выводу, что получившийся дизайн просто никуда не годится. Только тот факт, что у основателей Valve - Гейба Ньюэлла и Майка Харрингтона - были "глубокие карманы" спасли положение. Фактически, они платили разработчикам деньги с собственных счетов.

Ньюэлл и Харрингтон в то время были ветеранами Microsoft, сделавшими неплохую карьеру в компании (Ньюэлл вообще говорит про себя, что он был "продюсером первых трёх релизов Windows") и заработавшими там по миллионном состоянию. Их прежний коллега Майкл Эбраш, ушедший к тому времени из Microsoft в id Software, вдохновил Ньюэлла и Харрингтона на аналогичный поступок, - пойти попытать счастья в игровой отрасли. Что они и сделали.

Благодаря Эбрашу, кстати, они и смогли купить у id Software исходники Quake, - а также получить несколько ценных советов. Затем они набрали команду из самых разношёрстных разработчиков; некоторые из них в буквальном смысле были выдернуты из колледжей, и вместо подработки доставкой пиццы сели за программирование и рисование.

Day of Defeat - один из наиболее популярных модов к Half-Life. Низкие полигоны красивой картинке не помеха.

И только после того, как команда оформилась, Ньюэлл и Харрингтон взялись за поиски издателя. Главная проблема оказалась именно в этом: никто их не знал и мало кто вообще захотел иметь с ними дело. Спасение пришло с самой неожиданной стороны: контракт с ними подписал никто иной как мистер Кен Уильямс, основатель компании Sierra Online (супруга Кена Роберта Уильямс - фактический создатель жанра Quest, к слову). Sierra в тот момент переживала непростые времена, фактически в её каталоге не было трёхмерных шутеров; Doom мало заинтересовал Уильямса, а потом он понял, что промахнулся, и стал искать, кто бы мог сделать шутер для Sierra. Нашёл.

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

В итоге Half-Life - трёхмерный шутер с великолепным сюжетом про неожиданные последствия научного эксперимента, дико страшной - и для тех времён, и даже для сегодняшнего дня - атмосферой и графикой, не оставлявшей большинству современников шансов (при достаточно пристойных системных требованиях, заметим), - становится в буквальном смысле легендой; чего только стоят 50 разных наград "Игра года"...

И пожизненная прописка в народном фольклоре:

На фотографии, собственно говоря, Большой Адронный Коллайдер. Sapienti sat.

Counter-Strike, Blue Shift и другие

Про Counter-Strike, антитеррористический командный шутер, слышали, наверное, все. Чуть меньше народу, вероятно, слышали про такие вещи, как Day of Defeat (командная игра типа CTF - Capture the Flag – на тему второй мировой войны) и Team Fortress.

Counter-Strike. Без комментариев.

Всё это - моды к игре Half-Life, причём сторонними разработчиками создававшиеся изначально. В итоге, впрочем, Valve просто приняла в штат и создателей Counter-Strike, и авторов Day of Defeat.

Отличия этих игр от оригинальной Half-Life, весьма существенны и в техническом плане: чего стоит только (относительно) реалистично стреляющее оружие, чьё поведение смоделированно с реальных образцов - автомат Калашникова АК-74 и крупнокалиберный пистолет Desert Eagle в CS, немецкий пулемёт MG-42 в Day of Defeat.

В «классические» CS и DoD, несмотря на выход уже новых версий на базе движка Source, до сих пор рубятся тысячи и тысячи игроков.

Команда GearBox также разработала два мода (точнее, Expansion Pack"а), в которых события в игре Half-Life получают альтернативное развитие.

А это новый контент, в частности, новая враждебная раса в Opposing Force, а в Blue Shift – ещё и существенный апгрейд графики: полигональность моделей людей и монстров была увеличена вдвое (причём как в аддоне, так и в оригинальной игре), вследствие чего человекообразные персонажи стали всё-таки походить на людей (впрочем, и системные требования подскочили вдвое).

Скриншот Blue Shift. Полигональность моделей увеличена вдвое по сравнению с оригинальной игрой.

Апгрейду со временем подвергся и CS - во всяком случае, полигональность персонажей явно претерпела неплохую «подтяжку меша».

Технические аспекты

Как уже было сказано, движок, легший в основу Half-Life – GoldSrc (это его внутреннее название) это видоизменённый Quake Engine, а точнее его модификация QuakeWorld.

При этом, на последних этапах разработки в исходники были добавлены фрагменты кода Quake II, но в очень небольших количествах.

По некоторым сведениям в Valve переписали около 70% исходников Quake Engine.

Одной из ключевых доработок оказалась скелетная анимация для персонажей (в Quake её не было). Планы Valve по скелетной анимации вызывали у потенциальных издателей будущей такой скепсис, что некоторые, услышав про неё, отказывались вообще дальше разговаривать. Потом, видимо, кусали локти.

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

Ещё одним не слишком типичным шагом оказалась поддержка одновременно софтверного рендеринга, а также 3D ускорения по интерфейсам Direct 3D и OpenGL (сейчас это уже норма).

Серьёзной проработке подвергся «искусственный интеллект» монстров - они могли «тактически мыслить», взаимодействовать друг с другом, - ну и жить хотели тоже сильно. Так что бороться с ними бывало крайне непросто - действительно получалась битва не на жизнь, а на смерть. Как говорится, «Ах, если бы хэдкраб был вашей главной там неприятностью...»

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

Поклонники CS и DoD знают, что в игре в любом месте можно оставить «свой» логотип, и что при взрыве гранаты на земле появляется тёмное пятно, - это и есть Decals.

След от гранаты - это и есть Decal.

Ну, и отдельно следует сказать о встроенном в игру программном DSP, в реальном времени обсчитывавшем акустику каждого помещения, исходя из её объёма и материала, из которого изготовлены стены. Так, выстрел из пистолета в большом металлическом ангаре или под водой будет звучать совсем иначе, нежели выстрел в комнате с бетонными стенами. Надо сказать, что страхолюдная атмосфера, которой славен Half-Life, в огромной степени создаётся именно звуковым сопровождением.

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

Source Engine: Half-Life 2, Counter-Strike: Source и другие

То, что теперь называется Source Engine, по сути дела, являлось изначально «вилкой» при разработке основного движка Half-Life – GoldSrc. Названия GoldSource и Source долгое время использовались только для внутренних нужд, но в итоге Source стал официальным публичным названием.

На нём и был воздвигнут исполин Half-Life 2.

Первая игра заканчивается тем, что некий непонятный G-Man «принимает на работу» главного героя - Гордона Фримена и погружает его в спячку до нужного момента.

Нужный момент наступает спустя одно или два десятилетия, когда Земля подверглась полномасштабному вторжению инопланетян. Угадайте, кого отправляют бороться с ними.

Начало игры происходит в некоем восточно-европейском городе City-17; столь «странный» выбор стартовой локации связан с тем, что арт-директор Half-Life 2 Виктор Антонов провёл всё детство в Болгарии, и его соратники сочли, что восточно-европейское соседство современной и исторической архитектуры, - самое то, что нужно.

Half-Life 2. Город 17.

В целом, геймплей обоих «Полураспадов» схож (в отличие от графики), однако в деталях обнаруживается масса различий: очень многие головоломки связаны с реалистичной физикой, и главным оружием, которым придётся орудовать, становится не фомка, а «гравитационная пушка», позволяющая перетаскивать с места на место предметы практически любого размера и массы, или швыряться ими. Отправка на головы пачке вооружённых противников целого автомобиля - что может быть лучше?

Если разработка первого Half-Life заняла два года, и это считалось очень продолжительным циклом, то работы над вторым Half-Life продолжались в течение целых шести лет. На самых последних, казалось бы, этапах Valve настигла катастрофа: в 2003 году немецкий хакер вломился во внутреннюю сеть компании и стащил исходники Half-Life 2, Counter-Strike: Source и скомпилированную раннюю версию игры.

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

На хвост хакеру село ФБР, его вычислили и собирались выманить на территорию США под предлогом... трудоустройства специалистом по сетевой безопасности в Valve. Он, дурень, поверил, и уже готовился вылететь в Штаты, но тут его взяли за жабры сами немецкие власти, прознавшие о планах американцев.

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

Надо сказать, что Half-Life 2 изначально был лишён мультиплеерного компонента, вместо него геймерам сразу предложили Counter-Strike: Source, и лишь спустя несколько месяцев выпустили Half-Life 2: Deathmatch.

Counter-Strike: Source. Приятнее любоваться красотами, чем террористов отстреливать.

На базе того же движка очень быстро вышли и Day of Defeat: Source, и новый Team Fortress. CS:S и DoD:S, правда, получились в большой степени другими играми, так что не всякий дока из CS 1.6 показывал такие же успехи в CS:S. По крайней мере, на первых порах.

Технические особенности Source

  • Рендеринг по интерфейсу Direct 3D версий 7-9 с поддержкой Shader Model 3
  • Физический движок, отвечающий за реализм взаимодействия внутриигровых объектов (сильно модифицированная и адаптированная под использование в сети версия движка Havok)
  • Скелетная анимация для персонажей с поддержкой инверсной кинематики.
  • Имитация размытия в движении (Motion blur).
  • Технологии лицевой анимации и синхронизации губ (lip-syncing), так что они при разговоре движутся в полном соответствии с тем, что говорит персонаж. Lip-syncing поддаётся локализации, так что игровых персонажей можно заставить говорить на любом языке.
  • Динамическое освещение и затенение.

Day of Defeat: Source. Щас кто-то огребёт.

В 2005 году движок также получил поддержку HDR-рендеринга, а в 2007 - поддержку «мягких частиц», многоядерных процессоров и аппаратную поддержку лицевой анимации.

Поскольку Source Engine весь выстроен по модульному принципу, усовершенствования в него можно вносить «на лету». Свои игры Valve давно распространяет через систему доставки контента Steam, и движок апдейтится также через неё.

На модульном принципе в Valve, кажется, слегка помешались: даже продолжения к Half-Life 2 стали выходить уже отдельными эпизодами. В 2005 году вышла "техническая демонстрация" - Half-Life 2: Lost Coast, в котором обкатывалась технология HDR-рендеринга; затем последовали Half-Life 2: Episode One и Episode Two, отдельные "главы" - с новым геймплеем и новыми противниками, всё более умными.

У моддеров движок Source вызвал некоторое недовольство; во-первых, весь программный код для мода приходится писать на C++, иначе движок его не поймёт в принципе (хотя с выходом игры Left 4 Dead 2 появилась частичная поддержка скриптов на языке Squirrel). Разобраться в игровом SDK оказалось весьма непростым делом, что моддеров тоже не сильно обрадовало (как и некоторых коммерческих лицензиатов движка).

Создание своей RPG на движке Source

Если вы хотите научиться разрабатывать игры, моддинг существующих игр - отличное начало для изучения дизайна и создания прототипов без необходимости изобретать велосипед. В этой статье мы будем использовать Source Engine от Valve (на этом движке созданы Portal, Left 4 Dead, Half-Life и Team Fortress 2) для создания RPG-подобных квестов в Half-Life 2: Episode 2.

Обратите внимание, что эта статья подразумевает, что у вас есть базовые знания по Source SDK Hammer Editor и Face Poser, так что это проект не для начинающих, а скорее для программистов среднего уровня.

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

Для освоения этого материала вы должны знать, как создавать и компилировать карты, размещать сущности и настраивать триггеры, прежде чем повторять действия, описанные здесь. Если вы захотите добавить свои диалоги, вам нужно знать ещё и как создавать и сохранять сцены в Face Poser. Ничего страшного, если вы никогда не работали с Source SDK раньше - в интернете полно статей, описывающих, как им пользоваться. Начните с Valve Developer Wiki , которая содержит множество полезных статей по теме, затем сходите на design3 (кстати, я один из участников проекта) за пошаговыми видеоинструкциями по Source Engine. Минимальные системные требования для использования инструментов, описанных выше, такие же, как для запуска Half Life 2: Episode 2: процессор на 1.7 ГГц, 512 Мб RAM, DirectX 8.1 и Windows не ниже XP. Ещё вам понадобится микрофон.

Подготовка

Прежде чем мы начнём, убедитесь, что у вас есть всё необходимое. Во-первых, вам нужна установленная копия Half-Life 2: Episode 2. Мы будем использовать эту игру, потому что это самая новая одиночная игра на движке Source, к которой можно написать мод. Если у вас нет второго эпизода, скачайте его с то простой Half-Life 2 тоже должен подойти.

Если вы хотите добавить свой диалог в эту RPG, вам понадобится приложение для обработки аудио. Мы будем использовать - оно свободное, имеет открытый исходный код и отлично подходит для наших задач.

Иллюстрация 1 - наш уровень в Hammer Editor

Сейчас наш уровень - просто грубый прототип, который полностью не текстурирован и не детализирован. Лучше всего именно с этого и начинать, а деталями заниматься уже в самом конце. Итак, давайте уже начинать делать нашу RPG. Не забывайте вовремя сохраняться! Некоторые нововведения в Hammer’е не полностью поддерживаются в Episode 2 и могут вызвать аварийное завершение редактора.

Создаём структуру квеста

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

Для того, чтобы уровни были организованы, давайте использовать следующую конфенцию имён:

Иллюстрация 2 - конвенция имён, которую мы будем использовать

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

Прежде чем мы всё-таки начнём делать квесты, нам нужно разбить их на меньшие компоненты, а именно:

  • Trigger Start : запускает задание;
  • Sprite : показывает, где квест может быть начат;
  • Giver : NPC, который даёт это задание;
  • Scene Start : диалог, описывающий задание;
  • Sound Start : звук, который уведомляет игрока о получении задания;
  • Text Start : текст, описывающий задание;
  • Relay Content : прослойка, которая запускает необходимые для квеста процессы (например, спаунер NPC);
  • : <основное содержимое квеста - после выполнения оно должно запустить Relay Complete>;
  • Relay Complete : прослойка, которая настраивает уровень для последующего задания;
  • Text End : текст, который описывает, как выполнить задание;
  • Sprite : снова появляется, чтобы указать, с каким NPC нужно поговорить;
  • Trigger End : триггер, инициирующий окончание задания;
  • Scene End : заключительный диалог;
  • Sound End : звук, знаменующий окончание задания;
  • : <если есть следующее задание, оно активируется здесь>.

Если вы что-то из этого не поняли, не переживайте - пока мы просто составляем список всего необходимого. Это список лишь для одного задания, так что нам понадобится создать действительно много всяких сущностей. Чтобы не засорять мозг лишним, мы будем использовать VisGroups для разделения заданий и сокрытия того, что сейчас не нужно. VisGroups позволяет вам обозначить группы кистей и сущностей и быстро скрывать или показывать их. Если группа скрыта во время компиляции, всё, что содержится в этой группе, будет пропущено и не появится в игре. Это очень удобно, ведь вы можете избирательно просматривать отедльные группы объектов, сосредоточившись на них, а ничто другое вам мешать не будет.

Создание шаблона задания

Мы будем использовать шаблоны (instancing) - отличный инструмент Hammer Editor’а. Это позволит ссылаться нашей основной карте на другие. Мы создадим экземпляр задания, который в дальнейшем будем использовать как шаблон. После того, как мы его закончим, мы сможем просто раскопировать его и немного отредактировать настройки копий так, чтобы каждое задание стало уникальным. Таким образом, нам не придётся делать одну и ту же нудную работу много раз. К сожалению, Episode 2 не полностью поддерживает эту технологию, поэтому нам придётся конвертировать экземпляры в уровни перед компиляцией (мы коснёмся этого позже).

Для того, чтобы настроить наш шаблон задания, нам нужен новый файл карты. В Hammer’е выбирайте File, затем New, карту сохраните как «quest_instance» в папке «instances» в том же месте, где лежит ваша основная карта.

Лучше всего размещать сущности как можно ближе к координатам (0,0,0). Также стоит размещать их выше плоскости XY, чтобы не потерять при переносе. Для правильного размещения вы можете воспользоваться Selection Tool. Наш шаблон будет автоматически добавлять выбранный нами префикс ко всем сущностям внутри него. Триггеры и выставление некоторых значений буду описаны позднее, так что не переживайте, если вам показалось, что мы что-то упустили.

Нам понадобятся все сущности, упомянутые в списке выше. Давайте начнём с добавления NPC. Выберите Entity Tool, найдите npc_citizen в выпадающем списке и разместите его у начала координат. Этот парень будет давать нам задание. Нажмите Alt+Enter, чтобы открыть его настройки, и дайте ему имя «giver». Выставьте параметр Prevent picking up weapons? на Yes . Примените настройки нажатием на Apply и перейдите на панель Flags. Выставьте флаг Not Commandable , иначе наш работодатель будет всюду таскаться за игроком по карте. Выставьте ещё Don"t drop weapons и Ignore player push (чтобы он не уступал дорогу игроку).

Теперь нам понадобится триггер, который будет отслеживать, подошёл ли игрок к… Давайте называть его Гриша, потому что «этот парень» или «quest giver» звучат не очень хорошо. Так вот, чтобы отслеживать, подошёл ли игрок к Грише, создайте кисть со следующими размерами: 64 юнита в высоту, 32 юнита в ширину, 4 юнита в длину - и разместите объект прямо перед Гришей. Назначьте этому объекту текстуру nodraw , чтобы она не рендерилась. Чтобы изменить текстуру, выделите объект, переключитесь на Toggle texture, нажмите кнопку Browse, используйте фильтр по nodraw , двойным кликом выберите его и примените параметры (кнопка Apply). Затем назначьте этой сущности триггер, нажав Ctrl+T и выбрав func_button из списка. Назовите его «trigger_start» и измените скорость (speed) до нуля. Снова сохраните изменения.

Теперь давайте добавим спрайт, который будет уведомлять игрока, что у этого NPC есть задание. Поместите сущность env_sprite сверху от головы Гриши и откройте окно Object Propeties, нажав Alt+Enter. Назовите его «Sprite». Теперь нам нужно изменить режим ренедринга, чтобы спрайт отображался в игре корректно. В том же окне найдите опцию Render Mode и выберите World Space Glow из выпадающего меню. Вы можете изменить текстуру этого спрайта, используя это меню, если хотите. Убедитесь, что во кладке Flags стоит галочка напротив Start on .

Займёмся диалогом. Найдите в списке сущностей logic_choreographed_scene и поместите его за Гришей. Нам понадобится минимум две таких на каждый квест - одна для начального диалога, вторая для заключительного - так что скопируйте её и вставьте вторую поверх первой. Дайте им имена «scene_start» и «scene_end» соответственно. Добавление собственно диалога мы рассмотрим несколько позже.

Кроме всего этого, нам ещё нужны звуковые уведомления о том, что игрок получил задание и о том, что он его выполнил. Создайте две сущности ambient_generic , поместите их рядом с NPC и назовите «sound_start» и «sound_end». Если у вас нет своих подходящих звуков, используйте plats\elevbell1.wav (вводить нужно в поле Sound Name). На вкладке флагов все три опции должны быть отмечены галочкой.

После этого нам нужно добавить текст, который будет описывать задание. Создайте две сущности game_text и назовите их «text_start» и «text_end». Выставьте для обеих достаточно высокий параметр Hold Time (порядка 99999), чтобы текст не исчез, пока мы сами его не уничтожим. Нам нужно, чтобы текст был сбоку экрана и не мешал игроку, так что выставьте у обеих сущностей поля X и Y на 0.1.

Нам понадобится несколько прослоек, чтобы систематизировать триггеры. Прослойка (relay) - сущность, которая при активации запускает другие сущности. Одна прослойка обычно запускает действия, которые должны выполняться в одно время и в одном месте, чтобы ими было удобнее управлять. Создайте две сущности logic_relay и разместите их рядом с Гришей. Назовие их «relay_content» и «relay_complete». Эти две прослойки будут запускать все сущности в задании. Особенности конкретного задания придумайте сами - вам нужно установить для игрока цель вроде «собрать столько-то таких-то предметов» или «добраться до такого-то места». Для проверки выполнения этих условий вы можете использовать такие сущности, как math_counter или сущности областей вроде trigger_once . Когда эти сущности выяснят, что задание пройдено, они должны будут запустить «relay_complete», который, в свою очередь, запустит всё необходимое для ознаменования конца задания.

Добавим ещё один триггер напротив Гриши. Он будет практически идентичным стартовому триггеру, поэтому просто скопируйте «trigger_start» и переименуйте его в «trigger_end». Убедитесь, что флаг Starts locked включен. Убедитесь, что эти сущности не перекрывают друг друга и что стартовый триггер находится перед хитбоксом NPC (иначе игра будет путаться, выбираете ли вы триггер или «кнопку»), используя виды сверху и сбоку. Чтобы определить местонахождение хитбокса, выберите Гришу - вокруг него появится жёлтая рамка.

Теперь настроим триггеры, как показано на Иллюстрации 5. Вам пока не стоит переживать за триггеры в квадратных скобках, их мы добавим позже. Выберите перечисленные сущности, откройте их Object Properties, зайдите во кладку Outputs и настройте всё в соответствии с таблице ниже. Убедитесь, что вы сохраняете все изменения (кнопка Apply)!

Иллюстрация 5 - настройка триггеров.
Заголовки: Выбранная сущность \ Активировать по… \ Активируемая сущность \ Что активировать у сущности

Размещаем шаблоны

Наш шаблон готов, теперь мы можем размещать такие шаблоны по карте и настраивать их более детально. Разместите «func_instance» где вам удобно, откройте его Object Properties и под VMF Filename найдите ваш файл «quest_instance». Обратите внимание, что поиск работает несколько багованно, так что вам может потребоваться ввести путь к файлу вручную. Теперь вы можете раскопировать этот шаблон по карте: создайте столько заданий, сколько хотите.

Выберите первое задание и дайте ему импортировать все необходимые сущности (нажимайте Instancing, Collapse, Selection). Hammer даст всем сущностям префикс, по умолчанию «AutoInstance-». Всё импортированное будет выделено, нам останется только добавить их в одну группу через VisGroups. Откройте Object Properties и выберите там вкладку VisGroups. Вы увидите примерно следующее:

«Sewer» и «Main level» - группы, которые я создавал раньше, так что это нормально, что у вас их нет. Нажмите на «Edit Groups» и вы увидите следующее:

Здесь вы можете создать новые группы, которые потом будете использовать. Нажмите «New group» и вы увидите новый элемент в списке. Переименуйте его в «Quest_n», где n - номер задания. Как закончите с этим, нажмите «Close», вы увидите свою группу в главном списке. Отметьте чекбоксами для добавления сущностей в группу, нажмите «Apply», затем снова «Close». Тперь вы можете скрывать или просматривать группы, используя панель управления VisGroup, как показано ниже. Делайте так с каждым вашим заданием.

Добавление собственных звуковых файлов

Наша РПГ была бы крайне скучна без диалогов, раскрывающих историю, так что мы запишем их через Audacity. Для начала у вас должен быть микрофон. Из-за особенностей работы Face Poser вам стоит записывать по одному предложению за раз. С Audacity всё просто - настройте микрофон, нажмите на красную кнопку, скажите что-то, остановите запись и сохраните файл в формате.wav . Если у вас возникли какие-то проблемы, можете смело использовать встроенную справку, она очень хорошо сделана. Как закончите, создайте папку «RPG» и поместите в неё все файлы. Папку эту переместите в C:/Program Files/Steam/steamapps/half-life episode two/ep2/sounds/ . Сохранение всех файлов в папку на один уровень выше «sounds» принципиально - иначе движок их просто не увидит.

Идём дальше. Создайте файл «sound_script», чтобы движок мог связать наши звуки в редакторе с игрой. Запустите GCFScape, перейдите к File->Open, перейдите к своей папке «steamapps» и откройте файл «episode two content.gcf». После того, как GCFScape его прогрузит, вам нужно будет найти файл «game_sounds_manifest.txt», который размещён в «/steamapps/ep2/scripts». Нажмите на него правой кнопкой мыши и выберите «Extract» и разместите этот манифест в «/steamapps/half-life 2 episode two/ep2/scripts». С GCFScape мы закончили, можете закрывать его.

Теперь идите в папку со скриптами и откройте «game_sounds_manifest.txt», который мы только что извлекли. В этом файле лежат все звуковые скрипты, которые игра будет использовать, и нам нужно добавить наши записи туда же. Под последней строчкой кода, в последних скобках напишите ровно следующее:

Файл манифеста можно уже закрывать. Создадим файл «rpg_sounds.txt», на который мы ссылаемся и запишем в него следующее:

Первая строка - имя звука, которое отобразится в Face Poser: «rpg_sounds» - префикс, а вторая часть - собственно имя. Вы можете менять их как вам угодно. Следующие четыре строки говорят движку, что ему с этими звуками делать, примите их просто как данное. Последняя строчка - . wav файл, который будет загружаться, и относительный путь от папки «/steamapps/half-life 2 episode two/ep2/sound/». Всё, что вам нужно сделать - поместить в эту папку все свои звуковые файлы и убедиться, что их имена и расширения совпадают с указанными в скриптовом файле.

Если у вас стоит Windows Vista или Windows 7, нам придётся немного помочь Face Poser. Как указано выше, вам для этого понадобится патч Phoneme Extractor. Тут стоит упомянуть, что Source SDK обновляет себя каждый раз, как вы его запускаете, поэтому патч нужно ставить каждый раз, как вы открываете Source SDK. Да, это утомительно, но это самый простой путь, поверьте.

С открытым Face Poser мы начнём создавать новую сцену. Под меню «Choreography» нажмите «New». Я порекомендую вам сразу же её сохранить. Имя выберите сами, а папка для сохранения - «/steamapps/half-life episode two/ep2/Scenes/RPG_MOD/». Её потом будет гораздо проще найти, если вы дадите ей какой-то префикс, например, «RPG_». Теперь Face Poser попросит вас дать имя главному действующему лицу (Actor). Назовите его «!_targetN», где N - число от 1 до 8, т.к. у нас будет до восьми NPC в каждой сцене. Hammer будет использовать того NPC, которого вы укажете. У нас пока есть только Гриша, поэтому назовём действующее лицо «!_target1». Сделайте правый клик по имени действующего лица, которое появилось в меню «Choreography», затем перейдите к New->Channel->Create Channel box. Назовите этот канал «Audio». Теперь создайте ещё один канал и назовите его «Anim» (для анимации).

Теперь нам необходимо отсортировать наши аудиозаписи. В списке вкладок в нижней части экрана Face Poser дважды нажмите на «Phoneme Editor». В открывшемся окне нажмите «Load» и выберите.wav файл, который вы хотите добавить. Затем нажмите на «Re-extract», и Face Poser предложит вам написать содержимое аудиофайла текстом. Впишите его. Теперь, если вы нажмёте на кнопку проигрывания, вам будет показано лицо действующего лица, губы которого будут двигаться. Можете сохранять всё и закрывать это окно. Эти действия необходимо повторить для каждого звукового файла.

Если вы хотите добавить жесты, выражения лица или другую анимацию, Вам стоит делать это сейчас. Я не буду рассказывать, как это сделать в этой статье, вы можете прочитать об этом где-то ещё. Далее сохраните свою сцену (Choreography->Save). Теперь осталось применить эту сцену к нашему NPC.

Добавление стороннего аудио к NPC

Теперь нам нужно настроить диалог. Нам нужно добавить созданные нами сцены к «scene_start» и «scene_end», которые мы создавали раньше. Для этого нажмите Alt+Enter, чтобы открыть Object Properties, там найдите опцию «Scene file». Назначьте ей недавно созданную сцену и сохраните изменения. То же самое сделайте для «scene_end».

Активация событий

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

Игроку нужно убить пять врагов. Каждый раз, когда умирает враг, math_counter увеличивается на единицу. Когда счётчик доходит до пяти, math_counter вызывает logic_relay . В свою очередь, logic_relay прекращает спаун мобов, активирует NPC и «relay_complete».

Настройка автосохранения

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

Конец игры

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

Заключение

Я рассказал всё, что хотел. Теперь вы можете создавать любые виды заданий, умеете работать с триггерами и, в общем-то, можете начинать писать свои несложные моды к играм. Удачи!

Source - самый популярный игровой движок: в тот момент, когда вы читаете эту статью, в игры, написанные на нем, может играть больше миллиона человек:

И это не удивительно: движок разработала компания Valve, которая владеет самым крупным игровым магазином - Steam, а ее игры стабильно находятся на вершине игрового топа.

Но, разумеется, путь на вершину славы был долог: история разработки движка Source началась в далеком 1998 году, когда разработчики Valve, завершая работу над Half-Life 1, поняли, что у них есть множество наработок, которые хотелось бы где-нибудь использовать. И именно тогда и появилось разделение на два движка: GoldSrc, на котором работала текущая версия игра, и Source, который относился к будущей версии игры и имел новые, еще неотлаженные, технологии. И поэтому на выставке E3, когда Valve демонстрировала бета-версию игры Half-Life 2, было сказано, что игра работает на движке Source. Это название прижилось, и в дальнейшем GoldSrc полностью исчез.

Source Engine 2004 (Source Engine 6)

Первая публичная версия движка вышла в 2004 году вместе с полюбившимся многим шутером Counter Strike, который в честь движка был называн Source. Изменений с оригинальной версии было достаточно много: более чёткие текстуры (512×512 пикселов против 128×128 в оригинале) и проработанные трёхмерные модели. Широко используются возможности движка, связанные с зеркальными отражениями - у оружия, снабжённого оптическим прицелом, можно видеть окружающую обстановку (но не модели других игроков) сзади игрока на линзе прицела, когда оно находится в не приближённом состоянии.

Звуковые эффекты теперь соответствуют акустическим условиям, введена поддержка колонок 5.1 и 7.1. Новые возможности движка помогли сделать карты более детализированными: появились валяющиеся на земле бутылки, пакеты. Физический движок, созданный на основе Havok, позволил улучшить физику полёта гранат, взрывы, а также эффекты от их поражения в сторону большей реалистичности.

Чуть позже в этом же году вышла Half-Life 2, в которой к приведенным выше возможностям добавились: шейдерный рендеринг (Half-Life 2 была одной из первых игр, в которой использовалась шейдерная вода) и лицевая анимация (с поддержкой точной синхронизации речи актеров с анимацией), а с помощью Havok был получен эффект «тряпичной куклы»:




Эта версия движка использовалась до 2005 года, и является на данный момент устаревшей - все игры, написанные на SE 6, были переведены на более новые движки.

Source Engine 2005 (Source Engine 7)

Обновленная версия движка, вышедшая в 2005 году. Основное дополнение - поддержка High Dynamic Range Rendering, для демонстрации которой разработчики выпустили Half-Life 2: Lost Coast: в сущности эта игра представляет собой уровень, не попавший в финальную версию Half-Life 2. HDR Rendering в Lost Coast включает в себя несколько компонентов:

  • HDR Skybox - результат наложения нескольких экспозиций неба, для реализации эффекта смены экспозиции в реальном времени. Для Half-Life 2: Lost Coast было создано более 16 различных HDR Skybox.
  • HDR Refraction Effect - HDR свет проходит через преломляющие материалы и принимает свойства этих материалов (например, когда луч света проходит сквозь цветные витражи в монастыре на Half-Life 2: Lost Coast, на пол отбрасываются цветные блики).
  • HDR Light Maps - карты света, сгенерированные при помощи эффекта radiosity (свет не только отражается от объектов и попадает в глаз наблюдателя, но и попадает на другие объекты, отражаясь от них). Можно заметить, например, внутри монастыря в Half-Life 2: Lost Coast, по солнечным пятнам на стенах, противоположных окнам.
Как и SE 6, 7ая версия на данный момент так же является устаревшей - в 2014 году последнюю игру на нем, CS: Source, перевели на Source Engine 24.

Source Engine 2006 (Source Engine 7: Base Source Engine 2)

Первая версия движка, имеющая доступный всем комплект разработчика - Source SDK Base 2006, что позволило множеству людей создавать свои модификации к играм Valve. Движок несколько доработали - он поддерживает обновленную лицевую анимацию, многоядерный рендеринг и обновленный HDR.

Так как созданные на SDK 2006 года модификации не совместимы с более новыми версиями движка, то авторами некоторых модов эта версия движка все еще используется, и ее с натяжкой можно считать актуальной.

Source Engine 2007 (Source Engine 14)

Глобальный релиз, впервые использовался в сборнике игр от Valve - The Orange Box (в него входят: Half-Life 2, Half-Life 2: Episode One, Half-Life 2: Episode Two, Portal и Team Fortress 2). В этой версии был обновлен шейдерный рендеринг, значительно доработано динамическое освещение и затенение, появилась система мягких частиц (позволившая сильно улучшить качество таких эффектов, как дождь и огонь), была добавлена кинематографическая физика, а так же новая лицевая анимация (поддерживалось ее аппаратное ускорение на видеокартах) и улучшена поддержка многоядерных процессоров.

SE 14 стала первой версией движка, поддерживающей консоли - The Orange Box вышел не только под ПК, но и под PlayStation 3 и Xbox 360.

Ровно как и с SE 7, модификации, созданные в SDK к 14ой версии, не работали на более новых, поэтому эта версия движка до сих пор используется.

Source Engine 2008 (Source Engine 14: Base Source 3)

Версия движка, созданная под игру Left 4 Dead:

В ней улучшили кинематографическую физику, добавив:

  • Динамическое разрушение игровой геометрии - до этого линии разрушения должны были указываться создателем карты.
  • Деформируемые объекты - до этого физические модели не могли быть изменены любым образом, кроме как на основе заранее просчитанной анимации.
Так же были добавлены некоторые эффекты, такие как размытие в движении и глубина резкости.

Source Engine 2009 (Source Engine 15)

Версия, вышедшая с игрой Left 4 Dead 2, в дальнейшем на эту версию были обновлены все игры Valve того времени. В этой версии обновлены все функции, значительно доработана система частиц, лицевая анимация, масштабирование и возможность обновлений.

Source Engine 2010 (Source Engine 17)

Первая версия движка, портированная под macOS. Изначально под яблочную ОС был портирован пакет игр The Orange Box, а в дальнейшем все новые игры Valve стали выходить и под Mac, и под Windows.

Source Engine Multiplayer (Source Engine 19, 21 и 23)

Версии движка, заточенные под мультиплеерные игры, такие как Dota 2 и CS: GO. Так же в 2012 году появилась поддержка Linux: под него была портирована игра Team Fortress 2, а в дальнейшем и другие игры Valve.

Source Engine 2013 (Source Engine 24)

Текущая версия движка, на которую Valve перевела большинство своих игр. В числе изменений: для оптимизации использования дискового пространства было решено отказаться от использования громоздких.GCF-файлов (архивов с ресурсами игр) в пользу файловой системы под кодовым именем SteamPipe. Игры на новом движке устанавливаются теперь в директорию Steam\SteamApps\Common, а файлы игры хранятся в.VPK-файлах. Для игр Counter-Strike: Source, Team Fortress 2 и Half-Life 2: Deathmatch создана удобная система добавления пользовательского контента (модов): присутствует папка custom, в которой создаётся папка с произвольным именем, и уже в неё складываются классические папки материалов модификации (materials, models и т.д.).

Так же была улучшена совместимость с Linux, а в мае 2014 года Nvidia портировала Portal и Half-life 2 на Android, для своей приставки Nvidia Shield (впрочем, умельцы смогли запустить эти игры и на других устройствах под управлением ОС Android, однако производительность была низкой).

Source 2

Принципиально новая версия движка, выпущенная в 2015 году компанией Valve вместе с выходом обновленной игры Dota 2 - Reborn. Увы - технической презентации не было, известно лишь, что движок все так же работает на API OpenGL (возможно в будущем добавится API Vulkan), а так же умеет задействовать столько ядер процессора, сколько у него есть. Так же Valve обещали, что движок будет лучше работать на старых компьютерах (уменьшено потребление ОЗУ), однако Dota 2 Reborn оказалась тяжелее Dota 2 на Source Engine 24. Еще одно важное добавление - появилась поддержка VR, и первая игра-демонстрация The Lab для HTC Vive:

Будущее движка

О дальнейшем развитие движка Valve молчит, и это для геймеров не новость (все же ждут слухов о Half-Life 3 и Portal 3, правда?) Пока что вторая версия движка достаточно сырая и требует доработки, и, очевидно, Valve fix it исправляет ошибки, а о будущих играх и версиях движка знает только Гейб Ньюэлл.

Более поздние игры от Valve используют свой собственный набор инструментов SDK или Authoring Tools:

Примечание: "Authoring Tools" указывает на не совместимость с Source SDK.

Authoring Tools в настоящее время поставляется в виде бета-версии соответствующих игр

Мы переводим на Authoring Tools следующие дистрибутивы игр:

  • Team Fortress 2
  • Counter-Strike: Source
  • Day of Defeat: Source
  • Half-Life: Deathmatch

Ранее эти средства распространялись отдельно от игры объединенные в один пакет (приложение "Source SDK"). Сейчас же мы делаем схожую с L4D и CS:GO модель инструментов. Согласно той модели SDK Tools по умолчанию является частью игры, поэтому все, что вам нужно сделать, чтобы запустить утилиты SDK Tools, это запустить игру и обновить её до последней существующей версии. Пожалуйста, обратите внимание, что эти инструменты будут доступны только под ОС Windows.

Теперь обратите внимание на папку BIN. (Например: /steamapps/common/Team Fortress 2/bin). Там Вы уведите несколько новых *.bat файлов, который можно использовать для настройки среды разработки и запуска соответствующих инструментов:

  • hammer.bat
  • faceposer.bat
  • hlmv.bat
  • stdudiomdl.bat
  • vtex.bat

Примечание: Теперь для запуска инструментов SDK используйте эти bat файлы. Приложение "SDK launcher" для этих целей больше не используется.

Если у Вас есть проблема с запуском, убедитесь что не где в путях не прописана переменная среды VPROJECT. Если Вы все же используете VPROJECT, то проверьте значение этой переменной среды в системе Windows, командой set в командной строке и установите правильное значение.

Установка и запуск

Следующие инструкции подходят только для установки Source SDK. Если Вам нужно установить Authoring Tools к какой либо игре, то смотрите разделы соответствующих игр..

Инструкция для установки старой версии Source SDK:

На будущее, или если это не сработает:

  1. Откройте Steam.
  2. Откройте вкладку Tools .
  3. Сделайте двойной клик на Source SDK , который находится в категории "Not Installed".
  4. Прочитайте диалоговое окно и нажмите Download and Install / Next для продолжения.
  5. Source SDK будет загружаться на ваш компьютер через Steam.

После того, как загрузка была завершена, Вы можете запустить SDK из вкладки Tools. Вы также можете создать ярлык на рабочем столе, совершив клик правой кнопкой мыши по SDK и нажав на Create desktop shortcut из появившегося контекстного меню.

Запуск

Как только Steam закончит загрузку, Вы сможете запустить SDK из вкладки Tools (Инструменты). Вы так же можете создать иконку на рабочем столе, нажав правой кнопкой мыши по SDK во вкладке Tools (Инструменты) и нажав на Create desktop shortcut (Создать ярлык на рабочем столе ) в появившемся контекстном меню.

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

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

Valve logo

Разработчик: Valve Corporation

Серия движков: Source Engine

Дата анонса: 2004 год

Написан на языке: C++

Лицензия: Проприетарное программное обеспечение (Source Engine является частной собственностью Valve)

Последняя версия: Source Engine 2

Source engine вышедший из тени такого гиганта как Valve значительно превзошел возлагаемые на него надежды и проложил себе собственную дорогу к славе. Source разработан Valve Software движок, основанный на Qake Engine поставил собой точку на старых технологиях и подстегнул сообщество к созданию новой эры движков. Первое заявление Гейба Ньюела после приобретения движка "Когдда мы сели и увидели движок, мы поняли, что для создания грандиозного шутера от первого лица, не нужно делать инновационной разработки в этой области в которой, уже все сделано Кармаком".

К счастью, движок не удовлетворил всех потребностей Valve в полной мере, разработчики руководствовались принципом - мы хотим, что-то, мы сделаем так, что бы оно появилось в игре. Исходя из этого Valve сильно перелопатили движок, что бы игра выглядела не как Quake, а как хотят этого сами разработчики.

В первых версиях движка была даже воплощена поддержка динамического освещения, но позднее, из-за недостаточной мощности компьютеров того времени, было принято решение убрать данную технологию. Графический движок был сильно переработан, что бы Half-Life не выглядел как его прямой конкурент Quake. Half-Life должен был не только выглядеть лучше Quake, но и быть лучше Quake в техническом плане. Из-за этой проблемы релиз Half-Life был перенесен почти на год. Half-Life была первой игрой в которой NPC персонажи разделялись на союзных и противников. В движок так же была добавлена скелетная анимация и лицевая мимика- это поистине гениальное нововведение, данная технология сейчас используется во всех физических моделях.


Задавая моделям скелет, программисты могут намного проще и качественнее создавать анимацию персонажей, что так же позволяло создавать различные сцены в играх быстрее и красивее. Нововведение так же сказалось и на лицевой мимике- если раньше персонажи, как правило, чревовещали своим голосом, то теперь их лица обрели свою жизнь. Этот движок позже регулярно перерабатывался и дорабатывался, как Valve, так и сторонними компаниями. Сами Valve обновляли его при помощи системы Steam. Компания Gearbox выпустила на нем несколько игр, из которых стоит отметить Half-Life: Blue Shift и Half-Life: Opposing Force. В модификации от Gearbox были добавлены текстуры большего разрешения, сглаживание и улучшена система лицевой мимики.


Для выхода Counter Strike: Condition Zero совместными усилиями Valve, Gearbox и TurtleRock была разработана новая версия движка, которая добавляла возможность использования высоко детализированных текстур. Текстуры накладывались сверху на другие и создавало ощущение шероховатости плоскости, как например щели, трещины и т.д. Так же были добавлены Alpha-текстуры, таким текстурам можно было задавать степень прозрачности, что используется в ряде сцен.

История разработки движка Source

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


Таким образом, название Source стали использовать для описания нового движка, а GoldSource стало названием предыдущего поколения технологии. Стоит отметить, что название в дословном переводе означает «источник», однако слово source также употребляется в словосочетании source code - исходный код.


Первой игрой на движке Source стал многопользовательский шутер Counter-Strike: Source, вышедший в октябре 2004 года, он стал своеобразной демонстрацией движка, поэтому в его название и вписано название технологии, являя собой воссозданную с новейшей для того времени графикой версию классического шутера Counter-Strike.


Немногим позже было выпущено продолжение Half-Life - Half-Life 2, сюжетный научно-фантастический шутер, получивший, впоследствии, множество наград и отмеченный как имеющий графику, являющуюся одной из наиболее прогрессивных для своего времени. В Half-Life 2 очень активно используется физический движок, в основу которого лег Havok, лицензированный Valve. При помощи Havok Engine построены многочисленные головоломки, основанные на игре с физическими законами. В дальнейшем тематика головоломок с законами физики была интересно развита в другом проекте Valve - Portal выпущенном в 2007 году, основной идеей игры является перемещение с помощью телепортов. Помимо развитой физический модели, Half-Life 2 отличалась наиболее передовой для своего времени технологией лицевой анимации. Графический движок, использующий DirectX девятой версии, также отличался сильной оптимизацией и мог работать на старых моделях видеокарт, понижая свое качество графики и переходя на более ранние версии DirectX, вплоть до шестой версии.


В дальнейшем Source, чья структура описана разработчиками как крайне гибкая и модульная, был использован в большинстве игр компании, постоянно подвергаясь доработкам и усовершенствованиям. Было добавлено множество современных эффектов, а также расширены разные возможности движка, в том числе, например, и по работе с локациями больших размеров, добавлены новые платформы к списку поддерживаемых. Изначально Source был доступен на Windows, позднее добавились Xbox, Xbox 360, PlayStation 3, с 2010 года - Mac. С 2012 года была добавлена поддержка Linux первой портированной Valve игрой стала Team Fortress 2.

Технические характеристики Source

Source является игровым движком, поэтому состоит из различных компонентов в числе которых: Физический движок, графический движок, аудио движок и т.д.


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


Физический движок создан на основе Havok. Он позволяет рассчитывать многие физические объекты, такие как твёрдые тела, упругие тела, верёвки, поверхности и т.п. Существует возможность создания реалистичных транспортных средств, от машины до катера на воздушной подушке и вертолёта. Для просчёта поведения транспортного средства на дороге или в воздухе используется много параметров, например сцепление колёс с дорогой, масса машины. Для придания реалистичного движения телу, используется физика «тряпичной куклы»; созданная заранее анимация может смешиваться с физикой реального времени.


С развитием Source, в него были добавлены: HDR-рендеринг, динамическое освещение и затенение с возможностями самозатенения объектов, мягкими тенями от (присутствует возможность использования традиционных карт освещения), многоядерный рендеринг для многоядерных процессоров, развитая система частиц.


SDK tools

Source SDK - набор утилит для создания модификаций на движке Source, бесплатно доступный через Steam игрокам. В набор входят: редактор карт - Valve Hammer Editor, утилита для создания лицевой анимации моделей - Faceposer, программа просмотра моделей в формате.MDL - Model Viewer.


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


Ниже перечислены различные внутренние версии движка Source с перечнем игр, в которых применялась конкретная версия движка:

Ранние версии (2003) - ранняя версия движка применялась в утекшей в Сеть в 2003 году бета-версии Half-Life 2, игра была визуально похожа на Half-Life на GoldSource и не содержала множества технологий. На другой версии движка, уже близкой к дебютировавшей с Half-Life 2, создавалась игра Vampire: The Masquerade – Bloodlines.


VTMB

Source Engine 2004 (Source Engine 6) - первая релизная версия движка, впервые примененная в Half-Life 2. Изначально поддерживает масштабирование, возможность обновлений, шейдерный рендеринг, лицевую анимацию, а также динамическое освещение. До 2005 года использовалась в: Half-Life 2, Counter-Strike: Source, Half-Life 2: Deathmatch, Half-Life: Source. Обновлёна до Source Engine 7.


Source Engine 2005 (Source Engine 7) - обновлённая версия. По сравнению с предшественницей, поддерживает High Dynamic Range Rendering, для демонстрации новых технологий освещения разработчики выпустили Half-Life 2: Lost Coast, в сущности эта игра представляет собой уровень, не попавший в финальную версию Half-Life 2. Движок считается устаревшим, используется в: Half-Life 2: Lost Coast; до 2006 года использовался в: Half-Life 2: Deathmatch, Counter-Strike: Source, Half-Life Deathmatch: Source, Day of Defeat: Source; до 2010 года в Half-Life 2; до 2014 года - в Half-Life: Source.


Source Engine 2006 (Source Engine 7: Base Source Engine 2) с комплектом разработчика: Source SDK Base 2006 - третья версия движка, на которой были выпущены несколько игр. Также на нём до 2010 года базировался ряд многопользовательских игр Valve. Он был обновлен и поддерживает обновленную лицевую анимацию, многоядерный рендеринг и обновленный HDR. Для этой версии движка было выпущено большое количество модификаций, кроме того, выпущенные для более ранних версий моды совместимы и с этой версией, которые не работоспособны на более поздних версиях, поэтому авторами модов она все еще используется. Использована в Half-Life Deathmatch: Source, SiN Episodes: Emergence, Dark Messiah of Might and Magic; до 2009 года использовалась в Day of Defeat: Source; до 2010 года в Half-Life 2: Episode One, Half-Life 2: Deathmatch, Counter-Strike: Source, Garry"s Mod.


Source Engine 2007 (Source Engine 14); с комплектом разработчика: Source SDK Base 2007 - четвёртая версия движка, сильно доработана и обновлена, использовалась впервые в играх Valve сборника The Orange Box. Обновлен шейдерный рендеринг, значительно доработано динамическое освещение и затенение, также появилась система мягких частиц и была добавлена кинематографическая физика, возможность, которая существенно расширила применение физического движка. Движок содержит значительные изменения по сравнению с Source Engine 7, поэтому игровые модификации, выпущенные для более ранних версий, не совместимы с данной и более поздними версиями. Используется в Black Mesa; до 2010 года в Half-Life 2: Episode Two, Portal, Team Fortress 2, Day of Defeat: Source.


Source Engine 2008 (Source Engine 14: Base Source 3) - очередная версия движка с улучшенной кинематографической физикой и некоторыми визуальными эффектами (например, глубиной резкости); применена в Left 4 Dead.


Source Engine 2009 (Source Engine 15) - шестая, сильно доработанная версия движка. Обновлены все функции, значительно доработана система частиц, лицевая анимация, масштабирование и возможность обновлений. Выпущена с игрой Left 4 Dead 2, позднее до этой версии были обновлены более ранние игры Valve. Используют: Left 4 Dead 2, Zeno Clash, Postal III, с сентября 2010 года на данную серсию перешли игры: Counter-Strike: Source, Half-Life 2, Half-Life 2: Deathmatch, Half-Life 2: Episode One, Half-Life 2: Episode Two, Portal, Team Fortress 2.


Source Engine 2010 (Source Engine 17) - седьмая версия движка. Используется в: Day of Defeat: Source, Bloody Good Time.


Source Engine 2011 - используется в Portal 2, Dota 2, Counter-Strike: Global Offensive, The Stanley Parable.


Source Engine Multiplayer (Source Engine 19) - вариант движка, адаптированный для нужд многопользовательских игр; до 2010 года использовали: Counter-Strike: Source, Team Fortress 2, Day of Defeat:Source, Half-Life 2: Deathmatch, Garry"s Mod.


Source Engine Multiplayer (Source Engine 21) - до 2012 года использовали: Counter-Strike: Source, Team Fortress 2, Day of Defeat: Source, Half-Life 2: Deathmatch, Garry"s Mod.


Source Engine Multiplayer (Source Engine 23) - улучшена работа с возможностью Big Picture Mode в Steam; до 2013 года использовалась в: Counter-Strike: Source, Team Fortress 2, Day of Defeat: Source, Half-Life 2: Deathmatch, Garry"s Mod.


Source Engine 2013 (Source Engine 24); с инструментарием Source SDK Base 2013 - одна из последних версий движка, на которую Valve перевели большую часть своих игр. В числе изменений: для оптимизации использования дискового пространства было решено отказаться от использования громоздких.GCF-файлов (архивов с ресурсами игр), в пользу файловой системы под кодовым именем SteamPipe. Игры на новом движке устанавливаются теперь в директорию Steam\SteamApps\Common, а файлы игры хранятся в.VPK-файлах. Для игр Counter-Strike: Source, Team Fortress 2 и Half-Life 2: Deathmatch создана удобная система добавления пользовательского контента (модов): присутствует папка custom, в которой создаётся папка с произвольным именем, и уже в неё складываются классические папки материалов модификации (materials, models и т.д.). Добавлена совместимость с Linux. С 2013 года используется в: Half-Life 2, Half-Life 2: Deathmatch, Half-Life 2: Lost Coast, Half-Life 2: Episode One, Half-Life 2: Episode Two, Counter-Strike: Source, Day of Defeat: Source, Portal, Team Fortress 2, Dota 2, Garry"s Mod, Tactical Intervention, Alien Swarm.


Source 2 Engine

Компания Valve официально анонсировала Source 2 на конференции разработчиков игр GDC 2015 в Сан-Франциско 3 марта. По словам Valve, Source 2 будет «доступен бесплатно для всех разработчиков контента». Аналогичное заявление на днях сделала компания Epic Games, чей движок Unreal Engine 4 больше не требует ежемесячной подписки для его использования.


«В случае с Source 2 мы хотим увеличить продуктивность труда творческих людей, - сообщил ведущий программист Valve Джей Стелли (Jay Stelly) в пресс-релизе. - С учётом того, как всё более важен становится создаваемый пользователями контент, Source 2 предназначен не только для профессиональных разработчиков. Он позволяет самим игрокам участвовать в создании и разработке их любимых проектов».


Модель распространения от Valve по сравнению с конкурентами выглядит намного интереснее, движок бесплатен для всех, но если выхотите сделать игру на Source 2 будте добры продавать ее через нашу площадку Steam. Source 2 мощный инструмент способный удовлетворить потребности любого разработчика, подробные спецификации движка пока не объявлены, как и дата анонса, но упоминается версии с поддержкой API Vulkan - новая разработка компании Khronos Group, которая позволит создателям игр выжимать максимум из самого современного компьютерного "железа". Пока не заявлено ни одного проекта на Source 2, но в сети гуляет видео в котором на закрытой презентации разработчикам была показана игра Dota 2, запущенная с использованием Source 2. Сейчас у каждого пользователя с аккаунтом Steam есть возможность запустить Dota 2 на Source engine 2.


Valve приложили огромные усилия для того, что бы не быть похожими на всех, в итоге получили уникальную технологию опережавшую свое время. Не смотря на довольно продолжительный срок существования Source engine игры на выглядят довольно не плохо и не стесняли разработчиков в реализации своих идей. Все благодаря постоянным обновлениям не только игр, но и самого движка о чем говорят множество Build версий Source. Игры созданые на Source не только легендарные серии, о которых сышал каждый геймер Half Life, Portal, Left 4 dead, но и игры, которые превратились в киберспортивные дисциплины Counter Strike: Global offensive, Dota 2. На данный момент Valve являются организаторами чемпионата с наибольшим призовым фондом (13 000 000$) и он досих пор растет. Сейчас с анонсом Source 2 повис в воздухе вопрос будет ли это прорыв и новая эра для игр или очередная технология, коих на данный момент довольно много. Как минимум монетизация движка очень впечатляет, а консоль Steam Machines, контролера, Steam Link, Steam Lighthouse (устройство для шлема виртуальной реальности) говорит о намерении Valve проникнуть во все сферы связаные с компьютерными играми. Что ж нам остается только ждать, когда мы сможем насладиться результатами трудов Valve и в полной мере ощутить на себе некст ген индустрии компьютерных развлечений.