"Начало." Как сделать мод для бесконечного лета. Первая часть

# Создание мода

Для начало нужно создать файл с расширением .rpy. Затем открыть его в текстовом редакторе, и следовать далее по руководству.

# Написание кода

Стиль и синтаксис Ren’Py похож на Python. Если знакомы с ним, то проблем возникнуть не должно.

Файлы состоят из блоков и команд в блоках, например:

1 2 3 4

WARNING

Команды в блоках должны везде иметь одинаковый отступ. Будь то 2 или 4 пробела. В большинстве случаев рекомендуется использовать 4 пробела.

В большинстве случаев в редакторе кода будет по-умолчанию выставлено значение отступов, поэтому рекомендуется использовать TAB для отступов.

# Объявление мода

WARNING

Шаги, приведенные ниже крайне важны. Без них мод не будет виден в списке модов в игре.

Для того чтобы игра поняла, что файл (в котором строчки будут написаны) является модом, нужно написать следующее:

1 2

Разберем более детально пример выше:

  1. my_mod — название начального лейбла мода. При запуске мода, всегда первым начинает запускаться этот лейбл, указанный внутри командых скобок. Не будет виден пользователю. Должен быть уникальным, иначе возможны конфликты с модификациями, имеющими лейблы с таким же названием. Можно использовать только латиницу!
  2. Мой мод — название мода, которое будет отображаться в списке модов. Допускается использование кириллицы.

Теперь, для того, чтобы игра поняла, где начинается мод, нужно добавить начальный лейбл:

  

1 2 3 4 5 6

В коде выше:

  1. Была объявлена метка (label), имя которой обязательно должно соответствовать имени мода, указанного в квадратных скобках. В нашем случае — my_mod.

TIP

Если вы хотите поменять шрифт в списке, то конструкция будет следующей:

1 2

Можно использовать как TrueType (.ttf), так и OpenType (.otf) шрифта.

Также можно добавить цвет:

1 2

И изменить размер шрифта:

init: $ mods["my_mod"] = u"{font=mods/my_mod/<название шрифта>.ttf}{color=#45B39D}{size=50}Мой мод{/size}{/color}{/font}" 1 2

Видео

Форматирование текста

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

Не забываем про 4 пробела, они пишутся всегда. Исключения только init и label.

Сами коды в игре не видны, виден только эффект:

  • {i}{/i} — “{i}какой_то_текст{/i}” — для курсива.
  • {b}{/b} — “{b}какой_то_текст{/b}” — для жирноты.
  • {s}{/s} — “{s}какой_то_текст{/s}” — для зачёркивания.
  • {w} — “какой_то_текст. {w}другой_текст” — для паузы в отображении текста. Отображение сначала остановится, на том месте где стоит команда, а после нажатия на Enter/Пробел/ЛКМ/Ctrl продолжится, и закончится там, где либо стоит ещё одна пауза, либо где конец кавычек.
  • n —”какой_то_текст. nдругой_текст” — для переноса остальной части текста на строку ниже.
  • — “какой_то_текст_что_то_в_кавычках_продолжение_текста” — для того чтобы была возможность поставить кавычки внутри текста.

Уделите особое внимание пробелу, он нужен лишь один, так как команды исчезают из отображаемого текста.

Изначальные переменные

Кроме пользовательских материалов в наш файлик materials мы запишем переменные.

Переменные — это некие значения, которые могут измениться в процессе игры. У нас есть два типа переменной: True or False и числительное значение. True or False работает по типу: Да или Нет. Числительное значение — это любое число, включая отрицательные.

Не забываем про 4 пробела, они пишутся всегда. Исключения только init и label.

Записываются они довольно просто:

$ название_переменной = True_или_False

$ название_переменной = любая_цифра

Как вы поняли, если значение переменной Да или Нет, то пишем True, если Да, и False, если Нет.

То есть у вас получится что-то такое:

$ el_kartohu = True $ alisa_opinion = 1Переменные очень полезные. Они могут обозначить на

Переменные очень полезные. Они могут обозначить наличие какого-то условия при событии, и количество “очков отношений, на которых и строится всё Бесконечное Лето, да и другие Визуальные Новеллы.

Сейчас мы прописали изначальные значения переменных. Без них, переменные не смогут измениться, что вполне логично. Ведь изменяться будет нечему, дошло?)

О том, как же их изменять, и как они могут влиять на историю, поговорим ниже.

# Видео

Ren’Py предусматривает возможность использования встроенной версии Libav для воспроизведения видеороликов с такими форматами, как: .webm, .matroska, .ogg,.avi

# Полноэкранные видеоролики

Самый простой способ отображения видео в полноэкранном режиме заключается в использовании функции renpy.movie_cutscene. Она отображает видео в полноэкранном режиме до тех пор, пока оно не закончится либо игрок не щелкнет кнопкой мыши, чтобы прекратить воспроизведение.

Пример использования:

1 2 3 4

# Видео, как отображаемые объекты и спрайты

Видеоролик, отображаемый на экране посредством команды Movie, можно использовать для отображения в любом месте, где Ren’Py может его показать. Например, видео может выводиться как фон экрана меню или в качестве фона.

Отображаемый видеоролик также можно использовать для определения видео спрайта, который представляет собой спрайт, склеенный из двух видео. Первый видеоролик обеспечивает цвет спрайта. Второй — так называемый, "маска-ролик" — обеспечивает альфа-канал, где белый цвет — полная непрозрачность, а чёрный — полная прозрачность.

TIP

Видео, которые воспроизводятся в отображаемом объекте Movie, зацикливаются автоматически.

Movie принимает два параметра:

  • play — строка, содержащая имя воспроизводимого видеофайла. Параметр всегда должен быть задан.

  • mask — строка, содержащая наименование видеофайла для использования в качестве альфа-маски. Она должна быть того же размера, продолжительности и частоты кадров, что и видеофайл, заданный в play.

Вот пример определения видео спрайта:

1 2

Видео спрайт можно показать с помощью оператора show, который автоматически запускает воспроизведение видео. Он будет автоматически остановлен при скрытии отображаемого объекта.

1 2 3 4 5

Видеоролик, прописанный через Movie также можно использовать как часть экрана, при условии, что он создан во время фазы инициализации (init-блок) (например, как часть оператора image).

Приведём пример:

1 2 3 4 5 6

TIP

Экраны можно прописывать и вне init-блока.

TIP

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

Теги

Adblock
detector