Скриншоты

Ren'Py включает встроенную функциональность для создания скриншотов игры, а также displayable-объектов в игре. Последнее подходит для создания "бумажных кукол", состоящих из нескольких displayable-объектов, и сохранения их на диск для последующего использования игроком, например, в редакторе аватаров.

Когда Ren'Py делает скриншот, будь то всего экрана или displayable-объекта, скриншот будет сделан в размере отрисовки, после применения масштабирования окна и настроек High DPI. Это, как правило, позволяет запечатлеть то, что видит или видел бы пользователь, а не исходный размер ресурсов.

По умолчанию создание скриншота привязано к клавише 's'.

Существует несколько действий и экранных функций, связанных со скриншотами.

Функции

Также существуют функции, которые можно использовать для создания скриншотов:

renpy.render_to_file(d, filename, width=None, height=None, st=0.0, at=None, resize=False)

Отрисовывает отображаемый объект или Render и сохраняет результат этой отрисовки в файл. Отрисовка выполняется системой отображения Ren'Py, так что если окно увеличено, отрисованное изображение также будет увеличено.

d

Отображаемый объект или Render для отрисовки. Если это Render, параметры width, height, st и at игнорируются.

filename

Строка, содержащая имя файла для сохранения отрисованного изображения. Путь интерпретируется относительно базового каталога. Он должен заканчиваться на .png.

width

Ширина, предоставляемая d в виртуальных пикселях. Если None, используется config.screen_width.

height

Высота, предоставляемая d в виртуальных пикселях. Если None, используется config.screen_height.

st

Время отрисовки в системе временных отсчетов показа (shown timebase).

at

Время отрисовки в системе временных отсчетов анимации (animation timebase). Если None, используется st.

resize

Если True, изображение будет изменено до виртуального размера отображаемого объекта или Render. Это может снизить качество результата.

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

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

renpy.render_to_surface(d, width=None, height=None, st=0.0, at=None, resize=False)

Эта функция принимает отображаемый объект или Render и возвращает pygame Surface. Отрисовка выполняется системой отображения Ren'Py, так что если окно увеличено, отрисованное изображение также будет увеличено.

d

Отображаемый объект или Render для отрисовки. Если это Render, параметры width, height, st и at игнорируются.

width

Ширина, предоставляемая d в виртуальных пикселях. Если None, используется config.screen_width.

height

Высота, предоставляемая d в виртуальных пикселях. Если None, используется config.screen_height.

st

Время отрисовки в системе временных отсчетов показа (shown timebase).

at

Время отрисовки в системе временных отсчетов анимации (animation timebase). Если None, используется st.

resize

Если True, поверхность будет изменена до виртуального размера отображаемого объекта или Render. Это может снизить качество результата.

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

renpy.screenshot(filename)

Сохраняет скриншот в filename.

Возвращает True, если скриншот был успешно сохранен, и False, если сохранение по какой-то причине не удалось.

Переменные config.screenshot_pattern и _screenshot_pattern управляют файлом, в который сохраняется скриншот.

renpy.screenshot_to_bytes(size)

Возвращает скриншот в виде объекта bytes, который можно передать в im.Data(). Байты будут представлять собой изображение в формате PNG, так что:

$ data = renpy.screenshot_to_bytes((640, 360))
show expression im.Data(data, "screenshot.png"):
    align (0, 0)

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

size

Размер, до которого будет изменен скриншот. Если None, скриншот не будет изменяться и, следовательно, будет иметь размер окна игрока, без черных полос (letterbars).

Эта функция может быть медленной, поэтому она предназначена для скриншотов для сохранений, а не для эффектов в реальном времени.