На каком языке написан half life

Обновлено: 06.07.2024

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

а тебе зачем? исходников все равно не найдешь, если ты конечно не сотрудник Valve

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

В папках игры есть несколько файлов GCF. Это виртуальные системы файлов, где закэшированы основные материалы игры, скрипты, аудио и фото. С помощью программы GCFScape можно залезть в файлы. (Фото 1). Оттуда копируем файлы на рабочий стол. В основном это файлы VTF и VMT. VMT - это скрипты игры, а VTF - графика. В эти файлы уже можно залезть программой VTFreader. И мы видим, что это - C++, настроенный на работу с Half-Life. (Фото 2).

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

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


Вступление

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

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

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

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

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

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

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

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

Репозиторий

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

Выбор ветки

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

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

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

Стиль кода

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

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

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

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

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

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

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

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

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

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

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


Исключение HL2

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

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

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

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

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

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

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

Сборка

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

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

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

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

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

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

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


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

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

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

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


pantogamr34
Язык игры привязан к языку интерфейса стима.


На инглише играй в чем проблемы или моя твоя не понимать



нашел инструкцию по смене языка, но она мне не помогла
C:\Users\XXXX\AppData\Roaming\Goldberg SteamEmu Saves\settings
открываем файл language.txt и меняем english на russian


pantogamr34
в свойствах ярлыка дописать
-language russian (с пробелом в начале)
и все переведется на русский (кроме голоса, игру не звучили)

На дворе 2020 год и мы уже знаем что в разработке находятся такие игры как STALKER 2 и даже новый Half-Life Alyx, но только для устройств виртуальной реальности. И раз эта игра для VR всё таки находится в разработке, то значит и третий эпизод Half-Life 2 рано или поздно может тоже быть создан и выпущен компанией Vavle, которая и отвечает за всю серию игр Half-Life. В связи с чем, давайте вспомним интересные факты о серии Half-Life, чтобы освежить о данной серии себе память. И нет, это не топ, а скорее просто список из фактов, потому что факты тут не все а только некоторые, да и перечислены мною они будут не в каком-то определенном порядке а рандомно.


Первая часть Half-Life создана и выпущена компанией Valve в 1998 году и данная игра использовала сильно модифицированный движок игры Quake под названием GoldSrc. В качестве вдохновения для сюжета были взяты: произведение Стивена Кинга под названием The Mist (Мгла) и игра Doom, но так как Vavle в то время считали что игры жанра «шутер» могут быть чем-то большим чем просто игрой в стиле «беги и стреляй», то Half-Life была наполнена интересными персонажами и сюжетом, который, на то время, никто не видел.

Тот самый мимфол

Тот самый мимфол

Данная игра планировалась к выпуску где-то в 1997 году, но в последнюю минуту Valve подумали что игра не достаточно хороша, поэтому отменили её выпуск и переделали всю игру заново. В результате чего получилась та самая игра, которую мы все знаем и любим. Выход же самой игры был отодвинут аж почти на целый год, и в итоге игра вышла аж в 1998 году, после чего к ней вышло пару дополнений, среди которых ни одно не имело в своем названии цифры 3.

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

Обидился

В Half-Life есть интересная фраза которую произносят все охранники, которая звучит как «Эй, найди меня позже и я куплю тебе пиво». И если перескочить с Half-Life 1 в Half-life 2 то в первой же миссии, когда мы встретим Барни Калхуна, который являлся протагонистом дополнения к первой Half-Life под названием Blue Shift, то можно услышать от Барни упоминание того что он нам должен пиво. Об этом он нам сам скажет фразой «По поводу того пива которое я тебе должен…». И что же тогда получается, что все охранники в первом Half-Life это один и тот же Барни Калхун? Видимо сюжет в этой серии игр не такой простой как нам кажется, и там есть что-то ещё, что могло бы объяснить данную фигню. Хотя… это можно объяснить тем, что разработчики просто использовали одну и ту же трехмерную модель для всех персонажей – охранников, но всё же со стороны сюжета это смотрится так, словно наш глав.герой спит, и все события ему просто снятся. Отсюда и куча разных Барни Калхунов в Half-Life 1.

Говоря о самом Барни. Несмотря на то, что данный персонаж является главным героем дополнения Blue Shift, вместо трехмерной модели самого Барни используется всё та же модель Гордона Фримена, что смотрится странным, когда мы встретим ещё одного Гордона Фримена проезжающего в вагоне мимо нас.

Два Фримена по цене одного!

Два Фримена по цене одного!

Оригинальная трехмерная модель самого же Гордона Фримена изначально была совершенно другой. Сам же Гордон был жирным дядькой в жёлтом HEV костюме, которого разработчики прозвали как: Иван Космический Байкер. А вот тот дизайн Гордона Фримена который мы знаем с вами сейчас был введен в игру намного позже, пройдя разные изменения в дизайне, пока наконец-то не была выбрана та самая модель, которую мы с вами знаем по сей день. Кроме того, изначально у Гордона Фримена была немного другая прическа, а сзади у него был хвостик, который затем убрали. И как интересный факт, об этом есть пасхалка в фанатском римейке оригинального Half-Life под названием Black Mesa, в котором один из охранников говорит нам «О, я смотрю ты отрезал свой хвостик. Продажная шкура!».

Тот самый Иван Космический Байкер

Тот самый Иван Космический Байкер

Хвостик

