The Dream Machine

The Dream Machine

评价数不足
Русский перевод The Dream Machine
由 I believe I can't fly 制作
Мой старый русскоязычный перевод первой главы игры "The Dream Machine".

Внимание!

Перевод необходимо ставить только поверх старой версии игры:
Библиотека Steam - (Список игр) - The Dream Machine - (ПКМ) - Свойства - Бета-версии - (previous)

В противном случае игра будет тормозить и часто вылетать!
   
奖励
收藏
已收藏
取消收藏
Мой (неофициальный) перевод игры на русский
[TL;DR] Переводить игру в нынешних реалиях — это сущий ад, ссылка на [имеющийся на данный момент] перевод — в конце (см. раздел "Скачать").

Важно
  1. С момента публикации перевода (май 2023 г.) прошло много времени, за которое оригинальный исходный код игры успел измениться.
  2. Разработчик сообщил, что экспериментирует с новой, улучшенной во всех отношениях (включая оптимизацию и локализацию), версией игры. В отличие от изначальной версии, основанной на устаревшей технологии Flash, она должна быть лишена многих её недостатков.

Исходя из п. 1
Настоятельно НЕ рекомендую устанавливать данный перевод на последнюю (самую свежую) версию игры. В ней с его использованием наблюдается утечка памяти, приводящая к частым вылетам (crash[en.wikipedia.org]). Вероятно, это происходит из-за некоторого несоответствия между старым и новым кодом.

Если вы хотите поиграть с этим русским переводом как в старые добрые времена (без утечки памяти и постоянных вылетов), то нужно предварительно поставить себе старую версию игры через Steam (ПКМ по игре в списке игр библиотеки Steam - Свойства - Бета-версии - previous). Подробности чуть ниже.

Как установить старую версию игры (Steam)?
Библиотека Steam - (Список игр) - The Dream Machine - (ПКМ) - Свойства - Бета-версии - (previous)

После установки старой версии попробуйте запустить игру.

Если вы получили сообщение об ошибке, сообщающее, что исполняемый файл игры _the_dream_machine.exe не найден, не волнуйтесь.

Просто скопируйте существующий исполняемый файл the_dream_machine.exe в ту же папку с игрой, где он и находится, но измените его имя, добавив подчёркивание в начале: _the_dream_machine.exe.

Таким образом, у вас должно получиться два одинаковых файла с разными именами в одной и той же папке: _the_dream_machine.exe и the_dream_machine.exe.

Важно: если вы просто переименуете файл (предварительно его не скопировав), тогда при попытке запустить игру Steam обнаружит несоответствие и заново загрузит файлы игры. Это может привести к потере или некорректной работе установленного перевода (при наличии), и вам придётся его переустановить (ссылка на перевод находится в разделе "Скачать").

Исходя из п. 2
Лучше вообще дождаться выхода этой совершенно другой новой версии (без использования устаревшей технологии Flash) или (в случае, если эксперимент окажется неудачным) появления нормального способа локализации текущей версии.

Перевод производился с использованием трёх онлайн-переводчиков, а также ChatGPT — для сложных случаев со всякими идиомами или плохими машинными переводами.

Дата последнего обновления перевода: 01.06.2025
[Введение]
Я, признаться, знатно ах*?л (удивился) от того, что вот уже 11 (на момент, когда я узнал) лет (или даже больше) нет локализации для этой замечательной игры... По крайней мере, в соответствующих обсуждениях и руководствах Steam я его не нашёл. А качать всякие установщики с русификаторами с непроверенных (левых) сайтов как по мне — это как играть в русскую рулетку — не самая лучшая идея (даже если у вас в системе установлен какой-нибудь антивирус или на сайте написано, что они там всё проверили и никаких вирусов не обнаружили, мол "качай, дружище, и запускай спокойно дабл кликом, аминь" ^^). В общем, может повезёт, а может и нет...



Поэтому решил сам (на свою голову) взяться за перевод, тем более что я немножечко е*?&$#ый (программист), чуть-чуть знакомый с JavaScript.
Язык ActionScript, с использованием которого была написана эта игра, очень сильно похож на JavaScript, поскольку его синтаксис также основан на спецификации ECMAScript (википедия -> ActionScript[ru.wikipedia.org]).

