Post tutorial Report RSS Как перевести модификацию для Tiberian Sun

Подробный гайд о том, как перевести модификацию для C&C: Tiberian Sun, с использованием современных инструментов.

Posted by on - Advanced UI/HUD

for dummies

Введение

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

Перед тем, как начать переводить какую-либо игру, требуется понять ограничения игры, а именно:

  1. Файловая системы игры (форматы файлов);
  2. Инструменты редактирования и сборки файлов игры;
  3. Поддерживаемые кодировки (UTF-8, Windows-1251);
  4. Соответствие шрифтов выбранной кодировке;
  5. Редактирование текста игры;
  6. Что нужно изменить, чтобы перевести на родной язык.

Каждый из пунктов будет отдельно разобран в статье.

Что такое локализатор

Локализатор в контексте модов C&C — это набор файлов, позволяющий перевести мод на язык, на котором раньше проект не был доступен. Все локализации можно разделить на 2 типа: текстовые и полные. Текстовые — переводят весь текст игры. В идеальной ситуации они добавляют субтитры в кат-сценах и перевод реплик, которые звучат в миссиях, но в оригинальной версии игры не выводятся в текстовой форме. Полные локализации переводят помимо текста игры ещё и звуковые реплики юнитов, Евы, и звук кат-сцен. Такие переводы делать сложнее, и, как правило, дольше, т.к. приходиться совершать поиск актёров озвучки и контролировать всё качество звука, который должен совпадать с качеством игры (и это всё помимо перевода текста и контроля его качества).

Файловая система Tiberian Sun

Как игра серии C&C 2-го поколения, Tiberian Sun состоит из .mix архивов, которые содержат основные ассеты игры (спрайты, воксели, звуки, видео, палитры, шрифты, конфиги). Более подробно про форматы файлов можно узнать здесь, а про порядок загрузки .mix архивов и их содержимого вы можете прочесть здесь.

Из всех ресурсов оригинальной игры стоит выделить несколько важных форматов и конкретных файлов вместе с их расположением в игре:

  • .map — файлы одиночных миссий (миссии кампаний). Содержатся в архивах maps01.mix, maps02.mix, maps03.mix. В случае Tiberian Sun Client миссии находятся в папке Maps\Missions, т.к. движок в клиент-совместимых модификаций изменён на загрузку карт не из архивов;
  • .fnt — пиксельные шрифты. Содержатся в архиве tibsun.mixcache.mix;
  • .pcx — пиксельные изображения, из которых dlgsysa.pcx и dlgsysi.pcx являются шрифтами внутриигрового меню. Содержатся в архиве tibsun.mixlocal.mix;
  • .shp — спрайты и спрайтовые анимации, из которых fullfnt3.shp — анимированный шрифт внутриигровых брифингов. Содержится в архиве tibsun.mix local.mix;
  • .aud — звуковые файлы. Содержатся в архивах tibsun.mixsounds.mix, tibsun.mixspeech01.mix, tibsun.mix speech02.mix, sidecd01.mix, sidecd02.mix, expand01.mixe01vox01.mix, expand01.mixe01vox02.mix, expand01.mix sounds01.mix;
  • .vqa — файлы видео (кат-сцены). Содержатся в архивах movies01.mix, movies02.mix, movies03.mix, e01scd01.mix, e01scd02.mix;
  • .dll — динамические библиотеки MS Windows. В language.dll содержится часть текста внутриигрового меню. Располагается в корне игры рядом с game.exe — движком игры.

Файловая система клиента CnCNet

С тех пор, как EA перевела Tiberian Sun на лицензию freeware в 2010 году, у сообщества развязались руки, и оно начало создавать различные инструменты и для облегчения своей жизни. Одним из таких инструментов стал XNA клиент CnCNet, который развивается и по сей день.

