Полное руководство по кастомным портретам и фонам в Rift of the NecroDancer

/ ИгрыГайды

Содержание:


Введение   

В обновлении к 10-летию игры незаметно появилась масштабная новая функция:

Верно — теперь в уровнях из мастерской можно использовать полностью кастомные портреты для сражения с монстрами из разлома вместе с (или вместо) Кэденс! После выхода обновления вы, возможно, уже видели уровни с такими портретами. Хотя базовые инструкции можно найти на официальной странице расширенных функций, это руководство подробно разберёт всё, что нужно для добавления портретов в свои уровни. Также мы объясним все нюансы, баги и недокументированные возможности, чтобы вы могли идеально настроить внешний вид своего уровня.

Гайд обновлён 12 июня 2025 года и актуален для версии 1.5.0-b20860. Если после этой даты вышли новые патчи, информация может быть устаревшей.

Прежде чем начать, ответим на частые вопросы:

Нужен ли мод для создания кастомных портретов? Игрокам нужен мод для их отображения?   

Нет! Хотя функция изначально была модом, разработчики официально добавили её в базовую игру! Теперь для кастомных портретов не требуются моды или DLC, а все карты, созданные с этим модом, автоматически совместимы с немодифицированной версией.

В каком формате должны быть анимации портретов?   

Каждый кадр анимации должен быть отдельным изображением в формате PNG. Не используйте анимированные форматы или спрайтшиты. Размер не критичен, так как спрайты масштабируются, но официальные портреты обычно имеют разрешение 2048×2048 пикселей.

Сколько кадров должно быть в анимации?   

Конкретного количества кадров не требуется, но обычно достаточно 5–6.

Почему фон зелёный, даже если я не в режиме тренировки?   

Сейчас существует баг, из-за которого кастомные портреты используют фон Зверолова вместо указанного в редакторе уровней. К счастью, в разделе «Расширенная информация» есть обходное решение!

Можно ли настроить частицы на фоне?   

Да! Вы можете изменить их цвет, использовать спрайты другого персонажа или даже загрузить собственные. Подробности — в разделе «Расширенная информация».

Можно ли убрать рамку портрета, чтобы персонаж отображался без фона?   

Да, но для этого потребуется использование недокументированных функций. В разделе «Расширенная информация» вы найдёте инструкции по созданию и редактированию файла «portrait.json».

Можно ли добавить кастомные реплики?   

Нет, эта функция пока не поддерживается. Возможно, она появится в будущих обновлениях.

Базовое использование   

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

Открытие папки трека   

Проще всего найти папку с данными трека через редактор уровней. Нажмите кнопку или клавишу «Открыть», выберите нужный трек и нажмите «Открыть папку трека».

Для удобства добавьте папку CustomTracks в закладки проводника. Также можно перейти в неё напрямую по одному из путей:

Настройка папок   

Игра ищет изображения для кастомных портретов по строго определённому пути. Внимательно следуйте инструкциям и проверяйте названия папок!

Сначала создайте папку с названием «CustomPortRifts» внутри директории трека.

Это название мода, который изначально добавил данную функцию, и игра сохранила это соглашение об именовании. Убедитесь, что новая папка находится в той же директории, где лежит файл «info.json» вашего уровня.

Внутри папки «CustomPortRifts» создайте подпапку «Hero», если хотите заменить портрет Кэденс, и/или «Counterpart», если нужно заменить персонажа справа. Если планируете заменить оба портрета, создайте обе папки! Процесс создания портретов одинаков для любой стороны.

Затем внутри «Hero» и/или «Counterpart» создайте до четырёх папок — по одной для каждой позы, которую хотите настроить. Доступные варианты:

  • VibePower: отображается при активной силе ритма
  • DoingPoorly: показывается, если у игрока меньше 3/10 HP
  • DoingWell: активируется при комбо 80+
  • Normal: стандартная поза в остальных случаях

Не обязательно добавлять все четыре позы, но крайне рекомендуется создать хотя бы «Normal». Если не добавить «VibePower», игра будет использовать «DoingWell» (если оно есть) при активной силе ритма.

Добавление спрайтов   

Осталось только поместить изображения в созданные папки. Процесс прост, но есть несколько важных правил.

Во-первых, все файлы должны быть в формате PNG! Изображения с другими расширениями не загрузятся. Размер не критичен — игра автоматически масштабирует спрайты, но официальные портреты обычно имеют разрешение 2048×2048 пикселей.

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

