UplinkOS RUS

О переводе

Работа над локализацией Uplink/UplinkOS периодически ведется с 2006 года в качестве хобби одим человеком. За это время проект дважды менял инструментарий и вектор развития, однажды откатывался из за потери данных.

Состояние проекта на 2021 год

Просто поиграть:

Версия в инсталляторе стабильна и вполне играбельна. При моих тестах за последние 100 часов игры не случилось ни одного вылета. Переведена бóльшая часть игры. Для прохождения рекомендую эту версию.

Установку перевода нужно производить поверх установленной Uplink от издателя GOG.

После установки локализации ОБЯЗАТЕЛЬНО начинать новую игру.

Хочу помочь:

Если тебе не лень разбираться и ты готов к встрече с багами, ты можешь скачать мой промежуточный билд. Он немного свежее версии в инсталляторе и в нем возможны шероховатости. Увидишь что-то странное - сделай скриншот и напиши мне в телегу. Контакты в самом низу страницы. Тестер по желанию увековечивается в укромном месте внутри локализации игры.
Принято правок от тестеров: 2.

При прохождении игры не желательно обновляться, т.к. сейвы могут работать некорректно.

Хочу научиться:

Маякни мне если хочешь освоить ремесло кустарного перевода программ. Оно забывается, а я с радостью научу, но мне нужно понять интересно ли это кому-то. Работу над видео начну когда наберется фокус-группа из 10 желающих его посмотреть.
Маякнули: 1 человек.

Чего не стоит ждать в ближайшее время:

  1. Возможности печатать на русской раскладке. Оставил попытки и добавил вписывающееся в лор пояснение в игре.
  2. Названия корпораций, имена людей, псевдонимы хакеров. Проблемы с поиском, см. п. 1.
  3. Голоса для голосового анализатора. Нет оборудования и специалиста обработки звука. Смысла в этом тоже нет.
  4. UplinkOS_RUS для Steam версии игры. Локализация будет портирована и на нее позже. Сейчас можно купить GOG версию за 3$ или поставить UplinkOS_RUS на пиратку.

Предыстория

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

Модификация графики Uplink OS просто великолепна, рекомендую всем фанатам оригинальной игры ознакомиться с ней. Очень жаль, что Cpt.McBacon и JesseTG прекратили разработку на версии GOLD. Насколько я могу судить, она местами сыровата. Кроме того, авторы модификации собирались сделать возможность простой локализации через XML файлы, но забросили реализацию этой фичи на полпути. В результате мы имеем часть строк жестко закодированных в EXE, а часть - в XML ресурсах игры.

Я пытался связаться с командой разработчиков Uplink OS для помощи им в разработке и локализации стандартными средствами, но тщетно. Они не отвечают и больше не занимаются проектом.

Инструментарий

В связи с этим было принято решение локализовать “UplinkOS”, но доступными мне средствами. Итак, чем я пользуюсь:

  • Radialix - используется для перевода жестко закодированных ASCII строк в файле UplinkOS.exe
  • IDA - дизассемблер с которым работает Radialix для поиска ссылок на жестко закодированные строки
  • Notepad++ - для перевода строк, вынесенных в XML файлы
  • Translate my UTF8-HEX - созданный мной скрипт для удобного перевода UTF8 строк (см. сложности перевода)
  • Google переводчик - встроен в Translate my UTF8-HEX.

Сложности перевода

Перевод через программу Radialix это более удобная форма редактирования исполняемого файла в HEX-редакторе, где нельзя выходить за рамки отведенного каждой строке места внутри файла. Т.к. при программировании авторы модификации использовали кодировку UTF8 (в ней кириллические символы занимают в 2 раза больше байт чем латинские), то все переводимые жестко закодированные строки приходится сжимать в 2 раза. Чтобы хоть как-то обойти эту особенность, мной был написан скрипт Translate my UTF8-HEX, который автоматически подставляет вместо кириллических букв похожие латинские (А/A, и/u, ь/b, и тд.). А также подсказывает, на сколько байт следует сократить перевод чтобы он влез в отведенное для строки место.

Именно по этой причине я не перевожу многие короткие слова (обычно и без перевода понятные). Например слово No занимает всего 2 байта, а слово Нет уже все 6 байт (4 при обработке скриптом). У меня была идея заменить Yes и No на + и -, но остается десяток других надписей на кнопках, которые перевести уже сложнее, поэтому было решено оставить их как есть.

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