При переводе в основном использовал три онлайн-переводчика (DeepL, Google Translate, Context Reverso), но в сложных ситуациях, таких как всяческие идиомы или откровенно плохие автоматические переводы, обращался за помощью к ChatGPT для бедных (GPT-3.5), и он, к слову, более чем (IMHO, невероятно хорошо) справился со своей задачей, за что ему отдельное спасибо.

На данный момент мною уже переведены:
  • основной интерфейс игры (gameUI.xml — главное меню, настройки, названия глав, сообщения и так далее)
  • достижения (achievements.xml)
  • интро для первой главы (шрифт Futura Medium так и не отыскал на русском, поэтому добавил русские символы из похожего шрифта с другим начертанием — Futura Normal)
  • первая глава целиком (подробнее описывать не стал во избежание спойлеров), включая диалоги персонажей, подсказки [включаются в настройках], а также некоторые более сложные вещи, такие как письмо или записка (последняя так вообще представляла собой текстуру, поверх которой накладывалась картинка с прозрачным фоном, содержащая английский текст, набранный рукописным шрифтом, не поддерживающим кириллицу, поэтому пришлось создавать аналогичную картинку с русскоязычным текстом с нуля по образу и подобию, для чего пришлось искать аналог шрифта с поддержкой кириллицы — так мною был найден IMHO очень красивый и бесплатный для коммерческого использования шрифт Vasek)

Да, это не шибко много, но я считаю, что всяко лучше, чем ничего (особенно для работы одного человека)!

Буду постепенно обновлять перевод по мере его продвижения.

Следующая цель (думаю, это очевидно, но всё же) — перевести целиком вторую главу (точно после того, как достаточно для этого отдохну и при наличии свободного для этого времени)...

А пока можете пробовать то, что есть и при желании даже давать обратную связь насчёт перевода. (рекомендую устанавливать перевод только на старую версию игры, см. описание руководства)
[Надейтесь, но не сильно...]
Тем, кто ещё не понял текущую ситуацию с локализацией, хочу сказать следующее: "Чуда от меня не ждите — не факт, что всё получится, поскольку до сих пор нет нормального (вменяемого) способа перевода этой игры на другие языки".
[Параметр "useLanguage" — странное поведение]
Похоже, параметр player.settings.useLanguage при запуске игры почему-то не определяется как "rus", несмотря на то, что в файле настроек (settings.txt) этот параметр задан.

Возможно, в коде, который запакован в .exe и, тем самым, мне недоступен, язык нарочно устанавливается на английский (тем более, что разработчик как-то писал, что интерфейс выбора языка в игре отключён до лучших времён [поскольку перевод, за редким исключением, всё еще не вынесен в отдельные xml-файлы, а находится прямо в исходном коде игры]).

Но почему-то, если создать папку language_rus и перевести в нём файл достижений achievements.xml на русский язык, то достижения в игре будут переведены на русский, несмотря на то, что интерфейс на русский переведён не будет, хотя файл gameUI.xml на русский переведён также как и achievements.xml).

В общем, что-то странное...

