В основу движка GoldSrc положен лицензированный у id Software код игрового движка Quake engine (точнее, его улучшенной версии, созданной для QuakeWorld — сетевого обновления игры Quake[2][3]).
Использовать движок Quake тогда ещё начинающим игровым разработчикам и основателям компании Valve, Гейбу Ньюэллу и Майку Харрингтону, посоветовал известный программист Майкл Абраш, который, как и они, покинул в то время Microsoft. Примечательно, что Абраш помогал Джону Кармаку с его написанием[4].
«Когда мы сели и увидели движок, мы поняли, что для создания грандиозного шутера от первого лица нам не нужно делать инновационные разработки в той области, в которой уже многое сделано Джоном Кармаком. Это крайне тяжело — одновременно разрабатывать движок и собирать надёжную команду с нуля» — говорит Гейб Ньюэлл[4].
Силами Valve была произведена значительная модификация технологии: рендер (графический движок) был дополнен поддержкой Direct3D, добавлена скелетная анимация, лицевая мимика, динамическое освещение. На ранних скриншотах Half-Life, сделанных ещё в период разработки, видно[5], что движок активно использует динамические тени от объектов — возможно, их поддержка была убрана из финальной версии, так как разработчики решили, что домашние компьютеры тех времён ещё не готовы для таких сложных обработок, или они не были закончены.
Позднее в GoldSrc также были интегрированы наработки других движков, созданных id Software:
У нас был исходный код оригинальных DOS Quake[пр. 1], Win Quake[пр. 2], GLQuake[пр. 3], а также QuakeWorld, Quake II и всевозможные патчи. Мы брали и выбирали из этой исходной базы кодов то, что нам необходимо. Но мы реализовали и много собственных подсистем (анимация, ИИ, GL, программный рендеринг), поэтому около 75% движка — это наш собственный код» — говорит[3] Крис Бокитч, работавший в Valve с 1997 по 2008 год[6].
Происхождение названия
За месяц до релиза Half-Life движок все ещё не имел официального названия, потому множество компьютерных журналов описывали его как «основывающийся на технологии Quake».
Эрик Джонсон, директор по маркетингу Valve, на заданный ему в сообществе разработчиков вопрос о том, как возникло название «GoldSource», ответил так:
Когда мы были очень близки к релизу Half-Life (где-то в неделе до него), мы поняли, что есть несколько проектов, которые надо начинать разрабатывать, но мы не могли рисковать, что-то меняя в коде выходящей версии игры. Мы решили разделить код в VSS (Microsoft Visual SourceSafe) на $/GoldSrc и /$Src. В течение нескольких лет мы использовали эти термины непосредственно как «GoldSource» и «Source». По крайней мере, первоначально ветка кода GoldSrc относилась к исходному коду уже выпущенной версии, а Src относилась к будущему варианту, с более рискованной технологией, над которой мы работали. Когда пришло время показывать Half-Life 2 в первый раз на выставке Е3, это была часть нашего внутреннего общения — ссылаться на движок Source против движка GoldSource, и название прижилось[7].
Дальнейшее развитие
По мере выхода новых игр на GoldSource, в него вводилась поддержка новых функций.
В Counter-Strike: Condition Zero (2004 год) добавлена поддержка детальных текстур (англ.detail textures)[8]. Задача детальных текстур — частично компенсировать невысокое разрешение исходной текстуры, накладывая поверх неё текстуру с деталями, «шероховатостями» объекта. Также появилась поддержка альфа-текстур, которая позволила задавать степень прозрачности объектам или отдельным элементам объекта (так, например, можно сделать полупрозрачным шлем бойца спецназа).
В James Bond 007: Nightfire (2002 год), в которой использовалась значительно улучшенная силами компании Gearbox Software версия движка, было сделано множество графических улучшений. В интервью авторы отмечают поддержку больших открытых пространств, детализированных текстур и моделей, погодных эффектов (грозы и вспышек молнии), процедурно сгенерированных облаков (вместо скайбоксов, с которыми работает оригинальный GoldSrc) и воды с отражениями[9][10][11], а рендер переведен с DirectX 6 на DirectX 8[12]. Редактор карт переделан как Gearcraft Editor[13]. Этот вариант движка получил внутреннее название Gearcraft Engine и был использован только в Nightfire.
Преемник движка GoldSource, разработанный Valve, — движок Source — стал главным составляющим игры Half-Life 22004 года[14]. Новая версия движка стала поддерживать игровые консолиXbox, Xbox 360 и PlayStation 3. Структура движка перетерпела множество изменений. Source стал одним из первых движков, активно использущим шейдеры: особенностями движка стали реалистичная вода с преломлениями и отражениями окружающего мира, динамические тени от персонажей и объектов, динамическое освещение и затенение, HDR-рендеринг, развитая и проработананая система частиц. Помимо этого, одной из особенностей стал физический движок, основанный на Havok.[15][16] Технология Source активно дорабатывалась с выходом новых игр и продолжает получать обновления. Для работы с движком и создателей модов авторы выпустили набор инструментов Source SDK[17].
Пользовательские модификации игр на GoldSrc продолжают создаваться авторами до сих пор[19]. Примечательно, что и сама Valve продолжила выпускать обновления для своей линейки игр на GoldSrc, как касающиеся исправления мелких недочётов, так и более крупные — так, в 2013 году все игры серии Half-Life получили поддержку Linux и Mac OS X[20].
В 2023 году, в честь юбилея (25 лет со дня выпуска) Half-Life, Valve было выпущено глобальное обновление оригинальной игры, обычно называемое Half-Life 25th Anniversary Update, привнесшее ряд исправлений, дополнений и улучшений. Соответственно исправлениям самой игры, Valve внесла некоторые обновления и в код GoldSrc, главным образом, связанные с доработкой интерфейса, исправлением старых багов, улучшенной поддержкой современных систем и добавлением сглаживания[21].
В частности, разработчиками был переписан рендерер — компонент, отвечающий за отображение игровой графики. Он работает под управлением Direct3D, OpenGL и софтверным рендерингом (поддержка Direct3D была убрана из игр Half-Life в 2013 году, с добавлением поддержки Linux), реализуя 16-битную глубину цвета. Была добавлена новая на тот момент система цветного освещения[22], высокополигональные модели и текстуры смогли продемонстрировать более высокое качество, в сравнении с Quake 1. Помимо этого, поддерживались прозрачные текстуры. С появлением Counter-Strike: Condition Zero, добавились альфа-текстуры и техника детальных текстур (англ.detail textures) для лучшей проработанности текстур, когда игрок находится рядом с объектом[8].
Как и Quake, GoldSrc использует BSP-систему для построения уровней. Для создания эффекта окружения на открытых локациях используются скайбоксы — статичные текстуры, которые имитируют собой находящееся вдали пространство, небо и т. д.[23]
Движок использует продвинутую (на момент выпуска) систему игрового ИИ, позволяющую, помимо прочего, объединяться в группы (англ.AI flocking) противникам или союзникам игрока, например, чтобы противостоять ему[24]. Помимо этого, игры на движке GoldSrc отличало широкое использование скриптовых сценок для построения сюжетного повествования внутри игрового процесса[24]. Также Half-Life стала одной из первых игр, где игрока могли сопровождать дружественные ему NPC[25].
В 2023 году, в связи с юбилеем Half-Life, движок получил новые доработки, сделанные силами Valve в ходе обновления, выпущенного для оригинальной игры и известного как Half-Life 25th Anniversary Update: добавлена корректная поддержка высоких разрешений экранов, диалоговых окон и и т. п., изменена система отображения меню, которое теперь корректно масштабируется под любые разрешения, добавлена опция «Включить фильтрацию текстур», проведена адаптация для работы со Steam Deck, игровой консолью Valve, добавлена поддержка сглаживания MSAA, сделаны многочисленные исправления старых багов и оптимизации, а также увеличены лимиты движка для создателей модификаций[21].
Средства разработки
В Steam доступен набор инструментов, названный Half-Life SDK, содержащий редактор уровней, исходные коды для программирования, а также библиотеки спрайтов и текстур[26]. Подробное описание всех терминов, связанных с разработкой под GoldSrc и связанную информацию, можно найти в официальной вики разработчиков Valve, Valve Developer Community[27].
В качестве редактора уровней самими разработчиками использовался Valve Hammer Editor, ранее называвшийся Worldcraft (и имевший первоначальное название The Forge в первой CD-версии Half-Life)[28] — он же входит и в SDK. Последней версией Hammer, работающей с GoldSrc, стала 3.5[28].
Другие редакторы карт, поддерживающие движок GoldSrc: GtkRadiant, QuArK, Qoole, Tread 3D, Sledge Editor[29], а также J.A.C.K., новый редактор, впервые выпущенный в 2016 году[30].
Трёхмерные модели для GoldSrc хранятся в .SMD-файлах и могут быть экспортированы в этот формат автором модели при помощи плагинов для популярных 3D-редакторов, таких как 3ds Max, Maya и Blender[31]. В ПО MilkShape 3D есть встроенная поддержка этого формата, позволяющая как импортировать и редактировать модель, так и экспортировать её в другие популярные форматы[32]. Для простого предварительного просмотра моделей может быть использована официальная утилита Half-Life Model Viewer (HLMV)[33].
Для просмотра текстур, сложенных в файлы с расширением .WAD, может быть использована утилита Wally[34].
Ресурсы, как правило, находятся в архивах с расширением .PAK[35], они представляют собой несжатые ZIP-архивы[36] с изменённым расширением и открываются в любом архиваторе.
Открытая архитектура и изначальное наличие нужного программного обеспечения позволила самим игрокам создать множество модификаций, некоторые из которых являются скорее отдельными играми, используя файлы оригинала как техническую базу (например, трилогия They Hunger[37], Natural Selection[38], Underworld Bloodline[39][40], Poke646 и Poke646: Vendetta[41], Wanted![42], Half-Life Rally[43], Digital Paintball[44] и другие)[19].
Демоверсия Half-Life, выпущенная для продвижения полноценной игры, распространявшаяся, в том числе, на дисках-приложениях для журналов. Состоит из трёх сюжетных карт, разработанных специально для этой версии, и тренировочного уровня[46].
Новая игра в серии, выпущенная как официальное самостоятельное дополнение для Half-Life: игроку, управляя другим главным героем, предстоит увидеть события в Чёрной Мезе под другим углом.
Однопользовательский шутер, мод для Half-Life. Absolute Redemption привлекла внимание Valve, будучи выпущенная как бесплатный мод, получив одобрение на выпуск в виде коммерческого продукта. Также Maverick Developments разработала тренировочный уровень для коммерческой версии Counter-Strike.
Второе официальное дополнение к Half-Life. Так же, как Opposing Force, представляет игроку другой взгляд на события игры и другого главного героя. В комплекте поставляется дополнение Half-Life High Definition Pack, улучшающее графику предыдущих игр.
Интерактивное приложение, созданное Maverick Developments, выпустившими Absolute Redemption и мод Wanted!. Предназначено для обучения работников технике безопасности[52][53], не было доведено до финальной версии[54].
Шпионский боевик о Джеймсе Бонде. Движок был в значительной степени доработан силами Gearbox и назван Gearcraft Engine: добавлено множество улучшений, в том числе поддержка больших открытых пространств, детализированных текстур и моделей, погодных эффектов и т. п.[9][10][11]
Valve, Gearbox Software, Ritual Entertainment, Turtle Rock Studios
Шутер от первого лица, сочетающий в себе как однопользовательский, так и многопользовательский режимы. Примечателен очередной серьёзной модификацией движка, помимо прочего, привнёсшего технику детальных текстур.
«Сюжетная» версия Counter-Strike: Condition Zero, была первоначально вырезана из оригинальной игры, но затем была доработана как самостоятельная игра. Поставляется с Condition Zero.
Развитие Counter-Strike Online. Содержит весь контент Counter-Strike Online и Counter-Strike 1.6. Предназначена для глобальной аудитории и имеет перевод на множество языков. Изначально называлась Counter-Strike Nexon: Zombies; в 2019 году переименована в Counter-Strike Nexon: Studio.
Первоначально выпущена как любительская модификация к Half-Life в 1999 году. В 2013 году Valve предоставила команде движок, что позволило им значительно модифицировать его, назвав его Svengine[61][62], и впоследствии выпустить Sven Co-op как игру[63].
Dismounted Infantry Virtual Environment
Дата выпуска неизвестна
Maverick Developments
Интерактивное обучающее приложение для сотрудников, похожее на Tutus, созданное по заказу Минобороны Великобритании[54].
↑Original Valve opening scene(рус.). YouTube (21 марта 2006). — оригинальная вступительная сценка к Half-Life, Valve Guy (Mr. Valve). Дата обращения: 25 июня 2023. Архивировано 25 июня 2023 года.
↑ 12Quake (неопр.). Valve Developer Community. — «GoldSrc is based off of Quake code, with its successors Source and Source 2 both retaining some residual Quake code»; «Early GoldSrc multiplayer (until 2001) was based off the QuakeWorld multiplayer code». Дата обращения: 20 июня 2023. Архивировано 20 июня 2023 года.
↑ 1234Engine: GoldSrc (Goldsource) — Engine description (неопр.). The Sierra Chest. — «Ken Birdwell explains it like this: „It is fundamentally just a heavily modified Quake 1 engine. There are about 50 lines of code from the Quake 2 engine, mostly bugs fixes to hard problems that Carmack found and fixed before we ran into them“»; Chris Bokitch: «We have the source code to the original DOS Quake, Win Quake, GL Quake, Quake World, Quake II, and all of the various patches. We pick and choose from that source base depending on what we are trying to do. However, we've been implementing a lot of our own sub-systems (animation, AI, GL and software renderer), so about 75% of the engine is our own code». Дата обращения: 27 июня 2023. Архивировано 19 апреля 2023 года.
↑Крис Бокитч(рус.). Энциклопедия Half-Life. Дата обращения: 27 июня 2023. Архивировано 25 июня 2023 года.
↑User Talk: Erik Johnson (неопр.). Valve Developer Community (1 сентября 2005). — страница обсуждения участника Erik Johnson. Дата обращения: 27 июня 2023. Архивировано 15 февраля 2012 года.
↑ 12GoldSrc Map Texture Tutorial (неопр.). the303.org. — гайд по работе с детальными текстурами для авторов уровней. Дата обращения: 27 июня 2023. Архивировано 3 июня 2023 года.
↑ 12Amer Ajami.James Bond 007: NightFire Preview(англ.). Gamespot (июнь 2006). — «In creating NightFire, Gearbox took the latest version of Valve's Half-Life engine, modified it extensively, and dubbed it the Gearcraft engine. (...) „There's so little original Half-Life code in NightFire that it's practically using a brand-new engine“. To put it plainly, this will be Gearbox's best-looking game to date, and this point is clearly illustrated in one of NightFire's early levels. (...) new engine is just as adept at rendering visually pleasing outdoor areas as well. Water is drawn with specular environment-mapping in order to create lakes and rivers that undulate and reflect their surroundings in a realistic manner. Procedurally rendered skies allow for moving clouds, and at times, you'll be able to make out lightning flashes and other ambient weather effects too». Дата обращения: 27 июня 2023. Архивировано 17 апреля 2023 года.
↑ 12John [JCal] Callaham.James Bond 007: Nightfire Impressions(англ.). Home Lan (21 августа 2002). — «There is about as much left of the Half-Life engine in Nightfire as there was of the Quake engine in Half-Life». Дата обращения: 27 июня 2023. Архивировано 27 августа 2002 года.
↑Goldsource Engine(англ.). vghe.net. — «007 Nightfire shipped with a DirectX 8 renderer». Дата обращения: 28 июня 2023. Архивировано 3 октября 2023 года.
↑Tutus (неопр.). Valve Developer Community. Дата обращения: 28 июня 2023. Архивировано 3 октября 2023 года.
↑Tutus (неопр.). vghe.net. Дата обращения: 28 июня 2023. Архивировано 3 октября 2023 года.
↑ 12Community Interviews: Tony Newton, co-creator of Redemption (неопр.). Valve Time (2006-13-08). — «This may have been after you left, but from what we know, these were also built on the Half-Life engine, and one was called Tutus». Дата обращения: 28 июня 2023. Архивировано 3 октября 2023 года.
GoldSrc(англ.). Valve Developer Community. — страница GoldSrc в официальном сообществе разработчиков Valve. Дата обращения: 27 июня 2023. Архивировано 15 февраля 2012 года.
Сторонние ресурсы
GoldSrc Engine(рус.). GcUp.ru. Дата обращения: 27 июня 2023.