- Моддинг Ostranauts использует две основные системы: моды с JSON-данными и плагины BepInEx на C#
- Моддинг данных требует редактирования JSON-файлов в структуре папок StreamingAssets
- Плагины BepInEx позволяют внедрять код для продвинутых функций, таких как горячие клавиши и настройки интерфейса
- Порядок загрузки критически важен: всегда держите "core" (ядро) первым, затем последовательно добавляйте свои моды
- Всегда делайте резервные копии файлов базовой игры перед установкой или созданием любых модов
Обзор моддинга Ostranauts
Ostranauts поддерживает гибкую экосистему моддинга, которая позволяет игрокам настраивать практически каждый аспект игры. Хотите ли вы добавить новые предметы, изменить дизайн кораблей или внедрить пользовательский код на C# для расширенных функций интерфейса, игра предоставляет два различных пути для модификаций.
Главное в видео:
- Пошаговая установка и настройка BepInEx
- Как правильно настроить порядок загрузки для модов с данными
- Ручная установка плагинов, таких как Speed Hotkeys и Floor & Walls
- Использование Configuration Manager для проверки работоспособности модов
Два основных подхода к моддингу служат разным целям. Моддинг данных (JSON-модинг) — это самая доступная отправная точка, не требующая знаний в программировании. Моддинг BepInEx, с другой стороны, позволяет делать более глубокие изменения с помощью скомпилированного кода на C#.
| Тип мода | Сложность | Требования | Для чего лучше всего |
|---|---|---|---|
| Моды с данными (JSON) | Новичок | Текстовый редактор (Notepad++) | Новые предметы, корабли, взаимодействия, условия |
| Плагины BepInEx | Средняя и продвинутая | Фреймворк BepInEx, знание C# | Горячие клавиши, изменения интерфейса, внедрение кода, новые механики |
Если вы новичок в моддинге Ostranauts, начните с JSON-модов. Они не требуют опыта программирования и используют ту же структуру данных, что и базовая игра. Чтобы начать, вам понадобится лишь текстовый редактор, например Notepad++.
Установка BepInEx и плагинов
BepInEx — это фреймворк для Unity, который позволяет внедрять код в Ostranauts. Многие популярные моды от сообщества, такие как Speed Hotkeys, Editor History и переключатели видимости Floor & Walls, зависят от этого фреймворка для своей работы.
Необходимые загрузки
Перед установкой любых модов на основе BepInEx вам понадобятся два основных компонента:
| Компонент | Версия | Назначение |
|---|---|---|
| BepInEx | 5.4.23 | Основной фреймворк для внедрения кода |
| Configuration Manager | 8.3 | Внутриигровой интерфейс для управления настройками модов (нажмите F1) |
Не используйте BepInEx 6.0. Текущая рабочая версия для большинства модов Ostranauts — 5.4.23. Использование неправильной версии может привести к тихим сбоям в работе модов или вылетам игры при запуске.
Места установки плагинов
Плагины BepInEx помещаются в другую папку, нежели JSON-моды. Понимание этого различия крайне важно:
| Тип мода | Папка назначения | Как проверить |
|---|---|---|
| Плагины BepInEx | Ostranauts_Data/plugins/ | Нажмите F1 в игре для открытия Configuration Manager |
| Моды с данными | Ostranauts_Data/Mods/ | Проверьте Options > Files > Mods в игре |
| Astral Adaptations | Ostranauts_Data/Mods/ | Добавьте в loading_order.json под "core" |
После помещения файлов BepInEx в папку игры вы должны запустить Ostranauts хотя бы один раз. Этот первоначальный запуск создает дополнительные папки (например, plugins/), которые необходимы вашим модам. Без этого шага структура папок не будет существовать.
Основы моддинга данных
Моддинг данных — самый доступный способ модифицировать Ostranauts. Все данные базовой игры хранятся в папке StreamingAssets и организованы в более чем 30 различных типов данных. Создав собственную папку для модов с соответствующей структурой, вы можете добавлять или перезаписывать игровой контент, не затрагивая оригинальные файлы.
Основные типы данных
| Папка | Содержимое | Частые случаи использования |
|---|---|---|
items/ | Определения предметов (инструменты, снаряжение, объекты) | Добавление новых инструментов, оружия или декоративных предметов |
cooverlays/ | Отображаемые имена и описания | Требуется для каждого предмета, чтобы показывать всплывающие подсказки |
interactions/ | Действия и поведение персонажей | Создание новых социальных действий, анимаций или задач |
conditions/ | Эффекты статуса и игровые состояния | Добавление эмоциональных состояний, баффов или дебаффов |
ships/ | Шаблоны и дизайны кораблей | Создание пользовательских стартовых кораблей или судов NPC |
condtrigs/ | События-триггеры условий | Определение того, что происходит при выполнении условий |
Не изменяйте файлы в папке StreamingAssets. Всегда создавайте отдельную папку для модов. Прямые изменения файлов базовой игры будут перезаписаны при обновлениях и могут вызвать непредсказуемое поведение.
Соглашения об именовании Ostranauts
Игра использует систему префиксов для всех полей JSON. Понимание этих префиксов поможет вам правильно читать и записывать данные модов:
| Префикс | Тип | Пример | Описание |
|---|---|---|---|
str | Строка (String) | strName | Текстовое значение (имена, описания) |
n | Целое число (Integer) | nCols | Целое число (столбцы сетки, счетчики) |
f | Дробное число (Float) | fZScale | Десятичное число (масштаб, длительность) |
b | Логическое значение (Boolean) | bEnabled | Флаг true или false |
a | Массив (Array) | aSocketAdds | Список значений |
map | Карта/Словарь (Map/Dictionary) | mapModeSwitches | Коллекция пар ключ-значение |
Лучший способ изучить моддинг данных — исследовать существующие игровые файлы. Откройте папку StreamingAssets/data/ и изучите, как структурированы предметы, взаимодействия и условия. Скопируйте формат и измените значения для своих модов.
Создание вашего первого мода
Настройка папки мода
Перейдите в Ostranauts_Data/Mods/ и создайте новую папку для вашего мода. Внутри нее создайте файл mod_info.json с метаданными (имя, автор, версия, версия игры) и подпапки, соответствующие структуре StreamingAssets (например, data/items/, data/cooverlays/, images/).
Напишите ваши JSON-данные
Создайте JSON-файлы в соответствующих подпапках данных. Для нового предмета поместите определение в data/items/my_items.json и соответствующий COOverlay в data/cooverlays/my_overlays.json. Каждому предмету нужен соответствующий COOverlay с тем же strName для корректного отображения имен и всплывающих подсказок.
Обновите loading_order.json
Откройте Ostranauts_Data/loading_order.json и добавьте имя папки вашего мода в массив aLoadOrder после "core". Имя папки должно точно совпадать — это поле чувствительно к регистру. Если файл не существует, запустите игру один раз с кнопкой Mods, чтобы сгенерировать его.
Тестирование в игре
Запустите Ostranauts и следите за экраном загрузки на предмет сообщений от мода. Перейдите в Options > Files, чтобы убедиться, что ваш мод показывает зеленый статус "Loaded". Используйте Редактор кораблей, чтобы найти новые предметы, или откройте консоль отладки клавишей с обратной кавычкой () и введите UNLOCKDEBUG`, чтобы заспавнить предметы для тестирования.
Чтобы добавить новый контент, используйте уникальные значения strName, которых не существует в базовой игре. Чтобы перезаписать существующий контент, используйте тот же strName, что и у предмета, который вы хотите заменить. Моды, загруженные позже в порядке загрузки, имеют приоритет над более ранними.
Пример структуры mod_info.json
| Поле | Назначение | Пример |
|---|---|---|
strName | Отображаемое имя вашего мода | "My Cool Mod" |
strAuthor | Имя создателя | "YourName" |
strGameVersion | Совместимая версия игры | "1.3.1" |
strModVersion | Номер версии вашего мода | "1.0.0" |
strNotes | Краткое описание | "Adds new decorative items" |
Устранение частых проблем
Даже хорошо структурированные моды могут столкнуться с проблемами. Используйте эту справочную таблицу для диагностики и исправления наиболее частых ошибок, с которыми сталкиваются мододелы.
| Проблема | Вероятная причина | Решение |
|---|---|---|
| Мод не появляется | Несовпадение имени папки в loading_order.json | Проверьте точное совпадение с учетом регистра между папкой и записью в массиве |
| У предмета нет имени | Отсутствует или не совпадает COOverlay | Создайте запись COOverlay с тем же strName, что и у предмета |
| Синтаксическая ошибка JSON | Пропущенная запятая, лишняя запятая или незакрытая скобка | Проверьте с помощью JSONLint или расширения JSON для VS Code |
| Спрайт отсутствует | Файл изображения не в папке images/ или неверное имя файла | Убедитесь, что strImg совпадает с именем файла без расширения .png |
| Моды BepInEx не работают | Неправильная версия BepInEx или отсутствие первого запуска | Используйте версию 5.4.23, запустите игру один раз после установки фреймворка |
| Игра вылетает при запуске | Конфликтующие перезаписи или неверный JSON | Проверьте output_log.txt в AppData/LocalLow/Blue Bottle Games/Ostranauts/ |
Ostranauts создает подробные файлы логов по пути C:\Users\<YourName>\AppData\LocalLow\Blue Bottle Games\Ostranauts\output_log.txt. Ищите записи "Error" или "Exception", а также имя вашего мода или имена JSON-файлов, чтобы точно определить проблемы с загрузкой.
Рекомендуемые инструменты
Notepad++
- Легкий текстовый редактор
- Подсветка синтаксиса JSON
- Бесплатный и широко используемый
- Отлично подходит для быстрых правок
Visual Studio Code
- Полноценная IDE с проверкой JSON
- Магазин расширений
- Встроенное обнаружение ошибок
- Интеграция с Git для контроля версий
JSONLint
- Онлайн-валидатор JSON
- Не требует установки
- Мгновенно находит синтаксические ошибки
- Удобен для быстрых проверок
Добавляйте по одному предмету или изменению за раз. Если что-то сломается, вы будете точно знать, какая именно модификация вызвала проблему. Такой подход экономит часы отладки по сравнению с добавлением всего сразу.
Лучшие практики и распространение
Лучшие практики моддинга:
- Используйте описательные имена (ItmPlushBearBrown, а не ItmStuff01)
- Тестируйте по одному изменению за раз для изоляции проблем
- Изучайте файлы данных базовой игры в StreamingAssets для примеров
- Контролируйте версии ваших изменений с помощью резервных копий Git или GitHub
- Документируйте всё в поле strNotes файла mod_info.json
- Указывайте совместимую версию игры, чтобы помочь пользователям избежать конфликтов
Каналы распространения
Когда ваш мод будет готов, вы сможете поделиться им через несколько платформ:
| Платформа | Формат | Аудитория | Примечания |
|---|---|---|---|
| Thunderstore | Оболочка для плагинов BepInEx | Широкое сообщество моддеров | Требуется оболочка плагина для JSON-модов |
| GitHub | Репозиторий | Разработчики и продвинутые пользователи | Лучше всего подходит для open-source сотрудничества |
| Nexus Mods | Zip-архив | Широкая игровая аудитория | Популярное место для игровых модов |
| Discord/Форумы | Прямое скачивание | Сообщество Ostranauts | Самый быстрый способ получить обратную связь |
Если вы распространяете моды вручную, приложите четкие инструкции: скачайте и распакуйте папку мода, поместите ее в Ostranauts_Data/Mods/, добавьте имя мода в loading_order.json и запустите игру. Простые инструкции снижают количество обращений в поддержку.
Часто задаваемые вопросы
Q: В чем разница между модами на данные и плагинами BepInEx в Ostranauts?
Моды на данные используют JSON-файлы для добавления или изменения игрового контента, такого как предметы, корабли и взаимодействия. Они помещаются в папку Mods и не требуют программирования. Плагины BepInEx — это скомпилированный код на C#, который внедряет новый функционал, например горячие клавиши или изменения интерфейса. Они помещаются в папку plugins и требуют наличия фреймворка BepInEx.
Q: Какую версию BepInEx мне следует использовать для моддинга Ostranauts?
Используйте BepInEx версии 5.4.23. Версия 6.0 несовместима с большинством текущих модов для Ostranauts и может вызвать сбои в их работе. Всегда проверяйте страницу требований автора мода на наличие конкретной рекомендуемой версии.
Q: Почему мой модифицированный предмет появляется в игре, но не имеет имени или описания?
Каждому предмету нужна соответствующая запись COOverlay в папке data/cooverlays/. COOverlay должен иметь тот же strName, что и ваш предмет, а также поля strNameFriendly и strDesc. Без этого игра не сможет отображать читаемый текст для предмета.
Q: Как мне перезаписать существующий предмет базовой игры вместо добавления нового?
Используйте тот же strName, что и у заменяемого предмета базовой игры, в вашем JSON-файле мода. Игра загружает моды после основных данных, поэтому ваше определение имеет приоритет. Будьте осторожны, так как перезапись контента базовой игры может конфликтовать с другими модами, которые изменяют тот же предмет.