Локализация игр на дому 2
В прошлый раз мы рассказали о локализации игр вообще, теперь рассмотрим
Пример русского меню, сделанного за 5 минут.
предмет подробнее. Остановимся на локализации игр на движке Quake III. Большая часть рекомендаций данного примера подойдет для всех игр на этом движке. Как подопытного кролика, возьмем полюбившуюся многим Medal of Honor. Более полное описание ее ресурсов вы можете прочесть в статье по ее вскрытию, в 4 ( 55 ) номере " Игромании " за 2002 год. Но кое-что я все же напомню: все ресурсы игры находятся в pk3 -архивах (переименованные ZIP -файлы), коих всего шесть штук: Pak0.pk3 содержит много нужных нам файлов (их названия и описания ниже по тексту), Pak1.pk3 — почти все текстуры внешнего оформления игры, в том числе и графику меню, которую просто обязательно нужно будет изменить, Pak2.pk3 — текстуры из игры (изображения стен, земли, неба и тэдэ), Pak3.pk3 содержит обычные звуки игры, Pak4.pk3 — озвучка персонажей игры (это нам нужно!),
Пример переведенного брифинга.
Pak5.pk3 — карты игры и текст задач к ним. И грянул гром Все звуки игры хранятся в WAV и MP3 форматах. Берем микрофон в руки, подносим его ко рту и нажимаем на кнопку " Запись ". Если вы твердо задались идеей нормально локализовать игру, то вам просто необходимо, чтобы текст, который вы проговорите в микрофон, совпадал с субтитрами. Субтитры находятся в файле Pak0.pk3\Ubersound\Uberdialog.scr. Весь файл разбит на несколько блоков, разделяемых так: //==================== // Заголовок блока //==================== Заголовки блоков соответствуют одноименным моментам игры. Например, первым идет блок с названием Mission Briefings , из названия следует, что далее идет описание звуковых файлов для брифингов перед миссиями. Так как это скриптовый файл, то менять все в нем не следует, мы заменим только текст, который находится в двойных кавычках после слова subtitle , которое обычно находится в конце строки. До него идет имя звукового файла, содержащего этот текст. Надо поменять текст субтитров во всех блоках! Примерно так: alias dfr_M1L2_115m_1 sound/dialogue/M1L2/A/dfr_m1l2_115z4.wav soundparms 1.2 0.0 1.0 0.0 160 1200 dialog streamed subtitle “СКОРЕЕ ВСЕГО, ОНИ В ШТАБЕ.” maps “m dm obj” Внешний осмотр Как только вы заходите в любую игру, перед вами предстает меню. Ни одна игра не может считаться локализованной, если в ней не переведено меню. Заходим в каталог Pak1.pk3\Mohmenu , там лежат все текстуры меню, а в подкаталогах — бумажки с заданиями на миссии, их содержание тоже желательно бы перевести. В архивах присутствуют части пустых бланков, чтобы не зарисовывать английский текст. Покончив с меню и брифингами, смотрим дальше и видим, что игра явно использует графические шрифты (файл с изображением всех символов). Полазив по архивам, мы найдем два пути, связанных со шрифтами: Pak0.pk3\Fonts и Pak0.pk3\gfx\fonts. По первому пути можно найти описания к шрифтам с именами типа “Название Шрифта.RitualFont”, в них содержится информация о ширине и высоте каждого символа в шрифте, а также их координаты на картинке; по второму же пути лежат сами шрифты в формате TGA. Я не буду описывать, как в порыве суицидальных фантазий некоторые народные умельцы пытаются вручную перерисовать каждую букву и изменить файлы с описанием. Мы поступим проще: возьмем программу FontGen (ее можно взять с
нашего компакта ), эта программа сначала предложит вам выбрать шрифт и его размер (не ставьте больше 18, большой шрифт плохо будет смотреться), который вы хотите увидеть в игре (шрифты можно выбрать только те, которые установлены в системе). Затем, по нажатию кнопки " Старт ", создаст в каталоге, куда распакована программа, два файла: ИмяШрифта-ЕгоРазмер.bmp и ИмяШрифта-ЕгоРазмер.RitualFont. Открыв первый, вы сможете улицезреть символы, которые будут видны в игре. Присмотревшись, вы заметите, что вместо латинских заглавных букв будут присутствовать заглавные русские (если выбранный вами шрифт поддерживает кириллицу, в противном случае будут иероглифы), которые также будут нарисованы еще раз чуть ниже. Это объясняется тем, что игра в некоторых случаях не поддерживает отрисовку
символов, чей порядковый номер больше 128 (у кириллицы номера начинаются с 192). Поэтому нам придется немного, что называется, сжулить. Сначала разберемся, как перегнать изображение шрифта из BMP в TGA с прозрачным фоном. Тут нам поможет Photoshop. Загружаем в него получившуюся картинку, выбираем Select/Color Range… (Выделение/Интервал цвета), параметр Fuzziness (Расплывчатость) устанавливаем на 200, на миниатюрном изображении картинки щелкаем мышью в месте, где находится только фон (иногда он сам выделяется), после этого нажимаем OK. **__**Вы увидите, что вся картинка, кроме самих букв, будет выделена, а нам нужно выделить буквы. Нажимаем Ctrl + Shift + I , или же заходим в Select/Inverse (Выделение/Обратить). Вот теперь то, что надо. Копируем выделенные
символы в буфер обмена через Edit/Copy (Правка/Копировать). Можно закрыть нашу картинку. Теперь создаем новый холст 256 на 256 пикселей, с прозрачным фоном ( transparent ). Вставляем наши символы из буфера через Edit/Paste (Правка/Вставить), так чтобы символы лежали как в оригинале, начиная с левого верхнего угла. Для этого предварительно необходимо выделить левый верхний угол пустой картинки (начиная с первого пикселя). ****Cохраняем получившийся шедевр в TGA -формат с 32-битным разрешением (чтобы сохранить прозрачность). ****Шрифт готов, делаем еще пару и начинаем их вставлять в игру. В папке pak0.pk3\gfx\fonts лежит несколько файлов, но нам понадобятся только courier-16.tga, courier-18.tga, courier-20.tga — все три отвечают за шрифт, который вы видите, просматривая задания на миссию во время игры, их можно заменить на шрифт одного размера (не больше 14). Также нам пригодится FacFont-20.tga — это основной шрифт, его нужно заменить на достаточно красивый вариант — ведь это лицо игры. После замены графики не забудьте заменить и описания к шрифтам. Простой текст… Приступим к изменению игрового текста (учтем, что субтитры уже на русском). Сначала я опишу файлы, которые не требуют специальной обработки, и текст, измененный в них на русский, будет нормально отображаться в игре. Вот они. pak0.pk3\Ui\StatScreen_failed.scr — содержит скриптовое описание экрана статистики, появляющегося после того, как вы провалите миссию. Текст, который можно (читай нужно) менять, находится в двойных кавычках после слова title , а это слово встречается много раз в файле. Будьте бдительнее, не пропускайте. Еще одна немаловажная деталь — не пишите размашисто, чуть ниже строки с этим словом есть строка с описанием размера пространства, выделяемого под эту надпись. Это строка типа rect 128 296 52 24 (все цифры означают количество пикселей), где 128 — это координата по оси X начала надписи (отступ слева), 296 — координата по оси Y (отступ сверху), 52 — ширина всей надписи (часть надписи, вышедшей за этот предел, не будет отображаться), 24 — высота надписи. pak0.pk3\Ui\StatScreen_success.scr — то же самое, что и предыдущий файл, только отвечает за экран в случае успешного прохождения миссии. pak0.pk3\Ui\Hud_Health.urc — единственное, что в этом файле нам нужно, так это строка title “Health” , это слово пишется в игре рядом с полоской жизни и переводится как “Здоровье”. Изменив файлы, запакуйте их обратно. Перейдем к завершающему этапу. …и непростой Игра иногда не понимает русских букв, но пусть пока это нас не смущает. Заходим в *pak0.pk3\Global* и достаем оттуда localization.txt. В нем хранятся сообщения из игры (например “Game Saved”), их-то мы и будем заменять. Переводить содержимое довольно просто. Открываем файл и действуем по описанию. Формат файла: открывается фигурная скобка, потом в кавычках идет описание действия для игры (менять нельзя), а через пробел, тоже в кавычках, идет текст, который будет отображаться в игре. Им-то мы и займемся. Вот пример: { “That team is full” “Эта команда уже полна” }. Исправляем текст, сохраняем файл, но не спешим запаковывать его обратно. Берем программу Ru2En (находится на нашем
Миссия закончена
компакте ) и прогоняем через нее файл (просто в программе жмем кнопку Open и выбираем нужный файл). После этого в каталоге, где лежал измененный нами файл, появится еще один файл с таким же именем, но без расширения. Им-то и надо заменить исходный файл, упакованный в архиве pak0.pk3. Дело в том, что эта программа заменяет все русские буквы в тексте на заглавные английские, так чтобы в игре заранее “исправленными” шрифтами нам выводился русский текст. Вот поэтому мы и изменили заглавные буквы в шрифтах. Что мы еще не перевели? Ах, да, во время игры смотрим задание на миссию, а там все по-английски, но это временно. Ищем в папке *pak5.pk3\maps* все файлы с расширением scr , ищем в них текст типа: waitthread global/objectives.scr::add_objectives (в некоторых файлах такой может и не быть, например в файлах *_precache.scr ), далее идут две цифры и текст задания в двойных кавычках. Один и тот же фрагмент может повторяться по тексту несколько раз, изменить надо везде! Прогоняем эти файлы также через Ru2En , получившиеся в результате файлы переименовываем в *.scr и пакуем обратно, заменяя исходные. Теперь, если вы все сделали правильно, зайдя в игру, вы увидите до боли знакомый родной язык. В игру станет играть намного приятней. *__ Необязательно соблюдать все формальности перевода текста игры — вы можете переписать по-новому сюжет, и вместо того же лейтенанта Пауэлла по уровням будет бегать Вася Пупкин, или Иван Сусанин, например, борющийся не с фашистами, а с инопланетными пришельцами. И не забывайте, что описанным выше способом можно локализовать практически любую игру на движке Quake III, и уже вышедшую, и еще только находящуюся в разработке. И не забывайте, что результаты творчества можно использовать самому, показывать друзьям, но нельзя распространять за деньги.