Сборка дистрибутивов (Building Distributions)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску

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


При отсутствии конфигурации Ren'Py может создавать следующие типы пакетов:

  • Windows и Linux
Заархивированный файл для Windows x86, Linux x86 и Linux x86_64.
  • Linux x86/x86_64
Файл в формате tar.bz2 для Linux x86 и Linux x86_64.
  • Macintosh x86_64
Заархивированный файл, содержащий приложение Macintosh, предназначенное для Macintosh OS X на процессорах Intel. Игровые данные будут включены в приложение, которое отображается пользователю в виде одного файла.
  • Windows x86
Заархивированный файл для Windows x86.
  • Windows, Mac и Linux для рынков программного обеспечения
Дистрибутив, содержащий информацию, необходимую для работы на рынках программного обеспечения, таких как itch.io и Steam. Не предназначен для запуска напрямую (и, вероятно, не будет работать на Mac), но должен быть включен в процесс загрузки из магазина приложений.

Предупреждение! Файлы zip и tar.bz2, которые создаёт Ren'Py, содержат информацию о разрешениях, которая должна присутствовать для запуска Ren'Py в Linux и Macintosh. Распаковка и переупаковка заархивированного файла в Windows, а затем запуск его в Linux или Macintosh не поддерживаются.


Базовая конфигурация (Basic Configuration)[править | править код]

Процесс сборки можно настроить, установив переменные и вызвав функцию, работающие в пространстве имён сборки. Это должно быть сделано изнутри блока init python. Настройки по умолчанию для этих конфигураций задаются в файле options.rpy.


Есть несколько основных переменных и функций, которые будут использоваться во многих играх.

build.name = "..."
Используется для автоматического создания build.directory_name и build.executable_name, если ни то, ни другое не установлено. Не должна содержать пробелов, двоеточий или точек с запятой.
build.directory_name = "..."
Используется для создания имён каталогов в архивных файлах. Например, если задано значение "mygame-1.0", то версия проекта для Linux будет распакована в "mygame-1.0-linux".
Также используется для определения имени каталога, в котором находятся файлы пакета. Например, если вы установите для build.directory_name значение mygame-1.0, архивные файлы будут помещены в mygame-1.0-dists в каталоге над базовым каталогом.
Переменная не должна содержать специальных символов, таких как пробелы, двоеточия и точки с запятой. Если не установлено, по умолчанию build.name a dash и config.version.
build.executable_name = "..."
Переменная управляет именем исполняемых файлов, которые пользователь нажимает для запуска игры.
Переменная не должна содержать специальных символов, таких как пробелы, двоеточия и точки с запятой. Если не установлено, по умолчанию используется build.name.
Например, если для этого параметра установлено значение "mygame", пользователь сможет запустить mygame.exe в Windows, mygame.app в Macintosh и mygame.sh в Linux.

Специальные файлы (Special Files)[править | править код]

Есть два файла, которые могут быть включены в базовый каталог вашей игры для настройки сборки:

icon.ico
Иконка, которая используется в Windows.
icon.icns
Иконка, которая используется в Macintosh.

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

Классификация и игнорирование файлов (Classifying and Ignoring Files)[править | править код]

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

Классификация выполняется функцией build.classify. Она принимает шаблоны и разделенный пробелами список имён файлов. Шаблоны сопоставляются от первого до последнего, причём первое совпадение имеет приоритет (даже если за ним следует более конкретный шаблон). Шаблоны сопоставляются с и без начального /.


Шаблоны могут содержать следующие специальные символы:

/
Разделитель каталогов.
*
Соответствует всем символам, кроме разделителя каталогов.
**
Соответствует всем символам.


Например:

