Kane's Wrath Red Alert 3 Tiberium Wars Гайды Моды Моды C&C3 Моды Red Alert 3

Как перевести модификацию для Tiberium Wars, Kane’s Wrath или Red Alert 3

Автор: mah_boi

Подробная инструкция о том, как перевести модификацию для C&C 3: Tiberium Wars, C&C 3: Kane’s Wrath или C&C: Red Alert 3 на любой язык.

В статье рассматриваются основные нюансы, возникающие перед переводчиком в процессе создания локализации для модификаций на Tiberium Wars, Kane’s Wrath или Red Alert 3 (далее TW, KW и RA3 соответственно).

Вы можете воспользоваться другой статьёй по переводу модификаций для игр C&C 3-го поколения, однако та статья написана на английском и исключительно для RA3.

Инструменты

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

  1. WrathEd — программа для просмотра и экспорта данных из .big архивов TW/KW/RA3. FinalBIG несовместим с TW/KW/RA3 (максимум через него можно посмотреть иерархию папок и файлов архива), т.к. не поддерживает сжатие .big архивов, добавленное в этих играх;
  2. Turbo String Table Editor (сокращённо TSTE) — программа редактирования .csf и .str файлов;
  3. MakeBig — архиватор .big архивов, написанная EA. Программа поставляется вместе с Red Alert 3 MOD SDK. Установите SDK и программу можно будет найти в папке “tools“. Имеет CLI интерфейс.

Работа с инструментами

Весь текст, которые мододелы вносят в свой мод, находится в файле mod.str. Огромный недостаток данного файла — отсутствие поддержки Unicode. Попытка в записать в этот файл любой не ASCII текст обернётся тем, что в результате будут выводится непонятные иероглифы. Увы, EA не разработала удобной системы локализации модов через mod.str. Однако данную проблему можно решить более радикальным способом, а именно заменой mod.str файлом, содержащим в себе весь текст игры.

Весь текст игр TW/KW находятся в архиве ПапкаИгры\Lang-[название языка; например: english]\1.[любой номер патча]\patch[номер патча].big в файле cnc3.csf, а в RA3 ПапкаИгры\Data\Lang-[название языка; например: Russian][номер патча].big в файле data\gamestrings.csf. В итоге, заменяя mod.str соответствующим .csf файлом, решается проблема локализации мода. Стоит отметить, что mod.str любой модификации располагается по пути data\mod.str в каком-либе .big архиве модификации.

Итак, задачи, встающие перед переводчиком, выглядят следующим образом:

  1. Поиск mod.str в .big архивах мода;
  2. Создание переведённого cnc3.csf / gamestrings.csf с переведёнными строками из mod.str и оставшимся текстом игры;
  3. Сборка .big архива с полученным в итоге .csf файлом.

Выполнив этот план, можно считать, что мод переведён.

Извлечение текстовых файлов

Работа с WrathEd крайне проста. Запускаем программу. В контекстном меню выбираем опцию File—>Open Big... и указываем открываемый .big архив. 

Открытый файл RemixEn_0.2.9.big модификации Remix для Red Alert 3

Находим среди всех файлов необходимый нам data\mod.str и нажимаем на него, чтобы извлечь из архива. В контекстном меню выбираем опцию Edit—>Export... и указываем путь, куда сохранить. Всё. Теперь у вас имеется mod.str. Этот файл можно открыть абсолютно любым текстовым редактором.

Выбранный mod.str в .big архиве мода Remix для Red Alert 3

Аналогично совершаем экспорт оригинального/локализованного .csf файла TW/KW/RA3. Экспортировать будет гораздо проще, т.к. эти файлы находятся в соответствующих архивах одни без каких-либо других дополнительных файлов.

Содержимое архивов patch9.big и Lang-English11.big

Пример экспортирования по инструкции описанной выше (достижения при использовании программы появляются спонтанно; пример был проведён с использованием .big архива модификации Tiberium Essence)

Редактирование скомпилированного файла строк

Т.к. разработчики EALA не меняли формат .csf со времён Red Alert 2, TSTE является наилучшим решением для редактирования как .csf, так и .str текстовых файлов. Главными преимуществами программы перед аналогами (Siberian String Table Editor и C&C String Editor): поддержка ANSII и Unicode кодировок текста, экспорт/импорт строк/разделов в отдельные файлы, конвертация всего текста из ANSII в Unicode и обратно.

Открытое окно TSTE

Итак, после того как вы экспортировали все необходимые вам текстовые файлы, можно приступать к работе с ними. Чтобы конвертировать .str в .csf необходимо уже открытый mod.str сохранить как .csf файл. Конвертация в этом случае произойдёт автоматически. Открывается mod.str нажатием на опцию Файл—>Открыть..., а сохраняется в .csf после нажатия Файл—>Сохранить как... и указания названия нового файла.