Самая главная директория клиента — это папка Resources. Ресурсы клиента условно можно разделить на конфигурационные файлы (файлы с расширением .ini), изображения, используемые для отрисовки окон, бинарные и дополнительные файлы.

Инструменты

Westwood Font Editor (сокращённо WWFE) — современный удобный редактор .fnt шрифтов от Nyerguds, поддерживающий игры серии C&C 1-го и 2-го поколения, а также другие старые игры.

WWFontEditor ZhRFkfECrP 810x623

Скачать | Подробнее

XCC Mixer (сокращённо mixer) — программа для редактирования .mix архивов от Olaf van der Spek. Программа старая, но проверенная временем. Удобно использовать для просмотра содержимого архивов, их распаковки и запаковки.

XCC Mixer m8PNCf4tvy 810x623

Скачать | Подробнее

OS SHP Builder (сокращённо SHPB) — свободный редактор .shp спрайтов для игр C&C 1-ого и 2-ого поколения, разрабатываемый создателем и пользователями PPM.

SHPB

Скачать | Подробнее

Resource Hacker (сокращённо RH) — программа для редактирования исполняемых файлов (.exe) и динамических библиотек (.dll) Windows.

cL3JI8uOmJ 810x623

Скачать | Подробнее

Adobe Photoshop — редактор изображений, поддерживающий файлы формата .pcx из коробки.

В статье указан Photoshop неспроста. В своё время, когда мною активно переводились моды для TS, я обнаружил, что наиболее функциональный аналог этой программы — GIMP — на самом деле сохраняет .pcx файлы в таком формате, из-за чего игра в итоге рендерит артефакты во внутриигровом меню. Не повторяйте моих ошибок, используйте Photoshop, который этим не болеет, либо Paint.NET.

ts dlgsysi

Процесс перевода

В контексте Tiberian Sun ситуация довольно таки плохая — игра не поддерживает Unicode-подобные шрифты, но поддерживает ASCII-подобные, что позволяет использовать кодировку Windows-1251 а-ля CP1521 в текстовых файлах для перевода текста, например, на русский язык. В связи с этим рождаются все последующие нюансы.

Если вы не желаете мучаться с русификацией шрифтов — скачайте из репозитория Twisted Insurrection уже готовый пакет русифицированных шрифтов.

Редактирование шрифтов

В отличие от Red Alert 2, где можно отредактировать один единственный game.fnt, в Tiberian Sun редактировать шрифты — это то ещё веселье. Вам придётся как минимум использовать 2 программы, чтобы сформировать полный пакет шрифтов.

Шрифты текста игры

Шрифтов формата .fnt, которые редактируются при помощи WWFE, в игре всего 6 штук:

  1. 6point.fnt — не было найдено, где шрифт используется;
  2. 8point.fnt — не было найдено, где шрифт используется;
  3. 12metfnt.fnt — не было найдено, где шрифт используется;
  4. editfnt.fnt — не было найдено, где шрифт используется;
  5. grad6fnt.fnt — используется для отрисовки обычного внутриигрового текста сообщений из файла tutorial.ini;
    wwfonteditor zsbmb9kkyw
  6. kia6fnt.fnt — шрифт, используемый для отрисовки текста в меню загрузки и на приборной панели из библиотеки language.dll.
    wwfonteditor 3twxmocfcd

Для перевода достаточно изменить под шрифты kia6fnt.fnt и grad6fnt.fnt под нужную вам кодировку, в случае русского языка — это Windows-1251. Если найдёте места применения других шрифтов — дайте знать, т.к. я не нашёл.

Шрифты внутриигрового меню

За отрисовку внутриигрового меню отвечают 2 файла: dlgsysa.pcx и dlgsysi.pcx.

dlgsysa.pcx — маска шрифта внутриигрового меню, которая говорит игре, сколько места будет занимать текст во время отрисовки.

dlgsysa original

dlgsysa siberian gremlin

dlgsysi.pcx — итоговый видимый шрифт внутриигрового меню.