**.txt
Соответствует всем файлам с расширением .txt.
game/*.txt
Соответствует файлам с расширением .txt в директории игры.


Существует семь списков файлов, по которым файлы можно классифицировать по умолчанию. Ren'Py помещает свои собственные файлы в первые шесть из них.

all
Эти файлы будут включены во все пакеты, а также в сборку Android.
linux
Эти файлы будут включены в пакеты для Linux.
mac
Эти файлы будут включены в пакеты для Macintosh.
windows
Эти файлы будут включены в пакеты для Windows.
renpy
Эти файлы будут включены в пакеты, которые требуют файлы движка Ren'Py (Linux, Macintosh и Windows.)
android
Эти файлы будут включены в сборку Android.
archive
Эти файлы будут включены в архив archive.rpa.


Файлы, которые не классифицированы как-либо иначе, помещаются в список "all" файлов.

Чтобы исключить файлы из распространения, классифицируйте их как None или пустую строку. Например:

# Включите README.txt
build.classify("README.txt", "all")

# Но исключите все остальные файлы с расширением txt.
build.classify("**.txt", None)

# Добавьте файлы с расширением .png и .jpg из директории игр в архив.
build.classify("game/**.png", "archive")
build.classify("game/**.jpg", "archive")

Документация (Documentation)[править | править код]

Вызов функции build.documentation с шаблонами помечает файлы, соответствующие этим шаблонам, как документацию. Файлы документации включены в приложение Macintosh дважды - как внутри, так и снаружи самого приложения.

Например, чтобы пометить все файлы с расширением .txt и .html в базовом каталоге как документацию, вызовите:

build.documentation("*.txt")
build.documentation("*.html")

Пакеты (Packages)[править | править код]

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

Скажем, вы хотите создать нормальную версию вашей игры, в которой будет бонусный материал. Вы можете классифицировать бонусные файлы в список «bonus» файлов, а затем объявить пакет all-premium с:

build.package("all-premium", "zip", "windows mac linux all bonus")

Поддерживаемые типы пакетов – "zip" и "tar.bz2" для создания файлов в этих форматах, а также "directory" для создания каталога, заполненного файлами.

Архив (Archives)[править | править код]

Ren'Py поддерживает объединение файлов в простой архивный формат. Хотя это не очень безопасно, это защищает файлы от случайного копирования. По умолчанию все файлы, отнесенные к списку файлов "archive", будут помещены в архив archive.rpa, который включён в список всех файлов.

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

Например, следующий код заархивирует изображения в images.rpa, а игровые скрипты в scripts.rpa:

# Объявите два архива.
build.archive("scripts", "all")
build.archive("images", "all")

# Поместите файлы скриптов в архив скриптов.
build.classify("game/**.rpy", "scripts")
build.classify("game/**.rpyc", "scripts")

# Поместите изображения в архив изображений.
build.classify("game/**.jpg", "images")
build.classify("game/**.png", "images")

Если архивный файл пуст, он не будет создан.

Пожалуйста, подумайте дважды об архивации вашей игры. Сохранение открытых файлов поможет другим запустить вашу игру на будущих платформах – платформы, которые могут не существовать, пока вас не станет.

Требования (Requirements)[править | править код]

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

Windows
  • Версия: Windows XP или выше.
  • Процессор: 2.0 GHz Core 2 Duo
  • Оперативная память: 2.0 GB
  • Графика: OpenGL 2.0 или DirectX 9.0c
macOS
  • Версия: 10.6+
  • Процессор: 2.0 GHz Core 2 Duo (только 64 -bit)
  • Оперативная память: 2.0 GB
  • Графика: OpenGL 2.0
Linux
  • Версия: Ubuntu 12.04+
  • Процессор: 2.0 GHz Core 2 Duo
  • Оперативная память: 2.0 GB
  • Графика: OpenGL 2.0


Объем требуемого дискового пространства полностью зависит от ресурсов в вашей игре, и объем требуемого процессора и оперативной памяти также может варьироваться.

Функции build (Build Functions)[править | править код]

build.archive(name, file_list=u'all')

Объявляет о существовании архива. Если один или несколько файлов классифицированы по name, name.rpa создаётся как архив. Архив включён в список именованных файлов.


build.classify(pattern, file_list)

Классифицирует файлы, которые соответствуют pattern, в file_list.


build.clear()

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


build.documentation(pattern)

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


build.executable(pattern)

Добавляет шаблон маркировки файлов как исполняемые на платформах, которые его поддерживают (Linux и Macintosh).


build.package(name, format, file_lists, description=None, update=True, dlc=False, hidden=False)

Объявляет пакет, который может быть собран инструментом упаковки.
name
Имя пакета.
format
Формат пакета. Строка, содержащая список, разделенный пробелами:
name
Имя пакета.
zip
Заархивированный файл
tar.bz2
Файл с расширением tar.bz2.
directory
Каталог, содержащий файлы.
dmg
Macintosh DMG, содержащий файлы.
app-zip
Заархивированный файл, содержащий приложение для Macintosh.
app-directory
Образ диска macintosh, содержащий dmg (только для Mac.)
Пустая строка не будет создавать форматы пакетов (это делает возможным использование dlc).
file_lists
Список, содержащий списки файлов, которые будут содержаться в пакете.
description
Необязательное описание создаваемого пакета.
update
Если принимает значение True и создаются обновления, то для этого пакета будет создано обновление.
dlc
Если принимает значение True, любой файл с расширением zip или tar.bz2 будет построен в автономном режиме DLC без каталога обновления.
hidden
Если принимает значение True, это будет скрыто из списка пакетов в Ren'Py Launcher.

Дополнительная настройка (Advanced Configuration)[править | править код]

Следующие переменные обеспечивают дополнительный контроль над процессом сборки:

build.exclude_empty_directories = True

Если принимает значение True, пустые каталоги (включая каталоги, оставленные пустыми при архивировании файлов) будут удалены из созданных пакетов. Если принимает значение False, пустые каталоги будут включены.


build.destination = "{directory_name}-dists"

Указывает путь к каталогу, в который будут помещены архивные файлы. Это может быть абсолютный или относительный путь. Относительный путь считается относительным к каталогу проектов.
Следующие значения подставляются при использовании функции str.format в Python.
{directory_name}
Значение build.directory_name.
{executable_name}
Значение build.executable_name.
{version}
Значение build.version.


build.allow_integrated_gpu = True

Позволяет Ren'Py работать на интегрированном графическом процессоре на платформах с интегрированными и дискретными графическими процессорами. В настоящее время это поддерживается только в Mac OS X.


build.include_old_themes = True

При значении True в сборку будут включены файлы, необходимые для поддержки тем, существовавших до Ren'Py 6.99.9. При значении False такие файлы исключаются.
Принимает значение False при вызове gui.init().


build.itch_project = None

Установка этого параметра позволяет Ren'Py Launcher загружать ваш проект в itch.io. Должна быть установлена на имя проекта, зарегистрированного в itch. Например, "renpytom/the-question".
Как только это будет установлено, после того, как дистрибутивы будут построены, вы можете нажать «Построить дистрибутивы», «Загрузить в itch.io», чтобы вызвать загрузку.

Источник[править | править код]

Статья "Building Distributions" на английском языке.


На главную страницу Официальная документация движка Вернуться к началу статьи