Starbound

Starbound

63 ratings
ПЕРЕВОД МОДОВ / MOD TRANSLATION
By ТЕMA
Долгое время я ждал, что кто-то переведёт мои любимые моды, но этого не произошло. Поэтому я взял всё в свои руки и научился переводить. Руководства по переводу тоже не было, поэтому я его создал.

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

Странно, что до сих пор никто не создал такого руководства для этой прекрасной игры. Теперь вы сможете сами переводить моды!
4
2
   
Award
Favorite
Favorited
Unfavorite
Что понадобится для перевода?
Вообще, именно сейчас процесс перевода не представляет что-то очень сложное. Почему?

А всё потому, что мы можем использовать нейросети, удобнейшие текстовые редакторы и опыт других пользователей. Если говорить просто, то нам понадобятся:

  • Notepad++ (или любой другой текстовый редактор для кода)
  • Нейросеть (порекомендую ниже свои)
  • Переводчик
  • Дополнительные средства

Редактор кода

Я использую Notepad++, потому что именно с ним мне удобно работать. Он позволяет:
- открывать сразу несколько вкладок с кодом и быстро перемещаться между ними
- выделять и заменять сразу несколько слов / строчек кода
- устанавливать дополнения (я использую Markdown (колоризация разметки) для удобства)

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

Нейросеть

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

Я использую Mistral (Model Large 2) Ссылка на него[chat.mistral.ai]
Эта нейронка бесплатная и довольно умная. Правда есть лимит по запросам, но его трудно превысить.

Ещё можно использовать Perplexity Labs (внутри любую модель выбирайте). Ссылка [labs.perplexity.ai]



Originally posted by Небольшое дополнение от 06.01.2025:
Зацените нейронку DuckDuckGo. Это лучший вариант среди бесплатных. Можно бесконечно использовать демку ChatGPT (очень умную). Только спустя сколько-то запросов стоит создать новый чат, т.к. может начать тормозить. Ссылка: тык [duckduckgo.com]

Но скажу честно, я не пробовал переводить через неё. Использую только в рабочих целях.

Либо можете использовать любую другую, если у вас есть варианты. ChatGPT тоже можно, но там очень неприятные лимиты.

Переводчик

Ну это классика. Без нейросети пользовались бы только им. Я чаще применял Google-translate, потому что довольно удобно и точно. Зачастую нейросети переводят криво, поэтому некоторые отдельные слова / фразы стоит переводить вручную. Увы.

Дополнительные средства

Нужно будет иногда работать с командной строкой (win + r -> вводим "cmd" и нажимаем Enter) или же просто вводим в строке поиска Windows "командная строка". Это позволит нам распаковывать файлы .pack, которые использует Starbound.
Также можете ещё как-нибудь оптимизировать перевод, если посчитаете возможным.

Если всё подготовили, то можно приступать к переводу.
Подготовка к переводу
Скачиваем мод для перевода

Сначала необходимо скачать мод, который вы хотите перевести. Для примера возьмём GyroJets

Подписываемся на мод и смотрим его id (находится он в конце url-адреса):


У GyroJets это 3143833333

Копируем этот id и переходим в папку игры. Вам нужно найти контент мастерской. Скорее всего у вас всё то же самое, как и меня, просто диск другой:


Остаётся через поиск найти папку со скаченным модом:


Внутри папки будет файл content, где и находится содержимое мода. Копируем его на рабочий стол и переходим к следующему этапу.


Подготовка к распаковке

Файл на рабочем столе, но сейчас он запакован и мы не можем посмотреть содержимое. Для распаковки нужно использовать системные файлы Starbound и командную строку.

В папке игры: D:\SteamLibrary\steamapps\common\Starbound\win32 (или же по другому пути, который у вас) есть два таких файла:
  • asset_packer
  • asset_unpacker (нужен нам)

Нам понадобится только Unpacker (но при особом желании может и запаковывать файлы).

Его можно скопировать в удобное место, но я оставлю там же. Теперь нужно узнать путь до этого файла распаковки. Сделать это можно очень просто, посмотрев свойства объекта (ПКМ -> "свойства"):


У меня он такой:
D:\SteamLibrary\steamapps\common\Starbound\win32\asset_unpacker.exe

Копируем путь и сохраняем где-нибудь, чтобы потом не искать.

