Everlasting Summer

Everlasting Summer

396 ratings
СОЗДАНИЕ МОДОВ ДЛЯ БЛ
By scanishee
Руководство по созданию мода для БЛ. По сути своей это руководство дополняет информацию написанную в руководстве "Уроки моддинга"
9
   
Award
Favorite
Favorited
Unfavorite
Где же прописывается мод?
Мод прописывается по следующему пути:
  1. Заходим в папку Steam

  2. Следом заходим в папку steamapps

  3. После заходим в папку common

  4. В папке common ищем папку Everlasting Summer

  5. Внутри папки Everlasting Summer находим папку game

  6. И наконец-то, заключительное действие. Заходим в папку mods внутри, которой создаём папку своего мода.
Originally posted by ¥ATSUGi ∞:
Название папки мода должно быть оригинальным для того чтобы не было конфликтов с другими модами, если они у вас есть в workshop.
И что всё так просто?
Нет.
Также для создания мода понадобиться текстовой редактор. Для текстового редактора лучше всего подойдёт Notepad++[notepad-plus-plus.org].

Originally posted by ¥ATSUGi ∞:
Лично я сам пользуюсь Notepad++. Он удобен и прост в использование, к тому же большинство модов сделано с его помощью.

Но зачем же нам понадобился текстовой редактор?
Текстовой редактор нужен для работы с командами которые мы будем прописывать в наш мод.

Куда же вписывать эти команды?
Создаём внутри папки нашего файла текстовой документ и изменяем расширения на .rpy

Originally posted by ¥ATSUGi ∞:
Название документа с любым названием.

Продолжим.
Открываем наш документ .rpy текстовым редактором, в моём случаи Notepad++, и начинаем творить.

А что делать-то дальше?
Суть создания модов БЛ в том, чтобы в ваш документ .rpy вписывались специальные команды.

Начнём с создания блока.
Есть два блока. init и init python(Питон).

Как вообще это всё работает?
Примерно всё выглядит так:

После команды init прописываются нужные вам команды. Так же от команды должен быть отступ в 4 пробела, но это не значит что надо делать 4 пробела в каждой строке.
~Можно писать через enter каждую строчку(он пропускает сразу 4 пробела), но после выделяем весь текст, заходим в: Правка -> Операция с Пробелами -> Табуляция в Пробел. Вот и всё это уменьшило затраты на пробелы.



Originally posted by ¥ATSUGi ∞:
Почему же вы не можете писать enter'om без этой операции? Потому что при входе в игру вам выдаст ошибку что в коде вы использовали Tab.
Команда label для чего и зачем?
Все диалоги, bg, cg, sprites и music, короче всё что связано с сюжетом, прописывается после команды label

В купе с init блоком всё выглядит так:



По сути своей это команда используется для разделения мода на части.
Как дать название своего мода в самой игре?
Для этого есть команда выглядит она так:
$ mods ["это_лэйбл"] = u"ЗДЕСЬ ВПИСЫВАЕМ НАЗВАНИЕ МОДА"

Наглядный пример:
Шрифт в названии мода
Вот команда:
$ style.инициал_txt = Style(style.default)
$ style.инициал_txt.font = "путь к шрифту"
$ style.инициал_txt.color = "цвет"
$ style.инициал_txt.size = размер
$ style.инициал_txt.drop_shadow = [ (1, 1), (1, 1), (1, 1), (1, 1) ]
$ style.инициал_txt.drop_shadow_color = "#000"
$ style.инициал_txt.kerning = 1

Пример:
Прыжки между лэйблами
Выглядит команда так:
jump label_название лэйбла

Пример:

(jump через 4 пробела)

Для чего?
Он нужен для совершение так сказать прыжков между одним и другим днём, то есть.

Например:
Вы сделали label_day1 и хотите чтобы у вас второй день был уже в другом rpy документе.
Вы должны будете создать новый rpy документ и начать не с init-блока, а уже с лэйбла на который вы совершил прыжок.
ПОЛЕЗНАЯ ВЕЩЬ ДЛЯ ВАШЕГО МОДА
Полезной вещью для вас будет файл lists, в котором находиться все названия бг, цг и т.п из оригинальной игры.

Всё расшифровано. Ссылочка[oxy.cloud].

Качайте, разархивируйте и всё!
Начнём разговаривать!
Неотъемлемая часть модов Бл, да и вообще новелл - это диалоги между персонажами и выборы. Начнём с диалогов.