Кадры анимации загружаются в алфавитном порядке по названиям файлов, но, в отличие от папок, конкретные имена не имеют значения. Каждый кадр будет отображаться в начале нового такта, быстро сменяя предыдущий. Обычно оптимально использовать 5–6 кадров, но можно добавить больше или меньше. Подробнее о тонкостях анимации читайте в следующих разделах.

После добавления изображений проверьте трек в игре, чтобы увидеть свои портреты в действии! При каждом изменении спрайтов необходимо выходить в меню выбора песни — быстрое перезапуск уровня не обновляет кастомные портреты. Если вместо вашего персонажа отображается стандартный, проверьте названия папок и формат файлов (должны быть PNG). Если же виден манекен, значит игра обнаружила кастомные портреты, но не смогла загрузить спрайты. Это также происходит в начале уровня, если отсутствует папка «Normal».

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

Расширенная информация   

Анимации   

Если в папке позы несколько изображений, игра воспринимает их как последовательность кадров анимации (в алфавитном порядке). Анимация проигрывается один раз за такт, синхронно с ритмом песни. Скорость зависит только от BPM трека, а не от количества кадров. Тайминг анимации следующий:

  • Первый кадр отображается 3/31 такта
  • Все последующие кадры — по 2/31 такта
  • Если анимация завершается до конца такта, она останавливается на последнем кадре до начала следующего такта.

Это означает, что можно использовать до 15 кадров — все последующие просто не успеют отобразиться в рамках одного такта. Однако большинство официальных портретов используют всего 5–6 кадров. Исключение — анимация VibePower Кэденс, где задействованы все 15 кадров для плавной прорисовки её развевающихся волос и одежды.

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

Ограничения   

  • В текущей версии нельзя добавить анимацию при потере жизни, даже если заменён портрет Кэденс.
  • Голосовые реплики отключаются при использовании кастомного портрета. Экспериментальная настройка для их включения существует, но не работает. Разработчики обещают добавить поддержку кастомных реплик в будущем.
  • Из-за бага кастомные портреты справа игнорируют выбранного в редакторе персонажа, используя вместо этого фон и частицы режима тренировки (зелёный фон с эффектами Зверолова). Проблему можно решить через настройки фона, описанные далее.

Отличия от мода Custom PortRifts   

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

Отличия от мода Custom PortRifts   

Этот раздел актуален только для тех, кто ранее создавал уровни, ориентируясь на документацию мода.

  • Порядок кадров анимации изменился. В моде анимация завершалась на первом кадре, тогда как официальная реализация останавливается на последнем.
  • При отсутствии нужной позы мод использовал наиболее похожую доступную анимацию. Официальная версия просто не переключает состояния.
  • Мод выполнял дополнительную обработку спрайтов, что исправляло редкие графические артефакты, но значительно увеличивало время загрузки. Если ваши спрайты отображаются с белой рамкой, убедитесь, что все полностью прозрачные пиксели имеют значение RGBA(0, 0, 0, 0).

Экспериментальные настройки портретов   

Содержимое текстового файла должно быть объектом JSON. Доступны следующие параметры:

  • OffsetX (float): Смещение портрета по горизонтали. Ширина экрана равна 1920 единицам.
  • OffsetY (float): Смещение портрета по вертикали. Высота экрана равна 1080 единицам.
  • DisableMask (boolean): Если true, отключает маску, и ни одна часть портрета не будет скрыта рамкой.
  • InvertReactions (boolean): Если true, меняет местами анимации DoingPoorly и DoingWell.
  • MuteVO (boolean): Если true, отключает голосовые реплики персонажа. Не действует при использовании кастомного портрета.
  • PortraitID (string): Переопределяет загружаемого персонажа. При изменении этого параметра кастомный портрет не загрузится, но можно использовать стандартного персонажа с изменёнными реакциями или без голоса (другие настройки не действуют). Также можно использовать ID 'CustomCounterpartNative' для удаления рамки портрета.

Если указан неверный ID портрета, сам портрет и его рамка не отобразятся, а фон заменится на статичное изображение звёздного неба, перезаписывая ваше фоновое видео (если не используются экспериментальные настройки фона).

  • Animations (object): Полностью переопределяет последовательность анимации. Подробнее в следующем разделе.

Пример конфигурационного файла:

Экспериментальные настройки фона   

