Полный список изменений (Full Changelog)

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

7.3.5[править | править код]

◇ Исправления[править | править код]

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


◇ Другие изменения[править | править код]

  • Операторы play и queue вычисляют свои аргументы в пространстве имён audio. Это означает, что можно использовать оператор define для создания псевдонима для аудиофайла.
  • Новый обратный вызов config.exception_handler позволяет приложению полностью заменить систему обработки исключений Ren'Py.

7.3.4[править | править код]

◇ Исправления[править | править код]

В этом версии исправлены основные проблемы с графикой, представленные в 7.3.3:

  • В Windows текстуры не будут перезагружаться при переключении из полноэкранного в оконный режим или наоборот. Это привело бы к отображению неправильной текстуры.
  • На всех платформах могут возникнуть графические сбои при использовании Flatten().


◇ Другие изменения[править | править код]

  • Динамические изображения теперь могут включать «[prefix_]» везде, особенно когда add используется для добавления динамического изображения к кнопкам, перетаскиваниям и аналогичным фокусируемым объектам.
  • Операторы языка экрана, определяемые разработчиками, теперь могут принимать операторы if как дочерние элементы.
  • Система перетаскивания была улучшена, чтобы лучше взаимодействовать с обновленными экранами.

7.3.3[править | править код]

◇ Звук[править | править код]

  • Ren'Py теперь поддерживает каталог audio, который автоматически определяет имена в пространстве имён audio. Это позволяет иметь файл с именем game/audio/overture.ogg и воспроизводить его, используя:
play music overture
  • Новый класс AudioData() позволяет предоставлять сжатые аудиоданные в Ren'Py, либо созданные программно, либо взятые из источника, отличного от файла. Чтобы поддержать это, модули Python wave и sunau теперь поставляются с Ren'Py.
  • Исправлена проблема с включением микширования монофонических звуковых файлов. Эта проблема приводила к тому, что многие файлы с расширением .WAV не воспроизводились. Мы по-прежнему не рекомендуем использовать файлы WAV.


◇ Платформы[править | править код]

  • Ren'Py теперь распространяется как подписанный и нотариально заверенный двоичный файл на Mac. Поскольку этот процесс занимает очень много времени, возможность подписывать двоичные файлы macOS была удалена из самого Ren'Py в пользу внешних скриптов, которые заботятся о процессе подписания и нотариального заверения.
  • Минимальная версия, поддерживаемая портом Android, была снижена до Android 19 (Android 4.4 KitKat).
  • Веб-порт Ren'Py претерпел ряд изменений:
  • Варианты экрана теперь обнаруживаются и устанавливаются.
  • Поддержка полноэкранного режима была улучшена, хотя пользователю может потребоваться нажать кнопку, чтобы включить полноэкранный режим.
  • Выход из веб-страницы обнаружен, поэтому постоянные данные могут быть сохранены.
  • 'game.zip' теперь можно переименовать. 'DEFAULT_GAME_FILENAME' в index.html управляет этим.
  • Переносимые HTTP-запросы (native + renpyweb) смотри здесь.
  • Включение сети в веб-порт Python для тестирования веб-сокетов, прозрачно доступный через модуль Python 'socket'.
  • HTTP Cache-Control позволяет более плавно обновлять игру.
  • Модуль pygame.draw теперь включен, что позволяет поддержку Canvas.
  • Совместимость с WebGL была улучшена.


◇ Другие изменения[править | править код]

  • Во время профилирования, проведенного для проекта GL Rewrite, выяснилось, что переход к объектам кадрового буфера в 7.3.0 стал причиной определенных снижений производительности. Изменяя способ использования FBO, производительность Ren'Py была улучшена.
  • Теперь функции renpy.input() можно присвоить имя экрана, который используется для запроса ввода пользователем.
  • Создание списка, диктов и наборов внутри языка экрана теперь анализируется правильно. Это позволит анализировать больше отображаемых объектов как постоянных, улучшая производительность экрана.
  • Экран уведомления теперь скрыт при откате.
  • Экран режима-NVL показывает, что он отображает окно, что предотвращает проблемы, когда window show работает.
  • Когда Call с параметром from_current, установленным в значение True, происходит во время оператора, состоящего из нескольких частей (например, меню с диалогом), управление восстанавливается до первой части этого многосоставного оператора (таким образом, вызывая отображение диалога).
  • Дополнительные функции теперь используют слой тега по умолчанию.
  • Добавлена функция renpy.is_init_phase().
  • Автоматический голос теперь работает для диалога, который является частью оператора menu.
  • Поддержка GLES1 была прекращена. Им уже много лет никто не пользовался.
  • Действия SelectedIf() и SensitiveIf() теперь могут принимать другие действия в качестве аргументов.
  • Многие BarValues теперь принимают аргумент force_step, который заставляет изменения в панели округляться до ближайшего значения шага.
  • Frame() теперь позволяет аргументу tile быть строкой "integer", которая разбивает содержимое фрейма на целые числа несколько раз.
  • Character() теперь позволяет аргументу name быть функцией или вызываемым объектом, когда dynamic принимает значение True.


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

  • Обновлены переводы на корейский и испанский языки.

7.3.2[править | править код]

◇ Исправления[править | править код]

  • Исправлена регрессия в переменных платформы, вызванная предыдущим релизом.


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

  • Обновлён перевод на испанский язык.

7.3.1[править | править код]

◇ Изменения[править | править код]

  • Описательный текст (текст, предназначенный для показа при включенном озвучивании текста, чтобы можно было описать сцены людям с нарушенным зрением) был обновлён. Описательный текст теперь доступен с помощью персонажа alt (старый персонаж sv был сохранён как псевдоним). Теперь также можно отображать описательный текст, используя пользовательского персонажа, а не рассказчика.
  • Теперь Ren'Py всегда инициализирует систему воспроизведения мультимедиа, так что фильм может быть воспроизведён, даже если звук не будет воспроизводиться.
  • Свойство default большинства отображаемых объектов, которое используется для выбора отображаемого объекта для фокусировки по умолчанию, было переименовано в default_focus, чтобы оно не конфликтовало с оператором default. Теперь также принимает целое число с отображаемым фокусом с наибольшим числом фокусировки.
  • Отображаемый объект Flatten() теперь передает позиции от дочернего элемента.
  • Генераторы случайных чисел, созданные с помощью renpy.random.Random, теперь поддерживают откат.
  • При эмуляции Android или iOS переменные платформы (такие как renpy.android, renpy.ios, renpy.windows и renpy.mobile) устанавливаются правильно.
  • Теперь Renpyweb сохраняет дату и время создания файла сохранения.


◇ Исправления[править | править код]

  • В этом версии исправлена довольно серьезная проблема, которая могла приводить к тому, что экраны, интерполирующие текст, не обновляются или обновляются неправильно.
  • Эта версия правильно запускает процедуру прогнозирования изображения из потока прогнозирования изображения.
  • Проблема с текстовым тегом {clear} была исправлена.
  • Переход config.end_game_transition, который в большинстве случаев не работал должным образом, был исправлен.


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

  • Обновлены переводы на русский, корейский и испанский языки.

7.3.0[править | править код]

◇ Renpyweb[править | править код]

Благодаря Sylvain Beucler, Ren'Py теперь может создавать дистрибутивы для веб-платформ HTML5, которые могут работать в современных веб-браузерах, поддерживающих стандарт сетевой сборки. Это предназначено для небольших игр и демонстраций больших игр, так как сейчас реализация загружает полную версию игры в веб-браузер, прежде чем запускать какую-либо из них.

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

Создание веб-дистрибутива можно выполнить с помощью новой кнопки «Web» в Ren'Py Launcher. Теперь лаунчер включает в себя небольшой веб-сервер, который можно использовать для запуска игры в веб-браузере в тестовых целях.


◇ Операторы, определяемые разработчиком[править | править код]

Операторы в Ren'Py, определяемые разработчиком, и используемые ими объекты Lexer были расширены для улучшения функциональности во многих отношениях. Что касается Lexer:

  • Теперь можно попросить объект Lexer проанализировать одну строку как оператор Ren'Py или все строки, оставшиеся в блоке, как операторы Ren'Py.
  • Теперь можно попросить объект Lexer отлавливать ошибки, чтобы ограничить область ошибок частью оператора, определенного разработчиком, а не целым оператором.


У функции renpy.register_statement() есть новые аргументы для включения новых функциональных возможностей.

  • Прогнозирование оператора может управляться аргументами predict_all и predict_next, которые прогнозируют все возможные последующие операторы или принимают функцию, которая определяет, что будет выполняться дальше, соответственно.
  • Новый аргумент post_execute позволяет указать исполняемую функцию, которая выполняется в качестве следующего оператора – тот, который находится после оператора, определенного разработчиком. Это позволяет шаблону, в котором выполняется оператор, выполнить блок внутри него, а затем выполнить что-то после блока, чтобы очистить его. Например, событие, которое служит меткой, а затем возвращается к диспетчеру, когда оно выполнено.
  • Новый аргумент post_label позволяет указать функцию для предоставления метки, которая идет после оператора, определенного разработчиком, который может функционировать подобно from в операторе call.


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


◇ Улучшения языка экрана[править | править код]

  • Теперь можно добавлять as для отображаемого языка экрана. Это особенно полезно при перетаскивании, так как позволяет экрану захватывать объект перетаскивания и вызывать методы по мере необходимости.
  • Оператор on теперь может принимать список событий.
  • Экран теперь принимает свойство sensitive, которое определяет, возможно ли вообще взаимодействовать с экраном.
  • Ren'Py теперь будет выдавать ошибку, когда непостоянное свойство следует за оператором Python, внутри языка экрана. Это случалось очень редко и почти всегда было ошибкой.


◇ Улучшения текста[править | править код]

  • Ren'Py теперь включает поддержку самозакрывающихся пользовательских текстовых тегов, которые являются пользовательскими текстовыми тегами, не требующими закрытия текстового тега.
  • Ren'Py теперь поддерживает три новых флага, которые можно применять при форматировании текста:
  • "[varname!u]" переводит текст в верхний регистр.
  • "[varname!l]" переводит текст в нижний регистр.
  • "[varname!c]" переводит первую букву текста в верхний регистр, используя заглавные буквы.


◇ Улучшения для Android и iOS[править | править код]

  • Теперь Ren'Py использует объекты кадрового буфера на любом устройстве, которое утверждает, что поддерживает его. В результате focus_mask теперь работает на Android и iOS.
  • Теперь Ren'Py выпускает 64-битные ARM-файлы для Android. Они будут необходимы магазину Google Play в конце этого года.
  • Ввод текста на Android был переписан снова, чтобы исправить проблемы, когда пользователь не мог продвинуться. Завершение было устранено, так как это было источником проблем. В то время как языки, требующие методов ввода, требуют большего переписывания для работы, Ren'Py теперь должен правильно обрабатывать все клавиатуры прямого ввода.


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

  • Ren'Py Launcher и пример проекта были переведены на турецкий язык Arda Güler.
  • Обучающая игра Ren'Py была переведена на испанский язык Moshibit.
  • Французский, японский, корейский, русский и испанский переводы были обновлены для этой версии.


◇ Другие улучшения[править | править код]

  • Отображаемый объект side теперь отображает свои дочерние элементы в том порядке, в котором они представлены в управляющей строке.
  • Операторы say, menu и renpy.call_screen теперь принимают аргумент _mode, который определяет режим, в который переходит Ren'Py при выполнении этих операторов.
  • Функции renpy.show_screen() и renpy.call_screen() теперь принимают аргумент zorder.
  • Теперь Ren'Py будет воспроизводить монофонический звуковой файл с той же громкостью, что и стереофонический звуковой файл, а не посылать половину энергии в каждое ухо.
  • Новый config.load_failed_label указывает метку, к которой можно перейти при сбое загрузки, потому что Ren'Py больше не может найти текущий оператор. Это позволяет в игре реализовать собственный механизм восстановления.
  • Новая переменная config.notify позволяет перехватить систему уведомлений и сделать своё дело.
  • Интерфейс config.say_attribute_transition_callback был изменён несовместимым образом, чтобы можно было задавать наборы старых и новых тегов.
  • Action и BarValue теперь поддерживают метод get_tooltip, который позволяет объекту предоставлять всплывающую подсказку по умолчанию.


◇ Исправления[править | править код]

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

