Эта статья документации для всего, что использует платформу Source. Нажмите для получения дополнительной информации.

Ru/Gameinfo.txt: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
No edit summary
No edit summary
 
(20 intermediate revisions by 12 users not shown)
Line 1: Line 1:
Файл <code>GameInfo.txt</code> указывает SDK tools и движку Source какой контент нужен для данного мода или игры. Именно так утилиты SDK и движок узнают загружать ли им контент Half-Life 2, Counter-Strike, или Half-Life 2: Deathmatch когда они были запущены в директории мода. Это также маркер, по которому утилиты находят директорию мода.
{{LanguageBar}}
{{Source topicon}}
<center style=color:white;font-size:20px;font-weight:bold;padding:5px>Game Definition Files</center>
{{TabsBar|main=Gameinfo.txt}}
{{seealso|[[:Category:Gameinfo]]}}
:''Для Half-Life 1/{{L|GoldSrc}}, см. статью {{L|The liblist.gam File Structure|liblist.gam}}.''


{{note-ru|Для Half-Life 1 (GoldSrc), см. статью [[The liblist.gam File Structure|Структура файла liblist.gam]].}}
{{toc-right}}


В большинстве случаев Вам не придётся редактировать этот файл, но если вы хотите сделать игру на контенте, отличном от контента Half-Life 2, изменить пути поиска контента, иконки и другую информацию, тогда Вам потребуется редактировать его. Однажды настроенный, этот файл должен распространяться вместе с контентом мода. Точно такой же <code>gameinfo.txt</code> должен лежать в папке мода всех его разработчиков. Пользователи могут модифицировать gameinfo.txt на своё усмотрение. Однако следует учесть, если вы редактировали файл gameinfo.txt от какой-либо Source-игры, Steam при её запуске переизвлечёт оригинальный файл. Для исправления этой ошибки следует создать отдельный gameinfo.txt в другой папке и в параметрах запуска игры установить -game -"путь к папке с новым gameinfo.txt".
'''<code>gameinfo.txt</code>''' содержит описание вашего мода. Он содержит такие метаданные, как его имя, ссылка на веб-сайт или руководство, и определяет, какие игры он использует. Он хранится в папке вашего мода и нужен для определения мода в Steam. Source и SDK инструменты используют его, для получения информации о подгружаемом контенте.


