Doki Doki Literature Club

Doki Doki Literature Club

Not enough ratings
Как написать свой мод?
By Yuri
«В этом руководстве я покажу вам, как создавать свои собственные моды для DDLC — от первых шагов до первых игровых сцен. Даже если вы никогда раньше не работали с Ren’Py, после прочтения этого руководства вы сможете оживить своих персонажей и придумать свои истории!»
   
Award
Favorite
Favorited
Unfavorite
1. Введение
Привет! Если ты читаешь это руководство, значит, тебе интересно создавать свои собственные истории в всеми нашей любимой игре - Doki Doki Literature Club. В этом разделе мы разберёмся, что такое моды, зачем они нужны и с чего начать, даже если вы никогда раньше не работали с Ren’Py или не создавали игры. Да, возможно данной руководство уже давно не в тему, так как игра давно уже потеряла свою популярность, но... кого это волнует?

1.1. Что такое мод для DDLC?

Мод — это, по сути, изменение или дополнение к оригинальной игре. Вы можете:

Добавлять новых персонажей;

Создавать свои сцены и диалоги;

Менять музыку, фоны и звуки;

Придумывать альтернативные концовки;

Создавать мини-игры или уникальные механики.

Короче говоря, мод позволяет вам рассказывать свою историю в мире DDLC.

1.2. Зачем создавать моды?

Творчество: вы можете оживить собственных персонажей и истории.

Практика: изучение Ren’Py — отличный способ освоить основы программирования и логики.

Общение: многие моды выкладываются в Steam Workshop, и вы можете делиться ими с тысячами игроков.

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

1.3. С чего начинать?

Перед тем как писать мод, нужно:

Понимать структуру игры. DDLC сделана на движке Ren’Py, который использует текстовые скрипты для диалогов, сцен и событий.

Подготовить инструменты. Минимум, что нужно:

Ren’Py (движок для визуальных новелл), но лучше использовать модификацию к ренпай, которая специально нацелена на разработку модов именно на DDLC. Ее название - Doki Doki Mod Maker. О ней вы сможете найти информацию в интернете.

Текстовый редактор (например, VS Code или Notepad++)

Графические файлы (спрайты, фоны) и звуки, если вы хотите их менять