dlgsysi original

dlgsysi siberian gremlin

Редактирование этого шрифта стоит начать с формирования сетки размера символов, т.к. она вам очень пригодится при изменении символов шрифта ради добавления кириллицы. Подсказкой может послужить крайний левый верхний квадрат, который показывает размеры области, в которой изменения будут отображаться как 1 символ. После того, как сетка была начерчена, приступайте к редактированию dlgsysi.pcx, т.к. этот файл отвечает за отображение текста в меню.

При наличии скорректированного dlgsysi.pcx, изменения в dlgsysa.pcx делаются в пару кликов. Сам файл-маска является чёрно-белым, где белый цвет показывает занятое символом место.

Шрифт анимации текста брифинга

12341rfdsvfge423r3efrg

Файл fullfnt3.shp отвечает за текст на экране во время отрисовки брифинга. Чтобы отобразить цвет текста правильно, вам сначала нужно отключить тени в OptionsShadows, которые по умолчанию включены.

snimok ekrana 2024 03 24 135849

А затем выбрать в верхнем меню SHP Builder список PaletteLoad (либо нажать Ctrl+P) и подгрузить палитру, которую вы можете скачать здесь, либо найти в архиве tibsun.mix local.mix.

Особенностью шрифта является то, что на каждый символ отводится по 3 кадра (фрейма) анимации, которые показывают, как буква должна рисоваться на экране монитора игрока во время игры:

  1. Первый кадр — это символ в круге, заполненный белым цветом;
  2. Второй кадр — символ становится более виден;
  3. Третий кадр — статичный конечный символ.

Подробно поиск соответствия символов по данному шрифту рассмотрено не будет, т.к. это полностью экспериментальная зона под конкретную кодировку текста. Тем не менее для справки — кириллическая буква А в кодировке Windows-1251 начинается с фрейма 286, а буква а — с 382.

С цветами палитры будьте также осторожны. Если вы захотите воспользоваться белым цветом из палитры под номером 0x02F (47), то у вас весь текст станет блеклым, т.к. игра не сможет "натянуть" на него цвет фракции.

good shp

Нормальный цвет букв.

bad shp

Ошибочный цвет букв.

Перевод внутриигрового меню

Весь текст внутриигрового меню содержится в файле language.dll рядом с движком игры game.exe. Чтобы заменить текст, следует воспользоваться Resource Hacker.

zcfweqwefw231

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

Названия статусов На Паузе / Готово, текст подведения итогов схватки с ботами/игроками, описание горячих клавиш — всё это хранится в секции String Table динамической библиотеки.

Стоит отметить тот факт, что language.dll может различаться для разных разрешений экрана, и во многих модах на TS, использующих клиент CnCNet, в папке Resources имеется несколько версий этого файла, которые копируются к файлу движка при изменении разрешения игры. Если вы хотите перевести интерфейс для всех случаев, то вам нужно изменить все эти файлы. Было также замечено, что перевод текста Mission Accomplished, Mission Failed, Game Over, You Are Victorious не поддерживаются игрой из-за фанатских патчей.

Перевод названий юнитов

Любой прямой (через rules.ini) или косвенный (через langfs.ini) перевод юнитов в игре будет вызывать рассинхронизацию при игре по сети с людьми, у которых ваша локализация не стоит.

Текст юнитов указывается в файле rules.ini. В обычном TS файл располагается в архиве tibsun.mixlocal.mix, а в моде с клиентом CnCNet — в папке INI. Единственным правильным способом перевода названия юнитов — использование файла langfs.ini, который должен подгружать дополнительные правила игры для аддона Firestorm, но в нашем случае через него можно заменять текст из ключей Name= в секциях переводимых юнитов. Размещать файл стоит либо в архиве tibsun.mixlocal.mix, а в моде с клиентом CnCNet — в папке INI.

Перевод текста миссий