7.2.2[править | править код]

  • Теперь Ren'Py поддерживает новое меню специальных возможностей, которое можно открыть, нажав клавишу "a". Это меню, которое предназначено для использования игроками, позволяет игроку переопределить шрифт игры, изменить масштабирование и интервал текста, а также включить автоматическое голосовое озвучивание.
  • Теперь Ren'Py позволяет файлам в общедоступной директории игры (/mnt/sdcard/Android/package/files/game) переопределять те, которые включены в саму игру. Это было перечислено как функция в версии 7.2.0, но не работало правильно.
  • Теперь Ren'Py будет включать временные атрибуты изображения в операторы say, созданные в процессе перевода.
  • При загрузке на itch.io теперь Ren'Py загружает число скачиваний сам. Это означает, что больше нет зависимости от местоположения или структуры приложения Itch, как было раньше.
  • Значения панели DictValue(), FieldValue(), VariableValue() и ScreenVariableValue() принимают новый параметр action, который задаёт действие, выполняемое при каждом изменении значения.
  • Система отката была оптимизирована для уменьшения количества мусора, который необходимо собрать.

7.2.1[править | править код]

◇ Улучшения iOS[править | править код]

  • Теперь Ren'Py установит поле версии для приложения iOS при создании проекта.
  • Теперь Ren'Py будет искать файлы ios-icon.png и ios-launchimage.png и использовать их для создания иконки и образа запуска в размерах, необходимых для iOS.


◇ Другие улучшения[править | править код]

  • Функция renpy.in_rollback() возвращает значение True при откате, который происходит сразу после загрузки. Это позволяет использовать:
python:
    if not renpy.in_rollback():
        renpy.run(ShowMenu('save'))
Для отображения меню сохранения во время начального прохождения, но не во время загрузки или отката.
  • Теперь существует config.say_attribute_transition_callback, что позволяет выбрать переход для использования на основе оператора per-say.
  • Новая переменная окружения RENPY_SEARCHPATH позволяет переопределить config.searchpath при запуске.


◇ Исправления[править | править код]

  • Ren'Py был проверен, чтобы удостовериться, что семантика == и != совпадает, когда == был переопределён.
  • Устранены проблемы, которые могли возникнуть при добавлении преобразования на экран с помощью оператора add.
  • Способ обработки аргументов extend был изменен, чтобы обеспечить приоритет новых аргументов над аргументами, заданными для расширяемого оператора.
  • Теперь Ren'Py правильно учитывает область действия при сравнении динамических изображений на равенство. Это исправляет проблему, из-за которой некоторые динамические изображения не обновлялись, когда были частью экрана.
  • Исправлен сбой, когда config.save_dump принимает значение True в macOS.
  • Исправлено падение, когда config.profile принимает значение True.
  • Теперь Ren'Py явно запрашивает ввод текста (в отличие от электронной почты, пароля, номера телефона и т.д.) На Android при отображении клавиатуры.
  • Исправлена проблема, из-за которой функция отката не работала с оператором menu.
  • Исправляет ошибку, которая не позволяет выполнить откат через меню.

7.2.0[править | править код]

◇ Аргументы меню[править | править код]

  • Теперь Ren'Py поддерживает аргументы меню. Аргументы могут быть переданы в меню выбора в целом или в отдельные варианты меню, используя синтаксис:
menu ("jfk", screen="airport"):

    "Чикаго, Иллинойс" (200):
        jump chicago_trip

    "Даллас, Техас" (150, sale=True):
        jump dallas_trip

    "Хот-Спрингс, Арканзас" (300) if secret_unlocked:
        jump hot_springs_trip
  • Аргументы меню, передаваемые в само меню, становятся аргументами экрана, за исключением аргумента экрана, который выбирает экран, и аргумента nvl, который - если он присутствует - выбирает меню NVL-режима. Аргументы выбора становятся аргументами элементов, передаваемых на экран menu.


◇ Временные атрибуты say[править | править код]

Теперь Ren'Py поддерживает временные атрибуты say. Так же, как и обычные атрибуты say, они включены в состав оператора say. Однако эти временные атрибуты say возвращаются после завершения диалога. Например, в скрипте:

show eileen happy

e "Я счастлива."

e @ vhappy "Я действительно счастлива!"

e "Я всё ещё счастлива."

В первой и последней строчках диалогов Эйлин использует свои счастливые эмоции. Эмоция vhappy показывается перед второй строкой диалога и заменяется предыдущей эмоцией (в данном случае happy) перед ней.


◇ Текст[править | править код]

  • Было несколько изменений текста, которые влияют на текст, когда окно масштабируется до нестандартного размера:
  • Теперь текст выровнен по его базовой строке, а не по верхней части текста. Это актуально, когда используется абсолютное смещение контура.
  • Теперь можно выбрать способ масштабирования контура при масштабировании окна. Это делается с помощью свойства стиля outline_scaling.
  • При размещении объекта Text свойство yanchor может быть renpy.BASELINE. Когда это так, точка привязки устанавливается на базовую строку первой строки текста.


◇ Операторы[править | править код]

  • Новые операторы window auto show и window auto hide позволяют автоматически управлять диалоговым окном, показывая или скрывая диалоговое окно.
  • Операторы show screen и hide screen теперь принимают оператор with, который работает так же, как и с show и hide.
  • Оператор use языка экрана может принимать expression, что позволяет ему принимать выражение, а не буквальное имя экрана. Это позволяет использовать переменную при выборе включенного экрана. Подробнее смотрите в разделе «Оператор use».


◇ Изменения[править | править код]

  • Новая функция renpy.is_skipping() сообщает, пропускает ли сейчас Ren'Py.
  • Отображаемый ввод теперь принимает новое свойство copypaste, которое, когда принимает значение True, позволяет копировать с помощью ctrl+C и вставлять с помощью ctrl+V. Это включено в консоли и лаунчере.
  • Preference("display", "window")() теперь позволяет избежать создания окна больше, чем экран, и будет выбран, если текущий размер окна равен максимальному размеру окна, если размер, выбранный с помощью gui.init(), больше, чем максимальный размер окна.
  • Операторы, определяемые разработчиком, теперь имеют ещё несколько доступных методов лексического анализатора, что позволяет анализировать аргументы, компоненты имени изображения, метки и разделители Python.
  • Функция renpy.force_autosave() принимает новый аргумент, что приводит к блокировке автосохранения до его завершения.
  • Экран ctc теперь принимает ряд новых параметров, если требуется.
  • Новый манипулятор изображений im.Blur() может размыть изображение. Спасибо Mal Graty за помощь.
  • Группы LayeredImage теперь поддерживают свойство multiple, что позволяет отображать несколько атрибутов в одной группе одновременно. Это полезно, поскольку позволяет применять функцию автоматического определения группы к неконфликтным изображениям.
  • Ren'Py останется в полноэкранном экране, когда мышь изменяет рабочие столы, и позволит избежать уменьшения максимального размера окна во время перезагрузки.
  • Переменная config.allow_duplicate_labels может быть определена или установлена в блоке init python, чтобы в игре можно было определить дубликаты меток.
  • Теперь отображаемому Movie() можно запретить зацикливание и отобразить соответствующее статическое изображение, когда он прекращает зацикливание. Он также может принимать изображение, которое отображается перед началом самого кинофрагмента.


◇ Изменения в Android[править | править код]

  • Загрузка Android SDK была обновлена, чтобы исправить изменения в предоставляемых инструментах, которые препятствовали загрузке.
  • Теперь клавиатуре задаётся явное действие, чтобы убедиться, что клавиша Enter работает.
  • Теперь Ren'Py использует платежные системы API Amazon при загрузке на устройство, созданное Amazon, что позволяет тестировать их платежную систему на APK с двойным магазином.
  • Теперь Ren'Py позволяет файлам в общедоступной директории игры (/mnt/sdcard/Android/package/files/game) переопределять файлы, включенные в саму игру.


◇ Исправления[править | править код]

  • Исправлена ошибка, не позволяющая Ren'Py отображать символы нулевой или отрицательной ширины (например, некоторые диакритические знаки).
  • Исправлена ошибка, из-за которой Ren'Py не мог обновить отображаемый объект, добавленный на экран со свойствами преобразования.
  • Порядок перетаскивания внутри группы перетаскивания теперь сохраняется при перезапуске взаимодействия.
  • Свойства изменения размера, такие как xysize, теперь применяются к перетаскиванию, а не к пространству, в котором они могут перемещаться.
  • Исправлена ошибка, которая могла привести к появлению прозрачной, черной или серой линии в нижней строке экрана во время растворения.
  • Регрессия в поддержке графических шрифтов была исправлена.
  • Создание нового файла из меню навигации Ren'Py Launcher теперь работает.
  • Наборы меню теперь снова работают.
  • Ren'Py больше не будет аварийно завершаться, если для Function() и других действий задан несравнимый тип.
  • Случай, когда прокрутка вперёд терпит неудачу, теперь исправлен.
  • Устранена проблема, которая не позволяла наложению Steam появляться на macOS.

7.1.3[править | править код]

Это было быстрое переиздание версии 7.1.2, чтобы исправить одну ошибку, которая состояла в том, что тестовое изменение было оставлено в результате настройки config.default_language при первом запуске.

7.1.2[править | править код]

◇ Улучшения[править | править код]

  • Язык экрана Ren'Py теперь поддерживает включение анонимных ATL-преобразований. Теперь можно написать:
screen hello_title():
    text "Привет.":
        at transform:
            align (0.5, 0.5) alpha 0.0
            linear 0.5 alpha 1.0
  • Новые действия SetLocalVariable() и ToggleLocalVariable() позволяют устанавливать переменные внутри используемых экранов.
  • Новая переменная config.menu_include_disabled определяет, должны ли меню включать записи, отключенные оператором if.
  • Сочетания клавиш с Shift (например, Shift+I и Shift+R)) теперь работают в режиме эмуляции Android.
  • Теперь Ren'Py лучше сообщает об ошибках в текстовых тегах, которые требуют значения, но не задаются.
  • Новая переменная _version указывает версию самой игры, которая использовалась при первом создании новой игры. Эта переменная сохраняет только версию при создании игры - после этого её разработчик должен её обновлять.
  • Отображаемый объект Movie() теперь поддерживает новый режим: данные о цвете и данные альфа-маски располагаются рядом в одном файле. Это предотвращает проблемы, из-за которых основной фильм и фильм с маской могут не синхронизироваться.
  • Функции FilePageNext() и FilePagePrevious() теперь принимают аргументы, которые контролируют могут ли они вывести плеер на страницы автоматического или быстрого сохранения.
  • Новая переменная config.skip_sounds определяет будет ли Ren'Py пропускать нециклические аудиофайлы, которые воспроизводятся во время пропуска Ren'Py.


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

  • Теперь Ren'Py
  • Переводы на французский, немецкий, корейский, русский и упрощенный китайский были обновлены.


◇ Исправления[править | править код]

  • Исправлена ошибка, связанная с Windows, которая приводила к тому, что RTL (поддержка языков, таких как арабский и иврит) повреждает вторую половину текстовых строк. Это должно предотвратить отображение мусорных символов при рендеринге этих языков.
  • Теперь Ren'Py сообщит об ошибке, если игра получит доступ к изображению, которое не существует, но имеет в качестве префикса изображение, которое существует. До этого изменения, если eileen happy существует и eileen happy unknown была показана, дополнительный атрибут будет проигнорирован.
  • Lint был улучшен для работы с изображениями, которые принимают атрибуты, отсутствующие в имени изображения, например, многослойные изображения.
  • Ren'Py генерирует изображения меню выбора, которые подходят для использования на телефоне.


◇ Исправления для Android[править | править код]

  • Так как новая поддержка Ren'Py для Android хорошо работала только на 64-битной версии Java 8, мы делаем это 64-битное требование явным.

7.1.1[править | править код]

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

В этой версии исправлена проблема с экраном history в Ren'Py. Проблема возникла, когда строка диалога содержала в кавычках квадратные скобки, что-то вроде:

"Я [[think] у меня проблема."

Когда это происходит, строка "Я [[think] у меня проблема." добавляется в историю. Затем Ren'Py отображает это в истории, подставляет переменную think и вылетает. Это исправлено добавлением substitute False на экран history. Это делается для новых проектов, но для существующих вам нужно сделать исправление самостоятельно. Вот новый экран history:

screen history():

    tag menu

    ## Избегайте прогнозирования этого экрана, так как он может быть очень большим.
    predict False

    use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0):

        style_prefix "history"

        for h in _history_list:

            window:

                ## Это излагает вещи должным образом, если history_height принимает значение None.
                has fixed:
                    yfit True

                if h.who:

                    label h.who:
                        style "history_name"
                        substitute False

                        ## Возьмет цвет текста who от Character, если он установлен.
                        if "color" in h.who_args:
                            text_color h.who_args["color"]

                $ what = renpy.filter_text_tags(h.what, allow=gui.history_allow_tags)
                text what substitute False

        if not _history_list:
            label _("История диалога пуста.")