Поэтому пришлось произвести некоторые дополнительные шаманские действия с бубном относительно кода игры (который можно найти в .swf файлах каждой главы).
[Изменения в коде]
В начало скрипта каждой локации первой главы, например, islandDream_island.swf -> frame1 -> DoAction (похоже, так нужно будет извращаться с каждой локацией каждой главы, чтобы перевод работал даже при save/load, пока нет нормальной локализации с вынесением текста в отдельные файлы [чтобы не нужно было даже лезть в исходный код]):
  • добавлена пара строк кода, принудительно меняющая язык пользователя на русский:
    _root.player.settings.useLanguage = "rus"; _root.player.settings.userLanguage = "rus";
    При помощи этих магических строк такие функции как translateName (переводит название объекта) и translateVerb (переводит глагол, то есть действие над объектом) начали работать как и положено (как написано разработчиком).

  • (данный пункт уже неактуален) добавлен повторный (поскольку в основном коде игры он уже производился, но, видимо, с английским языком, несмотря на русский в settings.txt) вызов функции translateFirstVerbs (переводит основные действия над объектом: Use, with, Examine, yourself, Fast/Quick travel на выбранный язык).

  • добавлен метод _root.load_lang_XML(), загружающий (по образу и подобию других аналогичных методов из кода игры) перевод различного текста игры из файла lang.xml
    Файл lang.xml я постарался сделать, IMHO, довольно простым и понятным, даже ежу: в каждом теге text есть 2 обязательных атрибута: en [содержит английский текст] и ru [содержит соответствующий ему русский текст], а также некоторые необязательные атрибуты, ни на что не влияющие, такие как action, просто чтобы при просмотре файла [и корректировке перевода] было понятно к какому действию эта фраза относится.

  • добавлена переменная _root.xml_lang, содержащая объект XML, соответствующий загруженному файлу lang.xml

  • добавлен объект _root.lang, при помощи которого можно доставать любую имеющуюся текстовую фразу из загруженного файла lang.xml, например: _root.lang["fish"] вернёт строку "рыба", а _root.lang["That's not how you catch a fish."] вернёт строку "Так рыбу не поймаешь."

  • добавлен метод load_combination_holder_chp1_XML(), загружающий (по образу и подобию других аналогичных методов из кода игры) перевод текстовых фраз, произносимых персонажами, при различных действиях с объектами [комбинациях использования одного объекта с другим] первой главы из файла combinationHolder.xml
    Этот метод я создал полностью в соответствии с кодом "держателя комбинаций" (combinationHolder), написанным разработчиком (все номера индексов для запуска действий в конструкции "launchAction_" + index остались такими же, какими и были, чтобы ничего не поломалось), но при этом подкорректировал код таким образом, чтобы фразы были вынесены в отдельный файл и всё происходило в цикле, поскольку это уменьшает объем кода (тем более, что там тонна однотипных действий вида "отобразить речь персонажа и больше ничего не делать" — showSpeech("Привет, как дела?", персонаж, цвет_текста)).

  • добавлен метод _root.сombinationHolderActionHandler(captions, index) — это просто вспомогательный метод для метода load_combination_holder_chp1_XML, обрабатывающий определённое действие

  • добавлен объект _root.condition_captions_combination_holder_chp1 для хранения сложных случаев, когда при выполнении какого-то действия в игре для него в коде задано условное ветвление (например, если рыба жива, то показать одну фразу, а если нет — другую)

  • добавлена переменная _root.xml_captions_combination_holder_chp1, содержащая объект XML, соответствующий загруженному файлу combinationHolder.xml из директории первой главы (assets/language_rus/TDM_chapter1)

  • добавлен массив _root.captions_combination_holder_chp1, при помощи которого можно доставать любую имеющуюся текстовую фразу (произносимую персонажем при определённых применениях одного объекта на другой) из загруженного файла combinationHolder.xml.

  • переопределён метод _root.examineInventoryItem, чтобы исправить некорректную (для языка игры, отличного от английского) проверку, которая содержится в оригинальном методе (до: if (actionTxt == examineHolder["goal_" + p]), после: if (actionTxt == examineHolder["goal_" + p] || englishActionTxt == examineHolder["goal_" + p]))
    Из-за этой проверки я очень долго не мог понять, почему при нажатии на карту в инвентаре ничего не происходит, пришлось очень долго и нудно пытаться искать причину в коде, но, благо, я всё-таки смог её найти.

  • переопределён метод _root.doThis, чтобы исправить некорректную (для языка игры, отличного от английского) проверку, которая содержится в оригинальном методе (до: if (hiddenActionTxt == action), после: if (hiddenActionTxt == action || englishActionTxt == action))
    Из-за этой проверки я некоторое время не мог понять, почему персонаж не хочет входить в лифт при нажатии на последний, пришлось опять-таки пытаться искать причину в коде, но, благо, я её тоже смог-таки обнаружить.

  • переопределены некоторые методы объекта examineHolder, например examineHolder["launchAction_59"], с целью замены содержащихся внутри него "вшитых в код" фраз на английском вида showSpeech("blah-blah-blah") на аналогичные фразы вида showSpeech(_root.lang["blah-blah-blah"]), то есть вынесенные в отдельный файл lang.xml, предусматривающий возможность перевода на русский язык
