Советы переводчикам старых игр
версия 0.0.1 :)
Техническая часть
Я решил перевести старую игру! С чего мне начать?
Первым делом следует поискать не переведена ли игра уже до вас. К этому моменту нужно подойти со всей серьезностью - есть вероятность, что перевод не стал распространенным и о нем существуют лишь скудные упоминания.
Хорошо! Я весь интернет перерыл, но ничего про перевод не увидел. Так что же делать дальше?
Теперь следует оценить свои силы и знания (перевести игру можно и в одиночку, но для этого нужно хорошо знать программирование, уметь рисовать и знать на очень высоком уровне русский и английский языки). Также обязательным условием служит очень большая любовь к самой игре - иначе может просто не хватить энтузиазма.
Я прекрасно знаю ассемблер, учился в художественной школе и окончил факультет иностранных языков! Обожаю игру X, с детства в нее играю и всегда мечтал перевести. Что мне для этого делать?
Третий этап - техническая работа. Необходимо определить, где в игре находятся "тексты" и шрифты. Тексты в общем случае - это как надписи (меню, служебные сообщения и т.д.), так и большие объемы однородного текста (брифинги в стратегиях, энциклопедии (такие как уфопедия или цивилопедия в соответствующих играх), диалоги в квестах и т.д.). Зачастую, служебные сообщения авторы игры помещают непосредственно в exe файл, большие же тексты как правило лежат в отдельных файлах ("ресурсах игры").
Так, тексты я вроде нашел, можно их уже переводить?
Даже если вы нашли тексты, не спешите их переводить. Это бессмысленно, если вы не сделаете свои русские шрифты. В большинстве досовских игр используются собственные несистемные шрифты, которые содержатся в ресурсах игры. Найти шрифты - дело нетривиальное, так как в разных играх их структура (как и структура графики в целом) может быть очень разная. Следует поискать open-source порты этих игр на новые платформы, у многих известных игр они есть. Они читают ресурсы оригинальных игр, так что исследуя исходники, можно понять где лежат шрифты и как они выглядят. Например, для старых квестов неоценимую помощь может оказать проект ScummVM.
Все-таки я не понял, как эти шрифты выглядят. Можно несколько примеров?
Часто в играх используется простой одноцветный шрифт 8x16. Это означает, что каждый символ состоит из 8 пикселей в ширину и 16 в высоту. В таком шрифте пиксели бывают только в двух состояних - закрашенный и незакрашенный (то есть занимают 1 бит памяти). Таким образом, полный шрифт из всех 256 ASCII символов занимает 4096 байтов памяти (8*16*256 бит). Следует пройтись hex-редактором по всем файлам игры и поискать там подозрительные группы из такого количества байт.
Конечно, может быть и очень простой вариант - что шрифты лежат прямо в отдельном файле. В таком случае, вероятно, в названии файла содержится слово "FONT" или "FNT". Первым делом следует поискать такие файлы и изучить их.
Но может быть и сложный вариант - ресурсы игры запакованы и простым просмотром файлов их найти невозможно.
Тут было упомянуто слово "hex-редактор". Что это и как им пользоваться?
Hex-редактор (произносится как "хекс-редактор") - программа, позволяющая редактировать нетекстовые (бинарные файлы), а также зачастую показывать дизасемблированный код программы (если файл - запускаемый). Мой любимый hex-редатор - это HIEW [1] ). С помощью такой программы вы сможете изменить определенные байты программы на другие. Если вам кажется, что вы нашли шрифт, можно например поменять один байт в нем на другой, тогда при запуске игры можно будет это легко заметить. HIEW не предназначен для редактирования текста, поэтому расширять или уменьшать длину файла нельзя (то есть, если вам нужно заменить все 0x00 на 0x0A+0x0D, то вам придется использовать FAR (или другую программу)).
А вот насчет "запакованных ресурсов" что можете посоветовать?
Сначала надо очень внимательно поискать информацию в интернете. Часто, даже если нет open-source порта данной игры, кто-то где-то изучал ресурсы и какие-то факты смог выяснить. Например, такая информация, как алгоритм паковки ресурсов пишут очень часто. Это может быть какая-то определенная программа, тогда следует использовать соответствующих распаковщик. В частности, для распаковки EXE файлов есть универсальные распаковщики [1][2][3]. Искать текст или ресурсы в EXE файле до распаковки не имеет смысла. Информация о паковщике EXE файла также часто содержится в начале этого файла.
Если же найденная информация гласит, что это "какая-то разновидность RLE кодирования", то это может быть сложнее, так как разновидностей можно придумать много. Для распаковки таких файлов потребуется недюжинное знание алгоритмов и большой опыт программирования. Но в этом случае, советы излишни.
Графика
Я нашел в игре картинки (PCX/BMP/LBM и т.д.), пытаюсь их отредактировать, но в игре показывается какая-то фигня (как вариант - вся палитра сбита!)
Внимательно посмотрите, какое количество цветов используется и не меняете ли вы разрядность картинки. В старых играх очень часто используются 8 битные текстуры (или картинки), использующие палитровую систему. Палитра состоит из этих самых 256 цветов. При редактировании картинки не следует менять разрядность и палитру (то есть она должна состоять из тех же 256 цветов).
А как мне найти эту палитру?
Поскольку старые игры зачастую могут отображать только 256 цветов, палитра часто не хранится в самих картинках, а где-то отдельно. Найти ее в ресурсах не всегда можно (а ведь она может быть задана жестко в программе!), но всегда есть простой способ - сделать скриншот в игре и посмотреть на палитру скриншота.
Перевод текста
Какой программой лучше переводить текст? Если редактировать файл игры, содержащий спецсимволы, Блокнотом (Notepad), то текст портится!
Есть много хороших программ для редактирования текста, которыми можно в том числе редактировать файлы, содержащие не только текст (а в старых играх обычно так и делалось). Я лично рекомендую очень удобный бесплатный редактор Bred 3 от российских разработчиков [2]. Этим редактором очень удобно вносить быстрые правки в бинарные файлы с текстом и т.п. Для тщательной же работы, рекомендуется составить таблицу в Excel, содержащую фразу в оригинале, ваш вариант перевода и комментарий. Таким образом будет удобно и сверять переводы и оставлять заметки для других участников перевода.
Я перерисовал шрифт игры и теперь вместо английских букв у меня русские, плюс я использовал кое-какие спецсимволы. Как мне теперь писать текст, чтобы в игре отображалось по-русски?
Посмотрите, нет ли возможности использовать ту часть ASCII таблицы, которая отвечает за русские символы (в DOS или Windows кодировке). Если такой возможности точно нет - то следует написать программу-конвертор, которая будет превращать русские символы, которыми вы будете писать в те символы, которые соответствуют данным буквам в шрифтам. Например, вы перерисовали букву "z" в шрифте в "ы". Тогда программа должна превращать вашу "ы" в тексте в "z", чтобы игра правильно понимала написанное. Альтернативный вариант - запомнить, что "ы" соответствует "z" и писать сразу "z":) При этом не лишним будет перерисовать шрифт так, чтобы созвучные буквы соответствовали друг другу ("f" - "ф", "t"-"т", "w" - "ш" и т.д.)
Обязательно ли переводить все дословно или в переводе допустимо вставлять что-то от себя? Например, что делать с именами, их надо переводить или можно придумать свои?
Переводить следует как можно ближе к тексту. Это не надо понимать буквально - ведь само построение фразы в русском и английском языке разное. Поэтому очень часто следует перестраивать фразы, чтобы они звучали как можно естественнее и ни в коем случае не коряво:) Смысл фраз нужно понимать обязательно - если вы коверкаете или вырезаете часть фраз оригинала - вы показываете свое неуважение к авторам игры. Каждое отклонение от оригинала (использование понятия, предмета или выражения которое лишь косвенно соотносится с оригинальным, но гораздо больше понятно русскоязычному игроку) - следует тщательно взвешивать и отбирать из разных вариантов (для этого полезно опросить команду, если вы работаете в команде или просто знакомых/родственников, если нет).
Что касается имен и названий - вопрос сложный. Многие переводчики (в том числе профессиональные) - меняют все имена на свои, как им кажется, более благозвучные. Но тут опять же следует помнить об уважении к оригинальным авторам и о сохранении атмосферы оригинала (то есть использование русских имен в исключительно английском антураже, например, - просто глупо). Если имя/название не несет никакого смысла, стоит его оставить как оно есть, по возможности транслитерировав его на русский так, чтобы оно звучало благозвучно. Если имя в игре принадлежит человеку определенной национальности (например, немцу), следует переводить его в соответствии с правилами перевода с немецкого языка на русский. Если имя персонажа/название места несет в себе какой-то смысл (например, имя может состоять из двух английских слов), то следует его переводить.