Озвучка

Ren'Py включает поддержку воспроизведения озвучки в сочетании с диалогом. Это делается с помощью инструкции voice, которая указывает имя файла с озвучкой для воспроизведения:

voice "line0001.ogg"
"Welcome to Ren'Py"

Обычно воспроизводимая озвучка останавливается в начале следующего взаимодействия. Инструкция voice sustain может продолжать воспроизведение озвучки во время взаимодействия.

voice "line0001.ogg"
"Welcome to Ren'Py..."

voice sustain
"... your digital storytelling engine."

Переменная config.voice_filename_format позволяет вам настроить имя файла озвучки, что даёт возможность опускать директории и расширения.

Теги озвучки

Ren'Py включает систему тегов озвучки, которая позволяет выборочно отключать или включать звук голоса персонажа. Чтобы воспользоваться этой системой, укажите аргумент voice_tag для каждого Character() и используйте действия SetVoiceMute() или ToggleVoiceMute(), чтобы позволить игроку переключать озвучку.

Например:

define e = Character("Eileen", voice_tag="eileen")
define l = Character("Lucy", voice_tag="lucy")

screen voice_toggle:
    vbox:
        textbutton "Mute Eileen" action ToggleVoiceMute("eileen")
        textbutton "Mute Lucy" action ToggleVoiceMute("lucy")

label start:
    show screen voice_toggle

    voice "e01.ogg"
    e "You can turn a character's voice on and off."

    voice "l01.ogg"
    l "Yeah! Now I can finally shut you up!"

    voice "l02.ogg"
    l "Wait... that means they can mute me as well! Really?"

Автоматическая озвучка

Ren'Py поддерживает автоматическое определение файла озвучки для воспроизведения, что позволяет проигрывать озвучку, не добавляя инструкции voice перед каждой строкой диалога.

Это делается путем создания файлов озвучки, которые соответствуют идентификатору каждой строки диалога. Чтобы определить используемые идентификаторы, сначала экспортируйте диалог в электронную таблицу, выбрав в лаунчере "Extract Dialogue", затем "Tab-delimited Spreadsheet (dialogue.tab)" и "Continue". Это создаст файл, dialogue.tab, который можно загрузить в программу для работы с электронными таблицами.

Первый столбец электронной таблицы — это идентификатор, который нужно использовать, а другие столбцы содержат дополнительную информацию о диалоге.

Чтобы Ren'Py автоматически воспроизводил озвучку, установите config.auto_voice в строку, содержащую {id}. Когда происходит диалог, {id} заменяется идентификатором диалога, формируя имя файла. Если файл с таким именем существует, он воспроизводится.

Например, если у нас есть:

config.auto_voice = "voice/{id}.ogg"

И идентификатор диалога — demo_minigame_03fc91ef, то когда отображается соответствующая строка, Ren'Py будет искать файл voice/demo_minigame_03fc91ef.ogg. Если файл существует, Ren'Py будет его воспроизводить.

Многоязычная озвучка

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

voice "omelette.ogg"
e "I like scrambled eggs with cheese..."

Помещение английской версии в game/omelette.ogg и французского перевода в game/tl/french/omelette.ogg заставит Ren'Py использовать французскую версию, когда в игре активирован французский язык.

Это работает точно так же и для автоматической озвучки, до тех пор, пока путь к файлу перевода, начиная с game/tl/<language>/, совпадает с путём к оригинальному файлу, начиная с game/.

Функции озвучки

_get_voice_info()

Возвращает информацию о голосе, воспроизводимом текущей репликой say. Эту функцию можно вызывать только во время выполнения оператора say.

Возвращаемый объект имеет следующие поля:

VoiceInfo.filename

Имя файла голоса для воспроизведения или None, если никакие файлы воспроизводиться не должны.

VoiceInfo.auto_filename

Имя файла, которое Ren'Py искал для автоматического озвучивания, или None, если такой файл не был найден.

VoiceInfo.tag

Параметр voice_tag, переданный говорящему Персонажу.

VoiceInfo.sustain

False, если файл был воспроизведён в рамках текущего взаимодействия. True, если воспроизведение было продолжено с предыдущего взаимодействия.

voice(filename, tag=None)

Воспроизводит filename на голосовом канале. Эквивалент оператора voice.

filename

Имя файла для воспроизведения. Используется вместе с config.voice_filename_format для формирования конечного имени файла для воспроизведения.

tag

Если не None, это должна быть строка, задающая тег голоса для воспроизведения. Если None, используется значение по умолчанию из voice_tag Персонажа, вызывающего следующее взаимодействие.

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

voice_can_replay()

Возвращает true, если возможно повторно воспроизвести текущий голос.

voice_replay()

Повторно воспроизводит текущий голос, если это возможно.

voice_sustain(ignored='', **kwargs)

Эквивалент оператора voice sustain.

Действия озвучки

PlayCharacterVoice(voice_tag, sample, selected=False)

Воспроизводит sample на голосовом канале, как если бы это говорил персонаж с voice_tag. Эта функция установит громкость, но не будет выполнять никакую другую обработку файла, связанную с голосом — она предназначена для использования в меню, чтобы помочь пользователю определить громкость персонажа.

voice_tag

Тег голоса говорящего персонажа. Используется для определения громкости.

sample

Полный путь к звуковому файлу.

selected

Если True, кнопки, использующие это действие, будут помечены как выбранные во время воспроизведения сэмпла.

SetCharacterVolume(voice_tag, volume=None)

Позволяет настраивать громкость каждого персонажа. Если volume равно None, возвращает BarValue, который управляет значением voice_tag. В противном случае, устанавливает громкость в volume.

volume — это число от 0.0 до 1.0 и интерпретируется как доля от громкости микшера для канала voice.

SetVoiceMute(voice_tag, mute)

Если mute равно true, отключает звук голосов, воспроизводимых с указанным voice_tag. Если mute равно false, включает звук голосов, воспроизводимых с voice_tag.

ToggleVoiceMute(voice_tag, invert=False)

Переключает состояние отключения звука для voice_tag. Это действие считается выбранным, если указанный тег голоса отключён, если только invert не равен true, и в этом случае он считается выбранным, если голос включён.

VoiceReplay()

Повторно воспроизводит последний проигранный голос.