Гайды по моддингу

Внимание!
Гайд написан для steam-версии 1.2! 
О моддинге на других версиях будет рассказано позже.

Введение

Ты только что завершил проходить Бесконечное Лето. В голове тут же возникла куча мыслей:

"Кто такой Пионер?"
"Что станет с Семёном?"
"Есть ли продолжение?"

В поисках ответа ты натыкаешься на моды. И вот тут возникает два варианта действий:

  • Пройти их все!
  • Написать свой мод!
К сожалению, не все создатели модов обладают хорошими писательскими навыками. Так что прежде, чем плодить "Пацанское лето" или "Алиса и заветная комната", дважды подумай о содержании мода. Всё-таки мы пишем визуальную новеллу, где упор ставится на сюжет.

Придумал хорошую идею, которую хочешь донести до мира? Тогда приступим!
(В дальнейшем уроки будут переведены в видеоформат. Наверное. Когда-нибудь.)

Полезный софт

Для удобной работы потребуется:
  • Notepad++
Очень удобный текстовый редактор с поддержкой синтаксиса и макросов. Также можно сделать выделение своего синтаксиса, что весьма полезно для БЛ.
  • Punto Switcher
Не раз спасал от переписывания целой страницы текста, написанной не в той раскладке. Нажатие пары клавиш поможет изменить раскладку, регистр и т. д.
  • Photoshop
Для редактирования спрайтов. Если ты хорошо рисуешь, то сможешь облегчить себе жизнь введением нужных персонажей или фонов.
  • Любой плеер
Нужен в основном для прослушивания звуков, фоновых шумов и музыки. Подбираем нужную музыку и вставляем в нужный момент.
Список всех материалов игры


Урок 1
Основы. Текст, картинки и музыка.

Лето написано на движке Ren`py. Особенность моддинга на данной платформе очень проста - создаём блокнотик в папке steam\steamapps\common\Everlasting Summer\game\mods, переименовываем расширение txt в rpy, меняем кодировку на UTF-8 - и вперёд!

А что вперёд? Код мы не умеем писать, да и вообще программирование незнакомо?
Не время отчаиваться! Будем решать проблемы по мере их поступления.
(Если ты умеешь кодить (особенно на Python), можешь просто нагуглить документацию по Ren`py и писать мод самостоятельно.)

Итак, ты и чистый лист блокнота. Для начала учти, что все табуляции должны быть преобразованы в пробелы. Поэтому в Notepad++  заходим в меню Опции - Горячие клавиши и там задаём команде "Табуляцию в Пробел" клавиши Ctrl+Tab. Ну или какие хочешь, у нас свободная страна.
Привыкай к последовательности Ctrl+Tab, Ctrl+S

Прошло уже достаточно времени, а в твоём файле "lenashka.rpy" пусто? Так приступим же!

Итак, первый блок нашего мода - блок объявления. Здесь мы объявляем всё - от переменных до функций.
Команда "init:" создаст наш блок.

Пришла пора назвать наш мод и сделать запуск из меню "Моды и пользовательские сценарии".







Разбираемся:

Табуляция в начале - знак того, что текст принадлежит этому блоку.
 $ - использование языка Ren`py или Python
mods[""] - команда, которая добавляет мод в список модов. В кавычках необходимо указать блок (латиницей), на который игрок переходит во время запуска.
= - присваивание блоку запуска определённое имя в списке модов.
u - в строке используются символы Unicode. И в кавычках - название мода на любом языке.

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

После этого урока ты уже сможешь написать кинетический мод со встроенными материалами.
Создаём наш запускаемый блок:









label - кодовое слово "Метка". На метку можно перейти или вызвать, но об этом в следующем уроке.
После метки идёт её имя - то самое, которое мы задали в списке модов.
И не забудь про ":"! Это показывает, что ниже - содержимое этого блока.

Едем дальше. Теперь ты можешь писать любой текст, включать любую музыку и вставлять любые картинки. Как? Очень просто!

















Выглядеть это будет так:




















Теперь - сам код.
play - запускает звук
music - помещает его на канал "музыка". Есть три канала: music, sound и ambience. Music и ambience проигрывают звук в цикле.
music_list[""] - звук берётся из списка самой игры.
fadein <число> - нарастание музыки в течение указанного количества секунд. Необязательно.

scene - задаётся самый нижний слой, на который чаще всего помещаются фоны. При применении этой команды на непустой экран все спрайты и картинки скрываются.
bg - указывает на то, что картинка является фоном. Можно использовать и без bg, но не всегда картинки будут работать.
ext_camp_entrance_day - название картинки.
with dissolve - анимация появления картинки. Можно использовать вообще без анимации, но это будет не так красиво. Dissolve - медленный переход, dspr - быстрый и используется чаще для изменения эмоций. Также существуют и другие, но об этом позже.

show - появление картинки на фоне
sl - название спрайта персонажа
nomal - эмоция персонажа
pioneer - одежда
far, close - существует три положения относительно игрока. По умолчанию это среднее положение. Кроме этого, есть far - дальнее и close - ближнее положение.
at left - положение относительно центра экрана. Слева направо: fleft, left, cleft, center, cright, right, fright. Если персонаж уже находится в нужном положении, можно не использовать.
Также можно использовать только один wih dissolve на следующей строке после описания Слави. Тогда фон и спрайт появятся одновременно, а не последовательно. Также это можно использовать для одновременной смены эмоций разных персонажей.

Весь текст пишется в кавычках.
{w} - пауза во время чтения. То есть, игрок должен нажать ЛКМ ещё раз, чтобы перейти к следующей части.
sl, me - имена персонажей, отображаются в верхней части текстового окна. Полный список - тута. Кроме того, тут списки всех материалов из игры.
th - мысли (~текст такого типа~)
И return - возврат на предыдущий уровень. Если уровень последний, то игра выйдет в меню.

Комментарии в коде можно оставлять с помощью #. Движок игры пропускает всё, что написано после этого символа и сразу переходит на следующую.

На этом первый урок закончен. Потренируйся с этими инструментами, а если захочешь поделиться результатами - шли файл с кодом в комментарии с меткой "Урок 1".


Урок 2
Выборы, разветвления и переменные.

Ты уже достаточно потренировался с линейным моддингом, но хочется чего-то большего?
Добро пожаловать во второй урок!

Но до этого надо исправить парочку недочётов: остановим музыку.





Аналогично с play - указываем нужный канал и, по желанию, время затухания.

Начнём с самого элементарного - меню выбора действия. Но до этого добавим за спину Слави кого-нибудь чтобы разобраться со слоями.







После указания персонажа, эмоции и типа одежды указываем, за кем должен стоять персонаж. В данном случае на экране у нас только Славя, поэтому пишем behind sl. Если ты используешь far или close, то команда behind должна стоять после. Но обязательно перед with-командой (или at, если она есть). 

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

  1. А есть этот рисунок (ext_house_of_un), только ночной вариант

    ОтветитьУдалить
  2. как задействовать спрайты персонажей из других модов?

    ОтветитьУдалить
  3. А чем моддинг Стим версии отличается от пиратов?

    ОтветитьУдалить
    Ответы
    1. Практически ничем
      В стиме моды сами установятся
      А на пиратке нужно самому установить(распаковать)

      Удалить
  4. И как добавлять свою музыку и арты?

    ОтветитьУдалить
    Ответы
    1. Музыка:
      -кидаешь файл с музыкой (например hardbass.mp3) в папку music: mods/nazvanie_tvoego_moda/sound/moy_trek.rashirenie_faila
      -в блоке INIT: по шаблону $ кодовое_имя_трека_для_самой_игры = "путь_с_названием_трека_и_расширением" заполняешь строчку (

      -в LABEL по шаблону для чторонних треков пишешь play music moy_trek

      В итоге в INIT будет строчка $ hardbass = "mods/slushaem_hardbass/sound/music/sound/hardbass.mp3", а в LABEL - play music hardbass

      Удалить
  5. Почему у меня в самой игре не показывается мой мод, хотя я все делал как говорили

    ОтветитьУдалить
    Ответы
    1. чел....... тебе надо сделать именно rpy файл.....

      Удалить
    2. В папке MODS создаешь папку с названием твоего мода. К примеру MY_MOD. Там создаешь файл с кодом игры и расширением .RPY, например mymod.rpy Открываешь этот файл в текстовом редакторе Akelpad или Notepad++ и в нём перво-наперво пишешь такие строки по шаблону:

      init:

      $ mods["имя_мода"]=u"Название мода"

      С блока init: начинается весь мод. В этом блоке ты указываешь все данные для спрайтов, фонов, музыки и для отображения мода в игре.

      ИМЯ_МОДА пишется ТОЛЬКО НА АНГЛИЙСКОМ. С этим именем будет работать движок игры. НАЗВАНИЕ_МОДА пишется на любом языке и оно отображается в списке модов в самой игре

      Дальше идет блок label с имя_мода. Тут-то у нас ручонки и начинают чесаться и мы творим, что хотим с фонами, персонажами и музыкой. К примеру, в моем первом моде эти два блока выглядят примерно так:


      init:

      $ mods["ucheba"]=u"Учеба"

      $ au = Character (u'hAte!', color="8a2be2", what_color="00ffff")
      $ mt_z = Character (u'Зомби Дмитриевна', color="ff00ff", what_color="fff000")

      $ noexit = "mods/bg_teaching/sound/music/noexit.mp3"

      label ucheba:

      play music music_list["she_is_kind"] fadein 3

      return


      Это как пример

      scene bg ext_camp_entrance_day with dissolve
      show sl smile pioneer at left with dissolve
      sl "Привет, пионер! {w}Этот мод объясняет новичку, как в скрипте называются различные задние фоны. {w}Каждый фон будет сопровождаться его названием на английском из списка. "
      sl "Затем русскоязычный перевод и комментарии. Удачи!"

      Удалить
  6. Если заманались ждать уроки, то пишите под комментом +, могу попробовать научить, хотя бы основам кода мода для бл. Скину дискорд, а уже через дискорд вк, чтоб было кайфарик.

    ОтветитьУдалить
  7. Хотелось бы продолжение гайда.

    ОтветитьУдалить
  8. Этот комментарий был удален автором.

    ОтветитьУдалить

Высказать своё мнение по поводу указа партии...