Весь текст миссий может храниться как в файле tutorial.ini, так и в самом файле миссии. В обычном TS располагается в архиве tibsun.mixlocal.mix, а в моде с клиентом CnCNet — в папке INI. Приоритет загрузки из файла миссии выше, чем из внешнего файла. Сам файл миссии/tutorial.ini должен быть в кодировке, для которой были изменены шрифты.

Перевод брифингов миссий

Чтобы текст в миссиях отображался корректно в вашей кодировке, в моде, который использует клиент CnCNet, следует прописать в файле Resources/ClientDefinitions.ini в секции [Settings] строку CopyMissi>, чтобы предотвратить копирование карт в файл spawnmap.ini, который копирование происходит только в кодировке UTF-8.

Все современные версии Tiberian Sun имеют сломанные брифинги. Если раньше приходилось для перевода изменять файл mission.ini, то теперь брифинги лежат в файлах карт в секциях [Briefing]. В обычном TS файл располагается в архиве tibsun.mixlocal.mix, а в моде с клиентом CnCNet — в папке INI. Сам файл миссии должен быть в кодировке, для которой были изменены шрифты.

Перевод XNA клиента CnCNet

Конфиги клиента содержат текст, который клиент отображает, его позиции и отступы отображения, а также другие настройки. Однако с недавних пор менять напрямую текст в этих конфигах для перевода клиента стало необязательно, т.к. Kerbiter и SadPencil изобрели официальный универсальный способ локализации, о котором вы можете прочитать здесь, а увидеть пример использования здесь. При переводе клиента стоит использовать кодировку UTF-8 для конфигов.

Изображения используются для формирования окон клиента. Зачастую изменять их нет необходимости, чтобы достичь заветной цели, описываемой данной статьёй. Тем не менее бывают такие клиенты, где это просто необходимо. Например, есть клиенты, где кнопки главного меню рисуются клиентом не с использованием текста, а изображений. Примерами таких "плохих" клиентов могут послужить клиенты модификаций Twisted Insurrection и The Second Tiberium War.

clientxna Cl4Kn4Ozki

Вот так красиво клиент выглядит снаружи.

explorer QJBvWcDYLU

И так уродливо внутри.

В противовес "плохим" клиентам есть "хорошие" клиенты, одним из которых является клиент для модификации Dawn Of The Tiberium Age, переводимый лишь за счёт изменений текста в файлах MainMenu.ini и ExtrasWindow.ini.

clientdx 5oUBq3Q9Vo

Оригинальный клиент DTA.

clientdx yfPJO0YSGV

Его быстрый перевод.

explorer 8ZVnBTE1B7 810x405

И так клиент выглядит изнутри.

Чтобы отредактировать "плохой" клиент вам нужно выпросить у разработчика клиента/модификации исходники кнопок меню и заменить текст на русский, либо попытаться воспроизвести стиль оригинального клиента. Если клиент "хороший", тогда его меню состоит из текста, написанного в строках (ключах) Text= файлов MainMenu.ini и ExtrasWindow.ini, который можно перевести в файле Translation.ini.

Контроль и поддержка изменений

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

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

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

diffchecker

Заключение

Данный гайд поможет вам в структурировании процесса перевода модификации для Tiberian Sun, а также поможет с технической частью вопроса. Хоть и в статье были разобраны примеры изменения шрифтов и текста в контексте русского языка, на самом деле все эти процессы справедливы и для переводов на другие языки, которые поддерживают ASCII-подобные шрифты. Надеюсь, что со временем количество технических ограничений перевода Tiberian Sun будет становиться всё меньше и меньше, благодаря развитию проекта Vinifera.

Бусти автора: Boosty.to

Post comment Comments
Guest
Guest - - 692,188 comments

Полезно.

Reply Good karma Bad karma+1 vote
mah_boi Author
mah_boi - - 213 comments

Старались.

Reply Good karma+1 vote
Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: