Руководство NVL-режима (NVL-Mode Tutorial)
Существует два основных стиля изложения материала, используемых в визуальных новеллах:
- ADV
- Визуальные новеллы, созданные в стиле ADV, представляют собой диалог и повествование, выводимые на экран по одной строке за раз, как правило, в окне, расположенном в нижней части экрана.
- NVL
- Визуальные новеллы, созданные в стиле NVL, представляют собой несколько строк на экране, выводимые одновременно в окне, которое занимает весь экран.
В данном руководстве мы расскажем, как с помощью Ren'Py создать игру, включающую NVL-режим. Предполагается, что вы уже знакомы с основами Ren'Py, о которых подробно рассказано в разделе «Краткое руководство».
Начало работы (Getting Started)[править | править код]
NVL-режим можно добавить в скрипт Ren'Py в два шага:
- Объявите персонажей, используя NVL-режим.
- Добавьте операторы nvl clear в конце каждой страницы выводимого текста.
Персонажей можно объявить с помощью NVL-режима, добавив параметр kind=nvl для каждого объявляемого Character. Например, если мы объявим персонажей из Краткого руководства:
define s = Character('Сильвия', color="#c8ffc8")
define m = Character('Я', color="#c8c8ff")
Используя NVL-режим, то объявление персонажей будет выглядеть так:
define s = Character('Сильвия', kind=nvl, color="#c8ffc8")
define m = Character('Я', kind=nvl, color="#c8c8ff")
В NVL-режиме также можно использовать персонажа-рассказчика, включив следующий код:
define narrator = nvl_narrator
Обратите внимание, что мы также добавили в NVL-режим narrator. Персонаж narrator используется для произнесения строк, с которыми не связано другое имя персонажа.
Если запустить игру таким образом, первые несколько строк отобразятся нормально, но через некоторое время строки начнут отображаться ниже нижней части экрана. Чтобы разбить скрипт на страницы, добавьте оператор nvl clear после каждой страницы.
Ниже приведен пример скрипта с разбиением на страницы:
label start:
"Я спрошу её..."
m "Эмм... Ты согласишься..."
m "Согласишься быть художником для моей визуальной новеллы?"
nvl clear
"Молчание."
"Она выглядела потрясено и затем..."
s "Конечно, но что такое \"визуальная новелла?\""
nvl clear
Хотя игры с NVL-режимом обычно содержат больше текста в абзаце, в этом примере демонстрируется базовый сценарий NVL-режима. Подходит для использования в кинетической новелле, в которой нет переходов.
Режим монолога работает и с NVL-режимом. Включение текстового тега {clear} в строку само по себе является эквивалентом оператора nvl clear без выхода из режима монолога. Например:
label start:
s """
Это один блок текста в режиме монолога.
Это второй блок, на той же странице, что и первый.
{clear}
Страница только что очистилась!
"""
Меню NVL-режима (NVL-mode Menus)[править | править код]
По умолчанию меню отображаются в ADV-режиме, занимая весь экран. Существует также альтернативное представление меню в NVL-режиме, в котором меню отображаются сразу после текущей страницы текста NVL-режима.
Чтобы получить доступ к этой альтернативному представлению меню, напишите:
define menu = nvl_menu
Меню исчезнет после того, как сделан выбор, поэтому обычно имеет смысл использовать меню с nvl clear или каким-либо указанием на выбор.
Аргументы меню также могут использоваться для доступа к меню NVL-режима. Это достигается путём создания истинного аргумента nvl со значением True. Это полезно при смешивании меню NVL-режима и ADV-режима в одной игре.
menu (nvl=True):
"Я предпочитаю NVL-режим.":
pass
"ADV-режим больше для меня.":
pass
Отображение и скрытие окна в NVL-режиме (Showing and Hiding the NVL-mode Window)[править | править код]
Окном NVL-режима можно управлять с помощью стандартных операторов window show и window hide. Чтобы включить эту функцию, добавьте в игру следующий код:
init python:
config.empty_window = nvl_show_core
config.window_hide_transition = dissolve
config.window_show_transition = dissolve
Если для переменной config.empty_window задать значение nvl_show_core, окно NVL-режима будет отображаться во время перехода. В последних двух строках выберите переходы по умолчанию, которые будут использоваться для отображения и скрытия окна.
Пример использования команд окна для отображения и скрытия окна:
label meadow:
nvl clear
window hide
scene bg meadow
with fade
window show
"Мы дошли до луга недалеко за пределами нашего родного города. Осень в этих местах
была такой красивой."
"Когда мы были детьми, мы часто играли здесь."
m "Эй... Эммм..."
window hide
show sylvie smile
with dissolve
window show
"Она обернулась и улыбнулась."
"Я спрошу её..."
m "Эмм... Ты согласишься..."
m "Согласишься быть художником для моей визуальной новеллы?"
Кроме того, существуют команды nvl show и nvl hide, которые показывают и скрывают окна NVL-режима. Они принимают дополнительный переход и могут использоваться в играх, в которых используется сочетание окон NVL-режима и ADV-режима.
Настройка персонажей (Customizing Characters)[править | править код]
Персонажей в NVL-режиме можно настроить так, чтобы они выглядели по-разному, что, надеюсь, позволит вам выбрать тот, который наиболее подходит для создаваемой игры.
- 1. По умолчанию включает имя персонажа, расположенное слева, и диалог с отступом справа от имени. Цвет имени контролируется параметром color.
define s = Character('Сильвия', kind=nvl, color="#c8ffc8")
- 2. Здесь имя персонажа встроено в текст. Диалог, произнесенный персонажем, заключен в кавычки. Обратите внимание, что здесь имя персонажа помещается в параметр what_prefix, вместе с открытой кавычкой. Закрывающая кавычка помещается в параметр what_suffix.
define s = Character(None, kind=nvl, what_prefix="Сильвия: \"", what_suffix="\"")
- 3. Третья форма полностью обходится без имени персонажа, помещая диалог в кавычки.
define s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"")
- 4. Поскольку третья форма может затруднить распознавание того, кто говорит, мы можем подкрасить диалог с помощью параметра what_color.
define s = Character(None, kind=nvl, what_prefix="\"", what_suffix="\"", what_color="#c8ffc8")
- 5. Конечно, можно использовать в NVL-режиме совершенно ненастроенного персонажа, если вы хотите полностью контролировать то, что отображается. Это часто используется для персонажа-рассказчика.
define s = Character(None, kind=nvl)
Переменные конфигурации (Config Variables)[править | править код]
Следующие переменные конфигурации управляют функциональностью, связанной с nvl.
define config.nvl_layer = "screens"
- Слой, на котором отображаются экраны nvl.
define config.nvl_list_length = None
- Если принимает значение не None, максимальная длина списка диалогов NVL-режима. Можно установить (часто в сочетании с тем, чтобы диалог имел фиксированную высоту), чтобы эмулировать окно NVL-режима с бесконечной прокруткой.
define config.nvl_page_ctc = None
- Если принимает значение не None, это индикатор «нажать для продолжения», который используется для персонажей NVL-режима, находящихся в конце страницы. То есть за ними сразу следует оператор nvl clear. Это переменная заменяет параметр ctc объекта Character().
define config.nvl_page_ctc_position = "nestled"
- Если принимает значение не None, положение индикатора «нажать для продолжения», который используется для персонажей NVL-режима, находящихся в конце страницы. То есть за ними сразу следует оператор nvl clear. Это переменная заменяет параметр ctc_position объекта Character().
define config.nvl_paged_rollback = False
- Если принимает значение True, откат в NVL-режиме будет происходить на всю страницу за раз.
Функции в Python (Python Functions)[править | править код]
- nvl_clear()
- Эквивалент оператора nvl clear в Python.
- nvl_hide(with_)
- Эквивалент оператора nvl hide в Python.
- with_
- Переход, используемый для скрытия окна в NVL-режиме.
- nvl_menu(items)
- Функция в Python, которая отображает меню в NVL стиле. Редко используется напрямую. Вместо этого он присваивается переменной [[Переменные хранилища (Store Variables)menu, используя что-то вроде:
define menu = nvl_menu
- nvl_show(with_)
- Эквивалент оператора nvl show в Python.
- with_
- Переход, используемый для отображения окна в NVL-режиме.
Постраничный откат (Paged Rollback)[править | править код]
Постраничный откат приводит к тому, что за раз Ren'Py откатывает одну страницу NVL-режима, а не один блок текста. Этот откат можно включить, добавив в свой скрипт следующий код:
init python:
config.nvl_paged_rollback = True
Скрипт новеллы «Вопрос» (Версия NVL-режима) (Script of The Question (NVL-mode Edition))[править | править код]
При желании можете ознакомиться с полным скриптом для NVL-режима новеллы «Вопрос».
Источник[править | править код]
- Статья "NVL-Mode Tutorial" на английском языке.
- Помощь при переводе статьи "NVL-Mode Tutorial" на русский язык: "Launchpad: nvl-mode"
На главную страницу | Официальная документация движка | Вернуться к началу статьи |