Ren'Py Visual Novel Engine Логотип 8.5.3 Documentation

Начало работы

  • Быстрый старт
  • Руководство по настройке GUI

Язык Ren'Py

  • Основы языка
  • Метки и управление потоком
  • Диалоги и повествование
  • Отображение изображений
  • Внутриигровые меню
    • Набор меню
    • Аргументы меню
  • Инструкции Python
  • Условные инструкции
  • Аудио
  • Аудиофильтры
  • Видео
  • Озвучка

Текст, отображаемые объекты, трансформации и переходы

  • Текст
  • Перевод
  • Displayables
  • Трансформации
  • Свойства трансформации
  • Переходы
  • Matrixcolor
  • Слоёные изображения
  • 3D-сцена
  • Live2D Cubism

Кастомизация Ren'Py

  • Стили
  • Свойства стилей
  • Экраны и язык экранов
  • Экранные действия, значения и функции
  • Специальные имена экранов
  • Оптимизация языка экранов
  • Configuration Variables
  • Переменные настроек
  • Переменные хранилища
  • Пользовательские курсоры мыши
  • Текстовые шейдеры

Инструменты

  • Лаунчер
  • Инструменты разработчика
  • Интерактивный Режиссёр
  • Автоматизированное тестирование

Другие возможности

  • Руководство по NVL-режиму
  • Речевые пузыри
  • Ввод текста
  • Боковые изображения
  • Галерея изображений, музыкальная комната и действия повтора
  • Перетаскивание (Drag and Drop)
  • Спрайты
  • Настройка раскладки клавиатуры
  • Достижения
  • История диалогов
  • Диалоги нескольких персонажей
  • Заставка и предзаставка
  • Жизненный цикл запущенной игры на Ren'Py

Python и Ren'Py

  • Эквиваленты операторов
  • Сохранение, загрузка и откат
  • Постоянные данные
  • Продвинутый GUI
  • Экраны и Python
  • Отображаемые объекты, определяемые автором
  • Пользовательские операторы
  • Пользовательские теги текста
  • Колбэки персонажа
  • Доступ к файлам
  • Класс Color
  • Matrix
  • Рендеринг на основе моделей
  • Прочие функции и переменные
  • Файлы _ren.py — Ren'Py в Python
  • Запросы HTTPS/HTTP
  • Скриншоты

Сборка, обновление и другие платформы

  • Сборка дистрибутивов
  • Android
  • iOS
  • Web / HTML5
  • Chrome OS/Chromebook
  • Raspberry Pi
  • Внутриигровые покупки
  • HTTPS/HTTP Updater
  • Загрузчик для больших игр на мобильных устройствах
  • Жесты

Документация для конечных пользователей

  • Безопасность
  • Решение проблем
  • Переменные окружения
  • Самоозвучивание

Документация для разработчиков библиотек и инструментов

  • Шаблонные проекты
  • Интерфейс командной строки

Документация для разработчиков движка

  • Интеграция с текстовым редактором
  • Скины
  • Перевод Ren'Py

Изменения, лицензия и авторы

  • Changelog (Ren'Py 7.x-)
  • Changelog (Ren'Py 6.11 - 6.99)
  • Несовместимые изменения
  • License
  • Авторы
  • Спонсоры разработки Ren'Py
Ren'Py Visual Novel Engine
  • Внутриигровые меню
  • Редактировать на GitHub

Внутриигровые меню

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

Вот пример инструкции menu:

menu:
     "What should I do?"

     "Drink coffee.":
         "I drink the coffee, and it's good to the last drop."

     "Drink tea.":
         $ drank_tea = True

         "I drink the tea, trying not to make a political statement as I do."

     "Genuflect.":
         jump genuflect_ending

label after_menu:

     "After having my drink, I got on with my morning."

Инструкция menu начинается с ключевого слова menu. За ним может следовать имя метки, что в данном случае эквивалентно предварению меню этой меткой. Например:

menu drink_menu:
    ...

За инструкцией menu следует блок с отступом. Этот блок может содержать инструкцию say и должен содержать как минимум один пункт меню. Если инструкция say присутствует, она отображается на экране одновременно с меню.

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

Когда выбор сделан, выполняется блок инструкций. Если выполнение достигает конца блока, оно продолжается с инструкции, следующей за концом инструкции menu.

Условие if состоит из ключевого слова if, за которым следует выражение Python. Пункт меню отображается только в том случае, если выражение истинно. В следующем меню:

menu:
    "Go left.":
        ...
    "Go right.":
        ...
    "Fly above." if drank_tea:
        ...

Третий вариант будет предложен только в том случае, если переменная drank_tea истинна. (Однако, если переменная config.menu_include_disabled установлена в True, он будет показан как неактивная кнопка.)

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

Набор меню

Меню может принимать выражение set на отдельной строке. Если оно присутствует, в меню отображаются только те пункты, подписи которых не содержатся в наборе. Когда выбор сделан, его подпись может быть добавлена в набор.

Как и в случае с if, если ни один вариант выбора недоступен, управление переходит к инструкции после меню.

По историческим причинам, набор может быть как объектом set, так и списком.

default menuset = set()


menu chapter_1_places:

    set menuset
    "Where should I go?"

    "Go to class.":
        jump go_to_class

    "Go to the bar.":
        jump go_to_bar

    "Go to jail.":
        jump go_to_jail

label chapter_1_after_places:

    "Wow, that was one heck of a Tuesday."

Аргументы меню

Можно передавать аргументы как самому меню, так и отдельным его пунктам. Чтобы передать аргументы меню, добавьте их в строку menu, после необязательного имени и непосредственно перед двоеточием. Чтобы передать аргументы пункту меню, укажите их после строки меню и перед ключевым словом if или двоеточием.

menu ("jfk", screen="airport"):

    "Chicago, IL" (200):
        jump chicago_trip

    "Dallas, TX" (150, sale=True):
        jump dallas_trip

    "Hot Springs, AR" (300) if secret_unlocked:
        jump hot_springs_trip

Аргументы, переданные самому меню, становятся аргументами для экрана, за исключением аргумента screen, который выбирает экран, и аргумента nvl, который выбирает меню NVL-режима.

Смотрите документацию для экрана choice и config.menu_arguments_callback.

Предыдущая Следующая

Собрано при помощи Sphinx с использованием темы, предоставленной Read the Docs.