Демонстрация конвертации через сохранение в другом формате

Предварительно стоит отметить, что итоговый файл должен иметь кодировку Unicode, поэтому выберите в TSTE отображение текста в Unicode (путь по меню: Вид—>Кодировка—>Unicode) и только потом переводите/редактируйте текст.

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

Пример ошибки отсутствия текста на боковой панели вследствие его отсутствия в gamestrings.csf. Пример был взят из предварительной версии локализации мода Generals Evolution

Во втором случае вам необходимо импортировать mod.str в .csf файл официальной локализации с заменой значений.

Для того чтобы экспортировать раздел, необходимо выбрать раздел/категорию, нажав на него ЛКМ, а затем выбрав Файл—>Экспорт категории..., после чего указать файл для экспорта. Если же необходимо экспортировать только строку, то нужно выбрать её, нажав на неё ЛКМ, а затем выбрав Файл—>Экспорт строк..., и после указать файл для экспорта. В отличие от разделов, строки можно выбирать массово через Ctrl (по одной строке) и Shift (все строки от уже выделенной до новой выделенной).

Демонстрация экспорта

При импорте всё крайне просто. Нажимаем Файл—>Импорт... и указываем файл, который будет импортироваться, а также настройки импорта. Все новые добавленные строки выделяются синим и добавляются в конец списка в категории. Категории же при импорте имеют зелёный цвет, символизирующий наличие изменений.

Демонстрация импорта

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

Пример полностью переведённого описания юнита из локализации мода Generals Evolution

Создание архива

С помощью MakeBig можно создать .big архив как в командной строке, так и через батник как вызов программы. Однако батник является более оптимальным решением по причине постоянной проверки текста в самой игре переводчиком (батник можно использовать как скрипт для сборки локализатора).

Все возможные аргументы запуска программы MakeBig

Пользоваться MakeBig крайне просто: для создания архива нужно лишь описать архивируемую папку и выходную папку. Например, чтобы поместить какой-нибудь текстовый файл в него, нужно поместить этот файл в отдельную папку, и затем прописать команду MakeBig.exe -o:[путь с названием создаваемого big архива] [путь с названием исходной папки].

Пример создания .big архива

Учитывая, что .csf файл должен находится в папке data, то и иерархия папке-исходнике должна быть такая же. 

Демонстрация использования MakeBig для сборки .big архива

Исправление карт

Отдельная беда обстоит с картами. Картоделы aka мапперы обычно не заморачиваются относительно переводимости своих карт. Поэтому, чтобы сделать карты переводимыми, требуется провести манипуляции в World Builder’е, редакторе карт.

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

Рассмотрим подробнее решение данной ситуации.

Для начала вам нужно скачать и установить World Builder (сокращённо WB) к той версии игры, для которой вы собираетесь переводить мод.

скачать world builder TW скачать world builder kw скачать world builder ra3

После установки редактора необходимо добавить в его конфиг .big файлы мода (предварительно их нужно скопировать в папку, где расположен редактор карт). Для этого откройте конфиг и добавьте в конце строки add-big [название .big архива], чтобы редактор мог использовать все данные из архивов мода. Список названий конфигов в зависимости от игры:

  • WB для RA3: RA3_wb_1.12.cfg (находится в папке Data\ относительно корневой папки игры);
  • WB для KW: CNC3_wb_1.0.cfg (находится в корневой папке игры);
  • WB для TW: CNC3_wb_1.0.cfg (находится в корневой папке игры).

Добавление в конфиг World Builder’a архивов мода. Пример был проведён с использованием мода Generals Evolution

Как только вы настроите WB для работы, необходимо составить новую структуру map.str. В оригинальных кампаниях TW/KW/RA3 для вывода текста используются строки, которые начинаются с SCRIPT:. В дополнение к этому в Red Alert 3 используется MISSIONOBJ: для структуризации целей/задач, т.е. objectives, миссий.

Перед переформатирование сохраните текущий map.str, т.к. он понадобится в будущем.

Итак, для начала вы должны определиться с новым форматированием строк. Основные критерии — названия строк должны быть уникальными и них не должно быть пробелов, иначе строки нельзя будет перенести в .csf файл. Вы можете придумать своё форматирование, а можете использовать придуманное ранее другими людьми. Например, форматирование строк карты по типу <название категории aka типа строки>:<название маппера>:<название карты>:<название строки> может покрыть почти все случаи строк и является наиболее понятным среди других аналогов. После того, как вы определитесь с новым форматированием, необходимо переформатировать строки в map.str.

Пример переформатирования map.str карты Falling Dragon

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

