В статье рассматриваются основные нюансы, возникающие в процессе создания локализаций модификации на Tiberium Wars, Kane’s Wrath или Red Alert 3 (далее TW, KW и RA3 соответственно).
Вы можете воспользоваться другой статьёй по переводу модификаций для игр C&C 3-го поколения, однако статья написана на английском, и подходит исключительно для RA3.
Инструменты
Самое главное для переводчика — знание инструментов для корректного редактирования игровых файлов, чтобы в результате замены изначальных файлов мод работал как и до этого, а в идеале, чтобы ещё и можно было играть по сети с игроками без локализации. Для создания перевода вам потребуются следующие программы:
- WrathEd — программа для просмотра и экспорта данных из
.big
архивов TW/KW/RA3. FinalBIG несовместим с TW/KW/RA3 (максимум через него можно посмотреть иерархию папок и файлов архива), т.к. не поддерживает сжатие данных внутри.big
архивов, которое было добавлено играх 3-го поколения; - Turbo String Table Editor (сокращённо TSTE) — программа редактирования
.csf
и.str
файлов; - 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
архиве модификации.
Итак, задачи, встающие перед переводчиком, выглядят следующим образом:
- Поиск
mod.str
в.big
архивах мода; - Создание переведённого
cnc3.csf
/gamestrings.csf
с переведёнными строками изmod.str
и оставшимся текстом игры; - Сборка
.big
архива с полученным в итоге.csf
файлом.
Выполнив этот план, можно считать, что мод переведён.
Извлечение текстовых файлов
Работа с WrathEd крайне проста. Запускаем программу. В контекстном меню выбираем опцию File—>Open Big...
и указываем открываемый .big
архив.
Находим среди всех файлов необходимый нам data\mod.str
и нажимаем на него, чтобы извлечь из архива. В контекстном меню выбираем опцию Edit—>Export...
и указываем путь, куда сохранить. Всё. Теперь у вас имеется mod.str
. Этот файл можно открыть абсолютно любым текстовым редактором.
Аналогично совершаем экспорт оригинального/локализованного .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 и обратно.
Итак, после того как вы экспортировали все необходимые вам текстовые файлы, можно приступать к работе с ними. Чтобы конвертировать .str
в .csf
необходимо уже открытый mod.str
сохранить как .csf
файл. Конвертация в этом случае произойдёт автоматически. Открывается mod.str
нажатием на опцию Файл—>Открыть...
, а сохраняется в .csf
после нажатия Файл—>Сохранить как...
и указания названия нового файла.
Демонстрация конвертации через сохранение в другом формате
Предварительно стоит отметить, что итоговый файл должен иметь кодировку Unicode, поэтому выберите в TSTE отображение текста в Unicode (путь по меню: Вид—>Кодировка—>Unicode
) и только потом переводите/редактируйте текст.
Для начала вам необходимо определится: текст интерфейса и прочий тексты вы будете переводить сами, или позаимствуете текст из уже имеющейся официальной локализации игры. В первом случае лучше всего экспортировать отдельно разделы и строки из официального английского .csf
файла в отдельный файл экспорта, а затем импортировать в файл вашей локализации мода. Будьте осторожны, т.к. при отсутствии необходимого текста игра будет его заменять на гораздо менее понятный результат.
Во втором случае вам необходимо импортировать mod.str
в .csf
файл официальной локализации с заменой значений.
Для того чтобы экспортировать раздел, необходимо выбрать раздел/категорию, нажав на него ЛКМ, а затем выбрав Файл—>Экспорт категории...
, после чего указать файл для экспорта. Если же необходимо экспортировать только строку, то нужно выбрать её, нажав на неё ЛКМ, а затем выбрав Файл—>Экспорт строк...
, и после указать файл для экспорта. В отличие от разделов, строки можно выбирать массово через Ctrl
(по одной строке) и Shift
(все строки от уже выделенной до новой выделенной).
Демонстрация экспорта
При импорте всё крайне просто. Нажимаем Файл—>Импорт...
и указываем файл, который будет импортироваться, а также настройки импорта. Все новые добавленные строки выделяются синим и добавляются в конец списка в категории. Категории же при импорте имеют зелёный цвет, символизирующий наличие изменений.
Демонстрация импорта
В конечном итоге у вас получится перевести весь текст в моде, но, к сожалению, бывают такие модификации, которые добавляют не только текст в виде названий и описаний способностей/зданий/юнитов, но и в добавок размещают текст на их иконках. Исправить это можно только редактированием иконок. Этот вопрос в статье рассмотрен не будет, т.к. носит исключительный характер (до сих пор только в Generals Evolution такое встречалось).
Создание архива
С помощью MakeBig можно создать .big
архив как в командной строке, так и через батник как вызов программы. Однако батник является более оптимальным решением по причине постоянной проверки текста в самой игре переводчиком (батник можно использовать как скрипт для сборки локализатора).
Пользоваться MakeBig крайне просто: для создания архива нужно лишь описать архивируемую папку и выходную папку. Например, чтобы поместить какой-нибудь текстовый файл в него, нужно поместить этот файл в отдельную папку, и затем прописать команду MakeBig.exe -o:[путь с названием создаваемого 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
для вызова редактора скриптов.
В редакторе скриптов вам нужно знать очень важное правило редактирования: в редакторе нет возможности отменить какое-либо действие; в нём можно только либо подтвердить все изменения, либо отвергнуть все изменения через кнопки OK
и Cancel
соответственно. Отменить какое-нибудь одно ранее сделанное изменение невозможно. Такое же правило действует и на все другие окна редактора скриптов.
Единственное, что потребуется в редакторе скриптов — заменить старые строки на новые. Скриптовое действие, ответственное за сообщение во время игры, называется 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.