Уроки 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: Условия и действия

Предыдущие уроки содержат много команд и возможностей, которые используются почти в любой новелле. Поэтому их усвоение - это очень важно.