== Настройки пользовательского интерфейса (UI) ==
SDK launcher сгенерирует gameinfo.txt, как только вы запустите Create a Mod Wizard. Он подходит для разработки, но перед релизом, вы захотите изменить информацию об игре.
Много настроек UI, включая заголовок Вашей игры (game's title), обрабатываются gameinfo.txt. Ключи:


{{note-ru|[[Boolean:ru|Булевы]] значения представляются как целые числа.}}
{{Note|{{L|Boolean|Логические}} значения представлены в виде {{L|integer|целых числел}}.}}
{{Warning|Если значение имеет пробелы, нужно "поместить его в кавычки".}}


//Generic information (пер: "Общая информация")
== Настройки UI ==
game "Название игры" //Это то, что отображается в названии запущенной игры в окне Windows и
=== Название ===
                                        //игровом меню Steam.
;<code>game <{{L|String|строка}}></code>
title "Заголовок игры" //Основной заголовок игры. Это то, что отображается в игровом меню.
: Название вашего мода в [http://ru.wikipedia.org/wiki/ASCII ASCII]. Отображается в Steam и на панели задач Windows, но ''не'' в главном меню (если вы не определили <code>title</code>).
title2 "Дополн. заголовок"    //Дополнительный заголовок игры (может отсутствовать).
; <code>title <строка></code>
type singleplayer_only //Также может принимать значение "multiplayer_only". Определяет какие
; <code>title2 <строка></code>
                                        //элементы UI необходимо создать в панели параметров. Пропустите для
: Эти значения отображаются в виде [http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4 Юникода] в главном меню вашего мода. Они могут отличаться от отображаемых в Steam и на рабочем столе, если вы используете свой шрифт.
//модов, имеющих оба режима игры [[MP]] and [[SP]] (одиночная и сетевая).
: <code>title2</code> (и 3, 4, и т.д.), чтобы применять разные стили к различным частям вашего названия. {{Note|Вполне возможно, ваш заголовок не будет отображаться, пока вы не отредактируете <code>ClientTitleFont</code> в <code>resource\clientscheme.res</code> для изменения шрифта. По умолчанию ("HalfLife2") имеет только определённый набор символов, и большая часть текста не будет отображаться правильно.}}
//Если установлено в "multiplayer_only", то вкладка "сетевая игра" в меню "параметры"
; {{EP2 add:ru|<code>gamelogo <{{L|boolean|логическое значение}}></code>}}
//будет добавлена первой, иначе - последней, если не задан "singleplayer_only".
: Вместо отображения текста <code>title</code>/<code>title2</code>, отображает содержимое <code>resource\GameLogo.res</code>. См. {{L|Adding Your Logo to the Menu|Добавление Своего Лого в Меню}}.
fallback_dir "Dir" //Непроверенная функция (Работает в [[Goldsource]])
//Новое в Portal:
  nodifficulty boolean //Скрывает вкладку "Уровень сложности"
  hasportals boolean //Показывает вкладку "Порталы" на панели параметров
//Multiplayer tab in the Options panel (пер: "Вкладка 'сетевая игра' в панели 'параметры' ")
nocrosshair boolean //Скрыть меню выбора прицела
nohimodel boolean //Hides cvar toggles checkbox for <code>cl_himodels</code>
//Отображается правильно только, если <code>cl_himodels</code> установлено
nomodels boolean //Скрыть меню выбора модели во вкладке сетевой игры на панели параметров
//Steam Games List (пер: Список игр Steam)
developer "Имя разработчика" //Имя или название команды разработчика, отображаемое в Steam
developer_url "Сайт разработчика" //Домашняя страница разработчика. Должно начинаться с <nowiki>http://</nowiki>.
//--------------------------------------------------------------------------------------
manual   "Адрес веб-страницы"         //Путь к руководству пользователя
//Это может быть локальный путь. Программа-установщик
//может быть разработана так, что установит этот параметр равным
//установочному пути.
//--------------------------------------------------------------------------------------
icon "путь к иконке" //Иконка, отображаемая в окне игры в Windows и меню Steam
                                        //Иконка должна быть несжатым TGA 16x16 пикселей.
//Что бы работала прозрачность, TGA должен быть сохранён в 32-битном
//режиме с активным альфа-каналом.
//Этот путь относителен к установочному пути мода
//(т.е. к тому, месту где GameInfo.txt) и не должен включать
//расширение TGA файла.
//Create games dialog (пер: Диалог создания игры)
hidden_maps //Карты, заданные между скобками, не будут появляться в интерфейсе
{ //но останутся доступными
"mapname" 1 //(то есть появятся в автоматических списках)
"mapname" 1 //для команд "map" и "changelevel".
}
  nodegraph boolean // Информация для движка: генерировать Node Graph или нет


Когда вы только создайте новый мод, gameinfo.txt не содержит ключей "title" и "type", так что не забудьте их добавить.
=== Настройки ===
; <code>type <singleplayer_only | multiplayer_only></code>
: Влияет на появление закладок в настройках. Может так же влиять на скорость загрузки в Steam. Пропустите, если ваш мод как однопользовательский, так и многопользовательский.
; <code>nodifficulty <{{L|boolean|логическое значение}}></code>
: Скрывает вкладку Уровень сложности (это случается автоматически, если ваш мод <code>multiplayer_only</code>)
; {{EP2 add:ru|<code>hasportals <{{L|boolean|логическое значение}}></code>}}
: Показывает вкладку настроек "Порталы"
; <code>nocrosshair <{{L|boolean|логическое значение}}></code>
: Скрывает настройки прицела в мультиплеере
; <code>advcrosshair</code>
: Включает дополнительные настройки прицела.
; <code>nomodels <{{L|boolean|логическое значение}}></code>
: Скрывает настройку модели в мультиплеере
; <code>nohimodel <{{L|boolean|логическое значение}}></code>
: Скрывает флажок для переключения <code>cl_himodels</code>, который использовался в {{L|GoldSrc}}. Отображается правильно, только если <code>cl_himodels</code> расположен в первую очередь!


{{note-ru|Возможно, ваш заголовок (title) не будет отображаться правильно до тех пор, пока вы не отредактируете файл <code>resource/clientscheme.res</code> , и измените в нём шрифт заголовка. [[Half-Life 2]] использует специально разработанный шрифт, который имеет специфический набор символов; этот шрифт будет неправильно отображать большинство текстов.}}
=== Список игр в Steam ===


== Файловая система ==
; <code>developer <{{L|String|строка}}></code>
За описанием информации о моде идёт описание файловой системы мода - здесь указывается какой контент следует просматривать и в каких папках искать ресурсы. Ниже приведена структура описания файловой системы:
: Название вашей команды (или ваше имя!)
           
; <code>developer_url <строка></code>
FileSystem 
: Веб-сайт мода, или ваш. Должен начинаться с <code><nowiki>http://</nowiki></code>.
{
; <code>manual <строка></code>
        SteamAppId     "номер AppId игры"      // указывает AppId игры в качестве основы для мода
: Ссылка на руководство к моду; может быть локальная.
        ToolsAppId     "номер AppId утилит"    // указывает AppId утилит для мода
; <code>icon <строка></code>
        AdditionalContentId  "номер дополн. AppId"  // указывает дополнительный подключаемый контент AppId   
: Локальный путь, относительно gameinfo.txt, иконка, отображающаяся в Steam. ''Не'' пишите расширение файла. Должна быть в несжатом 16x16 TGA.
               
Большие 32px иконки, которые отображаются в детальном виде должны находится там же где и обычная 16px иконка, и должна называться <code>&lt;icon&gt;_big.tga</code>. {{note|Чтобы прозрачность работала, TGA должен быть сохранён в режиме 32-bit с включённым альфа-каналом.}}
        SearchPaths  // в этой секции задаются пути для загрузки игрой ресурсов
; {{2009 add|<code>SupportsDX8 <bool></code>}}
        {
: Заставляет запустить игру в режиме DirectX8, отсюда - не все эффекты.
                Game "путь поиска №1"
=== Разное ===
                                //  и так далее ...
                Game "путь поиска №n"
                GameBin "путь к дополнительным бинарным файлам (DLL) №1"
                                //  и так далее ...
                GameBin "путь к дополнительным бинарным файлам (DLL) №m"
        }                     
}                                                           


Ниже каждый параметр будет рассмотрен более подробно.
; <code>hidden_maps <подраздел></code>
: Карты, которые нельзя загрузить через диалог "create server" (их можно загрузить через консоль).
: Синтаксис: <code>mapname 1</code>, по одной записи на строку. Не пишите <code>.bsp</code>. Помните, чтобы открыть или закрыть подраздел, используйте { и }.
; {{EP2 add:ru|<code>nodegraph <{{L|boolean|логическое значение}}></code>}}
: Когда ложь, запрещает движку создавать {{L|nodegraph|сетку навигации для NPC}}.
; {{EP2 add:ru|<code>GameData <строка></code>}}
: Путь к FGD, относительно Hammer'а. В настоящее время не имеет никакого эффекта.
; {{EP2 add:ru|<code>InstancePath <строка></code>}}
: Найдено в gameinfo TF2 со значением <code>maps/instances/</code>...


=== SteamAppId ===
== Подгрузка Контента ==
Ещё одна важная вещь в файле <code>GameInfo.txt</code> - это переменная <code>SteamAppId</code>. Если Вы загляните внутрь GameInfo.txt, вы увидите кусок, который выглядит примерно так:


SteamAppId "номер AppId игры" //This will mount all the GCFs we need (240=CS:S, 220=HL2).  
{{Warning|Ваш мод не будет использовать защиту {{L|VAC}}, если он базируется на одиночной игре.}}
                              // Пер: Это смонтирует все GCF, которые нам нужны (240=CS:S, 220=HL2)


Значение <code>SteamAppId</code> определяет, контент какой игры (т.е. [[GCF]] файлы) доступен этой игре/модификации. Например SteamAppId 220 будет использовать как базу игру Half-Life 2, а SteamAppId 240 - Counter-Strike Source.
Существуют два этапа для добавления игрового контента:


{{note-ru|Все модификации при создании утилитой Create a Mod по умолчанию используют специально выделенный для них <code>215</code> AppId (движок Source Engine 7) или <code>218</code> AppId (движок Source Engine 14), до тех пор, пока не понадобится другой для конкретной игры (например, для Half-Life 2 или Counter-Strike: Source.}}
# Монтирование через AppID
{{warning-ru|Будьте осторожны при выборе игры, на которой будет основываться мод. '''Вы не имеете права копировать не-общедоступный (unshared) контент из других игр, если собираетесь распространять мод. Если вы используете мод в личных целях, вы можете извлечь необщедоступный контент'''}}
# Монтирование папки через searchpath
{{warning-ru|'''Для защиты Вашей сетевой игры с помощью VAC, будьте уверены, что Ваш мод основан на сетевой игре'''. [[HL2DM]] обычно хороший выбор.}}


Значения <code>SteamAppId</code> для основных игр Source можно найти в [[Steam Application IDs]]. Общедоступные GCF имеют слово 'shared' в своём имени файла и всегда могут быть использованы; всё остальное - собственность данной игры.
При этом всё происходит в ключе <code>filesystem</code>. См. ниже для примера.


=== Раздел AdditionalContentId (только для игр и модов на Source Engine 14 и выше) ===
; <code>SteamAppID <{{L|Integer|целое число}}></code>
: {{L|Steam Application IDs|AppID}} игры, на которой базируется мод. Мод имеет доступ к любому доступному игровому контенту, если необходимый контент не установлен, он не будет воспроизводится. {{Tip|Для большинства модов это будет либо 215 (Ep1), либо 218 (OB), каждый из них использует разную версию {{L|Source SDK Base}}.}}
; {{EP2 add:ru|<code>AdditionalContentId <целое число></code>}}
: Мод для другой игры имеет доступ только к перечисление). В <code>AdditionalContentId</code> может быть указан любой номер. {{Bug|Эту команду понимает движок, но не SDK инструменты! Лучшим решением, на данный момент, является копирование контента игры на локальный жёсткий диск и добавления абсолютного пути в <code>SearchPath</code> (см. ниже). Не забудьте удалить SearchPath перед релизом.}}
:: {{Tip|Исправление доступно [[Mounting_Other_Content#Scripted_Mounting|здесь]]}}
; <code>ToolsAppId <целое число></code>
: Это AppID который в настоящий момент использует SDK. В текущий момент, есть только один работающий ID - 211 (the Source SDK).


AdditionalContentId "номер дополнительного AppId" // подключение дополнительного контента
=== SearchPaths ===


<code>AdditionalContentId</code> поддерживается только на движке Orange Box (Source Engine 14 и 15) и используется для подключения контента из игр, имеющих другой номер AppId в порядке указания. Данная функция позволит игре использовать контент из виртуальной файловой системы с указанным AppId. Например если вы задали основным SteamAppId 420 (Episode Two) и прописали AdditionalContentId (Portal), это значит, что вы сможете использовать модели, текстуры, звуки и карты из Portal в моде, при условии что папка Portal задана в разделе SearchPatchs (об этом разделе рассказано ниже). Учтите, что функция работает в игре, но НЕ работает в редакторе карт Hammer, поэтому при маппинге с использованием контента из нескольких игр необходимо распаковать содержимое GCF от игр с дополнительными AppId. В дальнейшем при завершении маппинга распакованные файлы можно удалить.  
<code>SearchPaths</code> - это еще одна группа в рамках подраздела <code>FileSystem</code>. В ней содержится список папок виде <code>Game <путь></code>, на каждую линию), это список файлов, которые будет искать движок.


=== Раздел ToolsAppId ===
Движок начинает поиск с первого пути, и останавливает, как только находит то, что ему необходимо. Это означает, что порядок, в котором вы предоставляете список файлов - очень важен: сначала загружаются файлы из первого пути, а потом файлы из путей, расположенных ниже.
Все файлы <code>GameInfo.txt</code> будут содержать строку типа этой:


ToolsAppId 211 //Утилиты используют это (в том числе: source SDK), чтобы взять
Путь поиска, как правило, является относительным к корневой директории <code>SteamAppID</code> (то есть где находится hl2.exe) или он абсолютный (например, <code>C:\SomeFolder\</code>). К счастью, существуют две строки, которые очень полезны:
//такие вещи как materials\debug, materials\editor, и т.п..


Это специальный случай, который используется только утилитами, которым нужно загрузить особый контент. Он используется только утилитами и не используется игрой. Для всех Source-игр используется только одна утилита - Source SDK, имеющая AppId 211.
# '''<code>|all_source_engine_paths|</code>''' (основная директория <code>SteamAppID</code> и директория <code>AdditionalContentId</code>, которую вы используете)
# '''<code>|gameinfo_path|</code>''' (папка с вашим gameinfo.txt)


=== Раздел SearchPaths ===
==== Локализация ====
Раздел <code>SearchPaths</code> файла <code>GameInfo.txt</code> описывает, где может быть найден игровой контент, на жестком диске или внутри файлов кэша Steam. Пути могут быть как относительными (относительно hl2.exe), так и абсолютными. Все файлы, к которым обращается игра, должны иметь существующий <i>path ID</i> (Идентификатор пути). Path ID описывает одно или более местоположений на Вашем жестком диске или внутри виртуальных файловых систем Steam.


Например, большинство ресурсов Вашей игры, таких как скрипты (scripts), звуки (sounds), файлы моделей и материалы доступны через path ID равный <code>"Game"</code>. Пользователь может сказать "открой файл, называемый <code>scripts\weapon_m4a1.txt</code> внутри path ID с именем <code>'Game'</code>". Если вы запускаете мод в <code>C:\MyMod\Blasters</code>, и используете <code>SteamAppId 240</code> , который загрузил бы контент Counter-Strike: Source, тогда бы он искал файл в следующих местах:
Source автоматически создаст SearchPaths для локализаций. Если вы монтируете <code>hl2</code>, а игрок запускает ваш мод на Французском, <code>hl2_french</code> автоматически смонтируется надлежащим образом.


* <code>C:\MyMod\Blasters\scripts\weapon_m4a1.txt</code>
{{Note|Языковые различия так же могут изменить AppID, но не волнуйтесь. Steam настроит всё самостоятельно.}}
* <code><установочная папка Steam>\Steam\SteamApps\username\Counter-Strike Source\cstrike\scripts\weapon_m4a1.txt</code>
* <code><Внутри виртуальной файловой системы Steam>\cstrike\scripts\weapon_m4a1.txt</code>


Использование path ID для описания места хранения файла избавляет игрока, программиста и художника от опасений, что они работают с разными папками. Они могут использовать относительные к игровой папке имена (такие как <code>scripts\weapon_m4a1.txt</code> или <code>materials\brick\brickwall001a.vmt</code>) и движок, и утилиты найдут полный путь к файлу, независимо от того, где он находится,  только если <code>GameInfo.txt</code> описывает что значит path ID с именем <code>"Game"</code>.
=== Пример ===


В файле <code>GameInfo.txt</code> , этот раздел называется <code>"SearchPaths"</code>, в нём описываются path ID. Если модификация не использует каких-либо ресурсов из игр, отличных от Half-Life 2 (кроме её карт), то менять пути, после того, как вы создали мод, нажав '''Create a Mod''' из SDK launcher, не требуется.
Следующий код смонтирует контент {{L|Episode Two}} и {{L|Portal}}:


Первая часть каждой строки - это имя path ID, а вторая часть - это где искать файлы, когда используется этот path ID. Вот простой пример для иллюстрации, который бы Вы никогда не использовали, потому что там применяются абсолютные пути, включая буквы дисков, которых может и не быть на компьютере игрока:
<source lang=ini>FileSystem
{
SteamAppId 420 // Ep2
ToolsAppId 211
AdditionalContentId 400 // Portal


SearchPaths
SearchPaths
{
{
TestPathID C:\TestMod1
Game |gameinfo_path|. // В первую очередь указывается директория вашего мода
TestPathID C:\TestMod2
Game |all_source_engine_paths|ep2
TestPathID C:\TestMod3
Game |all_source_engine_paths|episodic // Ep2 так же использует некоторый Ep1 контент
}
Game |all_source_engine_paths|portal
Game |all_source_engine_paths|hl2 // HL2 всегда должен быть последним
}
}</source>


Если программист или пользователь напишет код, который запрашивает scripts\weapon_m4a1.txt и укажет "TestPathID" как path ID в коде, тогда движок будет искать файл в следующих местах:
Episode Two загружается первым и имеет приоритет. Это означает, что как только Ep2 бинарники будут загружены, вы не сможете использовать порталы, однако вы ''можете'' использовать {{L|GLaDOS}} и {{L|Hunter|Охотников}}!


* <code>C:\TestMod1\scripts\weapon_m4a1.txt</code>
Если вы хотите использовать бинарники портала, вы должны просто поместить его поисковой путь выше Ep2. (Излишне говорить, что если эти бинарники в папке вашего мода, тогда будут загружены ''они''.)
* <code>C:\TestMod2\scripts\weapon_m4a1.txt</code>
* <code>C:\TestMod3\scripts\weapon_m4a1.txt</code>


С тех пор как Source-игра получает свой контент используя path ID с именем <code>"Game"</code>, она делает некоторые вещи для Вас автоматически, если у Вас есть path ID с именем <code>"Game"</code>. Для каждой записи с path ID равным <code>"Game"</code>:
== Пример Source 2013 ==


# Добавляется path ID с именем <code>"GameBin"</code> , и путём <code><dir>\bin</code>
Следующий код смонтирует контент {{L|Episode Two}} и {{L|Portal}} на 2013 версии движка:
# Добавляется другой путь с <code>"Game"</code> в начале, и заканчивающийся на <code>_<язык></code>. Например: <code>c:\hl2\cstrike</code> даст дополнительный путь <code>c:\hl2\cstrike_russian</code>, если вы запускаете мод на компьютере с русской локализацией.


Для первого пути поиска <code>"Game"</code>:
<source lang=ini>FileSystem
{
SteamAppId 243730 // Source SDK Base 2013 Singleplayer
SearchPaths
{
// No /custom/ folders because they can interfere with mod content and shouldn't be in mod gameinfo.
game+mod+mod_write+default_write_path |gameinfo_path|. // Mod
gamebin |gameinfo_path|bin // Mod's Binaries


# Добавляется путь поиска с именем <code>"MOD"</code> в той же папке.
// Using SSDKBase13 path, then back to /common/ and then using Portal folder.
# Добавляется путь поиска с именем <code>"DEFAULT_WRITE_PATH"</code>.
// |all_source_engine_paths| magic help here too.
game |all_source_engine_paths|../Portal/portal/portal_sound_vo_english.vpk
game |all_source_engine_paths|../Portal/portal/portal_pak.vpk


В абсолютных и относительных путях также могут присутствовать два специальных префикса-вставки:
// Base Half-Life 2 Content: ep2, episodic, hl2
* 1. |all_source_engine_paths| - просматривает содержимое в указанной после данного префикса директории во всех задействованных AppId, включая SteamAppID и все AdditionalContentId. Например |all_source_engine_paths|hl2 будет просматривать содержимое папки hl2 во всех подключенных файлах с разными AppId.
game_lv |all_source_engine_paths|hl2/hl2_lv.vpk
* 2. |gameinfo_path| - указывает игре ту папку в которой находится сам gameinfo.txt.  
game |all_source_engine_paths|ep2/ep2_english.vpk
game |all_source_engine_paths|ep2/ep2_pak.vpk
game |all_source_engine_paths|episodic/ep1_english.vpk
game |all_source_engine_paths|episodic/ep1_pak.vpk
game |all_source_engine_paths|hl2/hl2_english.vpk
game |all_source_engine_paths|hl2/hl2_pak.vpk
game |all_source_engine_paths|hl2/hl2_textures.vpk
game |all_source_engine_paths|hl2/hl2_sound_vo_english.vpk
game |all_source_engine_paths|hl2/hl2_sound_misc.vpk
game |all_source_engine_paths|hl2/hl2_misc.vpk
platform |all_source_engine_paths|platform/platform_misc.vpk


По умолчанию <code>SearchPaths</code> который может использоваться в большинстве игр выглядит примерно так:
// TODO; find out what is it and why it's here
game |all_source_engine_paths|episodic
game |all_source_engine_paths|hl2
platform |all_source_engine_paths|platform
}
}</source>


SearchPaths
{{ACategory|File formats}}
{
{{ACategory|Modding}}
Game        |gameinfo_path|.
{{ACategory|Source SDK FAQ}}
Game        hl2
}
 
В норме, путь (правая часть) - относителен к базовой директории - директории, где находится <code>hl2.exe</code>. Если <code>|gameinfo_path|</code> выше базовой директории, тогда пути относительны того места, где находится <code>GameInfo.txt</code> . Например, если файл <code>GameInfo.txt</code> находится в <code>C:\MyMod\Blasters</code>, и есть путь типа <code><i>|gameinfo_path|SomeTestDirectory</i></code>, тогда path ID , который вы создали, указывает на:
 
<code>C:\MyMod\Blasters\SomeTestDirectory</code>
 
Если для Counter-Strike: Source, файл <code>GameInfo.txt</code> имеет часть <code>SearchPaths</code> , которая выглядит как вышепредставленная. И если ваша папка с Counter-Strike:
 
<code>C:\Program Files\Valve\Steam\SteamApps\username\Counter-Strike Source</code>
 
тогда поиск файла будет производится в следующих двух папках:
 
* <code>C:\Program Files\Valve\Steam\SteamApps\username\Counter-Strike Source\cstrike</code>
потому что GameInfo.txt существует здесь.
* <code>C:\Program Files\Valve\Steam\SteamApps\username\Counter-Strike Source\hl2</code>
потому что папка hl2 (как в реальной, так и в виртуальной файловой системе) расположена в той же директории, что и hl2.exe.
 
Если Вы хотите подключить в мод контент другого мода, то Вам будет необходимо прописать относительный или абсолютный путь к папке этого мода. Поскольку все Source-моды по-умолчанию находятся в одной папке SourceMods, то для подключения его контента нужно прописать строку <code>Game |gameinfo_path|.\..\имя папки с модом</code>. В данном случае игра сначала обратится к папке нашего мода поскольку в ней лежит gameinfo.txt, затем перейдёт на уровень выше (в данном случае папка SourceMods), после чего - в директорию нужного мода.
 
Помимо path ID <code>"Game"</code> существует также специальный path ID равный <code>"GameBin"</code>, используемый для поиска и загрузки игрой отдельных бинарных файлов. Создавать GameBin для игр нет необходимости - при создании path ID <code>Game "директория"</code> автоматически создаётся path ID <code>GameBin "директория"/bin</code>. Однако в тех случаях, когда нам надо использовать только бинарные DLL-файлы, например серверные плагины, нужно использовать GameBin. Например <code>GameBin "|gameinfo_path|addons/addon1"</code> подключит библиотеки аддона addon1, расположенного в <code>папке мода\addons</code>.
 
===  Пример ===
 
Ниже приведён пример, демонстрирующий принцип работы файловой системы.
 
FileSystem
{
  SteamAppId 420  // определение AppId базовой игры для мода - Half-Life 2: Episode 2
  ToolsAppId 211  // определение AppId утилит для мода
  AdditionalContentId 400 // подключение контента Portal
  AdditionalContentId 380 // подключение контента Half-Life 2: Episode 1
  AdditionalContentId 220 // подключение контента Half-Life 2
 
  SearchPaths
    {
Game |gameinfo_path|.           // загрузка контента данного мода
Game |gameinfo_path|.\..\Mod1   // загрузка контента мода Mod1 (лежит в той же папке
                                                  // что и данный мод (по умолчанию SourceMods))
Game |all_source_engine_paths|ep2      // загрузка контента Hl2:Ep2
Game |all_source_engine_paths|episodic // загрузка контента Hl2:Ep1
Game |all_source_engine_paths|portal  // загрузка контента Portal
Game |all_source_engine_paths|hl2   // загрузка контента Half-Life 2
GameBin "..\source dedicated server\hl2\addons\plugin1"   // загрузка бинарных файлов плагина
                                                                  // plugin1, установленного в папку
                                                                  // Source Dedicated Server\addons
    }
}
 
В данном случае наивысший приоритет имеют файлы нашего мода, затем файлы мода Mod1, затем игр - Episode 2, Episode 1, Portal, Half-Life 2 и наконец дополнительный плагин. Контент будет загружаться как из реальной файловой системы относительно hl2.exe в папке steamapps\username\half-life 2 episode two, так и из виртуальной. Но при этом будет задействован код только первых найденных DLL. Например если моды не имеют своих DLL, то будет загружен код Episode Two - соответственно нельзя будет например использовать код из Portal и как следствие портальную пушку, поскольку папка ep2 имеет больший приоритет, чем папка portal. Но в то же время можно будет использовать модели из этой игры, и например, создать сражение заскриптованной GlaDOS против охотников из Episode Two. Чтобы использовать физику из Portal, папка portal должна быть указана выше чем ep2.
 
{{otherlang:ru}}
{{otherlang:ru:en|The GameInfo.txt File Structure}},
{{otherlang:ru:jp|The GameInfo.txt File Structure:jp}},
{{otherlang:ru:pl|The GameInfo.txt File Structure:pl}}
 
[[Category:Russian]]
[[Category:Modding:ru]]
[[category:Technical:ru]]
[[Category:Source SDK FAQ:ru]]

Latest revision as of 12:27, 6 April 2025

English (en)Deutsch (de)Español (es)Français (fr)日本語 (ja)한국어 (ko)Polski (pl)Русский (ru)中文 (zh)Translate (Translate)
Info content.png
This translated page needs to be updated.
You can help by updating the translation.
Also, please make sure the article complies with the alternate languages guide.(en)
This notice is put here by LanguageBar template and if you want to remove it after updating the translation you can do so on this page.


Game Definition Files
edit
См. также:  Category:Gameinfo
Для Half-Life 1/GoldSrc(en), см. статью liblist.gam(en).

gameinfo.txt содержит описание вашего мода. Он содержит такие метаданные, как его имя, ссылка на веб-сайт или руководство, и определяет, какие игры он использует. Он хранится в папке вашего мода и нужен для определения мода в Steam. Source и SDK инструменты используют его, для получения информации о подгружаемом контенте.

SDK launcher сгенерирует gameinfo.txt, как только вы запустите Create a Mod Wizard. Он подходит для разработки, но перед релизом, вы захотите изменить информацию об игре.

Note.pngПримечание:Логические(en) значения представлены в виде целых числел(en).
Warning.pngПредупреждение:Если значение имеет пробелы, нужно "поместить его в кавычки".

Настройки UI

Название

game <строка(en)>
Название вашего мода в ASCII. Отображается в Steam и на панели задач Windows, но не в главном меню (если вы не определили title).
title <строка>
title2 <строка>
Эти значения отображаются в виде Юникода в главном меню вашего мода. Они могут отличаться от отображаемых в Steam и на рабочем столе, если вы используете свой шрифт.
title2 (и 3, 4, и т.д.), чтобы применять разные стили к различным частям вашего названия.
Note.pngПримечание:Вполне возможно, ваш заголовок не будет отображаться, пока вы не отредактируете ClientTitleFont в resource\clientscheme.res для изменения шрифта. По умолчанию ("HalfLife2") имеет только определённый набор символов, и большая часть текста не будет отображаться правильно.

gamelogo <логическое значение(en)> (Во всех играх начиная с Source 2007)

Вместо отображения текста title/title2, отображает содержимое resource\GameLogo.res. См. Добавление Своего Лого в Меню(en).

Настройки

type <singleplayer_only | multiplayer_only>
Влияет на появление закладок в настройках. Может так же влиять на скорость загрузки в Steam. Пропустите, если ваш мод как однопользовательский, так и многопользовательский.
nodifficulty <логическое значение(en)>
Скрывает вкладку Уровень сложности (это случается автоматически, если ваш мод multiplayer_only)

hasportals <логическое значение(en)> (Во всех играх начиная с Source 2007)

Показывает вкладку настроек "Порталы"
nocrosshair <логическое значение(en)>
Скрывает настройки прицела в мультиплеере
advcrosshair
Включает дополнительные настройки прицела.
nomodels <логическое значение(en)>
Скрывает настройку модели в мультиплеере
nohimodel <логическое значение(en)>
Скрывает флажок для переключения cl_himodels, который использовался в GoldSrc(en). Отображается правильно, только если cl_himodels расположен в первую очередь!

Список игр в Steam

developer <строка(en)>
Название вашей команды (или ваше имя!)
developer_url <строка>
Веб-сайт мода, или ваш. Должен начинаться с http://.
manual <строка>
Ссылка на руководство к моду; может быть локальная.
icon <строка>
Локальный путь, относительно gameinfo.txt, иконка, отображающаяся в Steam. Не пишите расширение файла. Должна быть в несжатом 16x16 TGA.

Большие 32px иконки, которые отображаются в детальном виде должны находится там же где и обычная 16px иконка, и должна называться <icon>_big.tga.

Note.pngПримечание:Чтобы прозрачность работала, TGA должен быть сохранён в режиме 32-bit с включённым альфа-каналом.
Template:2009 add
Заставляет запустить игру в режиме DirectX8, отсюда - не все эффекты.

Разное

hidden_maps <подраздел>
Карты, которые нельзя загрузить через диалог "create server" (их можно загрузить через консоль).
Синтаксис: mapname 1, по одной записи на строку. Не пишите .bsp. Помните, чтобы открыть или закрыть подраздел, используйте { и }.

nodegraph <логическое значение(en)> (Во всех играх начиная с Source 2007)

Когда ложь, запрещает движку создавать сетку навигации для NPC(en).

GameData <строка> (Во всех играх начиная с Source 2007)

Путь к FGD, относительно Hammer'а. В настоящее время не имеет никакого эффекта.

InstancePath <строка> (Во всех играх начиная с Source 2007)

Найдено в gameinfo TF2 со значением maps/instances/...

Подгрузка Контента

Warning.pngПредупреждение:Ваш мод не будет использовать защиту VAC(en), если он базируется на одиночной игре.

Существуют два этапа для добавления игрового контента:

  1. Монтирование через AppID
  2. Монтирование папки через searchpath

При этом всё происходит в ключе filesystem. См. ниже для примера.

SteamAppID <целое число(en)>
AppID(en) игры, на которой базируется мод. Мод имеет доступ к любому доступному игровому контенту, если необходимый контент не установлен, он не будет воспроизводится.
Tip.pngСовет:Для большинства модов это будет либо 215 (Ep1), либо 218 (OB), каждый из них использует разную версию Source SDK Base(en).

AdditionalContentId <целое число> (Во всех играх начиная с Source 2007)

Мод для другой игры имеет доступ только к (и перечисление). В AdditionalContentId может быть указан любой номер.
Icon-Bug.pngБаг:Эту команду понимает движок, но не SDK инструменты! Лучшим решением, на данный момент, является копирование контента игры на локальный жёсткий диск и добавления абсолютного пути в SearchPath (см. ниже). Не забудьте удалить SearchPath перед релизом.  [нужно проверить в ?]
Tip.pngСовет:Исправление доступно здесь
ToolsAppId <целое число>
Это AppID который в настоящий момент использует SDK. В текущий момент, есть только один работающий ID - 211 (the Source SDK).

SearchPaths

SearchPaths - это еще одна группа в рамках подраздела FileSystem. В ней содержится список папок (в виде Game <путь>, на каждую линию), это список файлов, которые будет искать движок.

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

Путь поиска, как правило, является относительным к корневой директории SteamAppID (то есть где находится hl2.exe) или он абсолютный (например, C:\SomeFolder\). К счастью, существуют две строки, которые очень полезны:

  1. |all_source_engine_paths| (основная директория SteamAppID и директория AdditionalContentId, которую вы используете)
  2. |gameinfo_path| (папка с вашим gameinfo.txt)

Локализация

Source автоматически создаст SearchPaths для локализаций. Если вы монтируете hl2, а игрок запускает ваш мод на Французском, hl2_french автоматически смонтируется надлежащим образом.

Note.pngПримечание:Языковые различия так же могут изменить AppID, но не волнуйтесь. Steam настроит всё самостоятельно.

Пример

Следующий код смонтирует контент Episode Two(en) и Portal(en):

FileSystem
{
	SteamAppId	420	// Ep2
	ToolsAppId	211
	AdditionalContentId	400	// Portal

	SearchPaths
	{
		Game	|gameinfo_path|.	// В первую очередь указывается директория вашего мода
		Game	|all_source_engine_paths|ep2
		Game	|all_source_engine_paths|episodic	// Ep2 так же использует некоторый Ep1 контент
		Game	|all_source_engine_paths|portal
		Game	|all_source_engine_paths|hl2	// HL2 всегда должен быть последним
	}
}

Episode Two загружается первым и имеет приоритет. Это означает, что как только Ep2 бинарники будут загружены, вы не сможете использовать порталы, однако вы можете использовать GLaDOS(en) и Охотников(en)!

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

Пример Source 2013

Следующий код смонтирует контент Episode Two(en) и Portal(en) на 2013 версии движка:

FileSystem
{
	SteamAppId					243730				// Source SDK Base 2013 Singleplayer
	SearchPaths
	{
		// No /custom/ folders because they can interfere with mod content and shouldn't be in mod gameinfo.
		game+mod+mod_write+default_write_path	|gameinfo_path|.		// Mod
		gamebin					|gameinfo_path|bin		// Mod's Binaries

		// Using SSDKBase13 path, then back to /common/ and then using Portal folder. 
		// |all_source_engine_paths| magic help here too.
		game				|all_source_engine_paths|../Portal/portal/portal_sound_vo_english.vpk 
		game				|all_source_engine_paths|../Portal/portal/portal_pak.vpk 		

		// Base Half-Life 2 Content: ep2, episodic, hl2
		game_lv					|all_source_engine_paths|hl2/hl2_lv.vpk
		game					|all_source_engine_paths|ep2/ep2_english.vpk
		game					|all_source_engine_paths|ep2/ep2_pak.vpk
		game					|all_source_engine_paths|episodic/ep1_english.vpk
		game					|all_source_engine_paths|episodic/ep1_pak.vpk
		game					|all_source_engine_paths|hl2/hl2_english.vpk
		game					|all_source_engine_paths|hl2/hl2_pak.vpk
		game					|all_source_engine_paths|hl2/hl2_textures.vpk
		game					|all_source_engine_paths|hl2/hl2_sound_vo_english.vpk
		game					|all_source_engine_paths|hl2/hl2_sound_misc.vpk
		game					|all_source_engine_paths|hl2/hl2_misc.vpk
		platform				|all_source_engine_paths|platform/platform_misc.vpk

		// TODO; find out what is it and why it's here
		game					|all_source_engine_paths|episodic
		game					|all_source_engine_paths|hl2
		platform				|all_source_engine_paths|platform
	}
}