Overview
Руководство по созданию мода для БЛ. По сути своей это руководство дополняет информацию написанную в руководстве “Уроки моддинга”
Где же прописывается мод?
- Заходим в папку Steam
- Следом заходим в папку steamapps
- После заходим в папку common
- В папке common ищем папку Everlasting Summer
- Внутри папки Everlasting Summer находим папку game
- И наконец-то, заключительное действие. Заходим в папку 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
По сути своей это команда используется для разделения мода на части.
Как дать название своего мода в самой игре?
$ 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 персонажей.
Измена диалогового шрифта
Шрифтов всего 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 имя спрайта
show – это наша команда, sl – это Славя, тот персонаж которого мы хотим видеть, normal – это эмоция персонажа, pionner – это в то что будет одет персонаж, в данном случаи пионерская форма.
Также как и бг, спрайты из оригинальной игры находятся в том файлике, который я кинул в один из разделов.
Всего в игре 7 позиций у спрайтов:
fleft, left, cleft, center, cright, right, fright
Прописывается так:
show dv smile pioneer2 at left
Спрайт Алисы появиться слева.
close – спрайт будет находиться близко
far – спрайт будет находиться далеко
если написать без команд far/close – спрайт будет находиться на нормальном расстояние
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-блоке:
Также аббревиатура нужна для того чтобы сокращёно вписывать добавленные вами изображения, музыку, персонажей и спрайты.
$ Аббревиатура имени = 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 = “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 – горизонтальная “тряска”
Давай-ка добавим немного Doki-doki
Команда позволяющая читать имя пользователя:
В Init блоке объявляем переменную
$ user = os.environ.get(‘username’)
(название переменной может быть любым, понятное вам, например $ name или $ namePC, всё что идёт после = оставить)
Когда нужно объявить имя пользователя, прописываем
Заключение
Я брал самые интересные команды для вашего мода, так что пользуйтесь, но если вам их не достаточно можете взять информацию с таких ссылок как:
Уроки моддинга
Как создать свой мод для игры Бесконечное Лето[vk.com]
Если хотите изучить азы и не копаться в моём руководстве то вам подойдёт такая ссылка:
Не много о проекте, в котором я участвую.
На данный момент я работаю в конторе по созданию модов БЛ “Faith in The Fall Stars”.
Требуется ребята готовые помочь в создание проекта, разрабатываемого на данный момент.
Мы ищем:
1. Художников.
2. Сценаристов.
3. Программистов.
4. Видео редакторов.
5. Анимационных редакторов.
6. Музыкальных сценаристов.
7. Пиар менедежер.
8. Админ группы вк/стима.
Если вас заинтересовала переходите по этим данным:
Руководство по сбору команды
Группа Steam
Группа ВК[vk.com]