[Впечатления]
Я за*?#&ся (устал) первые 4 дня копаться в коде (при этом, всячески его видоизменяя, с последующим откатом некоторых нежелательных изменений в первоначальное состояние), пытаясь найти причину неработающего перевода на русский (хотя была добавлена аналогичная папка language_rus), но в целом оно того стоило — в каком-то виде перевод уже готов, по крайней мере он работает, ну или хотя бы пытается работать...

Кстати, очень понравился режим отладки (debugMode) по shift+D с приятной удобной панелькой (debugBar) управления с прекрасными кнопочками и красивыми перетаскиваемыми окошечками ^^, а также захардкоженным в коде игры паролем для входа в этот режим (который можно и не вводить, а просто вызвать мой любимый метод checkDebugPassword, передав ему нужную строку с паролем)...

Кроме того, очень понравился режим выбора языка с красивыми кнопочками с изображениями флагов стран (на данный момент этот режим отключён разработчиком, но, IMHO, выглядит он довольно впечатляюще [к сожалению, я не могу включить его при запуске игры, т. к. не имею доступа ко всему коду, но надеюсь в будущем, когда локализация будет готова, разработчик его включит]).

В общем, пользуйтесь на здоровье (хотя бы тем, что сейчас уже есть)! Приятной игры на русском! И лучше не выключайте музыку в настройках, потому что, как выяснилось из знакомства с кодом, в этой игре музыкой считается даже шум волн океана (oceanWaves) и гром (thunder) в начале первой главы.
[Скачать]
Перевод лежит в моём github-репозитории[github.com] и, как я уже писал выше, периодически будет обновляться (надеюсь).

[Обратная связь]
Можете писать всё, что думаете об этом переводе, прямо здесь, в комментариях Steam, или отправлять письма на мой e-mail: adrenalin141414@gmail.com .

Если во время прохождения 1-й главы игры наткнётесь на непереведённые фразы (или на "undefined") — пожалуйста, напишите сюда такую фразу, а также укажите персонажа, который её произносит и локацию, в которой это всё происходит. Тогда это будет легко найти и исправить (в теории).

Периодически буду поглядывать.

Кстати, фразу "I'm already looking at that." ("Я уже смотрю на это.") пришлось пока оставить без перевода. Её значение напрямую используется при проверке условия одного из операторов if в коде игры (версия "previous"), на который я не могу повлиять (по всей видимости, он упакован в .exe, а заниматься хакерством вместо перевода я не планировал). Если найти и перевести эту фразу в файле gameUI.xml, то она будет корректно отображаться на экране. Однако при этом не будет выполнен код вышеуказанного оператора if. В результате задуманная разработчиком логика поломается, и игрок не сможет взаимодействовать с пользовательским интерфейсом.

[Помощь с переводом]
Пока не требуется (и надеюсь не потребуется) — хочу попробовать сделать свой собственный перевод.

Не знаю насколько меня хватит, и хватит ли вообще, но если кто-то немного знаком с программированием и/или не боится ковыряться в swf-файлах, то можете ставить себе бесплатную open source программу JPEXS Free Flash Decompiler (или любую другую на ваше усмотрение) и смело создавать свою собственную версию перевода параллельно со мной по образу и подобию моей версии файла islandDream_island.swf (изменения в коде описаны выше в соответствующем разделе).

Upd: Отбой, ребятки — разработчик сообщил, что работает над созданием улучшенной версии игры и настоятельно рекомендовал всем желающим помочь с переводом отказаться от идеи тратить свои силы на перевод старой версии, основанной на мёртвой платформе Flash. Разработчик надеется, что новая версия игры решит многие проблемы, связанные с производительностью, переводом, масштабируемостью и другие...

