6 Renpy - Базовый синтаксис, часть 2
В предыдущем уроке мы создали первую простую игру на Renpy. Теперь познакомимся с ещё несколькими базовыми возможностями движка, чтобы расширить нашу демо-версию.
Создайте новый .rpy файл в своём проекте и назовите его к примеру character.rpy. Здесь мы будем прописывать всех персонажей игры. Напишите следующее:
* Весь код из урока будет в файле под этим постом, однако желательно учиться писать код самостоятельно руками. Таким образом быстрее запоминается правильное написание команд и ключевых слов.
Если вы знакомы с языком программирования Python и ООП, то узнаете в этой строке объект класса. Если нет, сейчас разберёмся, что это за конструкция в Renpy, без углубления в программирование.
Команда define используется для создания переменных, которые могут хранить в себе определённую информацию. Представьте склад со множеством коробок. Каждая коробка имеет своё название и определённое содержимое.
В примере выше rei - это переменная (название коробки), которая хранит содержимое (параметры персонажа) Character(_('Рей'), color="#4444ff"). Команда define сообщает движку запомнить переменную rei с таким содержимым. Знак равно (=) является символом присвоения, он привязывает содержимое к коробке.
***
Имена переменных могут быть любыми, однако они должны состоять из одного слова и иметь более менее осмысленное название, чтобы вы сами понимали, что значит та или иная переменная. Когда есть необходимость создать переменную из несколько слов, используется нижнее подчёркивание или каждое новое слово пишется с большой буквы слитно: character_variable_rey или CharacterVariableRey. Т.е. чтобы длинное название всё равно являлось одним словом.
В нашем случае мы сообщили движку создать переменную (define) с именем rei и содержимым после знака присвоения =. Теперь эта переменная хранит персонажа с именем _("Рей") и цветом текста имени color="#4444ff".
Откройте script.rpy и добавьте перед репликой персонажа переменную rei
После этого в игре будет появляться имя персонажа, который говорит в данный момент.
Чтобы прописать определённый цвет воспользуйтесь табличками кодов, которые можно найти в интернете, или используйте эту:
Теперь давай привяжем к персонажу спрайты, которые ранее мы добавили в папку images. Поставьте запятую после кода цвета и укажите изображение:
define rei = Character(_('Рей'), color="#4444ff", image="rei")
Таким образом мы привязали все изображения с названием rei к персонажу.
Обратите внимание как именуются спрайты. Каждый из них имеет базовый тег с именем персонажа (rei) и через пробел дополнительное название с другой позой или эмоцией. Благодаря этому мы можем менять позы и эмоции персонажа хоть каждую реплику. Для этого перед репликой возле переменной допишите название нужного спрайта.
Следующий момент - эффект при отображении спрайтов и картинок. Сейчас при смене изображений они появляются резко. Можно добавить им определённый эффект для плавности.
Если вы посмотрели тестовые новеллы "Вопрос" и "Обучение", с некоторыми эффектами вы уже знакомы. Если нет - не страшно. В процессе мы познакомимся с ними подробней и научимся создавать свои эффекты. На данном этапе нам достаточно двух, самых часто используемых эффектов.
fade - отображает изображение из затемнения / в затемнение
dissolve - отображает с эффектом растворения
with - ключевое слово, которое используется для отображения таких эффектов
Допишите эти эффекты к фону и спрайту, чтобы увидеть как они работают:
Давайте создадим ещё двух персонажей в файле character.rpy, чтобы спрайты не лежали без дела.
Для удобства мы создали переменные с коротким названием, так как они могут очень часто использоваться в коде. Теперь наши персонажи могут общаться между собой. Для этого давайте допишем ещё пару строк.
Если мы запустим игру спрайты персонажей будут наложены друг на друга:
Чтобы избегать таких казусов нужно использовать позиционирование спрайтов на экране. По умолчанию в движке есть несколько основных позиций. В будущем мы научимся создавать любые другие.
left - отображает спрайт слева
center - отображает спрайт по центру
right - отображает справа
at - ключевое слово для указания позиции
Таким образом мы можем разместить всех персонажей на экране одновременно.
Обратите внимание, что движок запоминает позицию персонажа, поэтому при смене позы не нужно снова прописывать его расположение. Достаточно написать show sawai sad и на том же месте, где она была ранее, один спрайт заменит другой.
Если есть необходимость показать на экране несколько персонажей одновременно, нужно использовать для них один общий эффект:
Используя для каждого персонажа отдельный эффект, они отобразятся по очереди, сначала один, потом другой:
Команда hide - используется когда нужно скрыть персонажа с экрана:
pause - используется для приостановки скрипта, пока игрок не кликнет по экрану
pause 5 - тормозит скрипт на указанное количество секунд
Таким образом вы можете продолжить разработку своей игры, добавив новых персонажей, спрайты и фоны. А затем скомпелировать новую версию, когда посчитаете нужным.
***
Скрипты из урока:
rpy
character.rpy255 Byte
rpy
script.rpy1.36 Kb
In bundle
renpy
разработка игр
визуальная новелла
программирование
ренпи
ренпай