Краткое руководство (Quickstart)

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

Добро пожаловать в краткое руководство по использованию движка визуальных новелл Ren'Py. Цель данного руководства заключается в демонстрации того, как можно с нуля создать игру на движке Ren'Py, выполнив несколько простых действий. Мы разберём процесс создания игры на движке Ren'Py на примере простой игры «Вопрос».

Ren'Py Launcher[править | править код]

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


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

Для начала вам нужно скачать Ren'Py. Как только вы скачали Ren'Py, вам захочется извлечь и запустить его, для этого:

  • В Windows дважды щёлкните на исполняемый файл, который вы скачали. Он извлечет Ren'Py в папку с именем renpy-<version>. Вы можете перейти в эту папку и запустить renpy.exe (файл renpy.exe может быть представлен в виде renpy, если расширения скрыты).
  • В Mac OS X дважды щелкните загруженный образ диска, чтобы подключить его в качестве диска. При открытии диска скопируйте папку с именем renpy-<version> в другое место (не имеет значение куда, но папка должна быть перемещена из образа диска, доступного только для чтения. Не перемещайте приложение renpy из папки, в которой оно находится, так как оно не будет работать в другом месте). Затем перейдите в неё и запустите приложение renpy.
  • В Linux распакуйте tar-архив, перейдите в папку renpy-<version>, а затем запустите renpy.sh.

После выполнения вышеуказанного, Ren'Py Launcher должен запуститься.

Ren'Py Launcher был переведён на многие языки. Для смены языка откройте «Настройки» в правом нижнем углу и выберите язык.


Выбор и запуск проекта

Сначала вам следует увидеть, что из себя представляет завершенная игра «Вопрос». Для этого запустите Ren'Py Launcher и выберите «Вопрос» на первоначальном экране. Нажмите «Запустить проект» для запуска «Вопроса».

Вы можете вернуться к демоверсии Ren'Py, делая то же самое, но выбрав «Обучение», вместо «Вопроса».

Главный экран Ren'Py Launcher



Создание нового проекта

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

После этого Ren'Py Launcher запросит имя проекта. Поскольку имя «Вопрос» уже занято, введите что-нибудь другое, например «My Question», и нажмите Enter.

Присвоение имени новому проекту


После этого Ren'Py Launcher попросит выбрать разрешение для проекта. По умолчанию 1280x720 – хороший компромисс между размером игры и качеством изображения. С этой целью для данного урока мы выберем 1280x720, затем нажмите кнопку "Продолжить". После Ren'Py Launcher попросит вас выбрать цветовую схему для проекта - цвет акцента и фона для нового графического интерфейса пользователя. Неважно, что вы выберете, так что просто выберите то, что вам нравится, и нажмите кнопку "Продолжить".

Выбор разрешения для проекта
Выбор акцентного и фонового цвета для темы по умолчанию


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

Простая игра (A Simple Game)[править | править код]

label start:

    "Сильвия" "Привет! Как прошёл урок?"

    "Я" "Хорошо..."

    "У меня язык не поворачивается признаться, что всю лекцию профессора Эйлин я витал в своих мыслях."

    "Я" "Идешь домой? Не хочешь прогуляться со мной?"

    "Сильвия" "Конечно!"

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

Чтобы опробовать на практике вышеуказанный пример, зайдите в Ren'Py Launcher и выберите «My Question Project», а затем «script.rpy», расположенный под «Редактировать Файл». Если вы делаете это в первый раз, то Ren'Py может попросить выбрать текстовый редактор (мы рекомендуем начинающим разработчикам использовать Editra), после чего он загрузит выбранный редактор. Когда закончится загрузка, script.rpy будет открыт в редакторе.

После того, как редактор откроется, удалите всё, что находится в script.rpy, потому что мы начнем создание с нуля, и всё, что находится в файле, нам не нужно. Скопируйте приведённый выше пример в script.rpy и сохраните файл.

Теперь вы можете запустить сохраненный пример. Вернитесь в Ren'Py Launcher и выберите «Запуск проекта». Ren'Py запустится. Обратите внимание, что без каких-либо дополнительных действий, Ren'Py предоставляет меню «Загрузки» и «Сохранения» (для загрузки и сохранения игры), а также «Настройки» (для изменения различных параметров). Когда будете готовы, нажмите «Запустить проект» и поиграйте в этот пример игры.

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