Запустите World Builder и нажмите на File->Open...->Browse, чтобы выбрать карту, которую собираетесь редактировать. По итогу вы откроете карту и не увидите никаких всплывающих сообщений об отсутствии некоторых ассетов, а если увидите — закройте редактор карт и проверьте его конфиг, т.к. скорее всего вы забыли дописать туда какой-либо из .big архивов мода.

Далее необходимо отредактировать скрипты. Потом нажмите Edit->Scripts..., либо нажмите сочетание клавиш Ctrl+Alt+R для вызова редактора скриптов.

Расположение Scripts... в выпадающем меню Edit

В редакторе скриптов вам нужно знать очень важное правило редактирования: в редакторе нет возможности отменить какое-либо действие; в нём можно только либо подтвердить все изменения, либо отвергнуть все изменения через кнопки OK и Cancel соответственно. Отменить какое-нибудь одно ранее сделанное изменение невозможно. Такое же правило действует и на все другие окна редактора скриптов.

Окно редактора скриптов в World Builder’e

Единственное, что потребуется в редакторе скриптов — заменить старые строки на новые. Скриптовое действие, ответственное за сообщение во время игры, называется Show Localized String. Необходимо найти все места использования данного действия в скриптах и заменить в этих действиях названия строк на новые. Чтобы упростить себе поиск, лучше воспользоваться функцией Search в боковом меню редактора скриптов.

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

Примеры результатов поиска

Используя информацию о примерном пути, задача поиска строк в скриптах становится проще.

После того, как вы найдёте скрипт, потребуется его открыть. Открытие скрипта происходит двойным нажатием на него. В окне скрипта необходимо искать во вкладках Actions If True и Actions If False использование действия Show Localized String.

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

Нажмите на параметр действия, что его изменить.

После нажатия откроется очередное окно. В поле нового окна следует заменить старое название строки на новое, чтобы “перелинковать текст”. И нажмите кнопку OK, чтобы изменение сохранилось.

Видеодемонстрация вышеописанного

Дополнительные проблемы имеются в RA3, т.к. в этой игре цели/задачи миссий представляют собой новый объект, который редактируется через другие окна. Чтобы изменить ссылки на строки для целей/задач, вам необходимо нажать на 3-ю иконку справа на приборной панели WB. Эта кнопка вызывает редактор целей/задач миссии.

Расположение кнопки

Окно редактора целей/задач

В этом небольшом редакторе для редактирования цели/задачи нужно её выбрать, кликнув 1 раз по задаче, и потом нажать на клавишу Edit. После этого откроется окно, в котором можно заменить строки.

Тестирование изменений

Наиболее оптимальный способ разместить  .csf файл — поместить его в отдельный .big архив, который будет “собираться” и добавляться к основным файлам мода. Это можно спокойно делать, т.к. .csf файл перезапишет значения из mod.str. Однако создать один архив недостаточно, т.к. он не будет подключён в файлам мода. Чтобы подключить новый архив к файлам мода, нужно описать его подключение в .skudef конфигурационном файле мода. Для этого откройте этот файл любым текстовым редактором и добавьте в конце файла строчку add-big [название вашего .big архива с .csf файлом]. В итоге у вас появится как .big архив с переведённым текстом, так и конфигурационный .skudef файл, подключающий перевод к моду.

Автоматическую сборку локализатора и запуск проверки проще всего сделать путём запуска .bat файла, однако его создание в статье рассмотрено не будет. В качестве альтернативы могу вам предложить поискать информацию в Интернете по данной теме, а также мой пример, который я использую при переводе модификации Generals Evolution.

Поддержка изменений

Двумя самыми большими проблемами локализации являются контроль внесённых изменений и долговременная поддержка сделанной вами локализации. Локализатор для игры можно воспринимать как локализатор программного обеспечения, поэтому здесь вполне применима технология Git. Если вкратце, то Git — это система управления версиями, созданная для упрощения разработки ПО. Git помогает отслеживать изменения в текстовых файлах, что позволит вам не потерять наработанный прогресс. Более подробно познакомится с тем, что такое Git, можно здесь.

Если же вы желаете помочь не только себе, отслеживая изменения в Git, но и ещё упростить способ подключения к работе над переводом и поиск вашего проекта в Интернете, то лучше всего выложить отслеживаемый вами репозиторий проекта на сайт-хостинг по типу GitHub и GitLab. В качестве примера, как можно организовывать репозиторий проекта, я могу предложить свой репозиторий. Его структура  крайне проста и понятна любому, кто сталкивался с Git.

Об авторе

mah_boi

Переводчик-любитель, луркер информации по играм C&C 2-го поколения. Перевожу модификации для C&C: Tiberian Sun, C&C: Red Alert 2, C&C: Red Alert 3 в свободное время.

Комментировать