Для того чтобы персонажи вели диалог есть ID персонажей.
Вот ID персонажей из оригинальной игры:


Выглядят диалоги вот так:


Также есть слова автора которые не нуждаются в ID они прописываются просто в кавычках.
Измена диалогового шрифта
Шрифт - вещь, которая украшает диалоги.
Шрифтов всего 4: {i}курсивный{/i}, {b}жирный{/b}, {s}зачёркнутый{/s} и шрифт, который {w}делит текст{/w} по частям.
Музыка, звуки и амбиенсы
Команда вызывающая музыку:
play music название песни
Остановка музыки - stop music

Команда вызывающая звук:
play sound название звука
Для остановки звука - stop sound

Команда вызывающая амбиенсы:
play ambience название амбиенса
Остановка амбиенса - stop ambience

Пример:


ССЫЛКА НА АМБИЕНСЫ ИЗ ОРИГИНАЛЬНОЙ ИГРЫ.[oxy.cloud]

ССЫЛКА НА МУЗЫКУ ИЗ ОРИГИНАЛЬНОЙ ИГРЫ.[oxy.cloud]

ССЫЛКА НА ЗВУКИ ИЗ ОРИГИНАЛЬНОЙ ИГРЫ.[oxy.cloud]
Команда scene
Scene - это команда показывает, где происходит действия, то есть эта команда отвечает за фон в моде.

Прописываем её так:
scene bg название_фона

Пример:


Originally posted by ¥ATSUGi ∞:
Название фонов из оригинальной игры находятся в lists, который я кинул в одном из разделов.


Также команда scene используется не только на bg, но и на cg.


ССЫЛКА НА БГ ИЗ ОРИГИНАЛЬНОЙ ИГРЫ.[oxy.cloud]

ССЫЛКА НА ЦГ ИЗ ОРИГИНАЛЬНОЙ ИГРЫ.[oxy.cloud]
Спрайты
Как их вызвать?

Спрайты вызываются командой:
show имя спрайта



Спрайт разделён на несколько частей. За пример я взял спрайт sl - Славя:
show - это наша команда, sl - это Славя, тот персонаж которого мы хотим видеть, normal - это эмоция персонажа, pionner - это в то что будет одет персонаж, в данном случаи пионерская форма.

Также как и бг, спрайты из оригинальной игры находятся в том файлике, который я кинул в один из разделов.

У спрайтов есть свои позиции.
Всего в игре 7 позиций у спрайтов:
fleft, left, cleft, center, cright, right, fright

Прописывается так:
show dv smile pioneer2 at left

Спрайт Алисы появиться слева.

Также спрайты имеют три позиции дальности.
close - спрайт будет находиться близко


far - спрайт будет находиться далеко


если написать без команд far/close - спрайт будет находиться на нормальном расстояние

Команда hide.
hide - скрывает спрайт который показывается на экране

Работает так:
hide имя персонажа


Originally posted by ¥ATSUGi ∞:
Если в момент, когда вы поставили персонажей на одной из сцен у вас будет меняться фон, то hide можно не прописывать.

ССЫЛКА НА СПРАЙТЫ ИЗ ОРИГИНАЛЬНОЙ ИГРЫ.[oxy.cloud]
Время суток применяемые на спрайты
Команда меняющая цвет спрайтов в соответствии с временем суток:
$ persistent.sprite_time = "время суток, которое нам нужно"
$ время суток, которое нам нужно_time ()

На всякий случай напишу времена суток:
day - день
sunset - вечер
night - ночь

Пример:
Плавность
Всего существует 6 видов плавности, отличие их в скорости
dspr - 0,2 сек - самый быстрый
dissolve - 1 сек - средняя скорость
dissolve2 - 2 сек - плавная картинка
dissolve_fast - 0.5 сек.
hell_dissolve - 50 секунд.
dissolve_long - 100 секунд.

Прописывают их около bg, cg и спрайтов так:
scene bg(cg) название бэграунда with один из видов плавности

Пример:

Эффект моргание
Всего есть три команды связанные с этим эффектом:
show blink - Закрыть глаза
show unblink - Открыть глаза
show blinking - Моргание

Пример:
Как добавлять что-то своё в мод?
Добавление чего либо как раз таки происходит в init-блоке.
Если вы будете добавлять что либо в больших количествах советую использовать # он разделяет определённый места в init-блоке:


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

Добавляем своего персонажа:
$ Аббревиатура имени = Character (u'Имя в игре', color="Цвет имени", what_color="Цвет диалога")