В первой строке кода находится оператор label. Оператор label используется для того, чтобы дать имя месту в программе. В данном случае, мы создаём метку, имеющую имя start. Label start – особенная метка, поскольку переход к ней происходит тогда, когда скрипты Ren'Py запускаются, как только пользователь нажмет «Начать игру» в главном меню.

Остальные строки – операторы say. В коде используется две формы оператора say. Первая форма – строка (начинается двойными кавычками, содержит последовательность символы и заканчивается двойными кавычками) на отдельной строке, которая используется для повествования и мыслей главного героя. Вторая форма состоит из двух последовательностей символов, заключенных в двойные кавычки ("). Вторая форма оператора say применяется в диалогах, причем первая строковая последовательность является именем персонажа, а вторая – то, что персонаж говорит.

Обратите внимание, что все операторы say выводятся с отступом в четыре пробела. Это из-за того, что они входят в блок под оператором label. В Ren'Py блоки должны иметь отступ относительно предшествующего оператора и все операторы в блоке должны иметь одинаковое количество отступов.

Когда строки содержат символы двойных кавычек, то эти символы требуется предварить обратной косой чертой. Например:

    "Сильвия" "Ты когда-нибудь слышал знаменитое изречение Линкольна, \"Проблема с интернет-цитатами заключается в том, что многие из них не являются подлинными.\""

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

Персонажи (Characters)[править | править код]

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

define s = Character('Сильвия', color="#c8ffc8")
define m = Character('Я', color="#c8c8ff")

label start:

    s "Привет! Как прошел урок?"

    m "Хорошо..."

    "У меня язык не поворачивается признаться, что всю лекцию профессора Эйлин я витал в своих мыслях."

    m "Идешь домой? Не хочешь пойти со мной?"

    s "Конечно!"

Первая и вторая строки кода определяют персонажей. Первая строка кода определяет персонажа с коротким именем «s», полным - «Сильвия», при этом имя отображается в зеленоватом цвете (цвета красный-зелёный-голубой в формате HEX, как они используются на веб-страницах).

На второй строке кода создаётся персонаж с коротким именем «m», полным - «Я», при этом имя отображается в красноватом цвете. Остальные персонажи могут быть определены посредством копирования одной из первых строк и изменением короткого и полного имени, а также цвета отображения имени.

Мы так же изменили в коде операторы say, чтобы использовать объекты Character вместо строки с именем персонажа. Это сообщает Ren'Py использовать персонажей, которых мы определили.

Изображения (Images)[править | править код]

Визуальная новелла не визуальная новелла без картинок. Вот еще одна сцена из новеллы «Вопроса». Она также включает операторы, которые выводят изображения перед игроком. Данный пример кода может полностью заменить предыдущий раздел скрипта, если вы захотите протестировать его.

define s = Character('Сильвия', color="#c8ffc8")
define m = Character('Я', color="#c8c8ff")

label start:

    scene bg meadow

    "Вскоре мы дошли до луга, расположенного недалеко от района, где мы оба живем."

    "Это живописный вид, к которому я привык. Осень здесь особенно прекрасна."

    "Когда мы были детьми, мы часто играли на этих лугах, так что места здесь переполнены воспоминаниями."

    m "Эй... Эммм..."

    show sylvie green smile

    "Она обернулась и улыбнулась. Она выглядит так приветливо, что я чувствую, что избавляюсь от нервозности."

    "Я спрошу её..."

    m "Эмм... Ты согласишься..."

    m "Ты станешь художником для моей визуальной новеллы?"

    show sylvie green surprised

    "Молчание."

Эта часть скрипта вводит два новых оператора:

  • оператор scene (6-я строка) очищает все изображения на экране и отображает фоновое изображение;
  • оператор show (16-я и 26-я строка) отображает спрайт поверх фона и, соответственно, изменяет отображаемый спрайт.

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

  • В операторе scene (6-я строка) тегом является "bg", а атрибут - "meadow". В силу сложившейся традиции фоновые изображения должны использовать тег bg.
  • В первом операторе show (16-я строка) тегом является "sylvie", а атрибутами - "green" и "smile".
  • Во втором операторе show (26-я строка) тегом является "sylvie", а атрибутами - "green" и "surprised".

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

Ren'Py ищет файлы изображений в директории images, которую можно найти, выбрав «images» в разделе «Открыть папку» в Ren'Py Launcher. Ren'Py не делает никакого различия между спрайтом персонажа и фоновым изображением, так как они оба рассматриваются, как изображения. Ren'Py предполагает, что спрайты персонажа будут в формате PNG или WEBP, а фоновый рисунок - в формате JPG, JPEG, PNG или WEBP. Имя файла очень важно, так как расширение удаляется, имя файла задается в нижнем регистре и используется в качестве имени изображения.

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

  • "bg meadow.jpg" -> bg meadow
  • "sylvie green smile.png" -> sylvie green smile
  • sylvie green surprised.png" -> sylvie green surprised

Поскольку имена файлов пишутся строчными буквами, нижеследующее также имеет место.

  • "Sylvie Green Surprised.png" -> sylvie green surprised

Изображения могут быть помещены в подкаталоги (вложенные папки) в директории images. Имя каталога игнорируется и для определения имени изображения используется только имя файла.

Директория images

Оператор hide (Hide Statement)[править | править код]

Ren'Py также поддерживает оператор hide, который скрывает заданное изображение.

label leaving:

    s "Я сделаю это!"

    hide sylvie

    "..."

    m "Это не то, что я имел в виду!"

Довольно редко, когда вам понадобится использовать оператор hide. Когда персонаж изменяет эмоции, можно использовать оператор show, кроме того оператор scene используется, когда все элементы исчезают с экрана. Следует использовать оператор hide только тогда, когда персонаж уходит, а место действия остаётся неизменным.

Оператор image (Image Statement)[править | править код]

В некоторых случаях разработчик, возможно, не захочет, чтобы Ren'Py автоматически определял изображения. Именно для этого используется оператор image. Он должен находиться на верхнем уровне файла (без отступа и перед label start) и может использоваться для сопоставления имени изображения с файлом изображения. Например:

image logo = "renpy logo.png"
image eileen happy = "eileen_happy_blue_dress.png"

Оператор image:

  • запускается во время инициализации, перед label start и остальным игровым скриптом, который взаимодействует с игроком.
  • также может использоваться для более сложных задач, но это обсуждается в другом месте.

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

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

Переходы изменяют то, что отображается на экране от того, каким оно было в конце последнего взаимодействия (диалога, меню или перехода - в числе других операторов) на то, как оно выглядит после выполнения операторов scene, show и hide.

label start:

    scene bg meadow
    with fade

    "Вскоре мы дошли до луга, расположенного недалеко от района, где мы оба живем."

    "Это живописный вид, к которому я привык. Осень здесь особенно прекрасна."

    "Когда мы были детьми, мы часто играли на этих лугах, так что места здесь переполнены воспоминаниями."

    m "Эй... Эммм..."

    show sylvie green smile
    with dissolve

    "Она обернулась и улыбнулась. Она выглядит так приветливо, что я чувствую, что избавляюсь от нервозности."

    "Я спрошу её...!"

    m "Эмм... Ты согласишься..."

    m "Ты станешь художником для моей визуальной новеллы?"

Названия переходов прописываются в коде с помощью оператора with. Часто используемый переход это dissolve (растворение одного изображения на экране в другое, следующего за ним). Другой часто используемый переход - fade (плавный переход текущего изображения в черный, а после появление нового).

Когда переход находится после нескольких операторов scene, show и hide, то он затронет все сразу. Для этого нужно прописать:

    scene bg meadow
    show sylvie green smile
    with dissolve

Оба изображения и «bg meadow», и «sylvie green smile» будут растворяться одновременно. Чтобы растворить их по одному, необходимо прописать два оператора with:

    scene bg meadow
    with dissolve
    show sylvie green smile
    with dissolve

В примере выше, сначала растворяется фон луга (bg meadow), а после спрайт Сильвии (sylvie green smile). Если вы хотите, чтобы мгновенно отобразился луг, а затем появилась Сильвия, то пропишите так:

    scene bg meadow
    with None
    show sylvie green smile
    with dissolve

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

Позиционирование (Positions)[править | править код]

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

     show sylvie green smile at right

Для этого добавьте функцию at к оператору show. Функция аt занимает позицию и показывает изображение на этой позиции.


Ren'Py включает в себя несколько предварительно определенных позиций:

  • left – расположение в левой части экрана;
  • right – расположение в правой части экрана;
  • center – расположение горизонтально по центру (по умолчанию);
  • truecenter – для центрирования по горизонтали и вертикали.

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

Музыка и звуки (Music and Sound)[править | править код]

В большинстве игр музыка воспроизводится на заднем фоне. Музыка воспроизводится с помощью оператора play music. Оператор play music принимает имя файла, который рассматривается в качестве аудиофайла для воспроизведения. Анализируются имена аудиофайлов, относящиеся к директории игры. Аудиофайлы должны быть в opus, ogg vorbis или mp3 формате. Например:

    play music "illurock.ogg"

При смене музыкальных композиций, использовать fadeout и fadein, которые используются для постепенного затухания старой мелодии и постепенного нарастания новой.

    play music "illurock.ogg" fadeout 1.0 fadein 1.0

Оператор queue music воспроизводит аудиофайл после завершения воспроизведения текущего файла.

    queue music "next_track.opus"

Воспроизведение музыки может быть остановлено с помощью оператора stop music, который также, при необходимости, может использовать fadeout.

    stop music

Звуковые эффекты могут воспроизводиться с помощью оператора play sound. В отличии от музыки, звуковые эффекты не зацикливаются.

    play sound "effect.ogg"

Оператор pause (Pause Statement)[править | править код]

Оператор pause вызывается Ren'Py, чтобы остановить игру, пока пользователь не нажмёт кнопку мыши.

    pause

Если после оператора pause задаётся число (количество секунд), пауза завершится, как только заданное количество секунд истечет.

    pause 3.0

Завершение игры (Ending the Game)[править | править код]

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

    ".:. Хорошая концовка."

    return

Это всё, что вам нужно, чтобы сделать кинетическую новеллу – визуальную новеллу без каких-либо выборов.

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

Меню, Метки и Прыжки (Menus, Labels, and Jumps)[править | править код]

Оператор menu позволяет игроку сделать выбор:

    s "Конечно, но что такое \"визуальная новелла?\""

menu:

    "Это видеоигра.":
        jump game

    "Это интерактивная книга.":
        jump book

label game:

    m "Это своего рода видеоигра, в которую можно играть на компьютере или консоли."

    jump marry

label book:

    m "Это как интерактивная книга, которую можно читать на компьютере или консоли."

    jump marry

label marry:

    "И так мы стали командой по разработке визуальных новелл."

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

В этом примере каждый из двух выборов пункта меню запускает один оператор jump. Оператор jump передает управление на метку, определенную с помощью оператора label. После перехода запускаются операторы скрипта, следующие за меткой.

В примере выше, после того, как Сильвия задала свой вопрос, перед игроком появляется меню, содержащее два варианта. Если игрок выберет вариант "Это видеоигра.", запускается первый оператор jump и Ren'Py переходит к метке game. Это приведет к тому, что POV-персонаж скажет: "Это своего рода видеоигра, в которую можно играть на компьютере или консоли.", после чего Ren'Py переходит к метке marry.

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

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

Поддержка флагов с помощью оператора default, операторы Python и if (Supporting Flags using the Default, Python and If Statements)[править | править код]

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

Здесь мы покажем, как хранить флаг, содержащий информацию о выборе игрока. Чтобы инициализировать флаг, используйте оператор default перед label start.

# Принимает значение True, если игрок решил сравнить VN с книгой.
default book = False

label start:

    s "Привет! Как прошёл урок?"

Флаг book начинает инициализироваться со специальным значением False (как и для остальной части Ren'Py, имеет значение капитализация), что означает, что он не установлен. Если выбирается путь к книге, то мы можем установить значение True с помощью оператор присваивания в Python.

label book:

    $ book = True

    m "Это как интерактивная книга, которую можно читать на компьютере или консоли."

    jump marry

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

Для проверки флага, используйте оператор if:

if book:

    "Наша первая игра основана на одной из идей Сильвии, но потом я тоже придумывал свои истории."

Если условие принимает истинное значение, то запускается блок скрипта. Если нет, блок пропускается. Оператор if может также принимать выражение else, которое вводит блок скрипта, который выполняется, если условие принимает ложное значение.

if book:

    "Наша первая игра основана на одной из идей Сильвии, но потом я тоже придумывал свои истории."

else:

    "Сильвия помогла со сценарием нашей первой видеоигры."

Переменные Python не обязательно должны принимать простые значения True/False. Переменные могут использоваться для хранения имени игрока, количества набранных очков и для многих других целей. Поскольку Ren'Py включает в себя возможность использования полного языка программирования Python, многое стало возможным.

Выпуск игры (Releasing Your Game)[править | править код]

После того как вы сделали игру, есть несколько вещей, которые нужно сделать перед её выпуском:

Проверить наличие новой версии Ren'Py
Новые версии Ren'Py выпускаются на регулярной основе для исправления ошибок и добавления новых функций. Перед выпуском игры необходимо нажать кнопку «обновить» в Ren'Py Launcher, чтобы обновить Ren'Py до последней версии. Можно также загрузить новые версии и просмотреть список изменений на странице https://www.renpy.org/latest.html.
В редких случаях изменения в Ren'Py потребуют от вас внести изменения в скрипт игры. Со списком этих изменений можно ознакомиться в разделе «Несовместимые изменения».
Проверить скрипт
На главной странице Ren'Py Launcher выберите «Проверить Сценарий (Lint)». Это позволит проверить ваши игры на наличие возможных ошибок. Поскольку некоторые из этих ошибок повлияют только на пользователей других платформ, важно исправить все ошибки, даже если на вашем компьютере они не заметны.
Построить дистрибутивы
На главной странице Ren'Py Launcher нажмите «Построить дистрибутивы». Основываясь на информации из options.rpy, Ren'Py Launcher создаст один или несколько архивов, содержащих вашу игру.
Тестирование
«Проверить Сценарий» не заменит тщательное тестирование. Проверить игру до её выпуска – ваша обязанность. Подумайте о том, чтобы попросить друзей помочь с бета-тестированием вашей игры, так как часто тестер может найти проблемы, которые вы не можете.
Выпуск игры
После того как игра завершена и протестирована, вам следует разместить созданные архивные файлы в Интернете, где люди могут их увидеть (если у вас нет собственного сайта, то на https://itch.io много визуальных новелл). Поздравляю, вы выпустили свою первую визуальную новеллу!
Есть несколько мест, где можно разместить игру:
  • Список Ren'Py помогает нам отслеживать игры, созданные на Ren'Py.
  • Раздел «Завершенные игры» на форуме Lemma Soft - хорошее место, чтобы рассказать коллегам-создателям о вашей игре.

Скрипт визуальной новеллы «Вопрос» (Script of The Question)[править | править код]

Скрипт новеллы разделен на два файла:

  • script.rpy содержит основное тело игры.
  • options.rpy содержит настройки, с помощью которых можно изменить отображение составляющих игры.

Что же нам делать дальше? (Where do we go from here?)[править | править код]

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

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

В Энциклопедия Ren'Py в разделе «FAQ» вы можете найти ответы на самые распространенные вопросы по Ren'Py, а в разделе «Книга рецептов» – отрывки полезного кода.

Кроме того, мы рекомендуем проверить раздел Ren'Py на форуме Lemma Soft, в котором есть раздел для вопросов, а также раздел с книгой рецептов с библиотеками и примерами, предназначенными для повторного использования. На форуме Lemma Soft находится главный центр сообщества Ren'Py, где мы рады приветствовать новых создателей новелл и их вопросы.

Благодарим вас за выбор движка визуальных новелл Ren'Py. Мы с нетерпением ожидаем того, что вы с ним создадите!

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

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


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