Своё радио в Fallout 4: От установки софта до квестовой механики

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

1. Установка Creation Kit, подготовка аудиофайлов и создание базовой станции

Установка Creation Kit, подготовка аудиофайлов и создание базовой станции

Добро пожаловать на курс «Своё радио в Fallout 4». Если вы читаете эти строки, значит, стандартный плейлист Даймонд-сити уже затерт до дыр, а классическая музыка Шенга Кавольски больше не вдохновляет на строительство поселений. Мы создадим с вами не просто папку с музыкой, а полноценный мод с диджеем, квестами и поиском новых треков на просторах Пустоши.

В этой вводной статье мы заложим фундамент: установим необходимый инструментарий, разберемся с капризными аудиоформатами движка Creation Engine и создадим «скелет» нашей будущей радиостанции.

Шаг 1. Инструментарий творца: Creation Kit

Для создания модов Bethesda предоставляет тот же инструмент, которым пользовались сами разработчики — Creation Kit (CK). Без него создать сложную логику радиостанции (квесты, скрипты, диалоги) невозможно.

Установка

Раньше установка требовала танцев с бубном через лаунчер Bethesda.net, но сейчас всё стало проще:
  • Откройте Steam.
  • Перейдите в библиотеку.
  • В выпадающем меню над списком игр (где обычно написано «Игры») поставьте галочку напротив «Инструменты».
  • Найдите в поиске Fallout 4 Creation Kit.
  • Нажмите «Установить».
  • > Важно: Creation Kit должен быть установлен в ту же папку, где находится сама игра Fallout 4. Если у вас несколько дисков, убедитесь, что пути совпадают.

    Первый запуск и настройка

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

    Шаг 2. Подготовка аудио: почему mp3 не подойдет

    Fallout 4 не умеет эффективно работать с mp3 «на лету» в рамках радиосистемы. Стандартным форматом для аудио в игре является .xwm (специальный сжатый формат для игр Bethesda) или .wav (несжатый, но очень тяжелый).

    Для радио мы будем использовать .xwm, так как он занимает мало места и быстро грузится.

    Необходимый софт

    Нам понадобится программа-конвертер. Самый популярный и простой вариант — MultiXwm.

  • Скачайте MultiXwm с Nexus Mods.
  • Распакуйте в любую удобную папку.
  • !Интерфейс утилиты MultiXwm для конвертации аудиофайлов

    Процесс подготовки треков

  • Подберите музыку. Допустим, у вас есть файл Song01.mp3.
  • Откройте MultiXwm, перетащите туда ваш файл.
  • В настройках битрейта (Bitrate) выберите значение около 48 kbps или 64 kbps. Для радио в стиле ретро этого более чем достаточно, а размер файла будет минимальным.
  • Нажмите «Start».
  • Правильная структура папок

    Моддинг не терпит хаоса. Все файлы должны лежать строго на своих местах внутри папки Data вашей игры.

    Создайте следующую структуру папок внутри директории игры Fallout 4/Data/:

    Поместите ваш конвертированный файл Song01.xwm в папку RadioTracks.

    > Совет: Всегда используйте уникальные префиксы в названиях файлов и папок. Вместо RadioTracks лучше назвать папку SuperStalker_Radio, где SuperStalker — ваш никнейм. Это убережет от конфликтов с другими модами.

    Шаг 3. Знакомство с Creation Kit и создание плагина

  • Запустите Creation Kit.
  • В левом верхнем углу нажмите File -> Data.
  • В появившемся списке дважды кликните по Fallout4.esm, чтобы напротив него появился крестик.
  • Нажмите OK. Загрузка займет некоторое время, программа может выглядеть зависшей («Не отвечает») — это нормально, просто подождите.
  • После загрузки вы увидите три основных окна: * Object Window (слева) — библиотека всех объектов игры. * Cell View (по центру) — список локаций. * Render Window (справа) — визуальный редактор мира.

    Нам на 90% времени понадобится только Object Window.

    Сразу сохраните свой новый плагин: File -> Save. Назовите его MyRadioMod.esp.

    Шаг 4. Импорт звука: Sound Descriptor

    Чтобы игра «увидела» ваш файл, нужно создать для него объект-описатель (Descriptor).

  • В Object Window раскройте категорию Audio -> Sound Descriptor.
  • Нажмите правой кнопкой мыши в списке справа -> New.
  • Откроется окно создания дескриптора.
  • Заполните поля: * ID: MyRadio_Track01_SD (Всегда используйте свой префикс! SD в конце — удобное обозначение типа объекта). * В поле Sound Type (внизу) оставьте значение по умолчанию или выберите Music. * В блоке Descriptor Type выберите Composite (это важно для плейлистов, хотя для одиночного звука можно и Single, но мы готовимся к будущему). * В пустом поле посередине нажмите правой кнопкой -> Add -> выберите ваш файл Song01.xwm из папки, которую мы создали ранее.

    !Настройка Sound Descriptor для привязки аудиофайла к движку

    Нажмите OK. Теперь игра знает о существовании этого трека.

    Шаг 5. Архитектура радиостанции

    Здесь начинается самое интересное. С точки зрения движка Fallout 4, радиостанция — это Квест (Quest). Да, именно квест. Он работает в фоне, управляет сценами и проигрывает звук.

    Нам понадобятся три элемента:

  • Sound Output Model (SOM) — определяет настройки громкости.
  • Quest — «мозг» радио.
  • Radio Station Message — частота, которую мы видим в Пип-Бое.
  • Создаем Sound Output Model

  • В Object Window идем в Audio -> Sound Output Model.
  • ПКМ -> New.
  • ID: MyRadio_SOM.
  • Volume: 1.0 (100% громкости).
  • Остальное можно оставить как есть. Нажмите OK.
  • Создаем Квест

  • Идем в Character -> Quest.
  • ПКМ -> New.
  • Открывается массивное окно квеста. Не пугайтесь.
  • ID: MyRadio_Quest.
  • Quest Name: My Radio Station (это техническое название).
  • Priority: 50 (стандартный приоритет).
  • ВАЖНО: Поставьте галочку Start Game Enabled. Это означает, что радио начнет работать сразу после загрузки мода.
  • Нажмите OK, чтобы создать квест. (Окно закроется. Найдите свой квест в списке и откройте его снова — теперь там доступны все вкладки).
  • Создаем частоту (Radio Message)

    Чтобы станция появилась в списке радио в Пип-Бое, нужен объект типа Message.

  • Идем в Miscellaneous -> Message.
  • ПКМ -> New.
  • ID: MyRadio_Frequency_Msg.
  • Title: Введите название станции, которое будет видеть игрок, например: «Радио Пустоши».
  • В блоке Radio Station (справа внизу) поставьте галочку.
  • В выпадающем списке выберите наш квест: MyRadio_Quest.
  • Нажмите OK.
  • Итоги и что дальше

    Мы проделали большую подготовительную работу. У нас есть: * Установленный Creation Kit. * Правильно сконвертированный трек в формате .xwm. * Sound Descriptor, связывающий файл с движком. * Квест, который будет управлять радиостанцией. * Сообщение частоты, которое выведет название станции в Пип-Бой.

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

    В следующей статье мы займемся «Магией сцен и плейлистов»: научим квест проигрывать треки, настроим случайную ротацию (Random) и заставим наше радио звучать.

    2. Настройка Sound Descriptors и реализация случайной ротации треков

    Настройка Sound Descriptors и реализация случайной ротации треков

    Приветствую, коллеги-моддеры! В прошлой лекции мы установили Creation Kit, научились конвертировать mp3 в понятный движку формат .xwm и создали «скелет» нашей радиостанции: квест и частоту. Но если вы попытаетесь настроиться на волну сейчас, вы услышите лишь тишину. Наша станция — это пока что пустая коробка без пластинок.

    Сегодня мы займемся наполнением этой коробки. Мы создадим архитектуру звука, которая позволит игре выбирать треки случайным образом, чтобы эфир не казался заезженным. Мы не просто закинем файлы в папку, а создадим умную систему плейлистов через Sound Descriptors.

    Теория: Звуковая матрешка Fallout 4

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

    Представьте себе матрешку:

  • Аудиофайл (.xwm) — самая маленькая матрешка. Это просто данные на жестком диске. Сам по себе движок с ним работать не умеет.
  • Sound Descriptor (Single) — средняя матрешка. Это карточка товара. Она говорит движку: «Вот этот файл — это музыка, у неё такая-то громкость, и она лежит вот тут».
  • Sound Descriptor (Composite) — самая большая матрешка. Это плейлист. Она говорит: «У меня внутри лежит десять средних матрешек (треков), и я буду выдавать их по одной в случайном порядке».
  • !Схема вложенности звуковых объектов: от файла к плейлисту.

    Именно Composite Sound Descriptor мы в итоге отдадим нашему диджею (Квесту) в следующих уроках.

    Шаг 1. Массовый импорт треков

    Допустим, вы подготовили три трека: Track01.xwm, Track02.xwm и Track03.xwm. Все они лежат в папке Data/Sound/FX/MyRadioMod/RadioTracks/.

    Для каждого из них нам нужно создать свой Single Sound Descriptor. Это может показаться рутиной, но это необходимый фундамент.

  • Откройте Creation Kit и загрузите ваш плагин MyRadioMod.esp (сделайте его активным).
  • В окне Object Window перейдите в Audio -> Sound Descriptor.
  • Нажмите правой кнопкой мыши (ПКМ) в списке -> New -> Sound Descriptor.
  • Настройка одиночного трека

    В открывшемся окне: * ID: MyRadio_Track01_SD (Суффикс _SD помогает не запутаться). * Sound Type: Выберите Music. * Descriptor Type: Оставьте Single (по умолчанию). * В центральное поле добавьте ваш файл Track01.xwm (ПКМ -> Add). * Volume: Обычно оставляют 0 dB (исходная громкость), но если трек слишком тихий/громкий, здесь можно подкрутить ползунок Static Attenuation. * Нажмите OK.

    Повторите это действие для всех ваших треков. В итоге у вас в списке должно появиться: * MyRadio_Track01_SD * MyRadio_Track02_SD * MyRadio_Track03_SD

    > Совет: Если у вас 50 треков, называть их Track01...Track50 — плохая идея. Лучше используйте понятные имена: MyRadio_Elvis_BlueSuede_SD. Это спасет ваши нервы, когда вы захотите удалить конкретную песню.

    Шаг 2. Создание плейлиста (Composite Descriptor)

    Теперь самое интересное. Мы объединим эти треки в один объект, который будет управлять ротацией.

  • Снова ПКМ в списке Sound Descriptor -> New -> Sound Descriptor.
  • ID: MyRadio_Playlist_Main_CSD (Суффикс _CSD означает Composite Sound Descriptor).
  • Descriptor Type: Переключите галочку на Composite.
  • Интерфейс окна изменится. Теперь вместо добавления файлов .xwm, список ожидает добавления других Sound Descriptors.

    !Окно настройки композитного дескриптора для создания плейлиста.

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

  • В большом пустом поле нажмите ПКМ -> Add.
  • В появившемся списке найдите ваши созданные ранее дескрипторы: MyRadio_Track01_SD, Track02_SD и т.д.
  • Вы можете выбрать их все сразу (зажав Ctrl) и нажать OK.
  • Теперь ваш MyRadio_Playlist_Main_CSD содержит ссылки на все ваши песни.

    Шаг 3. Настройка случайной ротации

    В окне Composite Descriptor обратите внимание на блок настроек, который обычно находится под списком треков. Нас интересует параметр Playback Pattern (Шаблон воспроизведения). Это «мозг» вашего плейлиста.

    Здесь есть несколько вариантов, и выбор критически важен для радио:

    1. Sequence (Последовательность)

    Играет треки строго по порядку: 1, 2, 3, 1, 2, 3. * Вердикт: Скучно. Игрок быстро выучит порядок песен.

    2. Random (Случайно)

    Движок выбирает любой трек из списка. * Проблема: Компьютерный рандом беспощаден. Он может выбрать Трек №1, затем Трек №5, а затем снова Трек №1. Слышать одну и ту же песню дважды за 10 минут раздражает. * Вердикт: Не подходит для музыки, но отлично подходит для звуков выстрелов или шагов.

    3. Shuffle (Перемешивание)

    Это то, что нам нужно. Движок создает виртуальную колоду из ваших треков, перемешивает её и проигрывает до конца. Только когда все треки прозвучат по одному разу, колода перемешается снова. * Вердикт: Идеально для радио. Гарантирует разнообразие.

    Действие: Установите галочку напротив Shuffle.

    Шаг 4. Категоризация (Задел на будущее)

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

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

  • MyRadio_Music_CSD — только музыка (Shuffle).
  • MyRadio_Intro_CSD — фразы приветствия диджея (Random).
  • MyRadio_Outro_CSD — фразы прощания или объявления погоды (Random).
  • Зачем это нужно? Когда мы перейдем к программированию Квеста, мы сможем создать логическую цепочку: Играть Интро -> Играть Музыку -> Играть Аутро.

    Если же вы просто хотите «немое» радио, которое крутит музыку нон-стоп, вам хватит одного MyRadio_Playlist_Main_CSD.

    Частые ошибки новичков

    Ошибка: «Я добавил файл .xwm прямо в Composite Descriptor»

    Технически Creation Kit иногда позволяет это сделать, но это плохая практика. Если вы захотите использовать этот же трек в другом месте (например, в музыкальном автомате в поселении), вам придется дублировать настройки. Всегда оборачивайте файл в Single Descriptor.

    Ошибка: Тихий звук

    В игре радио звучит тише, чем в плеере. Это связано с настройками Sound Output Model, которую мы создали в прошлом уроке. Убедитесь, что в ваших Single Descriptors не стоит понижение громкости (Static Attenuation).

    Ошибка: Формат файла

    Если вы проигнорировали конвертацию в .xwm и пытаетесь скормить движку .wav высокого разрешения (48kHz/24bit), игра может вылетать при попытке воспроизведения. Радио в Fallout 4 очень чувствительно к форматам. Стандарт: 44.1kHz, 16bit (для wav) или стандартный xwm.

    Итоги

    Сегодня мы превратили набор файлов в структурированную систему.

    Что мы имеем: * Single Descriptors: Карточки для каждого отдельного трека. * Composite Descriptor: Умный плейлист, настроенный на режим Shuffle.

    Теперь у нас есть «объект», который можно приказать играть. Но кто будет отдавать приказ? В следующей статье мы вернемся в окно Quest и создадим Scenes (Сцены) — механизм, который соединит наш плейлист с радиоволной и заставит Пип-Бой воспроизводить музыку.

    Готовьтесь, в следующий раз мы будем писать сценарий эфира!

    3. Создание NPC-диджея, размещение студии и написание базовых диалогов

    Создание NPC-диджея, размещение студии и написание базовых диалогов

    Приветствую, студенты! В предыдущих лекциях мы с вами проделали огромную техническую работу: установили Creation Kit, научились конвертировать музыку в формат .xwm и создали невидимый механизм ротации треков. Но давайте будем честны: радио без харизматичного ведущего — это просто плейлист.

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

    Шаг 1. Рождение легенды: Создание Actor

    В терминологии движка Creation Engine любой живой (и не очень) персонаж называется Actor. Будь то рейдер, брамин или сам Паладий Дэнс — все они Актеры.

    Создание базового объекта

  • Откройте Creation Kit и загрузите ваш плагин MyRadioMod.esp.
  • В Object Window раскройте список Actors -> Actor.
  • Нажмите правой кнопкой мыши (ПКМ) в списке справа -> New.
  • Откроется окно настройки персонажа. Оно огромно, но не пугайтесь. Нам нужны лишь ключевые вкладки.

    Вкладка Traits (Основные черты)

    Здесь мы задаем паспортные данные: * ID: MyRadio_DJ_NPC (Уникальный идентификатор для движка). * Name: Введите имя, которое увидит игрок. Например: «Диджей Фантом». * Short Name: Можно продублировать имя. * Race: Выберите HumanRace (если хотите человека) или GhoulRace (если хотите гуля). * Female: Поставьте галочку, если персонаж женского пола.

    Критически важные галочки: * Unique: Обязательно поставьте эту галочку! Она говорит игре, что этот персонаж существует в единственном экземпляре. Без этого флага система квестов и диалогов может работать некорректно. * Essential: Если вы не хотите, чтобы вашего диджея случайно убил залетный супермутант или сам игрок, поставьте эту галочку. Персонаж станет бессмертным.

    !Скриншот вкладки Traits окна Actor, где красным маркером выделены поля ID, Name и галочки Unique и Essential.

    Вкладка Stats (Характеристики)

    Здесь можно настроить уровень и параметры SPECIAL. Для диджея, который сидит в студии, это не так важно, но я рекомендую поставить Level Mult и значение 1.0, чтобы он рос в уровне вместе с игроком, или просто задать фиксированный уровень 10.

    Вкладка Character Gen Parts (Внешность)

    Здесь вы можете настроить лицо. Нажмите кнопку Preview Head, чтобы видеть изменения. Вы можете выбрать пресеты или настроить прическу (Hair), цвет глаз (Eyes) и прочее.

    Нажмите OK, чтобы сохранить персонажа.

    Шаг 2. Голос Пустоши: Создание Voice Type

    Это самый частый камень преткновения новичков. Чтобы NPC мог говорить уникальные фразы, ему нужен уникальный Voice Type.

    Если вы оставите стандартный тип голоса (например, MaleBoston), ваш диджей будет говорить голосом обычного поселенца, и его реплики будут смешиваться с тысячами других стандартных фраз («У меня болит спина», «Надеюсь, ты не синт»).

  • В Object Window перейдите в Character -> Voice Type.
  • ПКМ -> New.
  • ID: MyRadio_DJ_VoiceType.
  • Gender: Выберите пол, соответствующий вашему NPC.
  • Нажмите OK.
  • Теперь вернитесь к вашему NPC (MyRadio_DJ_NPC), откройте его двойным кликом, перейдите на вкладку Traits и в выпадающем списке Voice Type выберите только что созданный MyRadio_DJ_VoiceType. Нажмите OK.

    Шаг 3. Строительство студии (Cell)

    Диджею нужно где-то жить. Мы можем поставить его просто посреди Сэнкчуари, но профессиональнее создать отдельную локацию (интерьер).

  • В главном меню выберите World -> Cells.
  • В открывшемся окне убедитесь, что слева выбрано Interiors (Интерьеры).
  • ПКМ в списке -> New.
  • ID: MyRadio_Station_Cell.
  • Нажмите OK и найдите вашу ячейку в списке. Дважды кликните по ней, чтобы загрузить (Render Window станет черным — это нормально, там пусто).
  • Обустройство интерьера

    Теперь нам нужно построить комнату. Используйте объекты из Static:
  • В Object Window в фильтре напишите ShackFloor (пол хижины).
  • Перетащите любой пол в Render Window.
  • Добавьте стены (ShackWall) и крышу.
  • Добавьте освещение: WorldObjects -> Light. Перетащите лампочку, чтобы было видно, что происходит.
  • Размещение Диджея

  • Найдите в Object Window вашего MyRadio_DJ_NPC.
  • Перетащите его в центр вашей комнаты в Render Window.
  • Убедитесь, что он стоит на полу, а не висит в воздухе (клавиша F «роняет» объект на пол).
  • !Изображение интерьера деревянной хижины в редакторе, где в центре стоит NPC, а вокруг расставлены микрофон и радиоаппаратура.

    Теперь у нас есть персонаж в своей студии. Но пока он нем как рыба.

    Шаг 4. Основы диалоговой системы

    Диалоги в Fallout 4 — это часть квестовой системы. Мы будем использовать тот же квест MyRadio_Quest, который создали для радио.

  • Откройте ваш квест: Character -> Quest -> MyRadio_Quest.
  • Перейдите на вкладку Scenes (Сцены).
  • В Fallout 4 диалоги строятся через Сцены. Это позволяет персонажам общаться между собой, двигаться во время разговора и прерывать речь.

    Создание приветствия

  • В списке слева (Scenes) нажмите ПКМ -> New.
  • ID: MyRadio_Greeting_Scene.
  • Убедитесь, что сцена выбрана. Справа вы увидите большое серое поле.
  • ПКМ в этом поле -> New Phase (Фаза). Фазы — это этапы разговора.
  • Дважды кликните по появившейся фазе. Откроется окно редактора фазы.
  • Нам нужно добавить действие (Action), когда NPC говорит.

  • В блоке Actions нажмите ПКМ -> New -> Dialogue.
  • Откроется окно Dialogue Action. Нажмите кнопку New рядом с полем Topic.
  • ID: MyRadio_Hello_Topic.
  • В поле Info (внизу) нажмите ПКМ -> New.
  • Написание текста (Topic Info)

    Откроется окно Topic Info. Это сердце диалога.
  • Topic Text: Напишите текст приветствия. Например: «Эй, путник! Добро пожаловать на единственную нормальную радиостанцию в этом радиоактивном аду!»
  • В центре окна есть список условий (Conditions). Нам нужно, чтобы это говорил именно наш диджей.
  • ПКМ в Conditions -> New.
  • Condition Function: GetIsID.
  • Нажмите кнопку INVALID и выберите вашего MyRadio_DJ_NPC.
  • Нажмите OK.
  • Теперь игра знает: эту фразу может сказать только наш Диджей.

    !Блок-схема: Quest -> Scene -> Phase -> Action -> Topic -> Topic Info. Стрелки показывают вложенность элементов.

    Проблема тишины

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

    Для тестов нам нужно сгенерировать «тишину» или записать черновой звук.

  • В окне Topic Info нажмите кнопку Record (внизу).
  • Если у вас есть микрофон, скажите что-нибудь и нажмите Stop, затем Save.
  • Если микрофона нет, просто нажмите Save — создастся пустой файл.
  • Нажмите OK во всех окнах, чтобы закрыть их и сохранить изменения.
  • Шаг 5. Привязка диалога к игроку

    Мы создали сцену, но игра не знает, когда её запускать. Для простого приветствия («E» — Поговорить) используется специальная вкладка Misc в квесте или Dialogue Views, но самый надежный способ для новичка — использовать Hello топик в Generic квесте, или настроить сцену на запуск при активации.

    Однако, для нашего курса мы пойдем путем Radio Dialogue, который работает немного иначе. Но чтобы вы могли просто зайти в студию и проверить, работает ли NPC, мы сделаем простейший триггер.

    Вернитесь в Topic Info вашего приветствия (MyRadio_Hello_Topic). В поле Prompt (сверху) напишите: «Привет».

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

    Итоги и домашнее задание

    Сегодня мы создали физическую оболочку для нашего радио: * Создан уникальный NPC с собственным Voice Type. * Построена базовая студия (Interior Cell). * Написана первая реплика через систему Scenes.

    В следующей статье мы объединим всё это: научим диджея комментировать треки, объявлять погоду и принимать заказы от игрока. Мы свяжем Scenes с Playlist, который создали ранее.

    А пока — закрепим материал!

    4. Скриптинг: механика передачи голодисков диджею для разблокировки новых песен

    Скриптинг: механика передачи голодисков диджею для разблокировки новых песен

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

    Сегодня мы добавим элемент геймплея, который превратит ваш мод из простой «музыкальной папки» в полноценный квест. Мы реализуем механику поиска и разблокировки музыки.

    Представьте: игрок находит редкую голозапись в старом убежище, приносит её вашему диджею, и после короткого диалога этот трек начинает играть в эфире. Звучит сложно? На самом деле, это делается через простую логику «Переключателей».

    Логика процесса: Как игра запоминает прогресс

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

    Для этого используются Global Variables (Глобальные переменные). Представьте, что это обычные выключатели света на стене.

    * Значение 0: Выключатель опущен (Трек заблокирован, не играет). * Значение 1: Выключатель поднят (Трек разблокирован, играет в эфире).

    Наша задача сводится к трем шагам:

  • Создать предмет (Голодиск).
  • Создать выключатель (Global Variable).
  • Написать короткий скрипт, который при передаче предмета нажимает на выключатель.
  • !Логическая схема разблокировки контента через диалог

    Шаг 1. Создаем «Выключатель» (Global Variable)

    Сначала создадим переменную, которая будет хранить состояние нашего трека.

  • В Object Window (слева) раскройте категорию Miscellaneous -> Global.
  • Нажмите ПКМ в списке справа -> New.
  • ID: MyRadio_Song02_Unlocked_Global (Название должно быть понятным).
  • Value: 0 (По умолчанию трек скрыт).
  • Constant: Убедитесь, что галочка НЕ стоит. Значение должно меняться в процессе игры.
  • Нажмите OK.
  • Теперь у нас есть переменная, которой мы можем управлять.

    Шаг 2. Создаем предмет (Голодиск)

    Игроку нужно что-то физически найти и принести.

  • В Object Window перейдите в Items -> Holotape.
  • Найдите любой стандартный голодиск, например CommonHolotape.
  • ПКМ по нему -> Duplicate (Дублировать).
  • Откройте копию двойным кликом.
  • ID: MyRadio_Song02_Tape.
  • Name: Введите название, которое увидит игрок, например: «Голозапись: Джаз довоенных лет».
  • Нажмите OK. На вопрос «Create a new form?» ответьте No (мы уже работаем с дубликатом) и подтвердите переименование.
  • Теперь у нас есть предмет. Вы можете разместить его в мире (в любой локации через Render Window), чтобы игрок мог его найти.

    Шаг 3. Внедрение трека в эфир с условием

    В предыдущих уроках мы создавали Scenes (Сцены) для проигрывания музыки. Чтобы новый трек зазвучал, нам нужно добавить его в квест, но с условием.

  • Откройте ваш квест MyRadio_Quest.
  • Перейдите на вкладку Scenes.
  • Создайте новую фазу или сцену для вашего нового трека (как мы делали это ранее).
  • В этой фазе выберите действие, проигрывающее музыку.
  • Самое важное: В окне настройки фазы (или сцены) найдите список Conditions (Условия).
  • Нажмите ПКМ -> New.
  • * Condition Function: GetGlobalValue. * Parameter: Нажмите кнопку и выберите нашу переменную MyRadio_Song02_Unlocked_Global. * Comparison: == (Равно). * Value: 1.

    Что мы сделали: Мы сказали игре: «Проигрывай эту сцену (этот трек) ТОЛЬКО если переменная равна 1». Пока она равна 0, радио будет просто пропускать этот трек и играть следующий.

    Шаг 4. Скриптинг в диалоге

    Теперь самое интересное. Нам нужно создать диалог, в котором игрок отдает кассету, а мы переключаем переменную.

  • В квесте перейдите на вкладку Scenes (или Player Dialogue, если вы используете его).
  • Создайте новую ветку диалога.
  • Topic Text (Реплика игрока): «Я нашел эту запись для тебя».
  • Condition (Условие появления):
  • * GetItemCount (Функция проверки предметов). * Parameter: MyRadio_Song02_Tape. * Comparison: >=. * Value: 1. Пояснение:* Эта реплика появится только если у игрока есть кассета.

    Написание скрипта (Papyrus Fragment)

    В окне Topic Info (где мы пишем текст и условия) есть поле внизу, обозначенное как End Script (или просто Script Fragment). Это место, где мы пишем код, который выполнится после того, как фраза будет сказана.

    Нам нужно сделать две вещи: забрать кассету и включить переменную.

    Введите следующий код:

    Нажмите кнопку Compile (Компилировать). Если вы всё сделали правильно, ошибок не будет.

    > Важно: Creation Kit может потребовать добавить свойства (Properties) для скрипта. Если после компиляции кнопка Properties стала активной: > 1. Нажмите Properties. > 2. Нажмите Auto-Fill All (Автозаполнение). > 3. Если имена в скрипте совпадают с ID объектов (MyRadio_Song02_Tape), редактор сам их найдет и свяжет.

    Разбор кода

    Давайте разберем, что мы написали, чтобы вы понимали логику, а не просто копировали.

  • Game.GetPlayer() — эта команда обращается к объекту игрока (Выжившего).
  • .RemoveItem(Object, Count) — функция удаления предмета. Мы указываем что забрать (нашу кассету) и сколько (1 штуку).
  • .SetValue(1) — функция, которая меняет значение Глобальной Переменной. Мы жестко устанавливаем её в единицу.
  • Шаг 5. Ответ диджея

    Не забудьте написать ответную реплику для диджея в том же диалоге: «Ого, это же настоящий раритет! Ставлю в эфир прямо сейчас!».

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

    Проверка в игре

  • Сохраните плагин.
  • Зайдите в игру.
  • С помощью консоли добавьте себе кассету (если лень искать): player.additem XXYYYYYY 1 (где XX — номер загрузки мода, YYYYYY — ID кассеты).
  • Подойдите к диджею.
  • Если реплика появилась — условие работает.
  • После диалога подождите немного. Радиостанция должна подхватить новый трек, когда дойдет до его очереди в ротации (или сразу, если повезет).
  • Итоги

    Поздравляю! Вы только что написали свой первый скрипт на языке Papyrus и связали его с квестовой системой.

    Что мы имеем: * Интерактивность: Игрок влияет на контент радиостанции. * Прогрессия: Радио развивается по мере прохождения. * Экономика: Вы можете давать за кассеты крышки, превращая это в полноценный сайд-квест.

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

    5. Размещение голодисков в мире, финальное тестирование и упаковка мода

    Размещение голодисков в мире, финальное тестирование и упаковка мода

    Приветствую вас на финальной лекции курса «Своё радио в Fallout 4»! Мы проделали долгий путь: от установки Creation Kit и конвертации аудио до написания скриптов на Papyrus и создания собственного диджея. У нас есть работающая станция, умная система ротации и механика разблокировки треков.

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

    Сегодня мы завершим начатое: спрячем голодиски в укромных уголках Содружества, проведем финальные тесты, исправим знаменитый баг с «серым лицом» и упакуем всё в профессиональный архив .ba2 для публикации.

    Шаг 1. Размещение предметов в мире (Level Design)

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

    Навигация по миру

  • В окне Cell View (обычно по центру) убедитесь, что в выпадающем списке World Space выбрано Interiors (для помещений) или Commonwealth (для открытого мира).
  • Давайте спрячем кассету в стартовой локации, например, в подвале в Сэнкчуари. Найдите в списке ячейку SanctuaryRootCellar.
  • Дважды кликните по ней. В окне Render Window загрузится интерьер.
  • Размещение объекта

  • В Object Window найдите вашу кассету MyRadio_Song02_Tape (раздел Items -> Holotape).
  • Зажмите левую кнопку мыши и перетащите кассету прямо в Render Window.
  • Теперь самое сложное — позиционирование. Объект может повиснуть в воздухе или провалиться в текстуры.
  • Горячие клавиши для манипуляций: * E: Перемещение (Move). * W: Вращение (Rotate). * F: «Уронить» на пол (Fall). Самая полезная кнопка, чтобы предмет не висел в воздухе. * Зажать Z + Мышь: Перемещение только по вертикали.

    !Процесс позиционирования голодиска на столе в редакторе.

    Разместите кассету так, чтобы её можно было заметить, но она не бросалась в глаза сразу. Сохраните плагин.

    Шаг 2. Проблема «Серого лица» (Grey Face Bug)

    Это классическая проблема моддинга Fallout 4. Когда вы создаете нового NPC (нашего диджея), игра не генерирует текстуры его лица автоматически. В итоге в игре у персонажа будет темно-серое, «грязное» лицо, отличающееся от цвета тела.

    Как исправить:

  • Убедитесь, что ваш плагин MyRadioMod.esp активен.
  • В Object Window найдите вашего NPC (MyRadio_DJ_NPC) в категории Actors.
  • Выделите его (один клик).
  • Нажмите Ctrl + F4.
  • Появится окно с вопросом «Export Face Gen Data for all selected NPCs?». Нажмите Yes.
  • Дождитесь сообщения «Done».
  • Теперь Creation Kit сгенерировал файлы текстур и моделей головы специально для вашего персонажа. Они появятся в папках Data/Textures/Actors/Character/FaceCustomization и Data/Meshes/....

    Шаг 3. Финальное тестирование

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

    Чек-лист тестировщика:

  • Громкость: Включите радио и зайдите в перестрелку. Слышно ли музыку? Не слишком ли она громкая по сравнению с голосами?
  • Скрипт: Подберите кассету. Появилась ли она в инвентаре? Подойдите к диджею. Появилась ли реплика диалога? Исчезла ли кассета после разговора?
  • Ротация: Подождите 10-15 минут. Действительно ли новый трек начал играть? (Помните, что он попадет в Shuffle-список и может заиграть не сразу, это нормально).
  • Лицо NPC: Нормального ли цвета лицо диджея?
  • > Совет: Для ускорения тестов используйте консольную команду set timescale to 1000 (ускорить время), чтобы быстро прокрутить эфир, и set timescale to 20 для возврата в норму.

    Шаг 4. Упаковка в архив BA2

    Никогда не распространяйте мод в виде «рыхлых файлов» (loose files) — папок Sound, Scripts, Textures и т.д. Это замедляет загрузку игры у пользователей и вызывает конфликты.

    Fallout 4 использует формат архивов BA2. Для их создания вместе с Creation Kit поставляется утилита Archive2.

    Подготовка файлов

    Создайте на рабочем столе временную папку MyRadio_Pack. Скопируйте туда все файлы вашего мода из папки Data, сохраняя структуру путей: * Sound/FX/MyRadioMod/... * Scripts/MyRadio_QuestScript.pex (скомпилированный скрипт) * Textures/Actors/... (файлы лица) * Meshes/Actors/... (файлы головы)

    Работа с Archive2

  • Откройте папку с установленным Creation Kit (обычно в корне игры Fallout 4/Tools/Archive2).
  • Запустите Archive2.exe.
  • File -> New. В настройках выберите формат General.
  • Перетащите вашу папку Sound, Scripts, Meshes и т.д. в окно программы.
  • !Интерфейс утилиты Archive2 с добавленными файлами мода.

    Настройки сжатия

    * Для звуков .xwm сжатие не требуется (они уже сжаты), но Archive2 сам разберется. * Убедитесь, что пути файлов начинаются с папок (например, sound/...), а не с буквы диска.

    Сохранение (Naming Convention)

    Это критически важный момент. Игра автоматически подхватывает архивы, если они названы в точности как ваш .esp файл.

    Если ваш плагин называется MyRadioMod.esp, то архив должен называться: MyRadioMod - Main.ba2

    Сохраните архив в папку Data.

    > Важно: Если у вас есть текстуры (например, кастомная одежда диджея), их принято паковать в отдельный архив MyRadioMod - Textures.ba2 с форматом DDS, но для нашего радио (звук + скрипты + FaceGen) хватит одного Main архива.

    Шаг 5. Публикация и описание

    Теперь у вас есть два файла, которые составляют ваш релиз:

  • MyRadioMod.esp
  • MyRadioMod - Main.ba2
  • Именно их вы загружаете на Nexus Mods или Bethesda.net. Удалите «рыхлые» файлы из папки Data и оставьте только эти два, чтобы проверить, работает ли упакованная версия.

    Что писать в описании мода?

    Хорошее описание — залог успеха. * Треклист: Укажите список песен (исполнитель — название). * Локация: Намекните, где искать студию (не ставьте маркер на карту сразу, дайте игрокам радость исследования). * Кредиты: Обязательно укажите авторов музыки, если она не является Public Domain.

    Заключение курса

    Поздравляю! Вы прошли путь от пустой папки до полноценного мода, расширяющего вселенную Fallout 4. Вы научились: * Работать с Creation Kit и аудио-дескрипторами. * Создавать NPC и интерьеры. * Писать квестовые диалоги и скрипты на Papyrus. * Оптимизировать и паковать контент.

    Эти знания универсальны. Механика «нашел предмет — открыл контент» используется в модах на оружие, броню и компаньонов. Теперь Пустошь звучит по вашим правилам. Удачи в творчестве, и пусть ваш сигнал будет чистым!