Если вы когда-нибудь задумывались о одном из боссов в данной игре по имени Гонарк, о том что он выглядит как огромный паук с большим яйцом на пузе, то вы были правы, ибо оно так и есть. Ведь данная идея с добавлением в игру огромного бронированного паука с яйцом на пузе появилась в офисах Valve, когда кто-то просто предложил что «А давайте добавим в игру огромного паука с яйцом на пузе». Само же название данного паука Gonarch означает два слова: Gonad и Monarch. И первое слово это очередное название репродуктивного органа, а Monarch означает статус босса для данного персонажа в данной игре.

В Half-Life 2 Episode 2 некий доктор Магнусон говорит нам, что он нам простит тот неприятный случай в Черной Мезе, который связан с кастрюлей супа и микроволновкой, если мы справимся с нашим очередным заданием. Так вот, если вы помните тот момент в первом Half-Life, когда мы могли зайти в одну из комнат, по пути к раздевалке с HEV костюмом, и включит микроволновку, которая затем взорвётся вместе с кастрюлей супа, то это именно тот самый момент о котором и упоминал доктор Магнусон. Видимо мы всё же именно его тогда оставили без обеда.

И тут "БААХ. ". И только весь суп по стенкам!

И тут "БААХ. ". И только весь суп по стенкам!

Покуда мы с вами ожидаем выхода третьего эпизода Half-Lif 2, или вообще хотя бы какой-нибудь игры с цифрой «три» в названии из серии Half-Life, то Япония давно получила свою новую игру в данной серии, которая называется как Half-Life 2: Survivor. Это аркадная игра вышедшая на аркадных автоматах, которая основывается на Half-Life 2 и которая получила позитивные отзывы, но является доступной только в Японии. И хоть это не третий эпизод Half-life, всё равно хочется порадоваться за Японцев. Хотя, зная для чего были созданы игровые автоматы, начинаешь немного радоваться что данная игра, на этих автоматах, не добралась к нам. А то высосали бы Valve с нас деньги конкретно "хотя они так сосут, но не это не важно".

Интерфейс тут конечно не ахти

Интерфейс тут конечно не ахти

Много раз были якобы всякие утечки касаемо разработки третьего эпихода Half-Life 2, и некоторые даже говорили о том что Valve отложила третий эпизод и сфокусировалась на разработке третей части Half-Life, но ни одна из них не подтвердилась и никто наверняка не знает, будет ли третья часть Half-Life или нет «Half-Life Alyx не в счет». Но точно известно что велась разработка над ЧЕТВЕРТЫМ эпизодом Half-Life 2 ВНЕ офисов Valve. И занималась разработкой четвертого эпизода студия Arcane, которые также известны как разработчики Dishonored. Название у четвертого эпизода было «Возвращение в Рэйвенхольм» и это должен был быть самостоятельный эпизод, который рассказывает о событиях произошедших до окончания второго эпизода Half-Life 2. Но в конце Valve подумали, что рынок уже заполнен играми про зомби, и поэтому отменили данную игру.

Если спросить у любого игрока о том что «Кто является самым таинственным персонажем в серии Half-Life» то ответ будет очевиден: это некий G-Man, о котором игрокам ничего неизвестно. Даже банально его настоящего имени никто не знает, если оно у него есть вообще, а сам персонаж в играх серии появляется то тут – то там, но не вступает в конфликт с игроком но и никак не помогает игроку. Но вот его псевдоним: G-Man, является просто сокращенным словом Goverment Man (Человек Правительства). А причина из за которой данный персонаж был создан и введен в игру довольно банальная и простая. Разработчики просто хотели ввести в игру персонажа, который не являлся для нас ни врагов и ни союзником, а кем-то по средине, чтобы в игре была хоть какая-то загадочность и тайна.

Мне одному кажется что он похож на Уильяма Дэфо?

Мне одному кажется что он похож на Уильяма Дэфо?

И последний интересный факт который заключается в солдатах – комбайнах в Half-Life 2. И из которых только специальные войска, которые мы встречаем уже с половины игры, не являются в полной мере людьми. А вот члены гражданской обороны, с которыми мы сражаемся в самом начале игры, это самые обычные люди которые предали человечество и перешли на сторону пришельцев. Их никто не подчинял себе и ничего им не вшивал в мозги, заменяя части плоти чтобы контролировать их. Они обычные люди, которые, чтобы выжить, перешли на ту сторону которая показалась им сильнее (Это кстати и объясняет, как Барни в HL2 смог внедриться к ним чтобы собирать информацию о их планах). В итоге они получили еду, жильё и возможность обеспечивать свои семьи, а также сохранили свои эмоциональные чувства. Но вот спец.войска комбайнов уже не являются в полной мере людьми, потому что от них, со стороны пришельцев, требуется полное повиновение. Поэтому, чтобы не дать членам спец.войск предать своих хозяев, то пришельцы просто стёрли им память, удалили практически все клетки отвечающие за эмоции, за исключением злости и повиновения, а также вставили им голосовой аппарат, из за которого мы и слышим их одинаковые роботизированные голоса. Кроме того, чтобы у членов спец.войск не возникало чувства нужды, пришельцы встроили в их организм специальную систему, которая просто напросто испаряет ненужные вещества из их организма. И именно поэтому, когда обычные члены гражданской обороны переходили званием выше, то теряли свою человечность, эмоции и становились подчиненными комбайнов.


А на этом всё. Это были все интересные факты которые я смог собрать на просторах интернета. Конечно здесь далеко не прямо все факты, коих ещё больше, но долго копаться и искать все остальные факты мне не хочется, так как это занимает очень много времени и тратит много сил, поэтому что я смог собрать тем и поделился.

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