Ru/Subtitles (Portal 2)

В основном используются для показа реплик и диалогов персонажей для слабослышащих игроков или при отсутствии звука. В субтитрах также можно отражать простые звуки игрового мира, например, взрывы или открытие дверей. Субтитры являются важной частью модов, так как позволяют расширить их языковую аудиторию.
Субтитры также могут служить временными заменителями еще не озвученных диалогов, поскольку при создании уровней озвучивание может занимать очень много времени.
В Portal 2 субтитры появляются автоматически, когда персонаж начинает говорить (если так определено в специальном файле сцен). Вы можете создавать собственные файлы сцен только после перекомпилирования всего файла scenes.image, поэтому здесь необходим обходной путь.
== Создание файла субтитров ==
В первую очередь создайте текстовый файл с субтитрами в папке Steam/steamapps/common/Portal 2/portal2/resource. Формат субтитров должен быть следующий:
lang
{ 
	Language "Russian"
	Tokens 
	{ 
		character.example1	"Это образец субтитров."
		character.example2	"Вы должны видеть надписи на экране."
	}
}
* Сохраните файл .txt в кодировке UCS-2 Little Endian или UTF-16 LE. Для этого воспользуйтесь Notepad++ или другим продвинутым текстовым редактором.
* Текст субтитров должен быть заключён в кавычки.
* Именем субтитра должно быть имя soundscript, а не имя звука. Однако, субтитры работают и без создания soundscript.
* Сохраните файл .txt с префиксом closecaption_ в имени.
== Компиляция файла .txt в файл .dat ==
Для того, чтобы субтитры отображались в игре, их нужно скомпилировать в файл .dat. Это можно сделать с помощью компилятора captioncompiler в папке Portal 2/bin.
Нажмите кнопку Пуск, выберите Выполнить и введите cmd, чтобы открыть командную строку. Найдите файл captioncompiler.exe и перетащите его в окно командной строки.
Введите -v "closedaption_ИМЯФАЙЛА.txt", примерно так:
"U:/Program Files/Steam/steamapps/common/Portal 2/bin/captioncompiler.exe" -v "closecaption_ИМЯФАЙЛА.txt"
Субтитры будут скомпилированы в файл, к которому будет обращаться игра. Оставьте скомпилированный файл в папке resource.
== Показ субтитров в игре ==
Поскольку создание сцен для субтитров не подойдет, требуется вызывать субтитры вручную с помощью энтитей в Hammer или с помощью скрипта.
# Создайте или используйте point_servercommand.
# Создайте logic_auto и добавьте выход с именем файла субтитров без префикса closecaption_: 
My Output 	Target 	Target Input	Parameter
OnMapSpawn	@servercommand	Command 	cc_lang NameOfFile
     3. Чтобы вызвать звук или субтитр каким душе угодно способом, добавьте такие выходы: 
My Output 	Target 	Target Input	Parameter
OnAnOutput	@servercommand	Command 	cc_emit character.example1
* Не забудьте одновременно воспроизвести звук, к которому относится субтитр.
Если вы используете в своей карте оригинальные файлы сцен, но со своими голосовыми репликами, не меняйте cc_lang OnMapSpawn, чтобы у игроков не отображались субтитры оригинальных сцен. Вместо этого воспроизводите свой файл субтитров, когда потребуется. Примерно так:
My Output 	Target 	Target Input	Parameter 	Delay
OnAnOutput	@servercommand	Command 	cc_lang NameOfFile 	0.00
OnAnOutput	@servercommand	Command 	cc_emit character.example1	0.10
OnAnOutput	@servercommand	Command 	cc_lang 	0.20
 
Если команде cc_lang не указан конечный выход (Output), игра снова будет использовать язык Game_UI, но при этом воспроизведет ваши субтитры, вызванные за 0.1 секунды до этого.
== Коды субтитров (Portal 2) ==
;<sfx>: Строка описания звукового эффекта, которая будет отображаться только при выборе полных субтитров. Если переменная cc_subtitles задана на "1", такие строки отображаться не будут.
;<clr:255,255,255>: Задает цвет строки в RGB; 0 - без цвета, 255 - полный цвет. Например, красный: ;<clr:255,0,0>.
;: Текст, выделенный этим тегом, станет полужирным.
;: Текст, выделенный этим тегом, станет курсивным.
;<len:#>: Задает продолжительность показа субтитра на экране.
;<norepeat:#>: Задает интервал ожидания перед повторным показом субтитра. Требуется для часто повторяющихся звуков.
Пример использования кода:
lang
{ 
	Language "Russian"
	Tokens 
	{ 
		character.example1	"<clr:255,0,0> Персонаж: Это субтитр-образец."
		character.example2	"<clr:255,0,0><len:3> Персонаж: Субтитры должны отображаться на экране."
	}
}
== См. также ==
* Субтитры