RenPy. Урок 1. Базовые команды
от BPS
Автор: lolbot
Курс посвящен не столько Ren'Py вообще, сколько моддингу everlasting_summer-1.2. Однако данные знания будут полезны и при создании игр на данном движке.
Целевая аудитория: желающие попробовать себя на роль сценариста и/или редактора.
Требуемые навыки: уметь редактировать текстовые файлы, обладать зачатками разума.
Что нам понадобится?Текстовый редактор, поддерживающий:
- Unicode, в частности UTF-8
Под Windows я использую AkelPad, под Linux - Kate
Как грузится Ren'Py?1. Компилирует все файлы *.rpy в папке /game/. Результат = *.rpyc-файлы
2. Загружает все *.rpyc-файлы из папки /game/
Вывод: если подложить .rpy-файл в любое место в папке /game/, то он подгрузится
Кстати, имя файла ни на что не влияет.
Структура rpy-файла- Текстовый, человекочитаемый файл
- 1 команда = 1 непустая строка файла
- Исключение - блоки
-- Блок имеет команду-шапку на первой строке.
-- А также команды-строки, входящие в него
--- Которые тоже могут быть блоками
-- Вложенные команды - на 4 пробела правее
Базовые команды label, jump и returnlabel <метка> - единственный в этом уроке блок
Команды внутри него выполняются сверху вниз
jump <метка> - переход к 1-й команде соответствующего блока
return - возврат к главному меню игры.
Базовые команды: описания и реплики"Вот так оформляется текст от имени автора"
th "Вот так оформляются мысли Семёна, те самые, которые с ~ по краям"
me "Реплика вслух от имени Семёна"
ОСТОРОЖНО: длинная строка не поместится в отведенную в игре рамочку.
Список фонов
show <персонаж> <спрайт> - показать спрайт
Список спрайтов
hide <персонаж> - скрыть персонажа. При смене фона hide можно не делать, scene скроет их.
play music <музыка> - начать играть музыку.
Список музыки
stop music - прекратить играть музыку.
# <коммент> - такие строки Ren'Py игнорирует
Пустые строки не влияют на выполнение кода, просто делают его понятнее визуально.
Возможные ошибки
Tab characters are not allowed in Ren'Py scripts. - где-то табуляция вместо пробелов.
is not terminated with a newline. (Check strings and parenthesis.) - не закрыта кавычка
intendation mismatch - проверьте, всегда ли отступаете по 4 пробела
expexted statement - неправильная команда
При передаче show/scene необъяленного изображения предупреждение возникнет лишь во время игры. Сверху появится надпись "Undefined images" и имя изображения.
При попытке передать play неправильную музыку, ошибка возникнет во время игры. Игра упадет с ошибкой KeyError: '<музыка>'
$регистрация модификации
Для того, чтобы появилась возможность запуска модификаций, нужно зарегистрировать ваш мод. Вставляем следующий код в начало rpy-файла:
init:
$ mods ["<ник>__<название_метки_перехода>"] = u"<Название мода>"
Для запуска нужно перейти в меню "Моды и сценарии" и выбрать <Название мода>, после чего произойдет переход к метке <название_метки_перехода>.
Например:
init:
$ mods ["student1__lesson2_task1"] = u"Сцена 1"
label student1__lesson2_task1:
...
Обратите внимание, ник нужно отсекать ДВУМЯ подчеркиваниями __
Курс посвящен не столько Ren'Py вообще, сколько моддингу everlasting_summer-1.2. Однако данные знания будут полезны и при создании игр на данном движке.
Целевая аудитория: желающие попробовать себя на роль сценариста и/или редактора.
Требуемые навыки: уметь редактировать текстовые файлы, обладать зачатками разума.
Что нам понадобится?Текстовый редактор, поддерживающий:
- Unicode, в частности UTF-8
Открыть спойлер
- Как CR/LF, так и Unix end of lineОткрыть спойлер
- (желательно) замену табуляции на 4 пробелаПод Windows я использую AkelPad, под Linux - Kate
Как грузится Ren'Py?1. Компилирует все файлы *.rpy в папке /game/. Результат = *.rpyc-файлы
2. Загружает все *.rpyc-файлы из папки /game/
Вывод: если подложить .rpy-файл в любое место в папке /game/, то он подгрузится
Кстати, имя файла ни на что не влияет.
Структура rpy-файла- Текстовый, человекочитаемый файл
- 1 команда = 1 непустая строка файла
- Исключение - блоки
-- Блок имеет команду-шапку на первой строке.
-- А также команды-строки, входящие в него
--- Которые тоже могут быть блоками
-- Вложенные команды - на 4 пробела правее
Базовые команды label, jump и returnlabel <метка> - единственный в этом уроке блок
Команды внутри него выполняются сверху вниз
jump <метка> - переход к 1-й команде соответствующего блока
return - возврат к главному меню игры.
Базовые команды: описания и реплики"Вот так оформляется текст от имени автора"
th "Вот так оформляются мысли Семёна, те самые, которые с ~ по краям"
me "Реплика вслух от имени Семёна"
ОСТОРОЖНО: длинная строка не поместится в отведенную в игре рамочку.
Все говорящие
scene <фон> - очистить сцену и показать фонСписок фонов
show <персонаж> <спрайт> - показать спрайт
Список спрайтов
hide <персонаж> - скрыть персонажа. При смене фона hide можно не делать, scene скроет их.
play music <музыка> - начать играть музыку.
Список музыки
stop music - прекратить играть музыку.
# <коммент> - такие строки Ren'Py игнорирует
Пустые строки не влияют на выполнение кода, просто делают его понятнее визуально.
Все вместе
Возможные ошибки
Tab characters are not allowed in Ren'Py scripts. - где-то табуляция вместо пробелов.
is not terminated with a newline. (Check strings and parenthesis.) - не закрыта кавычка
intendation mismatch - проверьте, всегда ли отступаете по 4 пробела
expexted statement - неправильная команда
При передаче show/scene необъяленного изображения предупреждение возникнет лишь во время игры. Сверху появится надпись "Undefined images" и имя изображения.
При попытке передать play неправильную музыку, ошибка возникнет во время игры. Игра упадет с ошибкой KeyError: '<музыка>'
$регистрация модификации
Для того, чтобы появилась возможность запуска модификаций, нужно зарегистрировать ваш мод. Вставляем следующий код в начало rpy-файла:
init:
$ mods ["<ник>__<название_метки_перехода>"] = u"<Название мода>"
Для запуска нужно перейти в меню "Моды и сценарии" и выбрать <Название мода>, после чего произойдет переход к метке <название_метки_перехода>.
Например:
init:
$ mods ["student1__lesson2_task1"] = u"Сцена 1"
label student1__lesson2_task1:
...
Обратите внимание, ник нужно отсекать ДВУМЯ подчеркиваниями __
Домашнее задание урока 1