Остаётся также узнать путь к файлу мода на рабочем столе. Таким же образом смотрим через "Свойства". Мой путь к файлу content, который мы вытащили такой:
C:\Users\FoxDe\Desktop\contents.pak

Теперь нам нужно прописать, куда будет сохраняться распакованный файл. Я сохраняю на рабочем столе для удобства, но вы можете в любом другом месте. Мой путь:
C:\Users\FoxDe\Desktop\unpacked.pak

Ещё отмечу, что "unpacked.pak" в конце указанного пути – это название распакованного файла, который получится в итоге. Можете назвать как хотите, а можете как я (потом просто переименуем).


Распаковка

Открываем командную строку (я описал выше, как это делается) и вставляем все наши "пути" следующим образом:

"D:\SteamLibrary\steamapps\common\Starbound\win32\asset_unpacker.exe" "C:\Users\FoxDe\Desktop\contents.pak" "C:\Users\FoxDe\Desktop\unpacked.pak"

Т.е. каждый путь заключаем в кавычки и пишем подряд через пробел:
  • Путь к Unpacker`у
  • Путь к файлу content (переводимому моду)
  • Путь к месту сохранения с названием сохраняемого файла (в моём случае unpacked.pak)

Выглядит всё вот так:

В итоге у вас на столе появился файл "unpacked". Просто переименовываем его как-нибудь так: "Оригинал GyroJets".


Два способа перевода

Я могу вам назвать два способа, которые позволят перевести мод:
  • Перевод с использованием чужого перевода
  • Самостоятельный перевод

О каждом из них сейчас расскажу.
Перевод с использованием чужой локализации
Я не поощряю плагиат, но почему бы не использовать готовые файлы перевода на другой язык? Таким образом я перевёл многие моды и могу сказать, что это делает процесс в разы быстрее, но всё равно приходится повозиться.
Многие моды уже перевели на китайский, испанский и др. прекрасные языки. Их можно использовать, просто меняя перевод на русский.

Например, давайте скачаем мод и его перевод на китайским. За пример я возьму Project Redemption, а также его китайскую локализацию 【新】救赎计划简中补丁

Скачиваем оба мода по гайду выше, распаковываем и получаем две папки:


Теперь посмотрим файлы папки оригинала и перевода:


Здесь видно, что в папке перевода есть не все папки из оригинала. Их там нет, потому что файлы в этих папках не содержат строк, которые видит пользователь в игре (чисто технические файлы). Это огромное преимущество данного способа, потому что не нужно рыться во всех файлах и выбирать те, которые нужно переводить. Также это уменьшает шанс накосячить и сломать мод/игру.

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

Поэтому берём и открываем с помощью Notepad++ один файл оригинала и один файл с переводом. Например, я открою такие:


Выглядит всё довольно страшно (изначально), но всё на деле проще, чем кажется:


У нас есть строчка оригинала:
"shortdescription" : "Frying Pan ^yellow;^reset;"

Файл перевода по сути просто заменяет эту строчку с помощью следующей конструкции:

[ { "op": "replace", (операция замены) "value": "平底锅 ^yellow;^reset;", (то, на что будем менять) "path": "/upgradeParameters/shortdescription" (путь к замене) } ]

Обращайте внимание на путь к замене. Он позволяет точно определить, что и где заменяется

Что мы делаем? Мы просто переводим строчку из оригинала и вставляем её в файл перевода, заменяя китайский текст. Т.е. "Frying Pan" переводится, как "Сковорода", поэтому её и пишем в файле:

Вы могли заметить, что в строчке также есть текст, который переводить не нужно:
^yellow;^reset;

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

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

Я изначально говорил про нейросеть, которая может помочь в переводе. Если в файле со Сковородкой была только одна строчка, то в тех же файлах диалогов или кодексов придётся переводить 300+ строк. В такие моменты можно использовать нейронку. Сейчас расскажу, как это делается.

Перевод диалогов работаем таким образом:


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

У меня есть код перевода на китайский: [ { "op": "replace", "value": "蓝姆\n\n蓝姆——它因其花蜜的颜色和粘稠度而得名——从远处看,并不像花,更像是一丛高大却已凋谢的芦苇。", "path": "/contentPages/3" }, Но также у меня есть этот же текст, но на русском: "Блюслим Блюслимы названы по цвету и консистенции их нектара. Они не визуально похожи на цветы с расстояния, они больше похожи на высокий увядший тростник необычного зеленого цвета.", Нужно заменить китайский перевод на русский, т.е. будет так: [ { "op": "replace", "value": "Блюслим\n\nБлюслимы названы по цвету и консистенции их нектара. Они не визуально похожи на цветы с расстояния, они больше похожи на высокий увядший тростник необычного зеленого цвета.", "path": "/contentPages/3" }, Я тебе скину остальную часть кода с переводом, который нужно заменить (расставь отступы как в оригинале). Ты понял, как делать?

После этого нейросеть соглашается и ей можно скидывать любой перевод в формате:
  • Код перевода на другой язык: " здесь код "
  • Перевод на русский: " сюда вставляем переведённые строки подряд "

Выглядит это так:
1. Часть сообщения с чужой локализацией:

2. Часть сообщения с переводом:

3. Результат:


Довольно просто, согласитесь?
Остаётся только заменить код в файле перевода чужой локализации.
Важно!
Следите за количеством строк. Если в файле локализации было 300 строчек, то и у вас после замены должно быть столько же. А иначе что-то выпало, пропало, а может и сломалось

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

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

{ "op": "replace", "path": "путь", (напр. "/augment/displayName") "value": "перевод" (напр. "Модуль Эгида I") }, не забудьте про запятую в конце, если дальше есть замена

Не забывайте, что переводить нужно только то, что требует перевода. Обычно это диалоги и различные тексты (чаще всего в папке: dialogs, npc, codex, quests), названия предметов (чаще items, food, weapons, armors, plants, objects)

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

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

Запускаем Mod Uploader Tool

Выбираем в библиотеке Steam Starbound, нажимаем играть и выбираем MUT:

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

После этого вы увидите окошко:

Сейчас разберёмся с каждым полем отдельно:
  • Name – краткое имя вашего мода (уже не помню, где используется), делаем по примеру;
  • Title – заглавие мода в Steam (под каким названием его будут искать);
  • Author – указываете ники всех авторов, которые занимались модом;
  • Version – указываете версию на своё усмотрение, потом сможете обновлять мод и менять её;
  • Description – описание мода, кратко пишем о том, что наделали;
  • Preview image – делаете квадратную аватарку вашего мода и загружаете (размер должен быть как можно меньше, т.к. будет входить в общий размер мода);
  • Categories – ставим то, что относится к вашему моду (в нашем случае только User Interface)

В заполненном варианте всё будет выглядеть вот так:


После заполнения можно публиковать. Нажимаем "Upload to Steam" и получаем свой идентификатор мода. Он отобразится в левом нижнем углу MUT (Mod ID - пример на скрине).

Ваш мод в Steam!
Но это не всё

Теперь открываем папку мода, теперь там появились те самые файлы _metadata и/или _previewimage. Открываем первый с помощью редактора кода и вносим некоторые изменения:


Добавляем строчку priority и ставим любое число, но не 1 (я обычно ставлю просто 11). Это свойство позволяет настроить загрузку модов, чтобы ваш перевод загружался точно после самого мода. Сохраняем файл и проводим проверку мода.

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

Перед этим я советую отписаться от всех модов Starbound кроме тех, которые затрагивает перевод (дополнения к оригинальному моду тоже оставьте). Ну и мод перевода всей игры тоже оставьте.

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

Остаётся только запустить игру. Дальше 2 варианта:
1) Игра запустилась, всё хорошо.
2) Игра крашится в процессе запуска (чаще всего рыбка смеётся и вас выкидывает на рабочий стол).

Первый исход (вам хоть как нужно к нему прийти)

Проверяем ваш перевод. Я использовал чит-коды для выдачи предметов из мода, чтобы проверить, как всё работает.

Должно выйти как-то так:

Здесь всё супер, текст встал как родной.

А вот тут всё вышло не так хорошо:


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

Вторая ситуация – игра крашится

Для исправления проблем нужно обратиться к логу Starbound. Это файл, который ведёт записи всего происходящего в игре. Какие файлы запускаются, какие процессы происходят и т.п. Тут же можно и следить за ошибками.

Лежит log-файл по пути: D(ваш диск):\SteamLibrary\steamapps\common\Starbound\storage
Там будет несколько, но нам нужен с названием без приставок:


Открываем и начинаем копаться. Нас интересуют только сообщения с тегом [Error]

Например, рассмотрим ошибку, с которой я столкнулся во время своего первого перевода. Тогда игра запускалась до заставки и крашилась. Я залез в log и обнаружил следующее:


Система что-то не смогла прочитать по пути: /npcs/stationshipcrewmate.npctype. Я просто нашёл этот самый файл и посмотрел, что может быть не так. Оказалось, что у меня в одном месте была пропущена точка с запятой или слэш (точно не помню). Я сделал всё по уму и игра запустилась. В дальнейшем ошибки так и решал.
Завершение
Если ваш перевод отлично работает, то всё супер! Остаётся только переключить видимость на странице вашего мода в Steam, чтобы его увидело сообщество.

Но перед этим я советую навести немного красоты:
  • добавить хорошее описание;
  • сделать несколько скриншотов с переводом в игре;
  • сделать крутую превьюшку (аватарку мода);

А ещё добавить в название что-то по типу "[RU]" / "Русификатор", чтобы люди сразу поняли, какую классную штуку вы сделали.

На этом говорю тебе спасибо за изучение данного руководства. Надеюсь, что хоть кто-нибудь возьмётся за перевод существующих модификаций.
Если есть вопросы, то пишите в комментарии / в раздел / мне в лс. Помогу чем смогу. Также готов заняться переводом в команде, если такое желание у кого-нибудь возникнет.
17 Comments
ТЕMA  [author] Apr 11 @ 10:57pm 
@MoonShi, пахпзахпзавп
Это мой первый опыт написания гайда, поэтому может быть такое. Однако я писал так, чтобы понял любой челик. Вроде цель достигнута – это главное)
MoonShi Apr 11 @ 4:16pm 
Недавно занялся изучением вопроса с переводом модов Старбаунда, и все из-за расы Нэки от @Juni, естественно первым делом наткнулся на твой гайд, в каком же я был шоке от количества воды в этой телеге текста.
Infinity Mar 8 @ 2:45am 
лутше блять играть с другими языками место дого чтоб заниматся 2 года переводам
ТЕMA  [author] Feb 4 @ 2:08am 
Juni, да, было бы неплохо найти знающего человека. Но тогда процесс перевода скорее всего затянется, т.к. добавится промежуточный этап "Утверждения".
Лучший вариант - самому стать носителем языка / использовать качественные запросы для хорошей нейронки. Т.е. раскрыть в промпте суть и лор игры, объяснить, как нужно переводить (учитывать фразеологизмы, идиомы и т.п.), привести примеры и, в итоге, получить нужный результат.
Juni Feb 4 @ 1:39am 
От себя могу только добавить, что в идеале стоит всё-таки найти носителя языка, знакомого который согласился бы помочь, даже поверхностно. Когда переводишь с языка который не знаешь хотя бы на уровне повседневного, так или иначе упустишь многие культурные и языковые ньюансы, перевод которых дословно или автопереводчиком зачастую меняет смысл написанного до неузнаваемости.
Juni Feb 4 @ 1:39am 
Ого, какой подробный гайд!
Я недавно занялась переводом собственного мода, и было интересно почитать твоё руководство, спасибо огромное за проделанную работу. Не могу сказать что почерпнула много нового, но очень ценю проделанный труд и надеюсь что гайд поможет другим начать этим заниматься :)
Alex(GoD) Jan 9 @ 10:04am 
Спасибо за подробный гайд!
Ramonak Jan 8 @ 9:00am 
Спасибо. Добавил в желаемое пару модов с твоей сборки.
А то чувствую скоро контент Арканы освою. Далее Шелгвард планирую. А потом и пару из твоей сборки попробую.
ТЕMA  [author] Jan 7 @ 11:42pm 
Ramonak, да. Раньше были у меня в сборке, но аркану я решил убрать почему-то (вроде из-за отсутствия перевода). А потом уже решил не добавлять снова. Elithian Race тоже был, хороший мод, но также требует локализации для комфортной игры.
Ramonak Jan 7 @ 12:41pm 
А в моды Arcana и Elithian Race играл?