Новые строки – это те, что включают substitute False. Вы захотите внести это изменение в свой экран истории, чтобы предотвратить возникновение вышеуказанной проблемы.


◇ Улучшения для Android[править | править код]

  • Теперь Ren'Py устанавливает объем памяти, используемый инструментом сборки Android, по умолчанию, установленный Google, равным 1536 мегабайт. Чтобы изменить это, отредактируйте rapt/project/gradle.properties. Чтобы убедиться, что вы способны создавать большие игры, убедитесь, что на вашем компьютере установлена 64-битная версия Java 8.
  • Ren'Py прямо говорит Android передать клавишу Enter на вход.
  • Теперь Ren'Py корректно обрезает и масштабирует значок для версий Android ниже Android 8 (Oreo).
  • Ren'Py задаёт другой числовой номер версии для x86_64 apk. Это позволит загружать сборки x86_64 и armeabi-v7a в Google Play и другие магазины, а не создавать сначала одну сборку, а затем другую, вручную изменяя номера версий между ними.


◇ Другие улучшения[править | править код]

  • Теперь Ren'Py самостоятельно обрабатывает (отсутствие) рисования символов нулевой ширины, предотвращая появление таких символов в виде квадратов в тексте, если шрифт не поддерживает символ нулевой ширины.
  • Ren'Py поддерживает использование неразрывных пробелов и неразрывных пробелов нулевой ширины для предотвращения упаковки изображений в тексте.
  • Ren'Py поддерживает новое значение "nested-close" для параметра ctc_position в Character(). Это значение предотвращает разрыв между индикатором нажмите для продолжения и другими строками.
  • Перетаскивание (в режиме перетаскивания) теперь поддерживает альтернативные щелчки кнопкой мыши. Щелчки правой кнопкой мыши на рабочем столе и длинные щелчки на сенсорных платформах.


◇ Исправления[править | править код]

  • Функции SetVariable() и ToggleVariable() были расширены, чтобы принимать пространства имён и поля. Таким образом, теперь можно иметь действия, такие как SetVariable("hero.strength", hero.strength + 1) или ToggleVariable("persistent.alternate_perspective").
  • Автоматическое управление диалоговым окном (сделано с помощью оператором window auto) теперь учитывает, есть ли во внутриигровом меню диалог или заголовок, связанный с ним, и обрабатывает его соответствующим образом.
  • Исходный код встроенной версии fribidi, с которой ожидается сборка Ren'Py, теперь включён в архив-source.
  • Было внесено несколько исправлений в настройку поддержки голоса, чтобы он лучше работал с историей и голосом воспроизведения действий.

7.1[править | править код]

◇ Android[править | править код]

  • В этой версии существенно переписана поддержка Ren'Py для Android для его модернизации. Это необходимо для загрузки игр, созданных на Ren'Py, в магазин Google Play. Некоторые из этих изменений могут потребовать обновления файлов игры. В частности, изменился формат иконок, поэтому их придётся переделывать.
  • Минимальная версия Android, на которой будет работать Ren'Py, была повышена до Android 19 (он же 4.4 KitKat), в то время как она нацелена на Android 28 (он же 9 Pie).
  • Архитектура x86_64 была добавлена, а x86 удалена. Некоторые устройства x86 могут запускать версию платформы arm через слои двоичного перевода.


◇ Режим монолога[править | править код]

  • Теперь можно писать сразу несколько блоков диалога или повествования, используя строки в тройных кавычках. Например:
e """
Это один из блоков диалога.

И это второй блок.
"""
создаст два блока диалога. Дополнительную информацию смотрите в разделе «Режим монолога».
  • Также существует новый текстовый тег {clear}, который работает с монологом. Когда тег {clear} сам по себе является частью строки, он эквивалентен оператора nvl clear. Для более подробной информации смотрите раздел «Режим монолога NVL-режима».


◇ Изменение атрибута Say-With[править | править код]

Было внесено изменение в способ обработки атрибутов say-with, когда нет изображения с отображаемым тегом. Ранее Ren'Py использовал атрибуты, заданные в последнем операторе say-with-attributes, чтобы выбрать боковое изображение для отображения. Теперь Ren'Py будет использовать предоставленные атрибуты и существующие атрибуты для разрешения бокового изображения. Это делает атрибут say-with, который возникает, когда изображение не показывает работу так же, как когда оно есть. Когда атрибуты не выбирают одно боковое изображение, Ren'Py выберет изображение со всеми заданными атрибутами и наиболее возможными из существующих атрибутов. Обоснование этого изменения заключается в том, чтобы помочь с боковыми изображениями, которые определены как многослойные изображения, где имеет смысл предоставить только те атрибуты, которые изменяются.


◇ Изменение обновлений[править | править код]

Устройство корректировки текущей информации для Ren'Py теперь просит вас выбирать канал обновления каждый раз, когда вы переходите к обновлению. Цель этого состоит в том, чтобы прояснить, какой канал вы обновляете при каждом обновлении, чтобы вы случайно не обновились до предрелизной или ночной версии после выхода релиза. В рамках этого, вы можете увидеть, что канал Prerelease отсутствует для некоторых обновлений. Это нормально - в отличие от предыдущих версий, канал появляется только при наличии предварительных выпусков.


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

  • В Ren'Py Launcher проекты «Обучение» и «Вопрос» были переведены на латинский алфавит малайского языка Muhammad Nur Hidayat Yasuyoshi.
  • Корейский перевод был значительно обновлён.
  • Теперь можно перевести строки, используемые RAPT, на неанглийские языки.


◇ Другие изменения[править | править код]

  • Теперь Ren'Py может автоматически сохранять игру после выхода из неё надежным способом. По сравнению с предыдущим автосохранением, которое может завершиться с ошибкой или отключиться. Это контролируется переменной _quit_slot.
  • Действия с файлами (такие как FileSave(), FileLoad() и FileAction()) теперь могут принимать аргумент slot=True. Когда это задано, действие загружает именованный слот, не затрагивая страницу.
  • Меню разработчика (доступное через Shift+D) теперь может отображать экран, на котором отображаются атрибуты, связанные с отображаемыми и скрытыми изображениями.
  • Добавлена renpy.transform_text() – функция преобразования текста без использования текстовых тегов или интерполяции.
  • Кнопки, созданные с помощью метода make_buttons объекта Gallery, теперь наследуются от пустого стиля, а не от кнопки. Это предотвращает проблемы со свойствами стиля кнопки.
  • Код для завершения отображения текста теперь вызывается из метода события, как если бы была нажата кнопка мыши. Это помогает предотвратить прекращение взаимодействия при открытии меню.
  • Отображаемые префиксы поддерживаются при оценке автоматических изображений в кнопках изображений и картах изображений.
  • Исправлена ошибка, приводившая к ошибке в операторе NVL-режима, если следующим оператором был оператор NVL-режима с неопределенным именем персонажа.
  • Когда два преобразования ATL вложены, состояние из обоих передаётся, а не только от самого внешнего.
  • Теперь Ren'Py обновляет динамические изображения, которые используются в окнах, панелях и фреймах. И производные отображаемые объекты, такие как кнопки и изображения.
  • Исправлена ошибка, из-за которой Ren'Py потреблял 100% ядра при задании модального True.
  • Теперь Ren'Py включает копию fribidi, а не требует версии с установленной ОС.
  • Новый box_wrap_spacing позволяет контролировать интервал между строками или столбцами, введенным box_wrap.
  • Свойство стиля adjust_spacing теперь может принимать значения "horizontal" и "vertical", в результате чего интервал текста будет регулироваться только в указанном направлении.
  • LayerdImageProxy теперь может принимать интерполированную строку.
  • Новый config.context_callback вызывается при запуске игры или при входе в новый контекст, например контекст меню. Его можно использовать для остановки воспроизведения голоса или звуков при входе в этот контекст.
  • Отображаемый объект Drag() (и эквивалент языка экрана drag) вырастили новое свойство activated. Это обратный вызов, который вызывается, когда игрок впервые щелкает мышью на перетаскивании (прежде чем он начнет двигаться).

7.0[править | править код]

Ren'Py 7.0 знаменует собой завершение более чем десятилетней разработки, начиная с Ren'Py 6, в которой появились такие функции, как ATL, язык экрана, ускорение OpenGL и DirectX, поддержка платформ Android и iOS, перевод, доступность и многое другое.

Для версий между 6.0 и 7.0 смотрите другие записи в этом списке изменений, а также более старый список изменений на веб-сайте Ren'Py. Остальная часть этой записи содержит различия между 7.0 и 6.99.14.3.


◇ Многослойные изображения[править | править код]

Многослойное изображение – новый способ определения изображений для использования в Ren'Py. Он предназначен для использования со спрайтом, который был создан в Photoshop или какой-либо другой программе в виде серии слоёв. Система многослойных изображений может использовать атрибуты, с которыми отображалось изображение, и условия Python, чтобы определить, какие слои отображать.

Многослойные изображения предназначены для замены использования Composite() и ConditionSwitch() для определения многослойных изображений. Он включает язык, который упрощает определение таких изображений, и Ren'Py может генерировать части определений из файлов с соответствующим именем. Он также лучше интегрируется с остальной частью Ren'Py, так как атрибуты могут быть предсказаны таким образом, который не может сделать ConditionSwitch, а многослойные изображения работают с инструментом Interactive Director.


◇ Словарь переходов[править | править код]

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


◇ Изменения[править | править код]

  • Старый учебник и старые шаблоны больше не включены в Ren'Py. Они всё ещё могут использоваться с новой версией Ren'Py, если скопированы в эту или более поздние версии.
  • Новое действие Scroll() позволяет использовать кнопки, изменяющие положение области просмотра или значение панели.
  • Переходы Dissolve(), ImageDissolve() и AlphaDissolve() теперь учитывают альфа-каналы своих исходных отображаемых объектов, как если бы им был задан аргумент alpha=True. Поскольку исключение альфа-канала больше не является оптимизацией, это изменение позволяет использовать те же переходы в большем количестве мест.
  • Автоматические определения изображений теперь выполняются на уровне init 0, а не на уровне инициализации более 999. Это позволяет использовать renpy.has_image() в блоках init.
  • В инструменте Interactive Director теперь есть кнопка, позволяющую выбрать, будет ли он отображаться в верхней или нижней части экрана.
  • Оператор for язык экрана теперь принимает index:
for i index i.name in party:
    ...
  • Когда предоставлено, это должно возвратить уникальное значение, которое может отобразить информацию, такую как кнопка, и преобразовывать состояние в объект, из которого это происходит.
  • Теперь есть альтернативный текст руби, позволяющий отображать сразу два вида текста руби, например, руководство по переводу и произношению.
  • Новая система отображаемых префиксов позволяет определять ваши собственные отображаемые элементы, к которым можно обращаться с помощью строк, так же, как изображения, файлы изображений и твердотельные модели имеют строковую форму.
  • Теперь Ren'Py поддерживает создание файлов .zip, содержащие отдельные файлы (например, файлы .rpa), размер которых превышает 2 ГБ. Поскольку это требует использования стандарта Zip64, распаковка таких файлов может не поддерживаться на некоторых платформах, особенно в Windows XP.
  • Новая функция renpy.get_hidden_tags() возвращает набор тегов, которые имеют атрибуты, но или иным образом скрыты, а функция renpy.get_showing_tags() может возвращать список тегов в отсортированном порядке.
  • Отображение спрайта фильма во второй раз теперь будет воспроизводить фильм с самого начала для согласованности с ATL и другими анимациями.
  • Документация получила разрешение на редактирование, любезно предоставленный Craig P. Donson.


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

  • Проекты «Обучение» и «Вопрос» в Ren'Py теперь имеют французские переводы благодаря Alexandre Tranchant.
  • Японский и русский переводы были обновлены.


◇ Исправления[править | править код]

  • Исправляет регрессию, которая не позволяла экранам обрабатывать события скрытия или замены, когда экран не отображался. Это может быть в случае, когда игрок пропускает игру.
  • Исправлена ошибка, из-за которой инструмент Interactive Director переводился на русский язык при использовании языка по умолчанию (английского).
  • Отображаемые объекты Composite(), Crop() и Tile() теперь фактически доступны под их новыми именами.
  • Исправлена ошибка, из-за которой Ren'Py мог откатиться в неправильное место при доступе к консоли. Это может привести к тому, что консоль отображает неверные данные, находясь в самой консоли.

