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

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

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

372subscribers

84posts

Showcase

16

21 Как запомнить выбор игрока в Renpy

Чтобы запомнить выбор игрока в Renpy используются переменные. Их можно представить как коробки или ячейки, в которых хранится какая-то информация. Каждая такая коробка имеет своё название, благодаря которому мы можем понимать, что внутри неё. Переменные могут содержать числа, текст, логические значения (True/False) или более сложные структуры данных.
Чтобы создать переменную в Renpy используется операторы default и define. Ранее мы с ними уже сталкивались, когда создавали персонажей, и производили различные настройки.
Размещать переменные лучше всего в начале сценария или в отдельном файле. Важно давать переменным понятные имена (например, romance_points вместо rp), чтобы спустя некоторое время разработки вы не забыли их назначение.
***
Переменные называются переменными, потому что их содержимое может изменяться. Т.е. мы можем хранить в такой коробке одни данные, потом добавить другие, а затем всё выкинуть и наполнить коробку новой информацией. Однако, некоторую информацию следует запоминать навсегда (например параметры персонажей или настройки громкости), такие переменные неизменяемы (константы) или постоянны.
Ключевое отличие между default и define заключается в поведении при загрузке сохранений. Оператор default устанавливает значение переменной только при первом запуске игры или при начале новой игры. Если игрок загрузит сохранение, где эта переменная уже имела изменённую информацию, default его не перезапишет. Т.е. default используем для игровых переменных (очки отношений, инвентарь, выборы).
Оператор define, напротив, устанавливает константное значение, которое не сохраняется в слотах игры и восстанавливается при каждой загрузке. Его стоит использовать для констант: размеров экрана, цветов текста, путей к изображениям. Например: define character_width = 200.
Если использовать define для игровых переменных, их значения будут сбрасываться при загрузке к значениям по умолчанию.
***
Как работать с переменными
На уроках математики в школе мы часто решали задачи по типу x + y = z. Если представить, что каждый символ - это переменная, содержащая определённое число, то движок можно использовать как калькулятор.
Теперь сложим первые две переменные и сохраним результат:
Переменная Z сохранит число, которое получится в результате сложения переменных X и Y. То есть 5 + 10 = 15 (Это число сохранит переменная Z)
Чтобы отобразить содержимое переменной в игре используются квадратные скобки [ ], внутри них пишем название нужной переменной.
В примере выше переменная Z по умолчанию хранила число ноль, но после прохождения игроком строки $ z = x + y она теперь хранит число 15.
Символ $ сообщает движку, что следующие после него инструкции нужно выполнить на языке Python (язык программирования).
Когда у нас несколько строчек с разными инструкциями, мы можем поставить перед каждой символ $ или создать блок Python: внутри которого прописать весь необходимый код.
В примере два равнозначных варианта изменения переменных. Символ $ - работает как блок Python, но только для одной строки.
***
Постоянные переменные сохраняются между игровыми сессиями даже после полного выхода из игры. Ранее мы с ними сталкивались, когда настраивали скорость печати текста и настройки громкости музыки. Т.е. данные в таких переменных изменяемы, но сохраняются вне игры.
Для создания своих постоянных переменных используется специальный префикс persistent. перед переменной. Например default persistent.galery = False
Если мы создадим переменную без префикса default galery = False на старте игры галерея будет выключена. В процессе игры игрок может её разблокировать (изменить переменную на True). Однако, если мы начнём новую игру, переменная снова будет равна False.
Если использовать постоянную переменную persistent.default galery = False, то с началом новой игры переменная сохранит значение True и игроку не придётся снова разблокировать галерею. Т.е. переменная может изменяться, но хранит постоянное значение, чтобы игроку не приходилось постоянно перенастраивать громкость музыки, разрешение экрана, открывать одни и те же ачивки или галерею.
***
Чтобы запомнить выбор игрока, нам нужно сохранить этот выбор в переменной. Например создадим переменную:
default uzuki_remembers = None
None означает ничего. Т.е. мы создали переменную, в которой пока ничего нет.
Далее в момент выбора игроком определённого варианта ответа, мы можем изменить эту переменную, записав в неё нужное значение.
В примере выше в зависимости от выбора игрока в переменной будет сохранено определённое слово. По которому в будущем мы можем узнать его выбор.
Переменная [uzuki_remembers] отобразит своё содержимое, которое было записано туда при выборе игроком варианта ответа.
***
Предыдущий урок:
20 Как сделать кнопки выбора и развилки в Renpy
Следующий урок:
22 Последствия выборов и разные концовки в Renpy
Subscription levels3

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

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

Колонист

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

Штурман

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