https://psteamcommunity.yuanyoumao.com/app/94300/discussions/0/3427823723499892617/#c3845557215479941558

Главная помощь, которую лично я (как и многие другие) с нетерпением жду — это нормальный способ локализации игры от разработчика (с иcпользованием внешних файлов перевода).



P.S. Спасибо разработчикам за этот шедевр! Надеюсь все из тех, кто читает это, доживут до того момента, когда наконец официально будет допилена локализация, а также успеют ей вдоволь насладиться... А пока можете смело играть в моём русском переводе. Надеюсь он вам понравится!

Upd: Исходный код игры время от времени меняется, поэтому рекомендую устанавливать этот перевод только на старую версию игры, для которой он изначально был предназначен (см. описание руководства вверху). По-хорошему, стоит дождаться официального объявления о том, что игра так или иначе готова к локализации.
13 条留言
KEMONOZUME 6 月 11 日 上午 3:26 
Братик, я всеми фибрами чувствую, что ты справишься!

Я много лет жду локализацию местного кроя, поэтому твоя работа точно не останется недооцененной!

:mug:
I believe I can't fly  [作者] 5 月 31 日 上午 10:06 
Как выяснилось, утечка памяти наблюдается только при установке перевода на новую версию.

Если вы хотите поиграть с этим русским переводом без утечки памяти и постоянных вылетов, то нужно предварительно поставить себе старую версию игры через steam (ПКМ по игре в библиотеке steam - beta версии - previous). Правда сейчас в этом случае почему-то выдаётся ошибка об отсутствующем исполняемом файле (чтобы её победить нужно просто переименовать .exe файл, добавив в начало имени файла знак подчёркивания: вместо "the_dream_machine.exe" должно стать "_the_dream_machine.exe").
I believe I can't fly  [作者] 5 月 31 日 上午 7:05 
Рекомендую пока НЕ играть с моим переводом, тем более, что сейчас при его установке наблюдается какая-то утечка памяти (надеюсь, у меня постепенно получится переделать его в соответствии с нынешними реалиями, но по-хорошему стоит дождаться официального объявления о том, что игра так или иначе готова к локализации)".
I believe I can't fly  [作者] 5 月 31 日 上午 7:03 
Вчера снова установил игру и заметил, что исходный код 1 главы изменился (пока ещё не для всех локаций) в пользу вынесения текста в отдельные файлы (похоже, что теперь в .swf-файлах локаций используются не сами англоязычные строки текста, а элементы массива, содержащего фразы текущей игровой локации, который "берёт" их из отдельного .xml-файла). Видимо, разработчик всё же услышал наши молитвы, поэтому рано терять надежду.
Lenyass 5 月 30 日 下午 1:57 
эх, время прошло, а воз и ныне там. надеюсь однажды что-нибудь случится
kulemin_43 4 月 27 日 上午 7:34 
Вам благодарность и успехов в переводе.Очень хочется перевод на русский.Игра шедевр
Max Warlock 2024 年 10 月 1 日 上午 2:43 
Жду русификатор к этой игре с самого ей выхода, т.к. английский тут нифига не простой. Теперь хоть первую главу пройду. А разработчик пусть к чёрту идёт, взяли эту моду с перевыпусками. На кой ляд малоизвестному квесту ремастер? Очевидно, чтобы прогреть гоев.
I believe I can't fly  [作者] 2024 年 7 月 8 日 下午 1:35 
Да, на данный момент переведена только одна глава. По убедительной просьбе разработчика все мучения по поиску и переводу всевозможных диалогов и прочего текста игры в исходных файлах кода прекращены, и дальнейший перевод отложен на неопределённый период. Ожидаем нормальный способ перевода при помощи файлов с обычными строками текста, а не кодом.
lissofff 2024 年 7 月 8 日 上午 9:17 
Скажите, пожалуйста, а пока только одна глава переведена сейчас?
†*Ďzēd-βαřαdzēd*† 2024 年 4 月 15 日 下午 10:21 
Весьма надеюсь доживём до полноценного перевода! :emofdr: