Уроки 21-30
Переменные, звук, видео
Урок 21: Форматирование текста.
В этом большом уроке мы научимся форматировать текст, что может быть очень важно в визуальной новелле.
Я покажу как выводить кавычки и другие символы, как делать текст полужирным, курсивным, подчёркнутым или зачёркнутым, как менять его размер, цвет, шрифт и скорость появления. А кроме этого, как вставлять картинки в текст.
Заметки и фрагменты кода
# Чтоб вывести символ кавычки поставьте перед неё знак \
"Это просто кавычка \" и ничего более."
# Так же можно выводить несколько пробелов подряд
"Пробелы - \ \ \ . Тыт четыре пробела."
# Сочетание \n переводить текст на новую строку.
"Первая строка.\nВторая строка."
# Тег {b} делает текст полужирным.
"Здесть {b}полужирное{/b} слово."
# Тег {i} делает текст курсивным.
"Здесть {i}курсивное{/i} слово."
# Тег {u} делает текст подчёркнутым.
"Здесть {u}подчёркнутое{/u} слово."
# Тег {s} делает текст зачёркнутым.
"Здесть {s}зачёркнутое{/s} слово."
# Сначала нужно закрывать тег, который был открыт последним.
# Это правильная строка.
"Обычный {b}Полужирный {i}Полужирный-Курсив{/i} Полужирный{/b} Обычный"
# Эта строка неправильная
"Обычный {b}Полужирный {i}Полужирный-Курсив{/b} Полужирный{/i} Обычный"
# Тег {size} изменяет размер текста
"{size=+10}Больше на 10{/size} {size=-10}Меньше на 10{/size} {size=24}Текст 24 пиксела{/size}."
# Тег {color} задаёт цвет текста
"{color=#f00}Красный{/color}, {color=#00ff00}Зелёный{/color}, {color=#0000ffff}Синий{/color}"
# Тег {cps} указывает скорость появления текста
"{cps=20}Скорость 20 знаков в секунду{/cps} {cps=*2}Скорость вдвое выше обычной{/cps}
# Тег {font} задаёт шрифт текста
"Следующий текст {font=oswald.ttf}написан шрифтом Oswald{/font}."
# Тег {image} вставляет картинку в текст
"Это моя машина - {image=car.png}"
Урок 22: Музыка и звуки.
Один из самых важных уроков. Проигрывание музыки и звуков в новелле.
С добавлением музыки новелла сразу оживится, и поэтому важно подобрать подходящие мелодии к различным событиям игры.
Заметки и фрагменты кода
# Добавление музыки в скрипт
# Мы добавляем файл "mu_music.mp3", котрый находится в папке "music"
define audio.mymus = "music/mu_music.mp3"
# Точно так же добавляются звуки
define audio.mysnd = "music/boom sound.mp3"
# Начать проигрывание музыки
play music mymus
# Остановить музыку
stop music
# Остановить музыку с плавным затуханием в 2 секунды
stop music fadeout 2
# Проиграть звук
play sound mysnd
Урок 23: Числовые переменные.
Благодаря числовым переменным вы сможете обогатить свою новеллу различными деталями. С помощью чисел можно реализовать деньги, а вместе с ними покупку предметов, здоровье, атаку и защиту, и другие параметры персонажей.
По пути затронем тему вызова меток таким образом, чтоб один и тот же код можно было использовать несколько раз в одной игре.
Заметки и фрагменты кода
# Создаём переменную, как и любые другие
define myhp = 100
# Перевести текстовую переменную (например, которрую ввёл игрок) в целое число можно функцией int().
# Это нужно обязательно сделать, если вы хотите производить операции с этой переменной (сложение, умножение и.т.)
$ myvar = int(myvar)
# Вы можете в любой момент изменять значение переменной в помощью числа или другой переменной.
$ myhp = myhp + 15 # добавить 15
$ myhp = myhp - atk # отнять значение переменной atk
$ def = def * 2 # умножить на 2
# В условиях можно сравнивать числовые переменные. > больше. < меньше. >= больше или равно. <= меньше или равно. == равно. != не равно.
if a > b:
if b <= 150:
if c != 0:
# Можно сделать цепочку условий с помощью ткой конструкции
# Блок else можно не использовать.
if a > 100:
# если а больше 100
elif a > 50:
# в ином случае - если а больше 50
else:
# в других случаях
# Вызвать метку можно командой call. В отличие от jump в этом случае, когда игра дойдёт до команды return, выполнение вернется к команде call и дальше игра продолжится со следующей строки.
call mylab
Урок 24: Редактирование звуков.
Небольшое, но важное отступление от RenPy.
Мини-урок по работе с программой для редактирования звука Audacity. Научимся вырезать из звуковых файлов лишнее, подгонять звуки под одну громкость и уменьшать размер больших файлов с музыкой.
Урок 25. Главное меню.
До этого мы только поменяли фон в главном меню. В этом уроке научимся оформлять его более профессионально. Создадим собственные кнопки, которые будут красиво подсвечиваться при наведении мышки.
Заметки и фрагменты кода
# Для начала создаём три картинки:
# Фоновое изображение
# Прозрачная картинка со всеми кнопками
# Прозрачная картинка со всеми кнопками в подсвеченном виде
# Редактируем файл screens.rpy
# Раздел главного меню.
screen main_menu():
## Этот тег гарантирует, что любой другой экран с тем же тегом будет
## заменять этот.
tag menu
# imagemap создает группу кнопок и других элементов в меню (ползунки, переключатели и т.д.)
imagemap:
# ground указывает картинку с фоном
ground "gui/main_menu.png"
# idle указывает картинку с кнопками
idle "gui/menu_normal.png"
# hover указывает картинку с подсвеченными кнопками
hover "gui/menu_hover.png"
# Команда hotspot показывает РенПай где на картинке находится кнопка и что она делает
# Четыре числа в скобках - кордината х, координата у, ширина, высота кнопки
# После action указывается действие, которое кнопка выполняет
# Начать игру
hotspot (30, 150, 240, 60) action Start()
# Загрузить
hotspot (30, 240, 320, 80) action ShowMenu("load")
# Настройки
hotspot (30, 320, 330, 80) action ShowMenu("preferences")
# Об игре
hotspot (30, 400, 250, 80) action ShowMenu("about")
# Выход
hotspot (30, 610, 220, 80) action Quit(confirm=True)
# Помощь
hotspot (1140, 660, 140, 50) action ShowMenu("help")
Урок 26. Боковые портреты.
Портреты персонажей внизу экрана можно увидеть во многих новеллах. Вы удивитесь насколько просто добавить их в RenPy.
Урок 27. Самые частые ошибки.
Разбираем самые частые ошибки, которые возникают при создании новеллы, в РенПай. Учимся их анализировать и исправлять.
Урок 28. Режим NVL.
Простая, но полезная функция в РенПай - режим NVL. Он предназначен для вывода текста на весь экран поверх всего фона.
Заметки и фрагменты кода
# Создаём специального nvl-персонажа.
# Все реплики этого персонажа будут выводиться на весь экран.
define n = Character(None, kind=nvl)
# Перед репликой может понадобиться скрыть обычное диалоговое окно.
window hide
# Напсиать текст можно, как обычно.
n "Этот текст будет выводиться на весь экран."
# Очистить текст, который был ранее выведен на экран nvl.
nvl clear
# Скрыть экран nvl.
nvl hide
Урок 29. Разделение скрипта на части.
В РенПай можно очень просто разделить файл скрипта на несколько частей. В этом коротком видео мы разберёмся как это сделать и главное зачем это нужно.
Урок 30. Заставка и видео.
Обычно при запуске любой игры первое, что видит игрок - это логотип авторов и другая информация. В этом уроке мы научимся делать это в РеПай.
Кроме того увидим, как в своей игре проиграть видео файл.
Заметки и фрагменты кода
# Метка splashscreen автоматически запсукается при старте игры перед главным меню.
label splashscreen:
# Показываем чёрный экран
scene black
# Ждём полсекунды
pause(0.5)
# Плавно переходим к нужной картинке.
scene sponsor with fade
# Если мы напишем просто pause, то игра будет ждать щелчка от игрока.
pause(2)
scene black with fade
# Проиграть указанное видео.
$ renpy.movie_cutscene('videos/logo.ogv')