6.99.14.3[править | править код]

◇ Изменения[править | править код]

  • Теперь отображаемый объект AlphaMask() помещает свою маску внутрь дочернего отображаемого объекта таким же образом, как это всегда делала функция AlphaDissolve. Это позволяет создавать маску с помощью ATL или других преобразований.
  • Несколько устаревших манипуляторов изображений были признаны устаревшими и удалены из документации. Это манипуляторы изображений, которые были полностью заменены Transform().
  • Несколько функций были переименованы, чтобы удалить бессмысленный префикс Live.
  • LiveComposite теперь Composite()
  • LiveCrop теперь Crop()
  • LiveTile теперь Tile()
  • Старые имена были сохранены как псевдоним совместимости.


◇ Исправления[править | править код]

  • В этой версии исправлена проблема из-за которой дочерние элементы операторов for на экранах не передавали свои данные в ходе циклов обновления экрана. Это проявляется в сложных формах, таких как повторяющиеся переходы и медленный текст, отказывающийся работать.
  • В этой версии отображается новейший слот для сохранения в выбранном цвете, как и предполагалось. Это относится и к вновь созданным играм, старые проекты можно обновить, добавив в нижнюю часть gui.rpy:
define gui.slot_button_text_selected_idle_color = gui.selected_color
define gui.slot_button_text_selected_hover_color = gui.hover_color
  • Проблема, появившаяся в 6.99.14.2 с оператором default, не работающим после того, как откат был исправлен. Это должно было затронуть только те игры,которые были обновлены после первого сохранения.

6.99.14.2[править | править код]

◇ Особенности и изменения[править | править код]

  • Теперь текстовый редактор Atom поддерживается в Ren'Py. Когда он выбран, Ren'Py загрузит Atom и создаст новый профиль с установленными плагинами language-renpy, renpy-dark-syntax и renpy-light-syntax Atom, а также несколько настроек по умолчанию для упрощения программирования на Ren'Py.
  • Теперь можно указывать базовую строку для шрифтов на основе изображений.
  • Когда экран в графическом интерфейсе пользователя по умолчанию прокручивается, клавиши pageup и pagedown теперь будут работать для его прокрутки. Это работает только с новыми проектами.
  • Отображаемый объект Movie() теперь принимает аргумент play_callback, который определяет функцию, вызываемую для воспроизведения фильма. Эта функция может делать такие вещи, как постановка в очередь фильма перехода, прежде чем ставить в очередь обычный цикл, обеспечивая плавные переходы.
  • Новая функция renpy.get_say_image_tag() позволяет получить имя говорящего персонажа.
  • Интерполяция ATL теперь может интерполироваться из преобразования с несколькими строками в нем, при условии, что ни одна из строк не требует времени для завершения.
  • Добавление оператора from в вызов больше не изменяет идентификатор перевода (который также используется автоматическим голосовым кодом). Поскольку это будет серьезное изменение, Ren'Py также вычисляет идентификатор перевода старого стиля и использует его, если он существует.
  • Метод _choose_attributes вызывается, когда можно найти только один отображаемый объект. Это поддерживает бета-версию AttributeImage (https://github.com/renpy/ai).
  • Новая переменная gui.button_image_extension позволяет изображениям кнопок быть .webps без изменения самого Ren'Py.


◇ Озвучивание текста на экране для людей с ослабленным зрением[править | править код]

Улучшен режим озвучивания текста на экране, обеспечивающий доступ для людей с ослабленным зрением, был улучшен:

  • Выбранные кнопки произносят слово "selected" после них.
  • Панели произносят слово "bar" после них.
  • У некоторых действий была изменена информация о озвучивании, чтобы лучше отражать, как действие используется в новом графическом интерфейсе пользователя.
  • Альтернативный текст, встроенный в Ren'Py, можно перевести.

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


◇ Исправления[править | править код]

  • Исправлена ошибка, из-за которой сохранение или автоматическое сохранение редко приводило к повреждению данных в несохраненной игре.
  • Операторы hide языка Python теперь выполняются в контексте функции Python, что заставляет определенные конструкции (например, выражения генератора) компилироваться и выполняться правильно.
  • Глобальные метки теперь ведут себя так, как описано в документации, даже при отступах.
  • Исправлена регрессия с помощью пользовательских курсоров мыши, которые могли вызвать дикое прыгание мыши.
  • Исправлена проблема с сохранением боковых изображений после отображения меню.
  • Ren'Py больше не хранит состояние отображаемых элементов, которые не отображаются на экране, который был заменён. Это было проблемой, когда первый экран повторно показывался, и отображаемые элементы принимали свое старое состояние.
  • События show и replace теперь всегда передаются в преобразование на экране. Хотя такое поведение всегда было задумано и могло происходить при каждом отображении экрана, ранее кэширование могло препятствовать доставке некоторых событий показа.
  • Символы, которым требуется клавиша Alt, можно ввести. Клавиша Alt необходима для ввода определенных символов в европейских языках.
  • Когда система сборки Android не может переименовать файл или каталог, она повторит попытку в течение 60 секунд, прежде чем сдастся. Это попытка обойти антивирусное программное обеспечение, нарушающее семантику Windows.

6.99.14.1[править | править код]

◇ Прогнозирование и кэширование изображений[править | править код]

  • Теперь Ren'Py ищет ограничивающую рамку непрозрачных пикселей при преобразовании изображения в текстуру. Когда переменная config.optimize_texture_bounds принимает значение True (как по умолчанию), в кэше изображений хранятся только непрозрачные пиксели. Это может значительно уменьшить объем памяти некоторых изображений, например изображений, соответствующих в основном прозрачным слоям.
Переменная config.cache_surfaces теперь по умолчанию имеет значение False. Это вдвое уменьшает объем памяти, необходимый для кэширования изображений, но может замедлить работу нескольких манипуляторов изображений, применяемых к одному и тому же изображению.
Размер кэша изображений теперь контролируется переменной config.image_cache_size_mb, которая по умолчанию составляет 300 мегабайт. С новыми настройками по умолчанию каждый пиксель внутри непрозрачного ограничивающего прямоугольника изображений занимает 4 байта памяти.
Результатом этих трех изменений является то, что изображения занимают меньше памяти в кеше, а это означает, что Ren'Py может хранить гораздо больше предсказанных изображений.
  • Теперь Ren'Py отказывается вызывать функции, считывающие данные с диска (например, renpy.image_size()) при прогнозировании изображений и экранов, а не рисковать этими медленными вызовами, приводящими к падению частоты кадров.
  • У отображаемых объектов ConditionSwitch() и ShowingSwitch() появился новый параметр predict_all. При значении True это позволяет прогнозировать все отображаемые элементы, а не только выбранный в данный момент. Это может быть использовано для того, чтобы Ren'Py предварительно загрузил все эмоции спрайта.
  • Функции renpy.start_predict() и renpy.stop_predict() теперь принимают шаблоны символ обобщения имени. Например:
$ renpy.start_predict("eileen *")
Начинает предсказывать все изображения, начиная с тега eileen, в то время как:
$ renpy.start_predict("* beach*")
соответствует всем изображениям, которые содержат атрибут beach.
  • Клавиша F4 теперь отображает журнал загрузки изображения.


◇ Другие улучшения[править | править код]

  • У преобразований теперь есть новое свойство maxsize, которое уменьшает изображения до тех пор, пока они не поместятся в ограничивающий прямоугольник.
  • Кэш выражений Python сохраняется при перезагрузке Ren'Py, обеспечивая небольшое увеличение производительности по сравнению с его отменой при каждой перезагрузке.
  • Файлы traceback.txt и errors.txt теперь содержат дату внизу, что упрощает определение устаревания файла.
  • Новая функция renpy.list_images() возвращает список всех изображений, которые были определены.
  • Перетаскивание отображаемых объектов теперь принимает свойство mouse_drop. При значении True это приводит к тому, что для выбора перетаскиваемого объекта используется положение указателя мыши, а не перетаскивание с максимальным перекрытием.
  • Испанский перевод был обновлен.


◇ Другие исправления[править | править код]

  • Исправлена ошибка, из-за которой пункт ATL "on hide" не работал.
  • Окончательная версия программного продукта GIL, ожидая переворота экрана, делает так, чтобы задачи, выполняющиеся в фоновых потоках (воспроизведение музыки, предварительная загрузка изображений, автосохранение и т. д.), выполнялись намного быстрее.

6.99.14[править | править код]

◇ Производительность[править | править код]

  • Было проделано немало работы для улучшения производительности, как абсолютной производительности, так и очевидной стабильности частоты кадров.
  • При подключении к устройству с переменным током, Ren'Py будет пытаться нарисовать экран с постоянной частотой кадров. Когда устройство работает от батареи, перед возвратом к частоте кадров 5 кадров в секунду будет нарисовано несколько кадров, чтобы обеспечить обновление экрана через буферизацию дисплея.
  • Ren'Py имеет ряд опций, которые управляют производительностью дисплея, доступ к которым осуществляется через меню Shift+G. В дополнение к изменению производительности GL, описанному выше, это позволяет игроку блокировать частоту кадров и принимать разрыв, когда кадр запаздывает. Игрок на медленной машине может предпочесть 30 кадров в секунду нестабильной частоте кадров. Если разработчик ожидает, что многие игроки будут работать на медленных устройствах, можно выбрать значение по умолчанию с помощью:
default preferences.gl_framerate = 30
  • Когда для рендеринга кадра требуется слишком много времени (скажем, из-за того, что непредсказуемое изображение должно быть загружено с диска), Ren'Py попытается использовать время, в течение которого был представлен кадр, в качестве базового времени для переходов и отображаемых объектов. По сути, это означает, что если Ren'Py должен пропустить кадры, он пропустит их перед первым кадром в последовательности, а не между первым и вторым кадрами.
  • Сам Ren'Py запускает сборку мусора сразу после отрисовки фрейма, если создано достаточно объектов. За пределами этой коллекции было увеличено число объектов, необходимых для запуска сборщика мусора. Пороговые значения достаточно высоки, поэтому сбор данных не требуется, если игра не создаёт циклические ссылки на объекты. То есть объекты, которые ссылаются друг на друга в цикле. Ren'Py был изменен, чтобы исключить общие источники ссылок на циклические объекты.
  • Для большинства игр управляемый сборщик мусора Ren'Py должен уменьшить или даже устранить падение кадров, вызванное сборщиком мусора. Однако можно вернуться к предыдущей настройке, установив для config.manage_gc значение False.
  • По умолчанию Ren'Py удаляет переходные экраны (как, say и choice) и отображаемые объекты без вызова обработчики событий "hide". Процесс проверки таких обработчиков был относительно дорогим, в то время как использование этих обработчиков встречается редко. Это изменение можно отменить, установив config.zap_transients значение False.
  • Теперь Ren'Py будет кэшировать скомпилированные выражения Python при первом их обнаружении, а не компилировать выражение при каждом его обнаружении. Это ускоряет отображение отображаемого объекта ConditionSwitch вместе с другими частями Ren'Py. Из-за этого изменения игра будет открываться медленно при первом запуске под Ren'Py 6.99.14, так как все выражения должны быть скомпилированы.
  • Эта версия увеличивает скорость сохранения информации, необходимой для отката, так и делает это реже. Это может быть видно игрокам по тому, что теперь Ren'Py позволяет им откатываться дальше, чем раньше.
  • Также было много других улучшений производительности, которые будут видны только при увеличенной скорости. Эта версия включает в себя только первый раунд улучшения производительности, а новая интегрированная среда профилирования производительности позволит разработчикам Ren'Py еще больше улучшить ситуацию.


◇ Диалог с несколькими персонажами[править | править код]

Теперь Ren'Py включает систему, которая позволяет нескольким персонажам говорить одновременно. Доступ к нему осуществляется путём предоставления аргумента multiple последовательным операторам say. Например:

e "Теперь Ren'Py поддерживает диалог с несколькими персонажами." (multiple=2)
l "Как раз вовремя! Я давно это хотела! " (multiple=2)

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


◇ Настройки GUI[править | править код]

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

define gui.text_font = gui.preference("font", "DejaVuSans.ttf")

Чтобы получить доступ к предпочтению и установить их:

vbox:
    style_prefix "radio"
    label _("Font")
    textbutton _("DejaVu") action gui.SetPreference("font", "DejaVuSans.ttf")
    textbutton _("Dyslexic") action gui.SetPreference("font", "OpenDyslexic-Regular.otf")

Смотрите раздел «Настройки GUI» для более подробной информации.


◇ Подсказки[править | править код]

Новая система всплывающих подсказок была добавлена в Ren'Py, чтобы заменить уже существующую. В предыдущей системе нужно было написать:

default tt = Tooltip("Кнопка не выбрана.")

textbutton "Один.":
    action Return(1)
    hovered tt.Action("Самый одинокий номер.")

text tt.value

Теперь можно написать:

textbutton "Один.":
    action Return(1)
    tooltip "Самый одинокий номер."

text GetTooltip()

Это сделано для того, чтобы сохранить шаблон и сделать экраны более читабельными. Дополнительные сведения смотрите в разделе «Всплывающие подсказки».


◇ Изменения[править | править код]

  • Поддержка SSL и TLS была добавлена на все платформы. Это позволяет играм Ren'Py отправлять запросы к защищенным веб-серверам, возможно, в сочетании с библиотекой Python, такой как запросы. Эта поддержка включена только во встроенные дистрибутивы, если они импортированы во время инициализации.
  • Новый манипулятор изображений im.Data() создаёт изображение из сжатых двоичных данных, которые могут быть загружены с веб-сервера.
  • Config.loadable_callback позволяет скриптам сообщать Ren'Py о дополнительных загружаемых файлах.
  • Ren'Py попытается диагностировать проблемы с объектами сериализации во время сохранения и сообщит об объекте, вызвавшем проблему сериализации. Это лучшее из возможного, но оно имеет тенденцию обнаруживать общие проблемы.
  • Когда области просмотра заданы полосы прокрутки, теперь Ren'Py предложит своему дочернему элементу большое количество пространства в заданном направлении. Это предотвращает проблемы с отображаемыми элементами, нарисованными в или ниже видимой области области просмотра.
  • Теперь Ren'Py разрешает неоднозначность между свойствами стиля xpos и xalign в пользу xpos и аналогично для других случаев, когда более и менее специфические свойства стиля присваиваются одному и тому же стилю.
  • Пользовательские операторы теперь принимают функцию метки, которая может возвращать пользовательскую метку для оператора. Это позволяет переходить к пользовательским операторам или вызывать их.
  • Новая переменная config.gl_clear_color позволяет разработчику задать цвет букв и столбиков, используемых, когда экран не заполнен.
  • Отображаемые элементы перетаскивания (часть системы перетаскивания) теперь поддерживают метод bottom, который можно использовать для снижения перетаскивания в нижнюю часть своей группы drg.
  • Переменная config.cache_surfaces, добавленная в последнюю версию, была задокументирована. Установка этой переменной в False может уменьшить потребление памяти Ren'Py за счет замедления изображений, используемых несколькими манипуляторами изображений. Что должно быть редким случаем в современном Ren'Py.
  • Переменная и поле munging (которые изменяют имя переменной, начинающейся с __ на файловое значение) теперь работают внутри подстановок строк.
  • Viewports и vpgrids теперь поддерживают свойство pagekeys, которое позволяет использовать клавиши pageup и pagedown для прокрутки области просмотра. Свойство arrowkeys теперь задокументировано.
  • RAPT теперь компилирует код Java, используя исходную и целевую версию 1.6, что позволяет строить его на современных JDK.


◇ Исправления[править | править код]

  • Исправлена ошибка, из-за которой экраны могли отображаться неправильно при компиляции в разное время. Это может проявиться только при определенных обстоятельствах.
  • Проект имеет экраны в нескольких файлах.
  • Файлы были собраны в разное время. Это никогда не может иметь место в выпущенной игре, поскольку все файлы перекомпилируются одновременно при сборке дистрибутивов.
  • После обновления до этой версии проблему можно исправить, нажав «Перекомпилировать проект» в Ren'Py Launcher. Это можно сделать для любой игры в разработке, но не обязательно для выпущенных игр.
  • Было внесено несколько улучшений в работу инструменте Interactive Director, что позволило ему работать в более сложных условиях.
  • Исправлено состояние гонки, которое могло привести к блокировке Ren'Py (в результате чего на Android и iOS отображался пустой экран). Это было введено в 6.99.13.
  • В 6.99.13 из-за состояния гонки Ren'Py нечасто полностью пропускал воспроизведение фильма.
  • Теперь Ren'Py поддерживает клавишу AltGr.
  • Теперь Ren'Py ограничивает объем выходных данных консоли, которые она регистрирует, чтобы операторы печати не занимали память, если консоль никогда не отображается.

6.99.13[править | править код]

◇ Проекты «Обучение» и «Вопрос» в Ren'Py Launcher[править | править код]

Эта версия включает обновленные версии проекта «Обучение» и «Вопрос», примера игры, поставляемой в комплекте с Ren'Py.

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

Обучение теперь содержит более 250 примеров, которые теперь можно скопировать в свои собственные проекты.

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

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

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


◇ Инструмент Interactive Director[править | править код]

Теперь Ren'Py поставляется со встроенным инструментом Interactive Director. Этот инструмент позволяет добавлять сцены, показывать, скрывать, воспроизводить, ставить в очередь, останавливать и озвучивать операторы в Ren'Py из визуальной новеллы, находящейся в стадии разработки, без необходимости переходить в текстовый редактор и перезагружать проект. Доступ к Interactive Director можно получить, нажав клавишу D (без Shift) в разрабатываемой игре.

Инструмент Interactive Director был распространен за пределами Ren'Py с лицензией, которая сделала его бесплатным для некоммерческого использования. Теперь он является частью Ren'Py и имеет ту же лицензию, что и остальная часть Ren'Py, что позволяет использовать его как в коммерческих, так и в некоммерческих целях.


◇ Новый GUI[править | править код]

Несколько изменений были внесены в новый графический интерфейс пользователя. Кнопки были подсвечены, а их текст уменьшен. Панели были несколько уменьшены в высоте. Цель состоит в том, чтобы предоставить больше места в меню, особенно для игровых настроек на экране preferences.

Для новых игр теперь можно настроить расположение и внешний вид поля для имени (фрейма, содержащего имя персонажа) для персонажа в отдельности. Это делается путём присвоения Character свойств с префиксом namebox. Например, свойство namebox_background меняет фон поля имени.


◇ Одноплатный компьютер Raspberry Pi[править | править код]

Теперь Ren'Py поставляется с экспериментальной поддержкой платформы Raspberry Pi.

Порт Raspberry Pi похож на порты Android и iOS как по своим ограничениям, так и по тому, как он предназначен для запуска игр, а не для их разработки. Как и на всех платформах, создатели, разрабатывающие для Raspberry Pi, должны учитывать доступные им ресурсы и соответствующим образом разрабатывать свои игры.

Тем не менее, проект «Обучение» и «Вопрос» работают на компьютере Raspberry Pi 3 стоимостью $35.


◇ Гиперссылки[править | править код]

Гиперссылки, созданные с помощью текстового тега {a}, теперь поддерживают переход и вызов меток. Тег формы {a=jump:label} переходит к метке, а одна из форм {a=call:label} завершает текущий оператор и вызывает метку. Также есть {a=show:screen} и {a=showmenu:screen}, которые показывают экраны в игре и в контексте меню соответственно.

Новая переменная config.hyperlink_protocol определяет протокол по умолчанию для гиперссылки, у которой его нет. Например, если это "jump", то {a=mylabel} эквивалентно {a=jump:mylabel}.

Новая переменная config.hyperlink_handlers представляет собой словарь, отображающий протоколы функциям, которые можно использовать для добавления обработчиков протоколов, определенных разработчиком.

Размер гиперссылки теперь наследуется от размера заключенного текста. Это позволяет гиперссылкам работать в тексте нестандартного размера.


◇ Операторы say с аргументами[править | править код]

Оператор say в Ren'Py теперь поддерживает передаваемые аргументы, которые помещаются в круглые скобки после произносимого текста. Например:

e "Привет!" (what_size=36, what_color="#ffeeee")

Эти аргументы сначала передаются config.say_argument_callback, а затем передаются персонажу. Реализация по умолчанию (в Character()) создаёт нового персонажа с переданными аргументами и использует его для отображения текста.

Одно из удобных мест – переход по гиперссылкам и новый аргумент advance к Character, который предотвращает непосредственное продвижение текста. Теперь можно прописать:

e "Хочешь поехать на {a=jump:living_room}Запад{/a} или {a=jump:kitchen}Север{/a}?" (advance=False)

Который приостанавливает выполнение, пока игрок не нажмёт гиперссылку.


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

  • Ren'Py Launcher и проект по умолчанию переведён на французский язык, любезно предоставленный Alexandre Tranchant.
  • Ren'Py Launcher и проект по умолчанию переведен на бразильский португальский язык, любезно предоставленный MrStalker.
  • Переводы на индонезийский и упрощенный китайский были обновлены.


◇ Прочее[править | править код]

  • Новая переменная config.preload_fonts может принимать список файлов шрифтов TrueType или opentype для предварительной загрузки при остановке Ren'Py. Это не позволяет Ren'Py приостанавливать анимацию при открытии нового шрифта.
  • Теперь Ren'Py открывает аудиофайлы во втором потоке выполнения. Это предотвращает приостановку анимации при воспроизведении аудиофайла или зацикливании медленных или загруженных дисков.
  • Новая функция renpy.get_attributes() может быть вызвана для извлечения атрибутов, связанных с тегом изображения на слое.
  • Когда файл с именем projects.txt присутствует в каталоге проектов, он должен содержать список полных путей к каталогам, по одному на строку. Эти пути рассматриваются как проекты и отображаются в Ren'Py Launcher.
  • Существует новое действие Call(), которое завершает текущий оператор и вызывает метку. Действие Call и функция renpy.call() принимают новый параметр from_current, который заставляет их возвращаться к началу оператора current, который можно использовать (очень осторожно) для вызова aside перед возвратом к основной истории.
  • Переменные предпочтения получили свою собственную страницу в документации, которая поясняет, что лучше использовать оператор default, чтобы напрямую установить значение по умолчанию для переменной предпочтения.
  • Пакет "steam" был переименован в "market", что означает, что он будет работать так же хорошо с другими рынками.
  • В ATL оператор interpolation с деформированием теперь длятся один кадр. Это означает, что оператор pause 0 теперь завершается после одного кадра, а не мгновенно, что позволяет использовать однокадровую анимацию. Пожалуйста, не используйте это, чтобы включить срочные сообщения в вашу игру.
  • Показанной позже оператор at теперь сохраняет состояние преобразования, как и другие операторы, которые включают преобразование. Это не должно сильно измениться, но открывает возможность преобразования слоёв, которые включают случайность.
  • Текстовый тег {nw} теперь ожидает завершения озвучки и озвучивание текста на экране для людей с ослабленным зрением, прежде чем разрешить продвижение текста.
  • Отображаемые объекты grid и vpgrid теперь поддерживают свойства стилей xspacing и yspacing, которые независимо устанавливают интервалы в горизонтальном и вертикальном направлениях.
  • Переменные config.character_id_prefixes содержат список префиксов, которые используются Character для оформления отображаемых элементов. Аналогично what, who и window, если "logo" находится в этой переменной, такие свойства, как logo_xpos и logo_background, будут вызывать свойства логотипа и фона для отображения с идентификатором "logo".
  • Теперь Ren'Py поддерживает функцию печати в Python. Результат, напечатанный с помощью функции печати, будет отправлен в файл log.txt и консоль Ren'Py, доступ к которой можно получить, нажав Shift+O.
  • Теперь можно настроить, что происходит при нажатии кнопки Ignore на экране отчетов об исключениях. Это делается с помощью переменной _ignore_action, которая может быть установлена на действие Jump, которое может очистить после игрока и начать ход снова.
  • Тип набора Ren'Py теперь наследуется от типа набора Python, а не от устаревших наборов типа Set. Литералы набора теперь правильно упакованы, поэтому набор участвует в откате.
  • Список текстовых блоков NVL-режима очищается при изменении языка. Это препятствует тому, чтобы Ren'Py показывал смесь текстовых языков, которые могут быть бессмысленными в текущем шрифте.
  • Значения Preference() "text speed" and "auto-forward time" теперь принимают аргумент диапазона, что позволяет разработчику указать диапазон.
  • Новая функция renpy.filter_text_tags() может использоваться для фильтрации текстовых тегов в строке. Он используется для удаления текстовых тегов на экране истории графического интерфейса по умолчанию.
  • На языке экрана блок, заданный оператору use, теперь может содержать оператор has.
  • Когда установлено значение "auto", переменная config.developer принимает значение True или False во время фазы инициализации. Раньше на этапе инициализации он всегда соответствует истине и изменяется только после завершения инициализации.
  • Когда свойство position передаётся в область просмотра или vpgrid с вертикальными, горизонтальными или обоими видами полос прокрутки, свойство position передаётся боковому контейнеру, который содержит область просмотра и полосы прокрутки. Это позволяет позиционировать области просмотра и vpgrid, используя тот же синтаксис, что и другие отображаемые объекты.
  • Поддержка Itch.io была улучшена. Устранена проблема, препятствовавшая загрузке на itch.io из Windows. Таблица каналов для загрузки была обновлена и теперь использует новую поддержку программы "дворецкий" для загрузки файлов Linux bz2 и Android apk.
  • Операторы, определяемые разработчиком, могут запускать функцию во время инициализации, в дополнение к функции, выполняемой при нормальном выполнении оператора. Операторы, определяемые разработчиком, могут принимать блок скрипта Ren'Py, который анализируется и к которому можно перейти.
  • Время анализа скриптов Ren'Py было значительно сокращено.
  • Отсутствующая переменная _menu может привести к тому, что обработка ошибок фазы инициализации Ren'Py не сообщит о соответствующей ошибке. Это было исправлено.
  • Действие PlayCharacterVoice теперь может пометить кнопку как выбранную во время воспроизведения голоса персонажа.
  • Новая функция renpy.add_python_directory() предоставляет способ добавления подкаталогов каталога игр в путь Python.
  • Документация Ren'Py была отредактирована, чтобы исключить использование слова код и заменить его на менее загадочную терминологию.
  • Теперь возможно поддерживать Ren'Py через Patreon. Ссылка на страницу со спонсорской информацией находится в Ren'Py Launcher по умолчанию. Её можно скрыть в настройках Ren'Py Launcher.

6.99.12.4[править | править код]

◇ Консоль[править | править код]

Консоль Ren'Py была обновлена в соответствии с нейтральным стилем Ren'Py и добавлен ряд новых функций:

  • Консоль теперь доступна во время обработки исключений. Как всегда, она обращается к глобальной области видимости.
  • История консоли хранится как часть постоянных данных.
  • Наблюдаемые переменные сохраняются как часть файлов сохранения, это означает, что часы восстанавливаются при (автоматической или вручную) перезагрузке игры.


◇ Прочее[править | править код]

  • Исправлена регрессия (ошибка), появившаяся в версии 6.99.4, которая препятствовала работе экрана ввода по умолчанию (и, следовательно, renpy.input).
  • Исправлена проблема выравнивания памяти, которая может привести к сбою SIGBUS на устройствах Android на базе ARM при воспроизведении видео.
  • Анимации скрытия и замены удаляются из Ren'Py при откате или загрузке. Это предотвращает воспроизведение скрытой анимации, когда отображаемый объект не отображается.
  • Режим автоматической перемотки отключён, когда включена функция озвучивание текста на экране для людей с ослабленным зрением, для предотвращения автоматического продвижения игры, чтобы озвучиваемая информацию не устаревала.
  • При работе с включенной поддержкой Steam Ren'Py запросит оверлей Steam и перерисует экран, когда Steam запросит обновление. Это должно увеличить FPS оверлея Steam.
  • Затухания теперь охватывают зацикливание звука по умолчанию. Раньше затухание прекращалось в конце звуковой дорожки.
  • На платформе iOS была включена поддержка языковая поддержка справа налево (арабский и иврит).
  • Исправлена ошибка в обрезке рендера. Это обычно проявляется в виде 1-пиксельных перекрытий или открытых пространств при рисовании рамок и панелей.
  • Обновлены переводы на арабский, индонезийский и русский языки.

6.99.12.3[править | править код]

◇ GUI[править | править код]

  • Теперь можно систематически настраивать внешний вид различных типов текста в Ren'Py. Например, теперь можно выбрать разные размеры для имени, диалога, интерфейса, метки и текста подсказки.
  • Все свойства текста теперь доступны через систему графического интерфейса пользователя. Например, gui.text_outlines можно использовать для выделения текста по умолчанию, в то время как gui.name_text_bold можно использовать для выделения имён персонажей жирным шрифтом.
  • Чтобы учесть два вышеперечисленных изменения, некоторые имена переменных графического интерфейса были переименованы более систематическим образом. Например, gui.default_font был переименован в gui.text_font, а gui.name_font стал gui.name_text_font.
  • Теперь можно создать контур для текста в графическом интерфейсе пользователя с помощью таких переменных, как gui.text_outlines и gui.interface_text_outlines.
  • Из-за дизайна нового графического интерфейса пользователя изменения, описанные в этом разделе, вступят в силу только при создании новой игры или обновлении графического интерфейса игры.


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

  • Перевод на русский был обновлён и модернизирован благодаря Ria-kon и проекту Gardares.
  • Перевод на итальянский был обновлён и модернизирован благодаря Gas.


◇ Прочее[править | править код]

  • Исправлена ошибка при воспроизведении видео на Android и iOS.
  • Кодировка по умолчанию для строк без Unicode в Ren'Py была изменена на кодировку файловой системы. Это должно решить ряд проблем с кодированием, которые возникали в системах, отличных от ascii, начиная с 6.99.12.
  • Ren'Py больше не будет искать системные шрифты в режиме разработчика.
  • В некоторых случаях Ren'Py дублирует отображаемые объекты, чтобы гарантировать, что отображаемое состояние не является псевдонимом. Например, преобразование дублируется при показе, поэтому при повторном показе оно не будет сохранять своё состояние. Это копирование было оптимизировано, поэтому оно происходит только при необходимости.
  • Обратный вызов config.replace_text теперь выполняется, даже если не были определены пользовательские текстовые теги.
  • Исправлена ошибка, из-за которой текст мог обрезаться, когда в этом не было необходимости.
  • Окна просмотра теперь можно перетаскивать, когда на экране отображаются другие фокусируемые объекты.
  • В этом версии добавлены дополнительные функции для поддержки Interactive Director и базовая поддержка изображений атрибутов.

6.99.12[править | править код]

◇ GUI[править | править код]

6.99.11[править | править код]

6.99.10[править | править код]

6.99.9[править | править код]

6.99.8[править | править код]

6.99.7[править | править код]

6.99.6[править | править код]

6.99.5[править | править код]

6.99.4[править | править код]

6.99.3[править | править код]

Удалён отладочный код, который может вызвать проблемы при написании ненужного файла zipfile.txt.

6.99.2[править | править код]

  • Теперь Ren'Py поддерживает каталог изображений под директорией игры. Изображения, найденные в этом каталоге - или в подкаталогах этого каталога - будут автоматически определены как изображения в Ren'Py. Это, вероятно, сделает использование оператора image устаревшим в простых играх.
  • Новый отображаемый объект AlphaMask() позволяет одному отображаемому объекту маскироваться альфа-каналом другого.
  • Эмуляторы Android и iOS теперь эмулируют экранную клавиатуру.
  • API достижений был несколько изменён, но только с учётом функций прогресса. Которые были сломаны в предыдущих версиях.
  • Действия, которые заботятся о текущем экране (например, SetScreenVariable), теперь работают при использовании со свойствами hovered и unhovered.
  • Программа обновления улучшилась. Если при добавочной загрузке произойдет сбой, Ren'Py попытается загрузить весь файл, прежде чем сдаться.
  • При сборке для Android Ren'Py копирует файлы apk в каталог dists, используемый платформами для настольных компьютеров.
  • Добавлено действие RestartStatement().
  • Добавлены функции renpy.reset_physical_size() и ui.screen_id().
  • Позволяет оператору key языка экрана принимать свойство стиля activate_sound. Это облегчает воспроизведение звука при нажатии клавиши.
  • В документацию внесена функция ui.interact().
  • Обновлены переводы упрощенного китайского и корейского, а также итальянский шаблон.

6.99.1[править | править код]

Добавлены функции renpy.load_image(), renpy.load_surface() и renpy.get_showing_tags().

6.99[править | править код]

6.18.3[править | править код]

6.18.2[править | править код]

6.18.1[править | править код]

6.18[править | править код]

6.17.7[править | править код]

  • Этот версия включает в себя ряд изменений для Android:
  • RAPT был обновлен для использования последней версии SDK. Пожалуйста, установите SDK снова, если у вас проблемы со сборкой.
  • RAPT больше не включает в себя копию Ren'Py. Вместо этого Ren'Py включает свою копию во встроенную игру, которую использует RAPT. Это позволяет включать исправления для Ren'Py в пакет Android.
  • Низкоуровневая реализация покупки в приложении, внесенная Emmanuel Marty и Winter Wolves. Низкоуровневый код IAP поддерживает Google Play и Amazon App Store. Этот код в настоящее время не документирован, так как он будет включён в реализацию более высокого уровня.
  • Эта версия включает исправление проблемы синхронизации аудио и видео, которая затронула платформы Windows, Mac OS X и Linux.

6.17.6[править | править код]

  • В эту версию добавлен немецкий перевод в Ren'Py Launcher, внесенный Марселем.
  • В эту версию добавлен корейский перевод в Ren'Py Launcher и шаблон игры, внесенный Baekansi.
  • Эта версия включает обходной путь для решение проблемы, которая может помешать запуску программы запуска на некоторых компьютерах Mac OS X.

6.17.5[править | править код]

6.17.4[править | править код]

6.17[править | править код]

6.16.2[править | править код]

  • В эту версию добавлен испанский перевод в Ren'Py Launcher и шаблон игры.
  • В эту версию добавлена новая функция renpy.get_mouse_pos(), которая возвращает позицию мыши, если мышь поддерживается.

6.16[править | править код]

6.15.6[править | править код]

  • Эта версия включает улучшения для платформы Android:
  • Активы теперь читаются исключительно из файла APK и расширения.
  • Журналы и трассировочные пакеты помещаются на внешнее хранилище.
  • Сохранения помещаются на внешнее хранилище, за исключением тех случаев, когда существуют сохранения из более старых версий Ren'Py.
  • Шейдеры GL2, используемые Ren'Py, были упрощены в (обычном) случае, когда отсечение не происходит. Это приводит к заметному улучшению скорости на Android и, возможно, на других платформах.
  • Проблема с перетаскиванием была исправлена. Спасибо Kinsman за то, что он внёс свой вклад в это исправление.
  • Действие Skip() теперь вызывает индикатор пропуска. Он также поддерживает новый быстрый параметр, который вызывает переход к следующему меню.
  • Эта версия включает в себя различные незначительные изменения для улучшения совместимости с очень старыми играми Ren'Py. Теперь запускается демоверсия Ren'Py 5.

6.15.5[править | править код]

  • Эта версия добавляет две новые функции:
  • Рендерер GL теперь поддерживает аддитивное смешивание. Это включается с помощью свойства преобразования additive в преобразовании ATL или использования класса Transform(). Аддитивное смешивание не будет работать, если используется программный рендерер, и разработчики должны решить эту проблему.
  • Новый отображаемый объект Flatten() объединяет несколько текстур в одну. Это можно использовать для предотвращения некорректного поведения, когда отображаемый объект, содержащий несколько перекрывающихся текстур, например, LiveComposite(), отображается с альфа-каналом от 0 до 1.


  • Также исправлены следующие проблемы:
  • Пробелы теперь пропускаются перед аргументами по умолчанию, что ранее приводило к ошибкам синтаксического анализа в некоторых случаях.
  • Теперь Ren'Py устанавливает unix-режим для файлов и каталогов в файлах zip и tar на 644 и 755 соответственно. В предыдущих версиях Ren'Py в качестве разрешений использовались 666 и 777, что приводило к проблемам с безопасностью, когда файл был распакован инструментом, не учитывающим пользовательские маски. (У Info-zip была эта проблема.)
  • Автоподсказка для шрифтов теперь включена по умолчанию. Это восстанавливает совместимость рендеринга шрифтов с предыдущими версиями.
  • Теперь Ren'Py собирает и использует текущую версию libav. Он также должен работать с текущими версиями ffmpeg, когда доступна libav.
  • Версия SDL, распространяемая вместе с Ren'Py, была исправлена, чтобы предотвратить появление нескольких окон в меню «Окно» при входе и выходе из полноэкранного режима.

6.15.4[править | править код]

  • В этом версии исправлена проблема компиляции, из-за которой Ren'Py 6.14.x и Ren'Py 6.15.0-3 не работали на большинстве 64-битных систем Linux.
  • Прогнозирование изображения стало более детальным и может происходить во время анимации экрана.
  • Новый build.exclude_empty_directories определяет будут ли пустые каталоги включены или исключены из дистрибутива. По умолчанию используется значение True, ранее значение по умолчанию зависело от платформы.

6.15[править | править код]

6.14[править | править код]

6.13.9[править | править код]

6.13.8[править | править код]

  • Боковые изображения теперь могут быть ограничены отображением одного персонажа или только отображением персонажей, которых нет на экране. Смотрите config.side_image_tag и config.side_image_only_not_showing.
  • Добавлен config.python_callbacks – список функций Python, которые вызываются в конце каждого блока python.
  • Теперь Ren'Py проверяет работоспособность видеокарты, на которой он работает. Если он не может нарисовать текстурированные прямоугольники на экране, он перейдет к другому средству визуализации.
  • Интерполяция строк в старом стиле теперь включена по умолчанию, наряду с интерполяцией строк в новом стиле.
  • Теперь Ren'Py совместим с libpng 1.5. Спасибо James Broadhead за патч.
  • Исправлены следующие ошибки:
  • Сбой при работе с некоторыми неверными шрифтами.
  • Слишком долгая пауза при вводе текста.
  • Вырезание одного пикселя из блока текста при использовании дробного кернинга.
  • Сбой, когда время было установлено в далеком будущем или в прошлом.
  • Немедленно завершается при переходе вперёд при появлении запроса на выход.
  • Сбой при добавлении несуществующего каталога в путь поиска. Это предотвратило запуск Katawa Shoujo в последней версии.
  • Размер файла сохранения был слишком большим из-за экранов, включаемых в файлы сохранения.

6.13[править | править код]

◇ Переписывание текста[править | править код]

Текстовый дисплей был переписан с нуля. В дополнение к поддержке многих новых функций, новая реализация Text намного быстрее при компоновке и отображении текста и содержит намного более чистый код.

Некоторые из новых функций, которые теперь поддерживаются системой отображения текста:

  • ...

◇ Поддержка DirectX[править | править код]

◇ Другие изменения[править | править код]

6.12.2[править | править код]

В этой версии содержатся следующие изменения:

  • ATL-преобразования с параметрами компилируются правильно.
  • MultipleTransition работает в сочетании с паузами.
  • Мышь отображается, когда действие выхода выполняется во время воспроизведения фильма.
  • Исправлена блокировка, возникавшая при входе игрока в меню игры во время выполнения перехода.
  • RENPY_SCALE_FAST снова работает.
  • Ren'Py компилируется с более новыми версиями ffmpeg.
  • Пропуск заканчивается, когда игра перезапускается.
  • Исправлена проблема с загрузкой текстур, из-за которой игры заметно замедлялись.
  • Выберите лучший размер по умолчанию для окон на небольших мониторах, таких как нетбуки.
  • xfill и yfill теперь работают для vbox и hbox соответственно.
  • Исправлено нажмите для продолжения.
  • Исправлено боковое изображение.
  • Исправления в документации.

Спасибо David Gowers и zhangning за внесение исправлений в этот релиз.

6.12.1[править | править код]

◇ Атрибуты изображения[править | править код]

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

Атрибуты также «липкие». Это означает, что мы пытаемся сохранить как можно больше атрибутов при отображении нового изображения.

Например, предположим, что у нас были следующие изображения:

image eileen beach happy = "eileen_beach_happy.png"
image eileen beach woozy = "eileen_beach_woozy.png"

Теперь мы можем показать первое изображение с помощью команды:

show eileen happy beach

Поскольку порядок атрибутов больше не имеет значения, это покажет изображение "eileen beach happy". Если мы будем продолжать двигаться по этому оператору show:

show eileen woozy

будет отображено изображение "eileen beach woozy". Предполагается, что других изображений не существует. Если бы существовало изображение "eileen happy woozy", то произошла бы ошибка двусмысленности.

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

show eileen at right

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


Атрибуты say
Атрибуты изображения могут быть обновлены как часть оператора say. Персонажу может быть задан аргумент image, задающий имя изображения, с которым связан персонаж. Как часть оператора say, атрибуты изображения могут быть заданы перед строкой диалога. Эти атрибуты присваиваются связанному изображению.
Например, если мы определяем персонажа с помощью кода:
define e = Character('Эйлин', image="eileen")
код:
e woozy "Мне кажется, я слишком много загораю."
эквивалентно:
show eileen woozy
e "Мне кажется, я слишком много загораю."
всякий раз, когда изображение с тегом eileen показывается.


Боковое изображение.
В этой версии реализовано боковое изображение, которая позволяет определять боковые изображения, как и другие изображения, и позволяет легко интегрировать боковые изображения с экранами.


Липкие преобразования
Наконец, отображение изображения без предоставления преобразования или блока ATL теперь продолжит предыдущее преобразование, которое использовало изображение с этим тегом. Раньше это приводило к тому, что эти преобразования прекращались.


◇ Обработка ошибок[править | править код]

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

  • Rollback
  • Reload
  • Ignore
  • Open Traceback
  • Quit

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

Фреймворк используется для обработки исключений и анализа ошибок.


◇ Другое[править | править код]

  • В режиме OpenGL Ren'Py теперь запоминает размер окна между сеансами. Это можно отключить с помощью config.save_physical_size и это может иметь смысл сделать, если ваша игра использует систему предэкранных настроек. Выбор настройки отображения «Окно» теперь изменяет размер окна на 100% от нормального размера.
  • Добавлены свойства xcenter и ycenter и свойства transform. Они задают положение центра отображаемого объекта.
  • Функция renpy.vibrate() позволяет Ren'Py задавать вибрации устройствам Android.
  • Функции стиля гиперссылки, обратного вызова и фокуса теперь перемещены в свойство стиля hyperlink_functions. Это позволяет изменять функции для каждого стиля.
  • Ошибки отступа теперь сообщаются в строке с отступом, а не в строке, предшествующей ошибочному отступу.
  • Добавлены действия SetScreenVariable() и ToggleScreenVariable(). Это позволяет изменять локальные переменные экрана.
  • Теперь Ren'Py пытается извлечь личную информацию из имен файлов. Там, где это возможно, имена файлов сообщаются относительно base или базовых каталогов Ren'Py, а не корневых файлов системы.
  • Новое свойство стиля box_wrap позволяет автоматически переносить hbox и vbox, когда они достигают края своей области.
  • Действия теперь могут иметь метод Action.unhovered(). Этот метод вызывается, когда действие, указанное в качестве параметра hovered, теряет фокус.
  • Добавлен класс Tooltip, который облегчает определение подсказок как части экрана.
  • Добавлен config.debug_text_overflow, который управляет регистрацией случаев, когда текст превышает выделенную ему область.
  • Ren'Py больше не пытается регулировать управление микшером системного уровня, а это означает, что теперь невозможно увеличить громкость изнутри Ren'py. Управление системным томом показало ошибки на всех трех платформах, включая трудно предсказуемые изменения громкости, которые влияют на другие приложения.
  • Наряду с новыми функциями, переходы были задокументированы в новом руководстве.
  • Архивы теперь автоматически обнаруживаются в алфавитном порядке. Смотрите документацию для config.archives для более подробной информации.
  • Исправление ошибок:
  • launchpad bug 734137 – таймеры не участвуют в откате.
  • launchpad bug 735187 – Ren'Py застревает при использовании {nw}. Спасибо Franck_v за то, что выследил это.

6.12.0[править | править код]

◇ Поддержка Android[править | править код]

  • Теперь Ren'Py поддерживает платформу Android. Это включает поддержку значительной части функциональности Ren'Py, хотя мы не смогли добавить поддержку imagedissolves и воспроизведения фильмов. Должна быть возможность упаковать игру Ren'Py и распространять её через Android Market.
  • Поддержка Android потребовала нескольких изменений в Ren'Py:
  • Рендерер OpenGL был расширен для поддержки OpenGL ES.
  • По соображениям производительности большая часть системы отображения была переписана на языке Cython. Это также должно улучшить производительность на других платформах.
  • Добавлена поддержка для жизненного цикла Android. Ren'Py автоматически сохраняет данные, когда устройство Android приостанавливается и перезагружается (при необходимости) после возобновления работы.
  • Мы добавили концепцию вариантов экрана. Это позволяет одной игре иметь несколько интерфейсов – например, интерфейс мыши для компьютерных платформ и сенсорный интерфейс для смартфонов и планшетов на базе Android.
  • Мы создали систему, которая позволяет упаковывать игру отдельно от Ren'Py. Это позволяет создавать пакеты без необходимости установки Android NDK (вам всё равно понадобится Android SDK, Java, Python, Ant и много терпения).


◇ Новые виджеты и отображаемые объекты[править | править код]

  • Добавлен отображаемый объект SpriteManager. Это обеспечивает высокопроизводительный способ отрисовки многих похожих спрайтов на экране. Может масштабироваться до сотен частиц, при условии, что эти частицы в основном похожи друг на друга.
  • Добавлен виджет Mousearea. Mousearea позволяет выполнять обратные вызовы с указанием и отсутствием доступа, когда мышь входит и покидает область экрана. Поскольку он не участвует в системе фокусировки, область мыши может включать кнопки и панели.
  • Добавлены виджеты перетаскивания и отображаемые элементы. Система перетаскивания может поддерживать:
  • Окна, перемещаемые игроком.
  • Карточная игра.
  • Системы инвентаря.
  • Системы перетаскивания для изменения порядка.


◇ Прогнозирование изображения[править | править код]

  • Теперь Ren'Py лучше прогнозирует использование изображений. Наряду с прогнозированием изображений, используемых в обычном игровом процессе, теперь он пытается спрогнозировать изображения, которые используются экранами на расстоянии одного клика от пользователя. Например, во время обычного игрового процесса он будет предсказывать изображения на первом экране игрового меню. Находясь в игровом меню, он будет предсказывать другие экраны игрового меню, а также изображения, которые пользователь увидит при возвращении в главное меню. Этот прогноз является автоматическим, но происходит только при использовании экранов.
Экраны могут вызываться в любое время, чтобы обеспечить прогнозирование изображения, если только они не обладают свойством предсказывать False. Это означает, что отображение экрана не должно иметь побочных эффектов. Большинство экранов имеют побочные эффекты только при нажатии кнопки или изменении панели - это все ещё нормально.
  • Теперь Ren'Py поддерживает кэширование горячих точек для карт изображений на языке экрана. Когда config.developer принимает значение True, Ren'Py запишет файл с расширением png в папку game/cache/ directory, содержащую данные изображения для каждой из горячих точек в карте изображений. Если файл кэша существует (независимо от настройки config.developer), он будет загружен вместо загрузки изображений горячих точек. Поскольку файл кэша часто намного меньше размера изображений горячих точек, он будет загружаться быстрее и уменьшать нагрузку на кэш изображений, улучшая производительность игры. Это поведение относится только к картам изображений на языке экрана и может быть отключено с помощью config.imagemap_cache.
Это должно устранить большую часть необходимости в renpy.cache_pin(). Хотя это и не ошибка, использование закрепления кэша может привести к ненужному использованию памяти при загрузке неправильного изображения.


◇ Экраны[править | править код]

  • Теперь Ren'Py поставляется с набором экранов по умолчанию, которые используются демо-версией и устанавливаются по умолчанию при создании новой игры. Вы можете найти их в template/game/screens.rpy и их можно использовать, скопировав этот файл в ваш проект. Эти экраны не на 100% совместимы с предыдущей версией, например, некоторые стили изменились. Вот почему игры должны отказаться от них.
  • Определение параметра items на экранах Choice и NVL изменилось, и игры должны быть обновлены для работы с новой версией.
  • Аргументы Character, начинающиеся с show_, передаются на экран say. Это позволяет таким вещам, как show_side_image и show_two_window работать с экранами. Экраны, которые мы отправим, поддерживают эти опции.
  • Новая переменная config.imagemap_auto_function позволяет разработчику игры управлять интерпретацией свойства auto для графических кнопок и карт изображений.
  • Описанное выше поведение кэширования карты изображений применимо только к экранам.
  • Функции FilePageName() и FileSlotName() упрощают именование слотов.


◇ Другие улучшения[править | править код]

  • Ren'Py 6.12 включает в себя ряд других улучшений:
  • Мы продолжили писать новое руководство. Примечательно, что мы переписали документацию для отображаемых объектов.
  • При создании снимка экрана вызывается config.screenshot_callback. Реализация этой функции по умолчанию уведомляет пользователя о местоположении скриншота.
  • Отображаемые объекты Solid() и Frame() теперь небольшие и больше не занимают (много) места в кэше изображений.
  • Теперь мы создаем файл log.txt, который заменяет старый opengl.txt и может регистрировать другие подсистемы.
  • К языку экрана было добавлено несколько отсутствующих свойств.
  • Теперь Ren'Py обрабатывает имена файлов так, как будто они не чувствительны к регистру. Это означает, что несоответствие имён файлов в Linux больше не должно быть проблемой.


◇ Исправление ошибок[править | править код]

  • Ошибка 680266 – гарантирует, что динамические отображаемые изображения обновляются перед преобразованиями, которые их используют.
  • Ошибка 683412 – не сбой, если шейдер не скомпилируется.
  • Исправлена ошибка, приводившая к сбою Ren'Py, когда громкость системы была снижена до 0, но не отключена.
  • Исправлена ошибка, из-за которой Render.canvas() не работал с рендерером OpenGL.

6.11.2[править | править код]

◇ Новые особенности[править | править код]

Эта версия включает четыре новые темы, щедро предоставленные Aleema. Вы можете просмотреть и перейти к этим новым темам, нажав кнопку «Выбрать тему» на панели запуска.


◇ Обновление программного обеспечения[править | править код]

Текстовый редактор jEdit, входящий в состав Ren'Py, обновлён до версии 4.3.2, поддерживаемой версии, которая должна поддерживать большинство плагинов.


◇ Изменения в поведении[править | править код]

  • Максимальный физический размер окна по умолчанию в Ren'Py теперь на 102 пикселя меньше высоты экрана. Это должно помешать Ren'Py создавать окна, размер которых нельзя изменить, так как они намного больше экрана.
  • Кнопки теперь передают ключевые события своим дочерним элементам только тогда, когда они сфокусированы. Это позволяет использовать оператор key языка экрана в качестве дочернего элемента кнопки и активировать его только при фокусировке кнопки.
  • MoveTransition был переписан, чтобы правильно обрабатывать случаи, когда изображения меняли свой порядок. Это может привести к отличиям в поведении от старой версии, где порядок был неопределенным.


◇ Исправление ошибок[править | править код]

  • Исправлена ошибка запуска 647686, регрессия, которая препятствовала правильному зацикливанию звуков.
  • Исправлена ошибка запуска 661983, которая приводила к тому, что нечувствительные горячие точки по умолчанию отображались в режиме ожидания, а не в режиме заземления, когда нечувствительное изображение не было предоставлено.
  • Исправлена ошибка запуска 647324, из-за которой ImageDissolves отображались так, как бы они были заданы с помощью alpha=True, независимо от того, была ли установлена alpha=True.
  • Исправлена проблема, из-за которой игра запускалась при выборе «Нет» после нажатия кнопки выхода (на уровне окна).
  • Исправлена проблема, из-за которой AnimatedValue не работала должным образом, если задержка не была 1.0. Спасибо Scout за исправление.
  • Исправлена проблема, из-за которой фильмы отображались некорректно при масштабировании экрана с использованием OpenGL.

6.11.1[править | править код]

◇ Новые особенности[править | править код]

  • Добавьте отображаемый объект AlphaBlend() и переход AlphaDissolve() Они принимают два отображаемых изображения и используют альфа-канал третьего отображаемого объекта, чтобы смешать их вместе. Третий отображаемый объект – это часто анимация, позволяющая изменять эффект с течением времени.
  • Новая система режимов позволяет вызывать обратные вызовы при переключении с одного типа взаимодействия на другой.
  • Изображения, созданные с помощью языка экрана, теперь имеют размер, равный размеру их основного изображения. Раньше они занимали весь экран. Это изменение облегчает размещение карты изображения в другом месте на экране, например в нижней части.
  • Карты изображений теперь принимают аргумент alpha. Если принимает значение True (по умолчанию), горячие точки фокусируются только в том случае, если мышь находится над непрозрачной частью изображения в режиме ожидания или при наведении курсора. Если установлено значение False, горячая точка фокусируется всякий раз, когда мышь находится в её границах.
  • Добавлена функция renpy.focus_coordinates(), которая возвращает координаты отображаемого объекта в данный момент фокуса, когда это возможно.
  • Новая функция renpy.notify() и действие Notify() позволяют легко выводить на экран небольшие сообщения о состоянии, такие как уведомление пользователя о выполненном быстром сохранении или скриншоте.
  • Новое действие HideInterface() позволяет временно скрыть интерфейс, как действие языка экрана.
  • Меню разработчика теперь включает команду, которая перечислит все файлы в каталоге игры.
  • Модули urllib и urllib2 из стандартной библиотеки Python теперь распространяются как часть Ren'Py. Эти модули позволяют извлекать данные с веб-серверов.
  • Ren'Py Launcher теперь включает экспериментальный модуль обновления, что облегчает обновление до последней предварительной версии. Нажатие Shift+U на главном экране Ren'Py Launcher приведёт к обновлению Ren'Py.


◇ Исправления[править | править код]

  • Теперь MoveTransition() учитывает параметры xoffset и yoffset.
  • Исправлено несколько ошибок с изображениями на экране.
  • Исправлена ошибка (#626303), вызванная неправильной проверкой текстурных блоков. Спасибо tmrwiz за исправление.
  • Преобразования больше не вызывают исключения деления на ноль, когда свойства zoom, xzoom или yzoom равны 0.
  • Теперь работает вращение по часовой стрелке и против часовой стрелки в преобразованиях.
  • Исправлена ошибка с масштабированием, возникшая при переключении между масштабированным программным обеспечением и средствами визуализации GL.
  • Скрытые экраны больше не учитываются при назначении фокуса по умолчанию.
  • FieldValues с max_is_zero, установленным в True, теперь работают правильно. Спасибо SleepKirby за исправление.

6.11.0[править | править код]

◇ Поддержка OpenGL[править | править код]

Ren'Py теперь использует аппаратное ускорение OpenGL, если оно поддерживается. Эта поддержка OpenGL имеет несколько видимых пользователю изменений:

  • Окно, содержащее игру Ren'Py, можно изменить или развернуть, используя стандартные элементы управления окном. Если соотношение сторон окна не соответствует соотношению сторон игры, будут добавлены черные полосы.
  • Отображение в полноэкранном режиме не должно изменять разрешение монитора. Это предотвратит искажение игры при отображении на мониторе с другим соотношением сторон.
  • Если не отключено в конфигурации видеодрайвера, Ren'Py будет использовать вертикальную пустую синхронизацию, устраняя разрыв изображения.
  • Используется рендеринг GPU, который в большинстве случаев должен ускорить отрисовку экрана.

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

Вы можете проверить, что Ren'Py находится в режиме OpenGL, попытавшись изменить размер окна. Если его можно изменить, то это OpenGL, иначе используется программный рендеринг.


◇ Экраны и язык экрана[править | править код]

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

Предыдущий способ настройки поведения игрового меню, система компоновки имел проблемы, особенно при использовании макетов imagemap. Экраны были одноцелевыми, и было бы трудно (например) загрузить игру с быстрым сохранением из главного меню без обширного кода на Python.

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


◇ Изменение преобразования[править | править код]

  • Если преобразование не определяет одно из свойств позиции xpos, ypos, xanchor или yanchor, это свойство будет взято из дочернего элемента преобразования, если оно определяет это свойство.
Это позволяет одному преобразованию управлять вертикальным движением отображаемого объекта, а другое - горизонтальным. Но это несовместимо с предыдущим поведением и поэтому может быть отключено с помощью переменной config.transform_uses_child_position.
  • Новая переменная config.default_transform позволяет преобразованию задавать начальные свойства преобразования изображения, к которому не применяется более конкретное преобразование. Его значение по умолчанию – центр, преобразование, которое показывает изображение в центре нижней части экрана.
Это может привести к изменению поведения. Когда изображение показано, а затем показано преобразование, преобразование будет инициализировано в нижнем центре экрана, а не в верхнем левом углу. Преобразование reset можно использовать для сброса положения в верхний левый угол.
  • Преобразование (и ui.transform) были изменены таким образом, что теперь их аргументы могут начинаться с префикса стиля. Можно написать ui.transform (idle_rotate = 30, hover_rotate = 90) и заставить его работать.
  • Добавлено свойство трансформации rotate_pad, которое управляет тем, как панели Transform поворачивали отображаемые объекты. Когда установлено значение False, _not_ по умолчанию, теперь можно повернуть отображаемый объект (100, 50) на 90 градусов и результат будет иметь размер (50, 100).


◇ Другие изменения[править | править код]

Документация Ren'Py находится в процессе переписывания. Этот список изменений теперь поддерживается как часть документации Ren'Py.


Добавлена поддержка свойств составного стиля, которые позволяют задать несколько свойств стиля с помощью одного параметра. Новые свойства составного стиля:

  • pos - берет пару и использует ее для установки xpos и ypos.
  • anchor - берет пару и использует ее для установки xanchor и yanchor.
  • align - берет пару и использует ее для установки xalign и yalign. И, следовательно, xpos, ypos, xanchor и yanchor.
  • area - берет пару (x, y, height, width) и пытается установить свойства таким образом, чтобы отображаемый объект помещался внутри прямоугольника. Это устанавливает свойства xpos, ypos, xanchor, yanchor, xfill, yfill, xminimum, yminimum, xmaximum и ymaximum.


  • Теперь ui.add может принимать свойства преобразования в качестве именованных аргументов. Если присутствует хотя бы одно свойство преобразования, ui.add создаст преобразование, которое обернёт отображаемый объект, добавляемый на экран.
  • Новый LiveTile() отображает мозаику своего дочернего элемента, не занимая при этом большого объема памяти.
  • config.quit_action позволяет указать действие, которое запускается при нажатии кнопки выхода (в углу окна). config.game_menu_action позволяет указать действие, которое запускается при входе в игровое меню.
  • Переменная конфигурации config.screenshot_crop управляет областью экрана, которая сохраняется при нажатии игроком клавиши снимка экрана.
  • У метода renpy.music.register_channel() теперь есть два дополнительных параметра, file_prefix и file_suffix. Они добавляются и присоединяются к именам файлов, предоставленных зарегистрированному каналу, соответственно.
  • Новый метод renpy.list_files() возвращает список файлов в директории игры и архивы. Это может быть использовано, помимо прочего, для написания собственного метода автоматической загрузки изображений.
  • Взаимодействие между Character и Text было переписано, чтобы гарантировать, что текст маркируется только один раз. Это потребовало изменения нескольких методов в ADVCharacter и NVLCharacter, поэтому следует проверять код, который наследуется от этих классов.
  • Код дистрибутива был перемещен в launcher/distribute.py. Этот файл можно запустить из командной строки для построения дистрибутивов в скриптах оболочки и других автоматизированных процессах.
  • Когда на экране есть прозрачные области, и config.developer принимает значение True, прозрачные области заполнены шахматным рисунком.
  • Были созданы новые стили input, side, grid и fixed и соответствующие отображаемые объекты используют их по умолчанию.
  • Когда к стилю обращаются во время инициализации, и он не существует, мы разделяем его на две части в первом подчеркивании. Если вторая часть соответствует существующему стилю, мы создаем новый стиль вместо того, чтобы вызывать ошибку.
  • Компилятор Python был переписан для использования модуля Python ast. Это должно повысить производительность и улучшить обработку ошибок в синтаксисе Python. Из-за этого изменения Ren'Py теперь поставляется с Python 2.6 и требует его использования.


Были исправлены следующие пронумерованные ошибки:

  • 520276 - ctc не появляется при прерывании cps.
  • 526297 - im.Rotozoom() аварийно завершает работу, когда Ren'Py уменьшается. (Спасибо Spiky Caterpillar за отчет об ошибке и исправление).
  • 543785 - Ошибка запуска при выборе каталога проектов.
  • 583112 - Откат пока отображается фильм, оставляющий видеокадр на экране.
  • 595532 - Неправильный текст в обучающей игре. (Спасибо Viliam Búr).


Следующие ошибки были исправлены:

  • Переименовали внутренние методы show и hide в Displayable, чтобы эти имена снова могли использоваться отображаемыми объектами, определяемыми разработчиком.
  • Переписали MultipleTransition (который используется Fade), чтобы исправить некоторые проблемы, которые он демонстрировал.
  • Учитывайте параметр условия для Character при определении того, происходит ли очистка nvl перед следующим взаимодействием.


◇ Старый список изменений[править | править код]

Список изменений в более старых версиях Ren'P можно найти здесь.

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

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


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