Перейти к содержимому
Zone of Games Forum

enz°

Заслуженные переводчики
  • Публикации

    328
  • Зарегистрирован

  • Посещение

Все публикации пользователя enz°

  1. Если игра использует True Type шрифт (*.ttf), выводит русский текст абракадаброй (в неправильной кодировке), а вы знаете, что шрифт этот поддерживает русский... Причина, вероятно, в том, что игра не умеет работать с Юникодом. И если научить её этому будет очень нелегко, то отредактировать сам ttf-файл со шрифтом – совсем несложно. Задача заключается в привязке к кодам 168, 184, 192–255 соответствующих кириллических букв (вместо латинских спец.символов, таких как: А, Ж, Ш, ы). Сделать это можно например в каком-нибудь редакторе шрифтов (High-Logic FontCreator). Или можно воспользоваться программкой, которую я написал специально для таких целей (ссылка в конце этого сообщения). Инструкция: перетаскиваем мышкой файл со шрифтом на exe-шник программы и она молча внесёт в него изменения, проверяем, что получилось. Программа вносит соответствующие правки в таблицу cmap шрифта. При её написании я старался придерживаться официальной спецификации формата ttf-файлов. Может быть, редактор шрифтов сделал бы всё правильнее, но с ней работать намного проще и шрифты получаются вполне рабочие (по крайней мере, так было во время тестирования) :) Первая (и пока единственная) игра, на которой я её опробовал – Azada: Ancient Magic. Скриншоты "до" и "после": ttf_latin2cyr_c.zip(131.2 КБ)
  2. Игры, базирующиеся на Unreal Engine 3 (например: Borderlands, The Last Remnant, да и кто знает сколько их ещё будет), хранят свои ресурсы в архивах с расширением UPK. Старые программы для работы с такими архивами не поддерживат версию Unreal Engine 3 Насколько понимаю, никто, покарайней мере никто из переводчиков ZoG'а, до сих пор не знает как полноценно распаковывать, создавать или хотябы редактировать такие архивы. В связи с этим предлагаю собрать команду по разбору этого формата. Кое-какие наработки у меня уже есть. Но значение многих чисел так и остаётся загадкой. Собрать рабочий архив ещё не вышло. Люди, имеющие какую-то полезную информацию или желающие учавствовать в разборе формата, просьба отписываться здесь, в ЛС или по ICQ (мой номер в профиле) - будем делиться опытом.
  3. Black Sails: Das Geisterschiff / The Ghost Ship

    Haoose, makc_ar, Спасибо за поддержку перевода
  4. SWF

    Некоторые маленькие игры создаются полностью на технологии Adobe (Macromedia) Flash или Adobe Flex. Иногда встаёт вопрос: "как их русифицировать?" В этой теме я постараюсь подробно описать, как мне удалось в такой игре заменить шрифт и перевести несколько строк текста без ограничений на длину строки (как решить эту проблему в играх не на Flash'е я немного писал тут: Длина строки). Речь пойдёт об игре VVVVVV. Вся игра заключена в один файл: VVVVVV.exe (40 Мб) Создана она на Flash'е (или на Flex'е), поэтому её exe-шник можно открыть и подредактировать в программе Flash Decompiler Trillix (или любом другом Flash-декомпиляторе). Но сохранить отредактированный файл можно будет только как SWF, но нам нужен EXE. Что представляет из себя файл VVVVVV.exe ? На самом деле он "склеен" из двух файлов: Flash-плеер.EXE и Flash-ролик.SWF и в конец получившегося файла добавлено 8 байт: 4 байта: $FA123456 4 байта: размер SWF-ролика. (так работают простейшие конверторы swf -> exe, в роли Flash-плеер.EXE они могут использовать Adobe Flash CS4\Players\FlashPlayer.exe, в нашем случае нельзя заменять оригинальный плеер игры) Наша задача заключается в том, чтобы разделить VVVVVV.exe на Flash-плеер.EXE и Flash-ролик.SWF, отредактировать SWF, а затем опять склеить эти 2 файла в VVVVVV.exe, добавив в конец число $FA123456 и размер нового ролика. Для разъединения и склеивания можно воспользоваться какой-то готовой программой. Разъединили. Меняем шрифт (в оригинальном шрифте нет русских букв). Открываем Flash-ролик.SWF во Flash Decompiler Trillix. Находим в разделе Images картинку со шрифтом: Извлекаем, добавляем русские буквы: Заменяем в Flash Decompiler Trillix картинку со шрифтом на нашу. Сохраняем отредактированный SWF-ролик. Чтобы посмотреть новый шрифт в игре склеиваем Flash-плеер.EXE и Flash-ролик.SWF, добавляем в конец служебные 8 байт. Запускаем, смотрим что получилось. Переводим текст меню. Открываем наш Flash-ролик.SWF в HEX-редакторе, ищем ASCII-строку "start game". Можно перевести, но символов недостаточно, чтобы написать "НАЧАТЬ ИГРУ". Замечаем, что байт перед этой строкой обозначает длину строки: 0A (10.) Но мало изменять лишь этот байт - игра не запустится или зависнет. Разбираем формат SWF-файла, чтобы узнать, как изменять длину любой строки. Для этого я воспользовался официальной спецификацией формата SWF (на англ. языке): SWF File Format Specification, Version 10 (последнюю версию всегда можно взять с оф.сайта). Итак, любой SWF-файл состоит из заголовка файла (SWFHeader) и идущих следом друг за другом независимых блоков (TAG-ов). Если заголовок начинается с CWS, ролик сжат, и нужно его сначала чем-то распаковать. В нашем случае он начинается с FWS – всё в порядке. Каждый TAG имеет свой формат и содержит разные данные (есть tag со шрифтом, tag со звуками, tag со скриптами и т.д.). Каждый TAG можно изменять/удалять/добавлять независимо от остальных (в разумных пределах). Нужно лишь в заголовке файла изменять одно значение - FileLength (смещение: 04) - размер всего SWF-файла. Написав по этой документации небольшую программку, я смог составить список всех TAG-ов в нашем Flash-ролике.SWF Строка "start game" находится по смещению 22562DD, а это значит, что она содержится вот в этом TAG'е: TAGtype = $52 TAGlen = $16C20A TAGpos = $2192BB4 TAGname = DoABC (тип DoABC означает, что в этом теге содержится байт-код, который выполняет виртуальная машина ActionScript, а это усложняет отладку в программах вроде OllyDbg и SoftIce, однако, это же означает, что данный код не содержит абсолютных адресов, что упростит его изменение – мои догадки) Начинается он со смещения 2192BB4, переходим сюда в HEX-редакторе. Попадаем на заголовок TAG'а. Первые 2 байта нас не интересуют (они содержат тип тега), далее идёт 4 байта, в которых указывается размер тега. И если мы увеличим длину строки в этом теге, то и размер тега нам тоже надо увеличить. Итак, выяснили, чтобы заменить строку "start game" на "НАЧАТЬ ИГРУ" (наша строка на 1 байт длиннее) нужно сделать следующее: 1) заменить текст, вставив один лишний символ 2) перед строкой указать правильную длину строки: вместо 0A пишем 0B (11.) 3) указываем в заголовке тега длину на 1 больше, чем было 4) указываем в заголовке файла длину на 1 больше, чем было Всё! Склеиваем Flash-плеер.EXE и отредактированный Flash-ролик.SWF, дописываем в конец 8 служебных байт, запускаем смотрим. Если ничего не напортачили, всё будет работать. Вот, что у меня получилось после перевода таким методом двух пунктов меню: Осталось лишь отшлифовать шрифт, чтобы аккуратней был, и перевести весь остальной текст. И очевидно, что изменять каждую строку лучше не вручную... :)
  5. Во время перевода некоторых игр требуется внести правки в её главный исполняемый файл. Может понадобится изменить внутри exe какой-то текст, заменить "встроенный" в него шрифт, внести изменения в сам исполняемый код (пропатчить). Немного теории о том, как можно заменять текст я когда-то писал в теме Длина строки. С тех пор я встретился с подобными случаями ещё два раза (Aztaka, Pahelika, Azada). И попытался написать универсальную программку, которая бы выполняла многие стандартные действия... AnnExe Как использовать: указываем в специальном текстовом файле "команды" для неё, затем запускаем её, и она вносит правки в exe-шник игры в соответствии с этими командами. Командами могут быть: "заменить какой-то текст", "заменит несколько байт", "добавить новые данные". Команды можно размещать также и в отдельных Excel-таблицах. Очень удобно в них размещать много текста, который нужно перевести. Основной принцип её работы: добавить новую секцию в exe, разместить в ней новые данные и заменить все ссылки в exe, чтобы они указывали на эти данные. Пример, как я её использовал: В игре Azada: Ancient Magic весь текст "Об авторах" находится в exe. Также в exe находится и "разметка" для tga-шрифтов. С помощью AnnExe удалось перевести "Об авторах" без ограничения на длину текста, заменить 4 "разметки" шрифтов (так же без ограничения на их длину) и сделать два "патча", которые исправляют два "бага", связанных с русскими символами. В архиве вместе с самой программой находится бланк instructions.ini (основной файл с командами, который вам нужно будет дополнить) с подробными комментариями и пример Excel-таблицы с текстом. AnnExe.zip (925.7 КБ)
  6. Fahrenheit

    тоже не одобряю такие [детские и профанирующие] планы... :) вот если бы было какое-то серьёзное предложение, было бы очень здорово! (любимая игра))
  7. SWF

    В данном случае картинка представляет собой таблицу (сетку) 16 x 16. Всего 256 ячеек. Первая ячейка определяет символ с кодом 0, вторая - символ с кодом 1, .., 32я - 32 (пробел), 33я - 33 (!) и т.д. Русская буква Ё имеет код 168, значит на картинке она находится в 169м знакоместе (11я строчка, 9я колонка). Наша задача – лишь нарисовать в этой ячейке нужный символ.
  8. Длина строки

    Видишь ли, в данной теме до стих пор обсуждался перевод текста внутри исполняемого файла. Если же необходимо перевести текст в каком-то внешнем файле ресурсов, то необходимо разбирать его формат либо искать в интернете уже готовые утилиты для работы с ним. При этом в исполняемом файле никаких "указателей" править не нужно. А в файле ресурсов наверняка придётся править не одно значение... но это зависит от конкретного формата. Здесь принцип будет кардинально отличаться от перевода EXE. Только опытным путём: 1) находим строку, находим указатель на неё 2) находим следующую строку, находим указатель 3) пытаемся найти закономерность.
  9. Русификация игры The Fall Trilogy Chapter 3: Revelation Трилогия падения. Глава 3: Откровение Версия перевода 1.0 (текст) от 6.07.2011 ______________________________________ Над переводом работали: izolenta (lenta2007) перевод, тестирование, редактирование enz° (Enzo_AMD) разбор ресурсов, программирование, редактирование ______________________________________ Ссылки на русификатор: ZoG | iFolder| RGhost(1.8 МБ) Русификатор предназначен для английской версии игры.
  10. The Fall Trilogy Chapter 3: Revelation

    MaxxxEx, приятной игры! PS: мне всегда трудновато понимать твою интонацию, вот например, из-за краткости и многоточия :)
  11. Black Sails: Das Geisterschiff / The Ghost Ship

    denus, какой ты нетерпеливый :) Я не пропускаю ни одного сообщения. Нет, внешних субтитров не было. Сделал, а затем сам переналожил. В результате, кажется, получилось всё синхронно. Обновлённый русификатор с субтитрами – ниже. Специально для тебя (на всякий случай) ещё выкладываю внешние субтитры: blacksails_intro_subtitles.7z(1.6 КБ) Логично, да. Пересмотрел... И всё ж, нравится мне больше "Поднимайся!". Оставил. :) Исправлено. Да, есть такое. Анна (взрослая героиня) действительно добавляет похожие слова. У маленькой девочки Фионы есть какая-то совсем другая реплика, субтитрами к которой служит тот же текст, что и у Анны. Субтитры в оригинале у обоих героинь такие: Allerhand Schmoker. Видимо, разработчики сразу допустили расхождения между текстом и речью. [вздох] Пока оставляем... Русификация игрыBlack Sails: Das Geisterschiff Версия перевода 1.1 (текст) от 26.06.2011 ______________________________________Над переводом работали: Tefnut инициатор проекта, перевод, редактирование, тестирование enz° (Enzo_AMD) разбор ресурсов, программирование, тестирование Отдельная благодарность: Letty вычитка текста ______________________________________Ссылки на русификатор: iFolder| RGhost(26.4 МБ) Русификатор предназначен для немецкой версии игры.
  12. Black Sails: Das Geisterschiff / The Ghost Ship

    Это проблема игр. )) В таких играх скриншоты делать приходится только программкой Fraps (или чем-то подобным).
  13. Black Sails: Das Geisterschiff / The Ghost Ship

    В архиве оригинальная аудио-дорожка и видео с субтитрами. А также ffmpeg.exe, с помощью которой я конвертировал видео из AVI в OGG. Дело в том, что Видео-редактор у меня не сохранял в OGG (Sony Vegas).Black Sails Intro.7z (24.6 МБ) Специально никогда не удаляю. Даже случайно. Для этого есть другие люди и всякие неведомые мне силы, вдруг нарушающие работу компа. Но я по возможности и их попрошу. ;) Приятно... Спасибо! :)Хочется добавить, что за качество перевода Вика сильно переживала, и это не тот "запланированный идеал", который должен был получиться... Да, Лена, пригодится. Буду стараться записывать все поправки и при некотором их количестве выпустить новую версию перевода. Мне о таковой неизвестно. Всё ж дальше локализации названия никто, вроде не пошёл.Знаю, что выходил лишь какой-то патч к игре. Напишите, пожалуйста, кто знает, что он исправляет. С русификатором они не конфликтуют. DedMoroz, спасибо за замечания!
  14. Самый простой способ – в проводнике мышкой перетащить TTF на EXE. Всё. TTF уже будет изменён.
  15. Универсального метода, наверно, нет. Но например, с помощью Process Monitor'а (Марк Руссинович, Брайс Когсуэлл) можно узнать, к каким файлам обращается приложение (а также – к каким веткам реестра).
  16. http://народ.ру/disk/16926227001/ttf_latin2cyr_c.zip.html
  17. Длина строки

    По теме: Перевод исполняемых файлов (*.exe)
  18. Выглядит как лента из склеенных подряд 5253 блоков, каждый начинается с FANT (лента из фантиков))). Какая информация в них хранится, так даже предположить трудно. Могу только не согласиться с этим утверждением: Вот моя версия... )))В первом... ну вряд ли какие-то индексы (и по размеру, и по виду содержимого непохоже). Во втором - скорее похоже на какой-то скомпилированный скрипт (подобно скомпилированному ActionScript): вначале идут таблицы (массивы) строк и каких-то других констант; каждый элемент массива оканчивается нулём, каждый массив оканчивается ещё одним нулём; за константами идёт сам код (который использует константы из массивов).
  19. Black Sails: Das Geisterschiff / The Ghost Ship

    Упомянул, но чуть под другим ником. :)
  20. Black Sails: Das Geisterschiff / The Ghost Ship

    Думаю, да :)Спасибо, John2s! Это название на языке оригинала. В интернете встречаются: "Чёрные паруса: корабль-призрак", и даже английское есть: "Black Sails: The mind ship".PS: Лично для меня за всё время общения с игрой к ней намертво приклеилось оригинальное немецкое название. И думаю, девушке, непосредственно переводившей игру с немецкого, vickytefnut, оно также более знакомо. Либо коротко - "Паруса", и никакого другого. Так что, здесь просто от людей, работавших над переводом, пока не было подачи использовать какое-либо другое название. Вот и всё. :) Называйте, как больше нравится. Ответа пока нет...
  21. Black Sails: Das Geisterschiff / The Ghost Ship

    рассинхрон живёт своей жизнью - то назад, то вперёд, то по центру выпячивается (начало отстаёт, конец опережает). спасибо, что надеялись! и надеялись вежливо. :)Приятной игры!
  22. Black Sails: Das Geisterschiff / The Ghost Ship

    После перевода файла с текстом необходимо было пройти игру и отредактировать перевод уже зная в каких обстоятельствах употребляется та или иная фраза. Это не было доведено до конца. 1) Текст был переведён. За исключением "сомнительных" фраз. 2) Игра пройдена с этим переводом. Внесены мелкие правки. 3) Проведена вычитка человеком грамотным, но не игравшим в игру. В тексте остались не переведены два коротких словосочетания и нескольких междометий. Поэтому просьба к игрокам: если во время прохождения игры у вас будут ещё появляться хорошие предложения как и что поправить, пишите здесь. :) Субтитров к этому ролику игра не предусматривает. Мы добавили в ролик хардсабы на русском. Но аудио- и видеопоток идут отдельно (в двух разных файлах), и в игре при просмотре этого ролика наблюдается заметная рассинхронизация между голосом рассказчика и субтитрами. Объединить потоки не вышло. Размер переведённого видео ~22 Мб. Из-за всего этого решил не включать его в русификатор.
  23. Black Sails: Das Geisterschiff / The Ghost Ship

    См. сообщение #52
  24. Angelok37, попробуйте вот этим: http://народ.ру/disk/12698607001/CompressFile.7z.html Там в папке также оригинал вашего файла и уже разжатая его версия (button_start_TEXT.ccz.decompressed). Мне, правда, содержимое разжатого файла тоже ни о чём не говорит (( Просматривается только одно слово: DragonAltarCCTQ. Возможно, эта надпись означает, что игра от этого разработчика - Dragon Altar Games (на dtf), CCTQ - какой-то формат файла, а Z в конце расширения файла (.ccz) - что файл сжат. Можно попробовать сохранить разжатый файл с расширением .cc и проверить, подхватит ли его игра. К сожалению, приведённую мною программку использовать для сжатия может не получиться, т.к. на выходе получается файл, сжатый несколько другим методом... но, может, игра и его поймёт... PS: хорошо, когда ещё сразу известно название игры, о которой речь ;)
Zone of Games © 2003–2024 | Реклама на сайте.

×