Если что могу оставить цвет текста из оригинальной игры он выглядит так E2C778.
Так же нужные вам цвета поищите здесь[colorscheme.ru].


Добавление своих изображений:
image аббревиатура = "Путь к изображению"

Добавление своей музыки:
$ аббревиатура = "Путь к музыке"

Со звуками и амбиенсами работает так же.

Добавление своих спрайтов:
Есть 2 способа добавления.
Первый,
image аббревиатура = "Путь к спрайту", учтите время на него не влияет.

Второй способ,
уже с изменением времени, но не автоматическим
image НАЗВАНИЕ СПРАЙТА, МОЖНО НЕСКОЛЬКО СЛОВ = im.MatrixColor( im.Composite((900,1080), (0,0), "ПУТЬ К ФАЙЛУ ТЕЛА",(0,0), "ПУТЬ К ФАЙЛУ ОДЕЖДЫ",(0,0), "ПУТЬ К ФАЙЛУ ЭМОЦИИ"), im.matrix.tint(Время суток) )
0.83, 0.88, 0.92 - day/день
0.94, 0.82, 1.0 - sunset/вечер
0.63, 0.78, 0.82 - night/ночь

Дело в том что автоматически при включении команды persistent.time они не будут менять цвет при смене суток, так что для каждых времени суток придётся прописывать спрайт.
Если кто знает способ получше кидайте в комментарии.

Originally posted by ¥ATSUGi ∞:
Команды для прописанных вами: фонов, песен, цг и спрайтов по стандарту. Своих персонажей вызываем так же, как и персонажей из оригинала вставляя свою аббревиатуру вписанную в команду, также и со всем остальным.
А вот и выборы, переменные и т. д.
Как и диалоги,
выборы - это важный элемент новелл.

Начнём с переменной.
Переменные нужны для того, чтобы игра запоминала каждый выбор игрока
Вызов переменных происходит во всем уже известном init-блоке. Имена и значения у переменных могут быть любые, лучше использовать короткие английские слова или цифры (цифры только в значении).

Примерно вот так:


После выполнения данных команд переменная "choice" будет иметь значение "True", а переменная "Count" увеличит свое значение на единицу.

Выборы.
Для того чтобы предоставить игроку выбор мы создаём блок menu.

Выглядит это так:


В данном примере Ульяна называет гг дураком, главный герой, может сказать, как джентельмэн просто сказать нет, не вестись на провокации Ульяны и увеличить "good" на 1, так и сказать ей что она дура и приблизиться к плохой концовке.

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

Пример:


Этот отрезок показывает, если значение переменной "good" больше нуля, то игра продолжится на метке "good", если же нет, то мы переходим на метку "bad".

Теперь отталкиваясь от прошлых выборов гг будут добавляться или убираться различные варианты ответов.

Пример:


В этой ситуации есть три варианта. Первый вариант, если мы ничего не совершили с Алисой. Второй вариант, если мы оказали Алисе помощь. Третий вариант, если мы с Алисой были грубы.
Работа с картой
Все команды которые нам понадобятся:
$ disable_all_zones() - отключает все старые маркеры карты
set_zone() - зоны по которым можно ходить
$ show_map() - показывает карту в игре

Вот список всех зон и как они обозначены в игре:
"me_mt_house" - "Мой домик"
"estrade" - "Эстрада"
"music_club" - "Музклуб"
"square" - "Площадь"
"dining_hall" - "Столовая"
"sport_area" - "Спорткомплекс"
"beach" - "Пляж"
"boat_station" - "Лодочный причал"
"clubs" - "Клубы"
"library" - "Библиотека"
"medic_house" - "Медпункт"
"camp_entrance" - "Ворота в лагерь"
"forest" - "о. Лес"

Пример:


С картой разобрались поехали дальше!
Хочу сделать монитор с номерам дня, как в оригинале!
Как выглядит команда:
$ backdrop = "days"
$ new_chapter(1, u"Мой мод. День первый.")


Разбор нашей команды:
backdrop - фон с монитором.
1 - номер дня, который будет показан на мониторе,
Текст - то, как будет называться сохранение.

Фонов (backdrop) в игре 5:
$ backdrop = "days"
# Просто монитор.
$ backdrop = "un"
# Монитор с проплывающей Леной.
$ backdrop = "us"
# Монитор с проплывающей Ульяной.
$ backdrop = "sl"
# Монитор с проплывающей Славей.
$ backdrop = "dv"
# Монитор с проплывающей Алисой.
Вставляем видос в игру
Команда:
$ renpy.movie_cutscene("Путь к видео")

