Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Локализация игр на дому - Часть 2

Автор: Spose
WEB-сайт: http://daddy.mirgames.ru

В прошлый раз, мы рассказали о локализации игр в общих чертах, теперь мы рассмотрим это дело более подробно. Сегодня мы остановимся на локализации игры на движке Quake3, значит, большая часть рекомендаций данного примера подойдет и для других игр на этом движке. Как подопытного кролика, возьмем полюбившуюся многим 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 с прозрачным фоном. Тут нам поможет старик Фотошоп. Загружаем в него получившуюся картинку, выбираем Select>Color Range... (Выделение>Интервал Цвета), параметр Fuzziness(Расплывчатость) устанавливаем на 200, на миниатюрном изображении картинки, щелкаем мышью в месте где находится только фон (иногда он сам выделяется), после этого нажимаем OK.

Вы увидите, что вся картинка кроме самих букв будет выделена, а нам нужно выделить буквы. Нажимаем Ctrl+Shift+i, или же заходим в Select>Inverse (Выделение>Обратить). Вот теперь то, что надо. Копируем выделенные символы в буфер обмена через Edit>Copy (Правка>Копировать). Можно закрыть нашу картинку. Теперь создаем новый холст 256 на 256 пикселей, с прозрачным фоном (transparent). Вставляем наши символы из буфера через Edit>Paste (Правка>Вставить), так чтобы символы лежали как в оригинале, начиная с левого верхнего угла. Для этого предварительно необходимо выделить левый верхний угол пустой картинки (начиная с первого пикселя).

И, наконец, сохраняем получившийся шедевр, в 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 и пакуем обратно, заменяя исходные. Теперь, если вы все сделали правильно, зайдя в игру, вы увидите до боли знакомый родной язык. В игру станет играть намного приятней.

Под занавес!

Не обязательно соблюдать все формальности перевода текста игры, вы запросто можете написать переписать по-новому сюжет, и вместо того же Лейтенанта Пауэлла, по уровням будет бегать Вася Пупкин, или Иван Сусанин, например, борющийся не с фашистами, а с инопланетными пришельцами.

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.