Здесь много сложных опций, поэтому полная спецификация будет рассмотрена позже. Для базового использования достаточно одного параметра. Чтобы использовать фон стандартного персонажа, содержимое файла «vfx.json» должно выглядеть так:

Кастомные частицы   

Для использования спрайтшита сначала создайте файл «vfx.json» (если его ещё нет), как описано выше. Затем поместите изображение в папку трека, желательно рядом с «vfx.json». В JSON-файл добавьте три параметра: путь к файлу и размеры спрайтшита. Пример:

Ручная настройка анимации портрета   

Важно: переопределение анимаций работает по принципу «всё или ничего»! При использовании этой функции придётся прописывать каждый кадр каждой анимации вручную. Частичное переопределение поз или кадров пока невозможно.

Для начала создайте файл «portrait.json» (если его нет) и добавьте ключ «Animations». Его значением должен быть объект с ключами для каждой позы. Важно: названия поз здесь отличаются от используемых в Custom PortRifts! Вместо них используйте:

  • «PerformingNormal» (обычная поза)
  • «PerformingPoorly» (плохое состояние)
  • «PerformingWell» (высокое комбо)
  • «VibePower» (сила ритма)

Ручная настройка анимации портрета   

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

  • FileName (string): Путь к файлу изображения относительно JSON-файла. Например, при стандартной структуре папок путь может выглядеть как «Normal/frame1.png».
  • Duration (float): Длительность кадра в тактах. Допустимые значения — от 0 до 1. По умолчанию 1/30, что отличается от стандартного тайминга.
  • OffsetX (float): Смещение портрета по горизонтали (ширина экрана равна 1920 единицам). Переопределяет глобальное значение OffsetX из «portrait.json». Если указан OffsetY, по умолчанию равен 0. В противном случае используется глобальный OffsetX.
  • OffsetY (float): Смещение портрета по вертикали (высота экрана равна 1080 единицам). Переопределяет глобальное значение OffsetY из «portrait.json». Если указан OffsetX, по умолчанию равен 0. В противном случае используется глобальный OffsetY.
  • ScaleX (float): Масштаб по горизонтали (множитель). По умолчанию 1. Если указан, необходимо также задать ScaleY, иначе портрет скроется (ScaleY автоматически станет 0).
  • ScaleY (float): Масштаб по вертикали (множитель). По умолчанию 1. Если указан, необходимо также задать ScaleX, иначе портрет скроется (ScaleX автоматически станет 0).

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

Пример (сокращённого) файла «portraits.json» из DLC с Мику, где используется эта функция. Для удобства чтения удалено около половины кадров и одна поза:

Полная спецификация vfx.json   

    • r (float): Красная составляющая цвета. Диапазон: от 0 до 1.
    • g (float): Зелёная составляющая цвета. Диапазон: от 0 до 1.
    • b (float): Синяя составляющая цвета. Диапазон: от 0 до 1.
    • a (float): Альфа-канал (прозрачность) цвета. Диапазон: от 0 до 1. По умолчанию: 1.
    • r (float): Красная составляющая цвета. Диапазон: от 0 до 1.
    • g (float): Зелёная составляющая цвета. Диапазон: от 0 до 1.
    • b (float): Синяя составляющая цвета. Диапазон: от 0 до 1.
    • a (float): Альфа-канал (прозрачность) цвета. Диапазон: от 0 до 1. По умолчанию: 1.
    • t (float): Время активации этого цвета. Диапазон: от 0 до 1. Если не указано, градиент распределяется равномерно.
    • CharacterId (string): ID персонажа, чей фон будет загружен для установки значений по умолчанию.
    • CoreStartColor1 (Gradient): Начальный цвет облаков, исходящих из разлома.
    • CoreStartColor2 (Gradient): Аналогично предыдущему.
    • CoreColorOverLifetime (Gradient): Изменение цвета облаков со временем. Умножается на начальный цвет.
    • SpeedlinesStartColor (Gradient): Начальный цвет тонких линий, исходящих из разлома.
    • SpeedlinesColorOverLifetime (Gradient): Изменение цвета тонких линий со временем. Умножается на начальный цвет.
    • BackgroundColor1 (Color): Цвет градиента поверх фона.
    • BackgroundColor2 (Color): Основной цвет фона (более важный параметр).
    • BackgroundGradientIntensity (float): Интенсивность градиента.
    • BackgroundAdditiveIntensity (float): Базовая интенсивность цвета фона.
    • RiftGlowColor (Color): Цвет свечения вокруг разлома.
    • StrobeColor1 (Color): Цвет вспышки при использовании устаревшего события «Animation Trigger».
    • StrobeColor2 (Color): Цвет линий при использовании устаревшего события «Animation Trigger».
    • CustomParticleColor1 (Gradient): Начальный цвет персонализированных иконок, исходящих из разлома.
    • CustomParticleColor2 (Gradient): Аналогично предыдущему.
    • CustomParticleColorOverLifetime (Gradient): Влияет на цвет персонализированных иконок. Умножается на начальный цвет.
    • CustomParticleImagePath (string): Относительный путь к файлу спрайтшита кастомных частиц. Подробнее в разделе «Кастомные частицы».
    • CustomParticleSheetWidth (int): Ширина спрайтшита кастомных частиц.
    • CustomParticleSheetHeight (int): Высота спрайтшита кастомных частиц.

    Заключение   

    Я постарался сделать это руководство максимально подробным и точным, но ошибки возможны! Если вы заметили неточности или упущения, пожалуйста, сообщите в комментариях.

    Отдельная благодарность разработчикам (особенно Marukyu!) за официальную поддержку моего мода. Очень приятно осознавать, что мои усилия повлияли на игру.

    Вот финальный результат с использованием всех примеров из руководства:

    Попробуйте сами!
    https://steamcommunity.com/sharedfiles/filedetails/?id=3422450367

    Источник: 96 LB | Steam

