Вход в систему
Информация по игре "Crysis"
http://www.crysis-game.com
Видео
Последние статьи
Самые комментируемые статьи
5 шагов к локализации. Русификация модов для CrysisАвтор: Павел Севец
Полный текст
В предыдущих статьях цикла мы досконально изучили процесс перевода модов для Warcraft 3, Half-Life 2, TES 4: Oblivion и Neverwinter Nights 2. Теперь настало время разобраться с локализацией Crysis. Основная проблема состоит в том, что игра нашинкована большим количеством звуковых файлов, которые простыми средствами перевести очень сложно, зато можно пустить внахлест субтитры. Но и с ними придется повозиться — изначально даже локализованная версия Crysis не поддерживает кириллицу в модах, придется искать обходные пути и придумывать необычные способы локализации. Шаг 1: изучаем структуру файловСразу обратим ваше внимание на очень важный факт. Для перевода нам вообще не понадобится игровой редактор — всю локализацию мы будем проводить в текстовом редакторе Notepad++, помимо него нам еще понадобятся Excel и любой ZIP-архиватор. Большинство дополнений для Crysis, даже если они называются кампаниями, по сути представляют из себя отдельные игровые карты, иногда несколько карт объединены общим сюжетом, и совсем уж редко попадаются моды, которые изменяют игровую физику. Но в любом случае основной единицей любого дополнения остается именно карта, в ее анатомии нам в первую очередь и нужно разобраться. Все уровни располагаются в отдельных подпапках вида <корневая директория Crysis>\Game\Levels\<название карты>, и они содержат: 1. Текстовый файл <название карты>.xml является «визитной карточкой» карты. <MetaData> <HeaderText text=«Название карты на загрузочном экране»/> <DescriptionText text=«Описание карты на загрузочном экране»/> </MetaData> Поля HeaderText и DescriptionText содержат текст, отображаемый на загрузочном экране, переводить их строго обязательно. Но напрямую вписать текст не выйдет, поскольку игра не понимает кириллицу. О том, как заменить текст русскоязычным переводом, мы поговорим чуть позже. 2. Текстовый файл Objectives.xml содержит названия, описания и маркеры на карте для игровых заданий, которые отображаются в соответствующем меню игры. Структура выглядит следующим образом: <Root> <LostIslandII> <Objective_01 Name=«Название задания 1» Description=«Описание задания 1» MapLabel=«Маркер задания 1 на карте»/>
</LostIslandII> </Root> 3. Игровой ZIP-архив level.pak содержит всю «активную начинку» карты. Распаковываем его в любую папку, где в числе прочих ресурсов обнаружится файл mission_mission0.xml, который представляет собой своеобразный чертеж карты, на нем указано, какие объекты располагаются на карте, каковы их свойства и как эти объекты взаимодействуют между собой. Под объектами здесь понимается все, начиная от оружия и персонажей и заканчивая заскриптованными зонами. В общем, любое изменение в mission_mission0.xml незамедлительно отражается в игре. Здесь нам придется переводить текстовые сообщения, которые появляются во время игры. Работать с mission_mission0.xml удобнее в редакторе Notepad++, поскольку он поддерживает отображение древовидных XML-структур и быстро работает с очень большими файлами. Загружаем mission_mission0.xml и в ветке <Mission>/<Objects> видим список объектов (object — видимые объекты) и так называемых сущностей (entity — элементы триггерной логики игры). При этом некоторые сущности могут иметь подблок FlowGraph, описывающий связи между функциональными «кирпичиками» скриптовой последовательности. Например, воспроизвести анимационную сцену, затем музыкальную композицию, потом вывести игроку сообщение и, наконец, отдать управление другому блоку. Для задания подобной последовательности в блоке FlowGraph имеются два списка: Nodes (узлы) и Edges (связи). В первом описываются совершаемые действия, во втором — их очередность. За вывод сообщений в игре ответственны два класса узлов: HUD:OverlayMsg и HUD:DisplayTimedDebugMessage. На практике они используются следующим образом: <FlowGraph ...> <Nodes> <Node Id=«111» Class=«HUD:OverlayMsg» pos=«100,100,100» flags=«0»> <Inputs Message=«Отображаемое сообщение 1» PosX=«150» PosY=«150» Color=«1,1,1» Timeout=«5»/> </Node> <Node Id=«222» Class=«HUD:DisplayTimedDebugMessage» pos=«200,200,200» flags=«0»> <Inputs Message=«Отображаемое сообщение 2» PosX=«250» PosY=«250» FontSize=«1» DisplayTime=«1»/>
</Node> </Nodes> <Edges> <Edge nodeIn=«111» nodeOut=«...» portIn=«Show» portOut=«...» enabled=«1»/> <Edge nodeIn=«222» nodeOut=«...» portIn=«Trigger» portOut=«...» enabled=«1»/> </Edges > </FlowGraph> Применение у этих узлов схожее, но главное их отличие в том, что только OverlayMsg можно приспособить для отображения русскоязычных сообщений. Так что все вызовы DisplayTimedDebugMessage следует заменить на OverlayMsg. Чтобы это сделать, давайте посмотрим, как они устроены. У обоих имеется идентификатор узла (Id), название класса (Class), положение на карте (pos), флаги (flags), текст сообщения (Message), координаты на экране (PosX, PosY). Если у OverlayMsg можно задать цвет текста (Color), то у DisplayTimedDebugMessage — лишь размер букв (FontSize). Кроме того, у одного время отображения на экране задается атрибутом Timeout, а у другого — DisplayTime. Но узлы отличаются не только этим. В списке связей (Edges) указано, какой узел (nodeOut, portOut) какому (nodeIn, portIn) передает управление в скрипте. И если узел класса OverlayMsg получает управление через порт Show, то DisplayTimedDebugMessage — через Trigger. Меняя у второго класса entity название, задержку — с DisplayTime на Timeout, входной порт — с Trigger на Show, убирая FontSize и добавляя Color, мы сможем отображать на экране русскоязычное сообщение. Шаг 2: адаптируем текстВ Crysis изначально (то есть безо всяких лок-китов) заложена возможность переводить текст на другие языки. Все русскоязычные ресурсы (в официальной версии от «Софт Клаба») лежат в архиве <корневая директория Crysis>\Game\Localized\russian.pak. Распаковываем его и в подпапке Languages находим файл game_text_messages.xml — это XML-таблица. Открыв ее, мы для себя отмечаем три ключевых столбца: второй — строковый идентификатор сообщения, четвертый — сообщение на английском (для локализации необязательно), восемнадцатый — переведенное сообщение на русском. Теперь, если в mission_mission0.xml вместо Text=«Some message» написать Text=«@text_id», а в game_text_messages.xml дописать строку (по столбцам) @text_id/Some message/Некоторое сообщение и сохранить это изменение в файлах game_text_messages.xml и russian.pak, то текст будет корректно отображаться. Аналогично поступаем со всеми строками, требующими перевода. Шаг 3: готовим субтитрыНаравне с файлом mission_mission0.xml важную роль в процессе локализации играет moviedata.xml, в котором собраны данные об анимационных роликах. В этих двух файлах присутствуют скриптовые команды для воспроизведения звуковых файлов диалогов. Обычно авторы англоязычных модов не забивают себе голову такими «мелочами», как многоязычность, а потому поддержку субтитров внедрять в игру придется собственноручно. Начнем с файла moviedata.xml — нас в нем интересуют строки вида: <Key filename=«levels/<название карты>/.../<имя звукового файла>.(mp2|wav) «Voice=»0»... /> Именно в них происходит обращение к звуковым файлам, нам нужно сделать так, чтобы при этом на экране отображались субтитры. Как и в случае с сообщениями, для этой задачи уже предусмотрено вполне конкретное решение. Помимо game_text_messages.xml, в russian.pak/Languages присутствует еще один Excel-файл dialog_recording_list.xml, в столбцах (как и выше — 2, 4, 18) которого располагаются идентификатор звукового файла, субтитры на английском (можно не переводить) и субтитры на русском. Шаг 4: идентификаторыЧто такое субтитры, и так понятно — это тексты реплик, произносимых героем в данный момент. С идентификаторами же стоит разобраться отдельно. Чтобы субтитры сообщения отображались корректно, сам звуковой файл сообщения должен быть помещен в папку russian.pak/Languages/dialog/<название карты>, и тогда в роли идентификатора выступает <название карты>/<имя файла без расширения>. Остается лишь заменить путь для обращения к звуковому файлу и включить опцию Voice в moviedata.xml: <Key filename=«Languages/dialog/<название карты>/<имя звукового файла>.(mp2|wav)«Voice=»1»... /> Этой нехитрой заменой мы внедрили субтитры в скриптовые ролики игры. Но непродолжительный забег по уровню вскоре даст понять, что работа на этом у нас еще не окончена: оказывается, мы не учли массу внутриигровых диалогов (например, переговоры по рации), которые также требуют субтитров. Их вызов инициируется в разделах FlowGraph файла game_text_messages.xml: <FlowGraph...> <Nodes> <Node Id=«333» Class=«Sound:PlaySoundEvent»...> <Inputs sound_SoundEvent=«<звуковой файл 1>« Voice=«1».../> </Node> <Node Id=”444» Class=«Sound:Dialog»...> <Inputs sound_SoundName=«<звуковой файл 2>« Voice=«1».../> </Node> </Nodes> <Edges> <Edge nodeIn=«333» nodeOut=«...» portIn=«PlayTrigger» portOut=«...» enabled=«1»/> <Edge nodeIn=«444» nodeOut=«...» portIn=«PlayTrigger» portOut=«...» enabled=«1»/> </Edges > </FlowGraph> Два типа узлов отвечают за проигрывание звуковых файлов, но для воспроизведения диалогов и субтитров предназначен только Sound:Dialog. Sound:PlaySoundEvent нужен для проигрывания звуков скриптов, всевозможных стуков и музыкальных вставок, но картостроители сплошь и рядом используют его не по назначению. Поскольку эти узлы отличаются, в сущности, только названиями (остальные поля либо совпадают, либо для них используются значения по умолчанию), то элементарной заменой классов мы получаем возможность подключать субтитры. Указание нового пути к звуковому файлу и значения Voice=«1» производится так же, как и в moviedata.xml. Остается внести новые субтитры в dialog_recording_list.xml и наслаждаться полностью локализованной модификацией. Шаг 4: полная автоматизацияА теперь давайте разберемся, как сделать все описанное выше всего за пару кликов. Для автоматизации процесса мы создали собственный набор утилит. Программа CRY_MAP_LOC работает по принципу drag ‘n’ drop, то есть путем перетаскивания на ее исполняемый файл директории файла с картой. Через считанные секунды в папке появится несколько новых файлов: программы install.exe, uninstall.exe, а также Excel-файлы messages.xml и dialog.xml. Звуковые файлы будут перемещены в подпапку Languages\dialog\<название мода>. Открываем messages.xml в Excel и уже привычным способом переводим фразы. Чтобы написать перевод в dialog.xml, следует прослушать соответствующие идентификаторам перемещенные звуковые файлы. Когда все это будет сделано, запускаем файл install.exe, он интегрирует подпапку Languages и XML-файлы в игровой архив Russian.pak. Теперь игра без проблем отображает все нужные сообщения и субтитры. Когда карта больше не нужна, запускаем программу uninstall.exe — она вернет Russian.pak к первозданному виду. После этого можно просто удалить папку с модом. Если вам нужно перевести не карту, а целый мод, то в этом случае пригодится утилита CRY_MOD_LOC.
Всего скриншотов: 81 Новостей: 23 Все новости по игре 28.12.2009 - В Crysis появились "мехи"06.05.2009 - Игровые новинки05.06.2008 - Crysis с продолжением02.06.2008 - Crysis остался без поддержки06.03.2008 - Crysis с половинкой для консолей11.02.2008 - Crysis покорит Голливуд25.01.2008 - Блиц-новости21.01.2008 - Crysis затронет консоли?16.01.2008 - Crytek объявляет войну читерам25.12.2007 - Рождественский Crysis17.12.2007 - Кризис нереальности12.12.2007 - Хиты продаж от NPD05.12.2007 - Valve снова в лидерах29.11.2007 - Crysis не дотянул до первого места28.11.2007 - Crysis: больше и красивее20.11.2007 - Crysis мультиплеера19.11.2007 - CryTek отправляется в школу14.11.2007 - Crysis – теперь и официально!13.11.2007 - Скороспелый Crysis12.11.2007 - Блиц-новости05.11.2007 - NVIDIA искусственно разгоняет Crysis?30.10.2007 - Crysis на "золоте"24.10.2007 - Hellgate: London и Crysis на цифровых каналах Статей: 25 Все статьи по игре 05.01.2009 - 5 шагов к локализации. Русификация модов для Crysis09.06.2008 - Коды по "Crysis" (читательские хинты)08.05.2008 - Коды по "Crysis" (читательские пасхалки)08.05.2008 - Кризисное редактирование, часть 3. Враг в засаде09.04.2008 - Боевой нанокостюм. Вскрытие Crysis 09.04.2008 - Кризисное редактирование. Создание уровней для Crysis, часть 219.03.2008 - Руководство и прохождение по "Crysis"08.03.2008 - Коды по "Crysis"08.03.2008 - Итоги 2007 года: 10 лучших игр08.03.2008 - Кризисное редактирование. Создание уровней для Crysis08.03.2008 - 10 лучших игромоментов года 08.03.2008 - Итоги 2007 года: спецноминации08.03.2008 - Коды по "Crysis" (читательские хинты)08.03.2008 - Коды по "Crysis" (читательские пасхалки)31.01.2008 - Crysis31.01.2008 - Коды по "Crysis"18.12.2007 - Crysis01.12.2007 - Критическая масса. «Игрополис» участвует в закрытом бета-тесте Crysis 08.10.2007 - Репортаж с выставки E3 200730.05.2007 - Мы ждем перемен. Crysis29.01.2007 - ИгроМир-200622.12.2006 - Кодекс по "Crysis" (читательские пасхалки)22.11.2006 - Crysis03.07.2006 - Кризис жанра. Crysis26.04.2006 - Первый взгляд. Crysis Файлов: 8 Все файлы по игре |