renpy что это за папка
Что такое Ren’Py и с чем его едят
Ren’Py это бесплатный кросс-платформенный движок, который поможет вам сделать сюжетную игру. Это может быть:
Визуальная новелла, история, рассказанная с помощью текста, изображений, звуков и музыки. Скриптовый язык Ren’Py позволяет писать визуальные новеллы просто и эффективно, профессиональный программист для создания игры не понадобится.
Симулятор, например, симулятор свиданий или тайм-менеджер тоже можно написать на Ren’Py, используя поддержку языка Python. Движок сам позаботится о таких вещах, как постоянство и эффективный рендеринг, позволяя программисту сфокусироваться на интерфейсе и логике игры. Более того, скриптовый язык Ren’Py, на котором так просто писать визуальные новеллы, позволит добавить сюжетные вставки в ваш симулятор.
Возможности визуализации и геймплея Ren’Py могут быть расширены пользователем и достаточны для создания любой двумерной сюжетной игры.
Бесплатность
На Ren’Py можно делать как коммерческие, так и бесплатные игры. Хотя движок и его библиотеки являются open source, лицензирован от таким образом, что вы можете сами выбрать, будут у вашей игры открытые исходники или нет. Для распространения игры на Ren’Py вам не придется платить создателям движка или кому-то еще.
Кросс-платформенность
Mac OS X 10.4+ (x86 и ppc)
Linux (x86, glibc 2.3+)
Скриптовый язык
В Ren’Py используется простой язык, основанные на тексте. Вот небольшой отрывок из игры:
«Вскоре Мэри нарушила тишину, задав мне вопрос.»
show mary dark smiling
m «Я немного рассказала о своей семье. но еще не спрашивала о твоей. Какая она?»
m «Сестрой? Старшей или младшей?»
Как видно в этом примере, взятом из настоящей игры, работа со скриптом Ren’Py требует ненамного больше усилий, чем простой набор сюжетного текста. Движок даже позволяет сокращать имена персонажей и печатать m вместо «Мэри».
Ren’Py позволяет назначить персонажам и изображениям переменные. С ними очень просто вносить изменения, не переписывая всю игру. Скрипт также позволяет добиться того, чтобы определенные изображения или текст оставались неизменными на протяжении всей игры.
Вместе с движком поставляется тектовый редактор jEdit, но скриптовый язык Ren’Py основан на тексте и это позволяет работать с ним в текстовых редакторах на ваш выбор. Есть также сторонние инструменты для проверки правописания и сравнения двух версий игры.
Возможности скриптового языка:
- — Отображение диалогов и мыслей
— Игрок может делать выборы с помощью меню
— Показ и скрытие изображений
— Переходы между экранами
— Проигрывание музыки, звуков и голоса
— Переходы по меткам
— Использования языка Python для более сложных задач
Начиная с версии 6.10 появилась возможность произвольно анимировать положение камеры, делая небольшие клипы из одного или нескольких сменяющихся изображений:
Настройки по умолчанию
Ren’Py по умолчанию включает все возможности, которые игрок ожидает от визуальной новеллы. По желанию их можно отключить, но каждая новая игра будет иметь:
- — Главное меню, отображаемое перед началом игры
— Игровое меню для загрузки, сохранения и настроек
— Выбор между полноэкранным и оконным режимами
— Независимая настройка громкости музыки, звуков и голоса
— Возможность промотки текста, с ограничением на уже пройденное
— Автоматическая промотка текста на любой скорости, причем более длинный текст остается на экране дольше
— Возможность скрыть текст, чтобы игрок мог рассмотреть фон
— Отмотка на предыдущие экраны, где можно сделать другой выбор
— Предварительная загрузка фоновых изображений, ускоряющая их вывод на экран
Настройки внешнего вида и локализация
У разработчика игры множество возможностей настроить Ren’Py под свою игру:
- — Отображение текста в режиме NVL, когда на экран выводится несколько абзацев текста одновременно
— Изменение внешнего вида меню с помощью тем
— Стили, с помощью которых можно детально настроить вид игры
— Можно менять шрифт, его размер, цвет и вид. Текстовые тэги позволяют применять эти свойства к отдельным блокам текста.
— Ren’Py был переведен на множество языков, включая русский
Поддерживаемые типы файлов
Изображения: JPEG/JPG, PNG, BMP, GIF
Звук: OGG Vorbis, WAV (только несжатый PCM), MP3, MP2
Видео: Theora, MPEG 4, MPEG 2, MPEG 1
Полезные ссылки:
Краткое руководство (Quickstart)
Содержание
Ren’Py Launcher [ править ]
Перед тем, как начать создание игры, вам, прежде всего, потребуется некоторое время, чтобы узнать, как работает Ren’Py Launcher. Модуль запуска Ren’Py позволяет создавать, управлять, редактировать и запускать проекты Ren’Py.
Для начала вам нужно скачать Ren’Py. Как только вы скачали Ren’Py, вам захочется извлечь и запустить его, для этого:
После выполнения вышеуказанного, Ren’Py Launcher должен запуститься.
Ren’Py Launcher был переведён на многие языки. Для смены языка откройте «Настройки» в правом нижнем углу и выберите язык.
Выбор и запуск проекта
Сначала вам следует увидеть, что из себя представляет завершенная игра «Вопрос». Для этого запустите Ren’Py Launcher и выберите «Вопрос» на первоначальном экране. Нажмите «Запустить проект» для запуска «Вопроса».
Создание нового проекта
Создайте новый проект, выбрав «Добавить новый проект» в Ren’Py Launcher. Если вы впервые создаете проект, Ren’Py можем попросить выбрать директорию проектов. Это директория (также называемая папкой), в которой создаются новые проекты и выполняется поиск существующих проектов. Окно выбора директории может появиться под Ren’Py, так что не забудьте поискать его там.
После этого Ren’Py Launcher запросит имя проекта. Поскольку имя «Вопрос» уже занято, введите что-нибудь другое, например «My Question», и нажмите Enter.
На данном этапе Ren’Py начнет обработку, которая займет некоторое время, и выдаст простой шаблон игры. В шаблоне используется изображение-заполнитель и текст, но он работоспособен и поддерживает ожидаемые функции, такие как откат, загрузка и сохранение. Выберите «Запустить проект» для запуска.
Простая игра (A Simple Game) [ править ]
Это очень простая игра, созданная на движке Ren’Py. Он не содержит ни изображений, ни музыки, но все же демонстрирует разговор двух персонажей и строку повествования.
После того, как редактор откроется, удалите всё, что находится в 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 позволяет определить персонажей заранее. Это даёт вам возможность связать короткое имя с персонажем и изменить цвет имени персонажа.
Мы так же изменили в коде операторы say, чтобы использовать объекты Character вместо строки с именем персонажа. Это сообщает Ren’Py использовать персонажей, которых мы определили.
Изображения (Images) [ править ]
Визуальная новелла не визуальная новелла без картинок. Вот еще одна сцена из новеллы «Вопроса». Она также включает операторы, которые выводят изображения перед игроком. Данный пример кода может полностью заменить предыдущий раздел скрипта, если вы захотите протестировать его.
Эта часть скрипта вводит два новых оператора:
В Ren’Py у каждого изображения есть имя. Имя состоит из тега и, если нужно, одного или нескольких атрибутов. И тег, и атрибуты должны начинаться с буквы и содержать буквы, цифры и подчеркивания. Например:
Одновременно на экране может отображаться только одно изображение с заданным тегом. При отображении второго изображения с этим же тегом, что и у изображения, выведенного на экран ранее, второе заменяет первое изображение, как это происходит в 26-й строке.
Например, следующие файлы, помещенные в директорию images, определяют следующие изображения:
Поскольку имена файлов пишутся строчными буквами, нижеследующее также имеет место.
Изображения могут быть помещены в подкаталоги (вложенные папки) в директории images. Имя каталога игнорируется и для определения имени изображения используется только имя файла.
Оператор hide (Hide Statement) [ править ]
Ren’Py также поддерживает оператор hide, который скрывает заданное изображение.
Довольно редко, когда вам понадобится использовать оператор hide. Когда персонаж изменяет эмоции, можно использовать оператор show, кроме того оператор scene используется, когда все элементы исчезают с экрана. Следует использовать оператор hide только тогда, когда персонаж уходит, а место действия остаётся неизменным.
Оператор image (Image Statement) [ править ]
В некоторых случаях разработчик, возможно, не захочет, чтобы Ren’Py автоматически определял изображения. Именно для этого используется оператор image. Он должен находиться на верхнем уровне файла (без отступа и перед label start) и может использоваться для сопоставления имени изображения с файлом изображения. Например:
Переходы (Transitions) [ править ]
В приведенном выше скрипте изображения мгновенно появляются и исчезают. Поскольку изменение локации или появление персонажа или его выход из сцены важны, Ren’Py поддерживает переходы, позволяющие применять эффекты, когда изменяется показанное на экране.
Когда переход находится после нескольких операторов scene, show и hide, то он затронет все сразу. Для этого нужно прописать:
Оба изображения и «bg meadow», и «sylvie green smile» будут растворяться одновременно. Чтобы растворить их по одному, необходимо прописать два оператора with:
В примере выше, сначала растворяется фон луга (bg meadow), а после спрайт Сильвии (sylvie green smile). Если вы хотите, чтобы мгновенно отобразился луг, а затем появилась Сильвия, то пропишите так:
Здесь None используется для обозначения специального перехода, который обновляет идею Ren’Py о том, что предыдущий экран был, но при этом ничего не показывал пользователю.
Позиционирование (Positions) [ править ]
По умолчанию, изображения отображаются в центре по горизонтали и своей нижней границей касаются нижнего края экрана. Это обычно хорошо для фонов и спрайтов одиночных персонажей, но когда на экран выводится больше, чем один персонаж, вероятно, имеет смысл разместить их в разных позициях. Это также имеет смысл, чтобы переместить персонажа для целей повествования.
Для этого добавьте функцию at к оператору show. Функция аt занимает позицию и показывает изображение на этой позиции.
Ren’Py включает в себя несколько предварительно определенных позиций:
Разработчик может определить собственные позиции и сложные перемещения, но данная информация выходит за пределы данного краткого руководства.
Музыка и звуки (Music and Sound) [ править ]
В большинстве игр музыка воспроизводится на заднем фоне. Музыка воспроизводится с помощью оператора play music. Оператор play music принимает имя файла, который рассматривается в качестве аудиофайла для воспроизведения. Анализируются имена аудиофайлов, относящиеся к директории игры. Аудиофайлы должны быть в opus, ogg vorbis или mp3 формате. Например:
При смене музыкальных композиций, использовать fadeout и fadein, которые используются для постепенного затухания старой мелодии и постепенного нарастания новой.
Оператор queue music воспроизводит аудиофайл после завершения воспроизведения текущего файла.
Воспроизведение музыки может быть остановлено с помощью оператора stop music, который также, при необходимости, может использовать fadeout.
Звуковые эффекты могут воспроизводиться с помощью оператора play sound. В отличии от музыки, звуковые эффекты не зацикливаются.
Оператор pause (Pause Statement) [ править ]
Оператор pause вызывается Ren’Py, чтобы остановить игру, пока пользователь не нажмёт кнопку мыши.
Если после оператора pause задаётся число (количество секунд), пауза завершится, как только заданное количество секунд истечет.
Завершение игры (Ending the Game) [ править ]
Вы можете завершить игру, запустив оператор return без дополнительных вызовов. Прежде чем сделать это, лучше всего добавить что-то в игру, чтобы сообщить игроку, что игра заканчивается и, возможно, дать концовке номер или название.
Это всё, что вам нужно, чтобы сделать кинетическую новеллу – визуальную новеллу без каких-либо выборов.
Теперь мы рассмотрим, что нужно для того, чтобы сделать игру, которая предоставляет пользователю возможность выбора.
Меню, Метки и Прыжки (Menus, Labels, and Jumps) [ править ]
Оператор menu позволяет игроку сделать выбор:
В этом примере показано, как можно использовать меню с Ren’Py. Оператор menu вводит внутриигровой выбор. Для этого требуется блок с отступом строк, каждая из которых состоит из последовательности символов, за которой следует двоеточие. Это выборы пунктов меню, представленные игроку. Каждому выбору пункта меню требуется свой собственный блок с отступом строк, который запускается при выборе пункта меню.
В этом примере каждый из двух выборов пункта меню запускает один оператор jump. Оператор jump передает управление на метку, определенную с помощью оператора label. После перехода запускаются операторы скрипта, следующие за меткой.
Если в конце блока, связанного с меткой, отсутствует оператор jump, Ren’Py продолжит выполнение со следующего оператора. Последний оператор jump здесь технически ненужен, но включен, так как он делает игровой процесс понятнее.
Поддержка флагов с помощью оператора default, операторы Python и if (Supporting Flags using the Default, Python and If Statements) [ править ]
В то время как некоторые игры могут быть сделаны только с помощью приведенных выше операторов, для других игр необходимо хранить данные и позже их вызвать. Например, возможно, имеет смысл игре запомнить выбор, сделанный игроком, вернуться к общему разделу скрипта и действовать по выбору позже. Это одна из причин, по которой Ren’Py имеет встроенную поддержку языка программирования Python.
Здесь мы покажем, как хранить флаг, содержащий информацию о выборе игрока. Чтобы инициализировать флаг, используйте оператор default перед label start.
Флаг book начинает инициализироваться со специальным значением False (как и для остальной части Ren’Py, имеет значение капитализация ), что означает, что он не установлен. Если выбирается путь к книге, то мы можем установить значение True с помощью оператор присваивания в Python.
Строки, начинающиеся со знака доллара, интерпретируются как операторы в Python. Оператор присваивания здесь присваивает значение переменной. Ren’Py поддерживает другие способы включения Python, например многострочный оператор, который рассматривается в других разделах этого руководства.
Для проверки флага, используйте оператор if:
Если условие принимает истинное значение, то запускается блок скрипта. Если нет, блок пропускается. Оператор if может также принимать выражение else, которое вводит блок скрипта, который выполняется, если условие принимает ложное значение.
Переменные Python не обязательно должны принимать простые значения True/False. Переменные могут использоваться для хранения имени игрока, количества набранных очков и для многих других целей. Поскольку Ren’Py включает в себя возможность использования полного языка программирования Python, многое стало возможным.
Выпуск игры (Releasing Your Game) [ править ]
После того как вы сделали игру, есть несколько вещей, которые нужно сделать перед её выпуском:
Скрипт визуальной новеллы «Вопрос» (Script of The Question) [ править ]
Скрипт новеллы разделен на два файла:
Что же нам делать дальше? (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. Мы с нетерпением ожидаем того, что вы с ним создадите!
Основы языка программирования (Language Basics)
Содержание
Прежде чем мы сможем описать язык программирования на движке Ren’Py, сначала мы должны рассказать о структуре скрипта визуальной новеллы, созданной на данном движке. Структура скрипта включает информацию о том, как файлы разбиваются на блоки, состоящие из строк, и как эти строки разделяются на элементы, которые образуют операторы.
Файлы (Files) [ править ]
Скрипт игры на Ren’Py состоит из всех файлов, найденных в папке игры, с расширением .rpy. Ren’Py рассмотрит каждый из этих файлов (в порядке Юникода) и использует содержимое файлов в качестве скрипта.
Как правило, нет разницы между скриптом, разбитым на несколько файлов, и скриптом, состоящим из одного большого файла. Управление между файлами может передаваться через прыжки (оператор jump) или вызов метки в другом файле. Это делает разделение скрипта на файлы делом вкуса, так как некоторые разработчики игр предпочитают маленькие файлы (к примеру, по файлу на событие или день), тогда как другие предпочитают один большой скрипт.
Базовый каталог (Base Directory) [ править ]
Базовый каталог – каталог, содержащий все файлы, распространяемые вместе с игрой (может также содержать некоторые не распространяемые вместе с игрой файлы). Такие файлы, как README, должны быть помещены в базовый каталог, откуда они будут распространены.
Базовый каталог создаётся внутри директории Ren’Py и называется именем вашей игры. К примеру, если папка с Ren’Py называется «renpy-6.11.2», а ваша игра – «HelloWorld», то базовый каталог этой игры будет «renpy-6.11.2/HelloWorld».
Директория игры (Game Directory) [ править ]
Директория игры почти всегда является папкой с названием «game» внутри базового каталога. К примеру, если базовый каталог – «renpy-6.11.2/HelloWorld», то директория игры будет «renpy-6.11.2/HelloWorld/game».
Однако следует учитывать, что Ren’Py выполняет поиск директорий в следующем порядке:
Тем не менее Ren’Py Launcher будет корректно распознавать папки «game» и «data».
Директория игры содержит все файлы, используемые в игре. Она, включая все подкаталоги, сканируется Ren’Py на наличие файлов .rpy и .rpyc и они объединяются для создания скрипта игры. Директория игры сканируется на наличие архивных файлов .rpa и они автоматически используются игрой. Наконец, когда игра указывает путь к файлу загрузки, он загружается относительно директории игры (но учтите, что config.searchpath может изменить это).
Комментарии (Comments) [ править ]
Скрипт Ren’Py может содержать комментарии. Комментарий начинается со знака решётки и заканчивается в конце строки, содержащей комментарий. В порядке исключения комментарий не может быть частью строки, заключенной в двойные кавычки.
Ren’Py игнорирует комментарии, так что скрипт обрабатывается так, словно в нём нет комментария.
Логические строки (Logical Lines) [ править ]
Файл скрипта разбивается на логические строки. В файле логическая строка всегда начинается с начала строки. Логическая строка заканчивается в конце строки, кроме тех случаев, когда:
После того, как логическая строка заканчивается, следующая логическая строка начинается с начала следующей строки.
Большинство операторов на языке Ren’Py состоять из одной логической строки, в то время как некоторые операторы состоят из нескольких строк.
Пустые логические строки игнорируются Ren’Py.
Отступы и блоки (Indentation and Blocks) [ править ]
Отступы – имя, которое мы даем пространству в начале каждой логического строки, которое используется для выравнивания операторов Ren’Py. В Ren’Py отступы должны состоять только из пробелов.
Отступы используется для группировки операторов в блоки. Блок представляет собой группу строк и часто группу операторов.
Правила для разделения файла на блоки:
Отступ очень важен для Ren’Py и является причиной синтаксических или логических ошибок, когда расположен неправильно. В то же время использование отступов для передачи структуры блока дает нам возможность указывать на эту структуру, не перегружая текст скрипта.
Инициализация (Init) [ править ]
Оператор init используется для выполнения блоков операторов Ren’Py до того, как скрипт будет запущен. Блоки инициализации используются для определения изображений и персонажей, настройки структуры постоянных данных игры и персонализации Ren’Py. Внутренний код блоков инициализации не должен взаимодействовать с пользователем или изменять какие-либо слои, как и содержать операторы say, menu, scene, show и hide, а также вызывать любую функцию, которая может выполнить вышеуказанное.
Указатель приоритета используется для определения порядка выполнения кода в блоке инициализации. Блоки инициализации выполняются в приоритетном порядке возрастания номеров. В пределах файла скрипта, блоки инициализации с одинаковым приоритетом выполняются в порядке от верхней части файла вниз. Порядок оценки последовательности выполнения приоритетных блоков с одинаковым приоритетом между файлами скрипта не определен.
Блоки инициализации исполняются только один раз, во время специальной фазы инициализации. Когда контроль достигает конца такого блока во время нормального выполнения кода скрипта, его выполнение заканчивается. Если оператор init возникает во время нормального выполнения файла скрипта, такой блок инициализации не выполняется. Вместо этого управление передается следующему оператору.
Элементы операторов Ren’Py (Elements of Statements) [ править ]
Операторы Ren’Py состоят из нескольких основных частей:
Общий синтаксис для оператора (Common Statement Syntax) [ править ]
Большинство операторов Ren’Py имеют общий синтаксис. За исключением оператора say, операторы начинаются с ключевого слова, которое вводит оператор в код. За ключевым словом следует параметр, если оператор его принимает.
После параметра следует одно или несколько свойств. Свойства могут быть заданы в любом порядке, при условии, что каждое свойство задается только один раз. Свойство начинается с ключевого слова. Для большинства свойств за именем свойства следует один из приведенных выше элементов синтаксиса.
Синтаксис выражения языка Python (Python Expression Syntax) [ править ]
Заметка: Возможно, вам нет необходимости внимательно читать данный раздел прямо сейчас. Вместо этого, пропустите его и если окажется, что вы не в состоянии понять пример или хотите выяснить, как что-то фактически работает, вы сможете вернуться к разделу и ознакомиться с ним.
Многие элементы Ren’Py принимают выражения языка Python. Например, определение нового персонажа связано с вызовом функции Character. Хотя выражения Python очень эффектны, только часть возможностей необходима для написания базовой игры на движке Ren’Py.
Вот краткий обзор выражений Python:
При чтении этой документации, вы можете заметить сигнатуру функции как:
Sample (name, delay, position=(0, 0), **properties) Пример функции, которая фактически не существует в Ren’Py, но используется только в документации.
Поскольку функция заканчивается на **properties, это значит, что она может принимать свойства стиля в качестве дополнительных именованных аргументов. Другими специальными значениями являются *args (означает, что функция принимает произвольное число позиционных параметров) и **kwargs (означает, что именованные аргументы описаны в документации).
Python является гораздо более мощным языком программирования, чем поместилось в этом руководстве. Чтобы изучить Python более подробно, мы рекомендуем начать с учебника по Python, который доступен на сайте python.org. Хотя мы и не считаем, что глубокое знание языка Python необходимо для работы с движком Ren’Py, основные положения о операторах и выражениях языка Рython часто оказываются полезными.
Источник [ править ]
Статья «Language Basics» на английском языке.