Подписаться на обновления Гайды
Зарегистрируйтесь на сайте, чтобы отключить рекламу

ℹ️ Совет от ИИ

Непонятный гайд? В статье есть ошибки или не хватает информации? Попробуйте спросить нашего ИИ-помощника в комментариях и он постарается помочь!

⚠️ Важно:

• AI Rutab читает все ваши комментарии и готов вам помочь.
• Просто задайте вопрос.
• Rutab-Bot работает в тестовом режиме и может давать неточные ответы.
• Всегда проверяйте информацию и не полагайтесь на него как на единственный источник.
• К ИИ-помощнику можно обратиться по имени Rutab или Рутаб.
• Ваши комментарии важны и помогают нам оперативно исправлять гайды с ошибками 👍

Топ дня 🌶️


0 комментариев

Оставить комментарий


Новые комментарии

Похоже, у тебя проблема с мутацией от питомца «Chicken Jockey» (Куриный зомби). 🐔🧟‍♂️ Мутация «Zombified» должна сохраняться, но если она пропадает сразу — это может быть баг или конфликт с другими...
  • Rutab
Чтобы улучшить «Youngling Hut» (Домик для детенышей) в Once Human, тебе нужно: 1. Разблокировать соответствующие меметики в дереве прокачки (обычно в разделе «Логистика» или «Животноводство»). 2....
  • Rutab
Повышение мощности
  • Анон
В статье не указана стоимость «Amber Lily» с мутациями moonlit, pollinated и frozen, но учитывая, что это редкий цветок с тремя мутациями, его цена может быть очень высокой — вероятно, в диапазоне...
  • Rutab
Попробуй полностью выйти из аккаунта Roblox и зайти снова — иногда это помогает при проблемах с сохранением прогресса. Если не сработает, проверь, есть ли у тебя квест «Загар» в активных заданиях...
  • Rutab
Согласно статье, семена Beanstalk («Бобовый стебель») можно купить у Сэма за 10 млн шекелей, но они появляются редко (редкость «призматическая»). Ваш комментарий про 1/3333 шанс каждые 5 минут не...
  • Rutab
В статье указано, что для получения «Глазированного мёдом винограда» (honeyglazed grape) в рецепте 28 требуется 5.6 кг этого ингредиента + 35 мёда. Награда — 3 семени Лумиры. 😊 Если у вас есть...
  • Rutab
Если Тенна повреждён, но жив — это не повлияет на пацифистскую концовку, так как ключевое условие — не убивать персонажей. Однако недостаточное количество завербованных Теневых Парней (Shadow Men)...
  • Rutab
Чтобы выбросить броню (например, если инвентарь переполнен), откройте меню инвентаря ( клавиша X или соответствующая кнопка ), выберите нужный предмет и нажмите «Выбросить» (Drop) . Важно: перед...
  • Rutab
В Gears of War: Reloaded используется динамичная камера для усиления эффекта присутствия и интенсивности перестрелок — это фирменный стиль серии. 😊 Если тряска камеры вызывает дискомфорт, попробуй...
  • Rutab

Смотреть все