Принципы перевода азиатских DOS-игр: различия между версиями

Материал из Old-Games.RU Wiki
Перейти к навигации Перейти к поиску

Версия 02:11, 2 июля 2011

Creative Commons: некоторые права защищены
WERTA — автор этой статьи. Вы можете свободно копировать и распространять данный текст, но только при соблюдении условий, что оригинальное авторство и лицензия будут сохранены в производной работе. Текст распространяется под лицензией Creative Commons Attribution-Share Alike (by-sa) 3.0. Разрешается добавлять примечания и исправлять опечатки; остальные действия не рекомендованы.

Перевод азиатской ДОС-игры с двухбайтовой кодировкой наиболее оптимально может быть выполнен путем графической перерисовки в растровых шрифтах 16х16 с заменой азиатских символов парами русских (лат) псевдосимволов с соответствующей перекодировкой ресурсов строк.

Конечно, для особых случаев можно и триплеты букв использовать, но, я думаю, это нереально, поскольку не все наши буквы удастся по три записать в растре 16х16. М, Ы, Ю с трудом вписываются в 8х16.

По степени нехватки места под наши символы можно грубо сортировать игры по языку в обратном порядке:

  1. Китайский (отношение знаков в нормальном тексте – 1/4).
  2. Корейский, не знаю языка, но тут очевидно сильное влияние Древнего Китая, и нынешний хангыль это вроде как, если бы китайцы вписывали бы звучание идеографа на пинь-инь или чжу-инь в квадрат вместо этого идеографа. Только корейцы как фонетико-лингвистическая мононация легко могут себе это позволить (15 век), а китайцы в силу внутренних, мягко говоря, очень существенных фонетических различий – уже не могут. Поэтому, предположу, что по длине строк корейский практически информационно эквивалентен китайскому. Да и в Южной Корее еще в KSC-кодировке остались тысяч 5 иероглифов.
  3. Японский. Все таки слогов у них побольше, плюс часто идет с кандзи еще и хирагана, причем на один кандзи в среднем идут два слога хираганы (тоже двухбайтовые символы) – это уже намного лучше, чем в китайском.

Однако замена одного азиатского символа двумя нашими все равно не снимает проблема дефицита знакомест в строке. И здесь начинается виртуозная работа переводчика игры. Нужно знать игру досконально, максимально используя хоть какие-то отдаленные синонимичные формы, ну как самый крайний вариант наиболее общеупотребительные аббревиатуры, ставшие в современном новорусском языке практически самостоятельными словами. Крайнюю сложность представляют очень распространенные двухиероглифные сочетания в кит играх. Пример: в TunTown – 香蕉 – из списка предметов это конкретно банан, чтоб было понятно БА-НА-Н, а по опыту перевода Colonial Project стало ясно, что если эти однотипные сгруппированные названия идут в меню, то они все будут иметь заведомо одинаковую длину и место между ними будет разделяться только одним нулевым байтом, вот так. А эквивалента банану просто нет, потому что он – БАНАН, или ФР-УК-Т, в общем, такие ситуации возможны и нужно уметь из них выходить. И такой прием (и возможно не только для растровой графики) есть, китайское побеждается китайским – в переводе Colonial Project в некоторых, казалось уже безвыходных ситуациях, когда при перерисовке графических надписей просто не хватало места, Vladimir 777 предложил использовать те же пиктограммки игры, что соответствуют или жестко связаны с переводимыми надписями, а пиктограммки в играх – ну они всегда есть. Так что знайте – любой перевод текстов азиатской игры это, прежде всего, практически ручная, кропотливая работа, которую я не побоюсь назвать искусством.

Типы азиатских (тайваньских, гонконгских, корейских…) ДОС-игр по технической реализации перевода основной текстовой информации (расположены по возрастанию степени сложности):

1. Текстовая информация содержится исключительно в графических ресурсах игры. Перевод – просто перерисовывание ресурсов. Пример – KingKong10.