Начать с простого. Даже маленький мод с одной сценой и одной концовкой — отличный старт. Главное — не бояться экспериментировать!
2. Установка и подготовка
Прежде чем создавать свои сцены и персонажей, важно подготовить инструменты и познакомиться со структурой игры. В этом разделе мы разберём всё, что понадобится для старта. Все примеры будут показаны на основе модификации DDMM (Ren'Py мод для DDLC).

2.1. Скачивание и установка движка Ren’Py

Перейдите на официальный сайт Ren’Py и скачайте последнюю версию.

Установите Ren’Py на свой компьютер, следуя стандартной инструкции (обычно это просто распаковка в любую папку).


⚠️ Для работы с DDLC лучше использовать модифицированную версию Ren’Py, созданную специально для разработки модов под эту игру. Она включает:

подготовленные шаблоны сцен и персонажей;

упрощённые функции для работы с меню и концовками.

После установки убедитесь, что Ren’Py запускается корректно.

2.2. Создание проекта для мода

Откройте Ren’Py.

Нажмите “Создать новый проект” (New Project).

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


Выберите стандартные настройки шаблона для DDLC (если используется модификация, обычно там есть готовый шаблон для модов).

После этого Ren’Py создаст папку проекта со следующей структурой:



game/ — здесь будут ваши скрипты, спрайты, фоны, музыка и т.д.

images/ — отдельная папка для графики (мы будем использовать другую папку в дальнейшем).

audio/ — для музыки и звуков (мы будем использовать другую папку в дальнейшем).

script.rpy — главный скрипт, где пишутся диалоги и события.

2.3. Ознакомление со структурой DDLC

Основные файлы и папки, с которыми вы будете работать:

script.rpy — основной файл сценария. Здесь пишутся диалоги, сцены, ветвления и концовки. Рекомендуется создавать отдельный файл для вашего сюжета (об этом расскажу позже).



characters.rpy — содержит данные оригинальных персонажей игры, нам эта папка не нужна.

images/ — сюда помещаются фоны, спрайты персонажей и объекты (мы будем использовать другую папку).

audio/ — музыка и звуки (мы будем использовать другую папку).

screens.rpy — настройки экранов, меню и интерфейса.



Совет: новичкам лучше работать с шаблонным проектом и изменять только нужные файлы. Так проще не потеряться в структуре.

2.4. Создание первого мини-скрипта

В папке game создайте новый файл для сюжета, например: story.rpy.

Откройте файл options.rpy (он тоже находится в папке game) и примерно на 7-й строке вставьте:

define config.developer = True
define config.autoreload = False



⚡ Важно писать строки в столбик:

config.developer = True — включает режим разработчика, который позволяет перезагружать скрипты внутри игры (Shift + R), пролистывать диалоги назад или вперед с помощью колёсика мыши и использовать другие функции.

config.autoreload = False — отключает автоматическую перезагрузку скрипта после правок.

Откройте файл script.rpy, найдите строчку:

$ config.allow_skipping = True


Нажмите Enter два раза, чтобы сделать отступ, и на второй пустой строке добавьте:

call story from _call_story



Эта команда перенаправляет игрока в ваш файл с сюжетом после начала игры.

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

Вставьте следующий скрипт в story.rpy, чтобы проверить работу проекта:

label story:
scene bg club_day with wipeleft_scene
play music t8

s "Hi! Welcome to my mod!"
y "Glad to see you here."

menu:
"Go with Sayori":
jump go_with_sayori
"Go with Yuri":
jump go_with_yuri

label go_with_sayori:
sayori "Great, let's spend the day together!"
return

label go_with_yuri:
yuri "Okay, let's read together."
return



Этот скрипт проверяет:

работает ли музыка;

отображаются ли спрайты;

работает ли выбор игрока и ветвления.

Пояснение к скрипту:

s — обозначение персонажа Sayori, y — Yuri;

label story: — начало сюжета;

scene bg club_day with wipeleft_scene — выводит фон клуба с эффектом перелистывания;

menu: — создаёт меню с вариантами выбора.
3. Основы DDMM/Ren’Py для модов
Чтобы создавать моды для DDLC, нужно понимать, как работает движок и его основные элементы. В этом разделе мы разберём: диалоги, персонажей, ветвления, переменные и простую логику событий.

3.1. Персонажи

Каждый персонаж определяется в отдельном файле, а именно в defentions.rpy.

Пример определения персонажей:

image sayori 1 = im.Composite((960, 960), (0, 0), "sayori/1l.png", (0, 0), "sayori/1r.png", (0, 0), "sayori/a.png")
image yuri 1 = im.Composite((960, 960), (0, 0), "yuri/1l.png", (0, 0), "yuri/1r.png", (0, 0), "yuri/a.png")


define — создаёт персонажа.

"Sayori" — имя, которое будет отображаться в диалогах.

color — цвет имени в диалоговом окне.

Внимание: обязательно используйте короткие алиасы, поскольку полное имя персонажа, по типу - yuri "Привет, главный игрок!" - будет вызывать ошибки!

3.2. Диалоги и сцены

Основная часть мода — это диалоги.

label start:
scene bg room
s "Привет! Добро пожаловать в мой мод!"
y "Рада видеть тебя здесь."


label — метка, точка входа или сцена.

scene bg room — смена фона на комнату.

s "Текст" — диалог персонажа Sayori.

y "Текст" — диалог персонажа Yuri.

3.3. Выборы и ветвления

Для интерактивности используют меню:

menu:
"Пойти с Сайори":
jump go_with_sayori
"Пойти с Юри":
jump go_with_yuri

label go_with_sayori:
s "Отлично, давай проведем день вместе!"
return

label go_with_yuri:
y "Хорошо, пойдем читать вместе."
return


menu: — создаёт выбор игрока.

jump — переход к другой метке.

return — возвращение к предыдущему сценарию.

3.4. Переменные

Переменные позволяют хранить состояние игры:

default happiness = 0

s "Привет!"
$ happiness += 1


default — создаёт переменную при старте игры.

$ — обновление значения переменной.

Переменные можно использовать для условий:

if happiness > 0:
s "Я рада тебя видеть!"
else:
s "Привет..."

3.5. Музыка и звуки

Музыка и звуки добавляются так:

play music "audio/bgm.ogg" fadein 1.0
play sound "audio/door.ogg"
stop music fadeout 1.0


play music — фоновая музыка.

play sound — одиночный звук.

fadein/fadeout — плавное появление/исчезновение.

3.6. Фоны и спрайты

Чтобы показывать персонажей и смену локаций:

scene bg park with wipeleft_scene
show sayori 1a at t11 zorder 2
show yuri 2b at t21 zorder 3
hide sayori
hide yuri with dissolve


scene — смена фона.

show — показать спрайт персонажа с эмоцией.

at t11/t21— позиция на экране.

hide with dissolve — спрятать персонажа с эффектом растворения.

1a/2b - эмоция.
4. Фоны, музыка, эмоции персонажей.
У каждого персонажа есть несколько спрайтов: обычная эмоция, стандартная поза и особенная поза с эмоцией. Чтобы вам было проще понять, я прикреплю ссылку на PDF-файл с подробным описанием всех вариантов и их использованием в модах. Также там присутствуют все фоны, музыка, эффекты и прочее, что использовалась в игре:

https://drive.google.com/file/d/1bUnhTLrAeLMqF_GVbeHkvFcnKwthKjxo/view?usp=sharing

5. Продвинутые элементы и советы для модов
Когда базовые сцены и диалоги освоены, можно добавить больше интерактивности, эмоций и уникальных механик в ваш мод.

4.1. Несколько концовок

Используем переменные и условия, чтобы игрок получал разные концовки:

if happiness >= 5:
jump good_ending
else:
jump bad_ending

label good_ending:
s "Мы провели замечательный день вместе!"
return

label bad_ending:
s "Сегодня как-то не очень получилось..."
return


Состояние игры хранится в переменных (happiness, friendship и т.д.).

Меняя условия, можно создавать уникальные развилки и концовки.

4.2. Таймеры и задержки

Для драматических эффектов можно использовать паузы:

s "Подожди немного..."
pause 2
s "Готово!"


pause 2 — пауза на 2 секунды.

Можно использовать для эффектного появления текста или событий.

4.3. Смена эмоций персонажей

Чтобы сцена выглядела живой, меняйте спрайты в зависимости от событий:

show sayori 1a at t11 zorder 2
s "Мне так хорошо с тобой!"
show sayori 2k at s11 zorder 2
s "Но я немного грущу..."


Каждая эмоция — отдельный спрайт персонажа.

Используйте их для передачи настроения.

4.4. Работа с музыкой и звуками для эмоций

Меняйте фоновые треки в зависимости от настроения сцены.

Добавляйте звуки шагов, дверей, дождя, чтобы сцена была более живой.

Пример:

play music "audio/happy.ogg"
s "Какая замечательная погода!"
play sound "audio/rain.ogg"
s "Ой, пошёл дождь..."

4.6. Советы по оформлению модов

Организация файлов:

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


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

Заходим в файл defentions.rpy и листаем примерно к этому моменту:


Далее перед 194-ой строкой, или после нее, или вообще как хотите! Вы пишите - image bg название обозначения, которое будет использоваться при вызове фона. К примеру: image bg park, далее image bg park = "mod_assets/park.png". Поздравляю! Вы загрузили свой первый кастомный фон. Примерно также вы сможете загрузить и обозначить спрайты, музыку и т.п
Комментирование кода:

Используйте # для заметок в скрипте, чтобы потом не запутаться.

Тестирование:

Часто запускайте мод, проверяйте ветвления и музыку.

Минимализм на старте:

Начинайте с небольшой сцены, потом постепенно добавляйте новые элементы.

Делайте бэкапы:

Всегда сохраняйте резервные копии проекта, особенно перед экспериментами.
6. Установка кастомных шрифтов
Установка кастомных шрифтов

Теперь давайте разберём, как установить в мод собственный шрифт.

Открываем Google Fonts.
Запустите браузер, введите в поисковой строке google fonts и перейдите по первой ссылке.

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


Скачиваем шрифт.
Нажмите кнопку Download и сохраните архив.

Добавляем шрифт в игру.

Откройте папку с вашим модом.

Внутри папки game создайте новую папку с названием fonts.

Поместите туда скачанный файл шрифта в формате .ttf.

Желательно, чтобы название файла было в таком виде:

fonts-fonts.ttf


Подключаем шрифт в коде.

Откройте файл screens.rpy.

Нажмите Ctrl + F (поиск по тексту) и введите слово font.

В найденных строках замените оригинальное название шрифта на имя вашего кастомного шрифта.

Пример замены:

style default:
font "fonts/fonts-fonts.ttf"

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

До:
После:
После сохранения изменений запустите мод — текст в игре будет отображаться с вашим новым шрифтом.
7. Заключение
В общем, надеюсь, что мое руководство помогло вам хотя бы немного разобраться в основах создания модов для DDLC.

Если что-то всё ещё непонятно, не переживайте — ниже я оставлю ссылки на более подробные и наглядные туториалы на YouTube, которые помогут лучше усвоить материал.

"https://www.youtube.com/watch?v=ttVbDpLyZZE"
"https://www.youtube.com/watch?v=wse-WRkay4I"
"https://www.youtube.com/watch?v=vK8PxvCv9h0&t=5s"
"https://www.youtube.com/watch?v=InA-iVs-Va8&t=3628s"

Так как я писал это руководство ночью «от нечего делать», здесь могут встречаться недоработки или что-то, что я забыл добавить. Но я обязательно буду дополнять и улучшать его в будущем.

А если вам уже стало понятно, как создавать свои моды — поздравляю! Вы сделали первый шаг и уже большой молодец!

Также, если вы захотите, то можете пройти мои собственные модификации:

https://drive.google.com/file/d/1z3jzQvCti8F4c0UH6hLG6FehaI1uwKcx/view?usp=sharing
https://drive.google.com/file/d/1s1S8ufwl5Awum8N7waqUFcMnea-ramJs/view?usp=sharing

5 Comments
Yuri  [author] 20 Aug @ 3:53am 
ChumpyBonus34, желаю удачи!
ChumpyBonus34 19 Aug @ 4:47pm 
Может быть попробую что-то поделать, когда лень не будет :mpn_san:
Утренник 19 Aug @ 8:14am 
ъ
:gmod:
meowmarden 15 Aug @ 8:57am 
лайк поставил из жалости
JAKE 15 Aug @ 4:47am 
Нихуя не понял, но очень интересно. Гайд топчик.