Портирование мода на Android с помощью ESTool

Необходимо наличие установленного Python и, для использования полного функционала, установленного модуля Pillow (PIL).

Благодаря утилите ESTool можно облегчить портирование своего мода в несколько раз, т. к. она позволяет автоматически урезать размеры изображений/кнопок/стилей и т. п. до тех, что поддерживает мобильная версия Бесконечного Лета, экономя огромное количество времени. Создана группой "Загрузчик модов для Бесконечного Лета", за что им большое спасибо. Программа всё ещё в разработке, так что ошибки не исключены.

В нашем примере используется версия 1.001.

Установка

Выбираем версию, скачиваем, распаковываем архив в любую папку.

Настройка

Открываем config.py, смотрим.

  • dry_run — делает прогон кода, если значение переменной равно True. Ничего не меняет и не создаёт никаких файлов (кроме лога), но выявляет большую часть ошибок. Настоятельно рекомендуется сначала запустить с True, посмотреть лог, а уже затем ставить на False и запускать скрипт.
  • in_place — если False, то портированный мод кладётся в отдельную папку рядом. Если True, то он кладётся вместо исходных файлов.
  • backup_style — создание бэкапа скриптов. Если in_place равно True, то создаются резервные копии rpy-скриптов (и только скриптов!).
    • При значении separate бэкапы создаются в отдельной папке.
    • Если nearby, то бэкап кладётся рядом с исходными файлами (с расширением ._rpy).
    • Если None, то бэкапы не создаются. Если in_place равно False, то настройка игнорируется (в бэкапах нет необходимости, поскольку исходные файлы остаются в целости и сохранности).
  • backup_location — при backup_style со значением separate задаёт путь к папке с бэкапами.
  • src_path — путь к папке с модом, который требуется портировать.
  • dest_path — путь, куда класть результат. При in_place со значением True заменяет путь в src_path на dest_path.
  • rename_non_ascii — при значении True переименовывает файлы в латиницу, транслитерируя кириллицу при наличии.
  • rescale_coordinates — при значении True умножает координаты в коде на 2/3, подгоняя под размеры для Android.
  • comments_style — дописывание комментария к изменённым строкам в коде.
    • Если равно long, то в комментарий пишется исходная строка целиком.
    • Если равно short, то делается пометка, что строка была изменена.
    • Если равно none, то комментарий не пишется.

Если при in_place со значением True запустить скрипт дважды с comments_style со значением none, то координаты будут изменены дважды!

  • resize_images — если True, сжимает изображения в полтора раза.

Требуется наличие модуля Pillow.

Если при in_place со значением True запустить скрипт дважды, то картинки будут сжаты дважды!

  • old_virtual_root — если в коде скриптов для доступа к файлам используется какой-то префикс, не отражённый в структуре каталогов (например, "mods/"), следует вписать его сюда. Иначе не будет работать замена путей.

  • new_virtual_root — если в ходе портирования требуется добавить постфикс, он указывается здесь.

  • exclude_patterns — шаблоны файлов, которые следует исключить из мода.

    • ? — любой одиночный символ.
    • * — любое количество любых символов.
    • ** — любые подпапки.

    Примеры исключений:

    • **.rpyc — скомпилированные в байт-код скрипты.
    • **/Thumbs.db — свойства папки (Windows).
    • **/.DS_Store — свойства папки (macOS).
    • **._rpy - наши бэкапы при backup_style, равном nearby (старые удаляются, новые создаются).
  • path_rewrite_rules — правила по перемещению файлов. Синтаксис: префикс, шаблон, новый_префикс.

    Если путь к файлу начинается с указанного префикса и удовлетворяет шаблону, то этот префикс срезается и заменяется новым. Файл копируется/перемещается (в зависимости от in_place) в новое место; также переписываются пути в скриптах.

Правила применяются последовательно, так что порядок объявления важен.

Обязательно наличие одного правила: ("/мод/", "**", "/мод/"). Под это правило попадают все загружаемые в скриптах файлы, но оно ничего не меняет. Необходимо для корректного переписывания путей в коде.

  • extra_files — дополнительные файлы, которые требуется добавить в мод.

Обязательно наличие одного правила: ("sprites_lol.rpy", "/"). Добавляет rpy с мобильными версиями оригинальных спрайтов.

Запуск

Запускаем командную строку, перемещаемся в папку с ESTool с помощью cd, запускаем скрипт: python estool-1.001.py. Прогресс портирования также отображается. По окончании нажмите Enter и закройте командную строку.

Заключение

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