Прописываем сразу в лэйбле

Пример:
Паузы
Существует два вида пауз renpy.pause и просто pause

Пишется так:
$ renpy.pause()
$ pause()
() - внутри прописывается насколько секунд будет пауза

Смотрим:
Вывод текста на весь экран
Команды:
$ set_mode_nvl() - включить
$ set_mode_adv() - вернуться в обычный режим
nvl clear - очистить экран

Пример:
Эффект бега
Эффект бега, как вы уже поняли делает эффект нахождения в беге
Команда:
scene бг которое нам нужно:
zoom 1.05anchor (48,27)
ease 0.20pos (0, 0)
ease 0.20pos (25,25)
ease 0.20pos (0, 0)
ease 0.20pos (-25,25)
repeat
Помехи
Помехи прописываются так:
show prologue_dream (показать)
hide prologue_dream (скрыть)

Пример:
Запрет возврата
Если вы хотите запретить игроку перематывать игру назад, воспользуйтесь функцией:
$ renpy.block_rollback()

Тряска экрана
Тряска экрана бывает 2 видов вертикальной и горизонтальной:
with vpunch - вертикальная "тряска"
with hpunch - горизонтальная "тряска"

Пример:
vpunch
Давай-ка добавим немного Doki-doki
Команда позволяющая читать имя пользователя:
В Init блоке объявляем переменную
$ user = os.environ.get('username')
(название переменной может быть любым, понятное вам, например $ name или $ namePC, всё что идёт после = оставить)
Когда нужно объявить имя пользователя, прописываем [user]

Пример:
Заключение
Я брал самые интересные команды для вашего мода, так что пользуйтесь, но если вам их не достаточно можете взять информацию с таких ссылок как:
Уроки моддинга
Как создать свой мод для игры Бесконечное Лето[vk.com]

Если хотите изучить азы и не копаться в моём руководстве то вам подойдёт такая ссылка:
Как сделать и выложить мод для игры "Бесконечное Лето"

Желаю удачи в создание модов.

Не много о проекте, в котором я участвую.
На данный момент я работаю в конторе по созданию модов БЛ "Faith in The Fall Stars".
Требуется ребята готовые помочь в создание проекта, разрабатываемого на данный момент.
Мы ищем:
1. Художников.
2. Сценаристов.
3. Программистов.
4. Видео редакторов.
5. Анимационных редакторов.
6. Музыкальных сценаристов.
7. Пиар менедежер.
8. Админ группы вк/стима.
Если вас заинтересовала переходите по этим данным:
Руководство по сбору команды
Группа Steam
Группа ВК[vk.com]
105 Comments
P.Didi Jan 31 @ 8:41am 
Привет, ищем 1 сценариста, в помощь уже существующему. Будем писать вайбовый мод. Опыт уже есть. Пишите в стиме или дс nygadyai
OxidZon Nov 19, 2024 @ 2:17am 
а что делать если после backdrop игра начинает играть обычный БЛ?
Mr_Bydilnik Nov 6, 2024 @ 2:53am 
как показывать сделаные спрайты типо show oz так не работает:steamsad:
Denter206 Aug 20, 2024 @ 6:02am 
Можно ли менять цвет текста персонажа во время мода? Например, когда интерфейс зимний: $ prolog_time() - вот такой, то цвет текста белый. А если интерфейс летний $ day_time(), то обычный цвет текста.
Негиерас May 29, 2024 @ 10:53am 
@L0g0Z0g0 Время суток применяемые на спрайты
Команда меняющая цвет спрайтов в соответствии с временем суток:
$ persistent.sprite_time = "время суток, которое нам нужно"
$ время суток, которое нам нужно_time ()

На всякий случай напишу времена суток:
day - день
sunset - вечер
night - ночь
В гайде про это есть
L0g0Z0g0 Apr 29, 2024 @ 1:05am 
А как мменять интерфейс с зимнего на летний? Думал раньше что автоматически но судя по всему нет, а в гайдах нигде команды нет.
Salaront Feb 28, 2024 @ 6:05pm 
А в чём разница между
$ renpy.pause()
$ pause()
?
LoneFea Jan 25, 2024 @ 6:18am 
Автору респект
Porifix Nov 21, 2023 @ 4:50pm 
Спасибо вам большое.
Vody? Mar 29, 2023 @ 8:53am 
1gorrek, ну тут не так сложно
image Название (Английским языком ) = "Путь где у тебя хранится bg"