Видео

Ren'Py предусматривает возможность использования встроенной версии Libav для воспроизведения видеороликов с такими форматами, как: .webm.matroska.ogg, .avi.

Полноэкранные видеоролики

Самый простой способ отображения видео в полноэкранном режиме заключается в использовании функции renpy.movie_cutscene. Она отображает видео в полноэкранном режиме до тех пор, пока оно не закончится, либо пока игрок не щёлкнет кнопкой мыши, чтобы прекратить воспроизведение.

Пример использования:

label my_mod:
    dv "Сейчас запустится фильм!"
    $ renpy.movie_cutscene("Брат.webm")
    dv "Фильм закончился."

Видео как отображаемые объекты и спрайты

Видеоролик, отображаемый на экране посредством команды Movie, можно вывести в любом месте, где Ren'Py может его показать. Например, видео может выводиться как фон экрана меню или как фон сцены.

Отображаемый видеоролик также можно использовать для определения видеоспрайта, который представляет собой спрайт, склеенный из двух видео. Первый видеоролик обеспечивает цвет спрайта. Второй — так называемый "маска-ролик" — обеспечивает альфа-канал, где белый цвет — полная непрозрачность, а чёрный — полная прозрачность.

ПОДСКАЗКА

Видео, которые воспроизводятся в отображаемом объекте Movie, зацикливаются автоматически.

Movie принимает два параметра:

  • play — строка, содержащая имя воспроизводимого видеофайла. Параметр всегда должен быть задан.
  • mask — строка, содержащая наименование видеофайла для использования в качестве альфа-маски. Она должна быть того же размера, продолжительности и частоты кадров, что и видеофайл, заданный в play.

Вот пример определения видеоспрайта:

init:
    image brat movie = Movie(play="brat.webm", mask="brat_mask.webm")

Видеоспрайт можно показать с помощью оператора show, который автоматически запускает воспроизведение видео. Он будет автоматически остановлен при скрытии отображаемого объекта.

label my_mod:
    show brat movie
    "Данный видеоролик показан как спрайт."
    hide brat
    "Ролик убран."

Видеоролик, прописанный через Movie, также можно использовать как часть экрана при условии, что он создан во время фазы инициализации (init-блок), например как часть оператора image.

Приведём пример:

init:
    image main_menu = Movie(play="main_menu.ogv")

screen main_menu:
    add "main_menu"
    textbutton "Start" action Start() xalign 0.5 yalign 0.5

ПОДСКАЗКА

Экраны можно прописывать и вне init-блока.

ПОДСКАЗКА

Несколько отображаемых видеороликов, прописанных через Movie, или спрайтов могут отображаться на экране одновременно с учётом производительности системы и при условии, что все они имеют одинаковую частоту кадров. Поведение Ren'Py при отображении видеороликов с разной частотой кадров достоверно не изучено.

Страшно, очень страшно, мы не знаем что это такое. Если бы мы знали что это такое, мы не знаем, что это такое. (с)