2. Текстовая информация содержится в виде шрифтовых псевдострок (пример – Galaxy Fleet). Кодированных строк нет, а эти псевдостроки напрямую берутся для брифингов и сообщений из псевдошрифтовых файлов 16х16. Т.е в шрифтовом файле идут символы просто также как и в выводимой строке. Перевод – просто перерисовывание файлов псевдошрифтов. Лучше парами неазиатских символов в иероглифическом знакоместе.

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

Причем сама суть старых двухбайтовых кодировок (EUC-Extended Unix Code) основана на полной сочетаемости однобайтовых и двухбайтовых символов вместе в азиатском тексте. Т. е. последовательность байтов 31А14032А14033А14034h… должна движком игры (хотя для игры это не догма) выводиться как 1<ASIAN_MONOSPACE>2<ASIAN_MONOSPACE>3<ASIAN_MONOSPACE>4. Что я и видел в Colonial Project при вводе символов имени игрока. Это вообще позволяет тогда без длительной перерисовки символов перерисовать только маленький английский шрифт (который обязательно бывает в таких играх) и перекодировать строки напрямую в хекс-редакторе вводя только однобайтовые символы, что автоматически в два раза увеличит полезный размер строки относительно первоначального. Но опять же, если текстовый движок игры это поддерживает. Поскольку лат., греч. символы в начале неанглийского основного шрифта игры нарисованы как моноширинные квадратно-двухбайтовые.

4. Текстовая информация также содержится в виде текстовых строк в одной из азиатских кодировок в ресурсах ехе-файла. Но, шрифт 16х16 имеет в себе только используемые иероглифы и связующим звеном между строками стандартной кодировки в ехе-файле и выводом иероглифов на экран становится таблица перекодировки шрифта. Яркие примеры – Colonial Project, TunTown. Число знакомест в таком случае резко сокращено по сравнению с вариантом без внутренней игровой перекодировки основного шрифта. Крайне удачным моментом в Colonial Project является то, что для русских двухбуквенный сочетаний отведено всего 672 знакоместа – это мало, но, как оказалось, не смертельно. Пришлось пожертвовать некоторыми мелочами, и перевод строк в aps0.exe недавно был удачно завершен. Это показывает, что такое небольшое количество – 672 знакомест уже достаточно для полноценного русского перевода. Да и для англификации игры заведомо хватает места. Там двухбуквенных сочетаний существенно меньше. В TunTown места в основном шрифте намного больше – более 2000. Это позволит группировать внутри русских пар псевдосимволов даже основные знаки препинания.

Перевод только в спец приложении с подгрузкой таблицы внутренней перекодировки шрифтов и преобразование пар вводимых текстовых наших символов

5. Самый худший вариант – нестандартная кодировка строк, примененная из разных корыстных побуждений. Тогда найти строки становится очень тяжело, но возможно. Далее их нужно раскодировать. Хотя, скорее всего, кодировка может быть и прямой по отношению к положению символа в основном шрифте. Например в Big5 первый символ кодируется как A140h а при таком подходе он в шрифте может идти под номером 0001, поскольку находится в начале. Таких примеров пока не встречал.

Загадкой для меня остается игра Danger Zone. Строк в ехе-файле я не нашел. Даже откровенно растровые 16х16 иероглифы идущие в интро – их тоже в текстовом виде не нашел в интро файле. Вероятно это графические ресурсы игры. Даже последовательно и посимвольно выводимая строка иероглифов в конце кампаний – для нее тоже ничего не нашел текстового. Будем дальше работать.

В заключении хочу еще отметить азиатские Windows игры. Вроде, если есть Windows – подразумевай есть и кодировка Unicode, но тогда тоже не исключены некоторые проблемы. Перекодировка будет только двух байтовая один к одному, а если используются системные ttf-шрифты, то и перерисовать уже будет невозможно. Т.е править ttf смысла нет, поскольку потом замучаешься с хинтингом, а без хинтинга символы буду выглядеть по-уродски. Да и сами символы в Windows выводятся не моноспейсом, а с переменной шириной (неазиатские). Лишь бы хватало места под строки в самом ехе-файле при перекодировке один к одному. Но посмотрев игру Colonial Project 2, а она вроде под Windows, я опять в ехе-файле увидел строки старой доброй кодировки Big5. Похоже, что не все так плохо…