Уроки 11-20
Оформление, сюжет, действия
В этом разделе:
Урок 11: Монологи и дописывание текста после щелчка.
Разберем несколько полезных хитростей.
Как вывести только часть фразы и дописать следующую часть после щелчка?
Как менять спрайт персонажа посреди реплики?
Как удобно писать длинный монолог или слова автора?
Заметки и фрагменты кода
# {w} - подождать щелчка мыши
d "Привет. Ты мне очень...{w} не нравишься."
# {w=1.5} - подождать полторы секунды
d "Привет. Ты мне очень...{w=2} не нравишься."
# exdend - продолжить реплику последнего говорившего персонажа
# при этом можно изменить спрайт героя
d "Привет. Ты мне очень "
show dimon angry
d "не нравишься."
# Текст в тройных кавычках считается одним целым, даже, если в нем много строк.
# Для новой реплики нужно оставить пустую строку.
# В этом примере Димон произнесёт две фразы.
d '''
Привет. Я Димон.
Как у тебя дела?
У меня вот хорошо. Но это никому не интересно.
'''
Урок 12: Основы написания сценария.
Как написать хороший сценарий? Что такое арка персонажа? Что такое три акта сюжета? Как придумать интересную идею?
В этом уроке коротко обсудим какие важные детали и элементы нужно проработать, чтоб ваш сюжет был адекватным. Пройдемся по сюжету в целом, проработке персонажей и процессу написания сценария вашей новеллы.
Это мой краткий пересказ курса "Pixar in a box". Если вы хорошо понимаете английский язык, я очень советую пройти этот курс самостоятельно, пройдя по этой ссылке.
Далее, используя принципы, о которых я говорил в прошлом видео, создадим полноценный сюжет для визуальной новеллы.
Тут вы можете увидеть, как правильные вопросы помогают проработать множество важных деталей, и сделать адекватный сюжет.
Помните, что вы не обязаны следовать шаблону. Но можете использовать его, чтоб не забыть ничего важного на этапе разработки сценария.
Можете использовать этот шаблон сюжета (нажмите Файл - Скачать) для быстрого старта. Помните, что его пункты не являются исчерпывающими или обязательными.
Работайте над сюжетом сколько потребуется до начала программирования.
Урок 13: Планирование сюжета и организация работы.
Визуальная новелла может разрастить до огромного размера. Даже короткая новелла разрастается до тысяч строк кода, в котором сложно ориентироваться.
В этом уроке мы научимся легко ориентироваться к коде новеллы, и прорабатывать различные варианты действия.
Программа BluMind - очень простое создание схем.
Для Google Диска можно использовать "Mind Mup 2".
Есть множество подобных программ, которые вы можете найти по запросу "mind maps free".
Урок 14: Проверка орфографии.
Очень важно не допускать глупых орфографических ошибок в тексте новеллы. Но не все могут позволить себе нанять профессионального корректора.
На помощь вам придут различные программы для проверки орфографии и грамматики.
Лучшая программа для проверки орфографии: orfogrammka.ru
Бесплатная проверка орфографии в браузере: languagetoolplus.com. (У Language Tool есть удобный плагин для браузера.)
И, конечно же, самые обычные Документы Google.
Урок 15: Метки и выбор действий.
Мало какая визуальна новелла обходится без выборов действий или ответа.
Варианты ответов - это основа, на которой троятся многие новеллы. Освоив их вы сможете создать полноценную визуальную новеллу с различными концовками.
По ходу дела разберемся, как код в РенПай делится на части с помощью меток.
Заметки и фрагменты кода
# Команда label создаёт метку с любым названием в коде. По сути, метку можно считать блоком кода.
label my_metka:
# Весь код, сдвинутый на 4 пробела под label, будет считаться частью блока my_metka.
"Вы видите летящую в вас корову. Что вы будете делать?"
# Команда menu создаёт кнопки с вариантами ответов.
menu:
# Первый текст в кавычках - это простой текст, который выведется внизу экрана.
"Что вы будете делать?"
# Следующий текст с двоеточием в конце создаёт кнопку с вариантом ответа
"Пойти направо":
# А код, который сдвинут на 4 пробела под вариантом ответа, выполнится, когда игрок нажмёт на эту кнопку
# Команда jump переносит выполнение игры к указанной метке
jump napravo
# Создаём вторую кнопку с вариантом ответа
"Поймать корову головой":
# Если игрок выберет этот вариант, то начнёт выполняться код в метке korova
jump korova
# В данном случае команда return не нужна, так как игра перейдёт к метке napravo или korova.
# Но лучше ставить return в конце каждой метки во избежание случайных ошибок.
return
# Эта метка выполнится, если игрок нажмёт "Пойти направо"
label napravo:
"Вы увернулись от падающей коровы."
# return вернёт нас в главное меню.
return
# Эта метка выполнится, если игрок нажмёт "Поймать корову головой"
label korova:
"Корова раздавила вас насмерть."
# return вернёт нас в главное меню.
return
Урок 16: Логические переменные и условия.
Логические переменные используются всегда и везде!
Переменная - это контейнер с информацией (число, текст и др.). Логическая переменная - это переключатель, который может быть в одном из положений: Правда (True) или Ложь (False).
В визуальной новелле в логической переменной можно, например, хранить ответы игрока, для использования в будущем. Например, герой новеллы может запомнить ответ игрока, и в другой части игры припомнить ему всё.
Заметки и фрагменты кода
# Создём две новые логические переменные. Одна со значением Fasle, другая - True
define variant = False
define my_otvet = True
# В любое время в новелле можно поменять значение пеменной.
$ variant = True
$ my_otvet = False
# Новелла может выполнить какие-то действия в зависимости от значения переменной.
if variant:
"Выполнить действия, если переменная variant имеет значение True."
"Также можно написать просто if variant = True:"
else:
"Выполнить действия, если переменная variant имеет значение False."
if my_otvet = False:
"Выполнить действия, если переменная my_otvet имеет значение False."
else:
"Выполнить действия, если переменная my_otvet имеет значение True."
Урок 17: Описание игры и иконка.
В этом уроке начнём изменять внешний вид новеллы. Поменяем иконку, которая выводится на панели задач и в заголовке окна. А также поменяем описание игры в пункте "Об игре".
Урок 18: Фон и музыка в главном меню.
В этом уроке продолжим изменять внешний вид новеллы.
Теперь мы поставим картинку в главное меню, а также фон при открытии меню во время игры.
Кроме того поставим в главное меню музыку, чтоб не было так скучно.
Урок 19: Секретные выборы и сложные условия.
Продолжим разбираться с логическими переменными и условиями.
В этом уроке я покажу еще парочку применений переменным. Вы узнаете как делать более сложный выбор, а также, как создавать секретные варианты ответов, которые появляются только при определённых условиях.
Заметки и фрагменты кода
# Вы уже знаете, что проверки делаются командой if. Например, if my_perem: проверяет равно ли значение переменной my_perem True, и в этом случае выполняет указанные действия.
# Но в условиях вы можете сочетать любой количество переменных и создавать сложные условия.
# Для этого сущействуют специальные операторы and (И), or (ИЛИ) и not (НЕ).
# Следующее условие проверяет равны ли True обе переменные sobytie1 И sobytie2
if sobytie1 and sobytie2:
# Следующее условие проверяет равна ли True хотя бы одна из двух переменных sobytie1 ИЛИ sobytie2
if sobytie1 or sobytie2:
# Можно сочетать and и or в одном условии. Но учтите, что проверяются сначала and? а затем or. Точно так же, как в математике сначала производится умножение, а затем сложение.
# Изменять порядок проверки можно скобками, по тому же принципу, как в математике.
# Следующее условие сработает, если переменная sobytie1 равно True или одновременно переменные sobytie2 и sobytie3 равны True .
if sobytie1 or sobytie2 and sobytie3:
# А это условие сработает, если хотя бы одна из переменных sobytie1 или sobytie2 равна True, и при этом переменная sobytie3 равна True.
if (sobytie1 or sobytie2) and sobytie3:
Урок 20: Ввод имени персонажа игроком.
Некоторые игры позволяют игроку самому придумать имя для своего персонажа. Как сделать ввод текста в RenPy. Как в этом случае ограничить ввод текста, чтоб игрок не вводил случайные символы или не оставил имя пустым.
Заметки и фрагменты кода
# При объявлении персонажа вместо имени пишется переменная с именем в квадратных скобках
define my = Character("[myname ]")
# Затем можно прописать имя по умолчанию
default myname = "Джонни"
# Чтоб ввести имя персонажа
$ myname = renpy.input("Как зовут вашу героиню?").strip()
# .strip() - эта часть не обязательная, она убирает пробелы перед и после имени
# Чтоб указать максимально количество бкув в имени добавим параметр length
$ myname = renpy.input("Как зовут вашу героиню?", length=15)
# Чтоб разрешить вводить только буквы их нужно указать в параметре allow
$ myname = renpy.input("Как зовут вашу героиню?", allow="ячсмитьбюфывапролджэйцукенгшщзхъ-ЯЧСМИТЬБЮФЫВАПРОЛДЖЭЙЦУКЕНГШЩЗХЪ")
# Если вы хотите предложить имя по умолчанию напишите его в параметре default
$ myname = renpy.input("Как зовут вашу героиню?", default="Сюся")
# Теперь в диалогах вместо "Джонни" нужно будет писать [myname]:
my "My name is [myname]!"
# Чтоб игрок не оставил поле ввода пустым можно добавить такое условие
if myname == "":
$ myname = "Джонни"
Тест 4: Условия и действия
Предыдущие уроки содержат много команд и возможностей, которые используются почти в любой новелле. Поэтому их усвоение - это очень важно.