Анатолий Адонин

Анатолий Адонин 

Разработка на Python / Renpy

372subscribers

84posts

Showcase

16

4 Renpy - Базовый синтаксис

Базовый синтаксис Renpy включает в себя всего несколько основных инструкций, которые позволяют создать полноценную новеллу. Такие новеллы состоят из изображений, спрайтов и текста.
На экране мы отобразили задний фон, спрайт персонажа и вывели текст. В коде это выглядит так:
*Бусти не умеет отображать код с табуляцией, поэтому в примерах будут скриншоты кода, а внизу поста файл с кодом, который можно скачать и изучить.
Итак, для создания этой сцены нам потребовалось несколько строк кода.
label - это одна из самых важных и часто используемых инструкций. Это метка с именем, которая отмечает определённое место в сценарии. В данном случае она имеет имя start, с неё начинается игра при переходе из главного меню.
В игре может быть множество лейблов, по которым можно перемещаться. Для этого используется команда jump (прыгнуть). Чтобы прыгнуть к другой метке мы так и пишем "прыгни к метке", например jump prolog.
Команда scene используется для отображения фоновых картинок. После неё пишется название картинки, которую нужно отобразить (сцена улица - scene srteet). Данная команда имеет свойство очищения предыдущих изображений. Т.е. если ранее были отображены фоны и спрайты, то объявление новой сцены (scene) автоматически удалит их с экрана. Это полезно при смене локации, чтобы не скрывать с экрана каждый фон и спрайт по отдельности.
Команда show также показывает изображение, но поверх текущего фона (спрайт персонажа, объект и т.д.) Т.е. мы пишем show и название спрайта (покажи Рея - show rei).
Обратите внимание, что фоны тоже можно отображать командой show, например show street, тогда они отобразятся поверх ранее вызванных изображений. Это может быть полезно в некоторых случаях. Однако не стоит отображать фоны командой show вместо scene без необходимости. Так как предыдущие изображения остаются в памяти, они продолжают находится под слоем нового фона. Это может сказаться на производительности слабых ПК.
Изображения, которые используются в игре следует поместить в папку image вашего проекта (название проекта/game/images). Таким образом движок сам их найдёт без необходимости прописывать путь к картинке.
Т.е. если поместить картинку в другую директорию, например в папку gui, то для отображения на экране нужно прописать точный путь, чтобы движок нашёл картинку (show expression "gui/bubble.png").
После того как мы вывели фон и спрайт на экран, следует реплика. Для написания диалогов используются одинарные ' ' или двойные кавычки " ". Текст внутри них будет отображён на экране. Каждая новая строка будет появляться после клика игрока.
Команда return завершает выполнение текущего лейбла и возвращает управление обратно туда, откуда этот лейбл был вызван. В нашем случае label start был вызван из главного меню, поэтому после завершения всех строк сценария игра выйдет обратно в главное меню.
Чтобы логика кода и вашего повествования не нарушалась, в конце каждого лейбла следует прописывать команду jump, куда следует перейти дальше.
На изображении выше у нас есть несколько лейблов, в конце каждого команда jump сообщает движку куда следует прыгнуть, какую часть кода использовать. По умолчанию Renpy читает весь код по порядку - сверху вниз. Если мы удалим команды jump, то движок, идя по порядку, из label start перейдёт в label part_1, а затем в label prolog, что нарушит логику сюжета.
Также в конце лейбла может быть команда return, если необходимо вернуться к месту, откуда текущий лейбл был вызван командой call.
На скриншоте выше команда call flashback вызовет соответствующий лейбл, а затем вернётся к месту после его вызова. Если вместо call flashback мы напишем jump flashback, то перейдём туда безвозвратно, а команда return вернёт нас в главное меню.
***
Отступы. Вы заметили, что после каждого лейбла, строки, относящиеся к нему, имеют отступ от левого края. Обычно это 4 пробела. Их может быть меньше или больше, но 4 является общепринятым стандартом. Сделать один отступ можно клавишей Tab, которая автоматически поставит 4 пробела. Shift + Tab вернёт курсор на 4 пробела назад (влево).
Отступы являются важной частью синтаксиса. Они ставятся после каждого двоеточия (:), сообщая движку, что следующие строки являются частью одного блока кода. Это можно представить как список, где мы пишем заголовок (label start:), и далее после двоеточия перечисляем в столбик набор инструкций:
Покажи фон (scene street)
Покажи спрайт (show rei)
"Текст"
Прыгни к следующему списку инструкций (jump patr_1)
***
И последнее: часто есть необходимость оставить в коде какие-то заметки и комментарии для себя и других разработчиков. Эти комментарии можно писать после символа решётка #. Всё, что написано в строке после решётки движок не учитывает.
Для многострочных комментариев можно использовать тройные одинарные или тройные двойные кавычки.
***
Код из урока:
rpy
script.rpy864 Byte
Предыдущий урок:
3 Renpy - Редактор для кода

Следующий урок:
5 Renpy - Создаём первую игру
Subscription levels3

Личный состав

$1 per month
Участник экспедиции

Колонист

$2.65 per month
С комфортом до Бетельгейзе

Штурман

$5.3 per month
Штурмуем геймдев - Пошаговые уроки с нуля до профи
Учимся создавать игры на Renpy
Программируем на Python
Go up