1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление
    1. Если вы сделали перевод или русификацию игры, то вы можете поделиться своим творением здесь.
    2. О правилах вступления в группу переводчиков можно прочитать здесь.
    3. Русификации следует искать там.

Wing Commander IV: Цена свободы

Тема в разделе "Переводы своими руками", создана пользователем Рыжий Тигра, 8 янв 2007.

  1. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Процесс перевода игры "Wing Commander IV: Цена свободы"- в разгаре. Желающие опробовать то, что получилось, могут добраться сразу до описания перевода и ссылок на его скачивание, щёлкнув по этой ссылке.

    Желающим посоучаствовать в переводе - рекомендую: полезные для переводчика ссылки - словари, книги, статьи и прочие материалы. Пополнение копилки приветствуется!

    См. также:
    Самая свежая тестовая сборка и инструкции по её установке
    Бета-тестеры, wэлкам!
    31 дек 2016

    Upd 1:
    В связи с участившимися постами здесь "чисто для поржать" - вынужден объясниться.
    6 янв 2014

    Upd 2:
    Приглашаю желающих поучаствовать в переводе. Отозвавшиеся будут увековечены в финальных титрах. (Никаких более материальных благ, к сожалению, обещать не могу. :( )
    27 мая 2014

    Upd 3:
    Наконец удалось пробить барьер несовместимости моего перевода с версией игры от GOG!!! Желающим опробовать - wэлкам!
    2 окт 2014
     
    Последнее редактирование: 21 апр 2017
    kirik-82 нравится это.
  2.  
  3. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    SP4. Могли в нём эту фишку отменить? :-(
    Ага. Не знал про такой трюк. При случае опробую. Прямо сейчас не получится - из-за особенностей аппаратной конфигурации: комп далеко от монитора, надо оттаскивать шкафы-диваны и кидать отдельный кабель для клавы, а перед тем его ещё купить... а я ленивый и жадный. :-(

    ---------- Сообщение добавлено в 22:27 ---------- Предыдущее сообщение размещено в 22:14 ----------

    vsfilter опен-сорсный, можно и без дизассемблера. :-) Но там такой страшенный запутанный C++... :-(
    У меня ещё с лета периодически всплывала идея засесть и всерьёз поковырять xy-vsfilter. Но каждый раз не хватало запаса Дури. :-(

    FeyFre подарил более универсальную идею: перегнать субы в .ssa, поставить в цепочку фильтров перехват субтитрового потока и патчить их на лету под конкретные пропорции экрана. Плюс идеи в том, что должна работать с любым субтитровым фильтром, лишь бы понимал формат SSA.
    Кстати, а как это сделать? Я в этом плаваю; единственный известный мне надёжный способ - подменить несколько байт в начале функции непосредственно в теле образа advapi32.dll, очень не хочется. :-(
     
  4. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Для обычного видеоплеера (того же виндового) при установленном vobsub достаточно бросить рядом с нужным видеороликом, поименовав так же, как его. Подгружаются и накладываются автоматом. Плюс всякие "ореольчики", цвет и спецэффекты.
     
  5. AxXxB неадекват

    AxXxB

    Хелпер Переводчик

    Регистрация:
    13 ноя 2006
    Сообщения:
    1.663
    А почему не хочется? Майкрософт на этом даже платную библиотеку сделала, Detours или как-то так называется.

    Фишка в том, что в винде есть механизм copy-on-write - когда ты изменяешь образ библиотеки, подгруженной в несколько процессов, то тебе выделяется отдельная ее копия и уже она изменяется, а остальные процессы продолжают сидеть с нетронутой. Более того, системные библиотеки Майкрософт к такому хуку подготовила - видел в них, наверно, загадочные mov edi, edi перед прологом функций. Поподробнее можно тут, например, почитать - http://habrahabr.ru/post/181157/
     
    Рыжий Тигра нравится это.
  6. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Я в курсе. Полезная фича.
    О! Двухбайтовую затычку и пачку NOP'ов перед ней видел, а зачем - не знал. Сенькс!
    Потому что не знал... :-

    ---------- Сообщение добавлено в 23:26 ---------- Предыдущее сообщение размещено в 23:22 ----------

    (голосом Ноль Пятого) Стефани, ноль информации! :-(
    Или имеешь в виду, что можно обойтись без перехвата потока субтитров, хранить их не в видеоконтейнере, а где-то ещё, а перед воспроизведением записать уже подпатченный .ssa-файл рядом с роликом? На компакт-диск или залоченную от записи flash'ку, ага? :-?

    ---------- Сообщение добавлено в 23:41 ---------- Предыдущее сообщение размещено в 23:26 ----------

    Кстати, давно уже ношусь с идеей фильтра-перехватчика-подменялки потока субтитров. У неё есть ещё один плюс: можно не тащить субтитры перевода внутри каждой матрёшки (и, соответственно, при мелких правках перевода не заставлять пользователя заново скачивать сотни мег видеороликов), а держать их в отдельном подгружаемом файле. Примерно как сейчас dxmci.dll при запуске подгружает перевод игры - жалких меньше сотни кил файла xlatrus.iff.
    Соответственно, можно сделать несколько переводов на разные языки - каждый перевод всех запасов видео в отдельном xlat???.iff'е.
    Недостаток метода: придётся в каждой матрёшке тащить субтитровую дорожку-синхронизатор, помеченную каким-ньдь совсем уж экзотическим языком (чтобы обычный плеер её ненароком не подхватил) и состоящую из одних только номеров строк в файле перевода.

    ---------- Сообщение добавлено в 23:51 ---------- Предыдущее сообщение размещено в 23:41 ----------

    В смысле - не получится ли два экземпляра в адресном пространстве? ХЗ, но вроде бы не должно. Я попробовал vsfilter.dll - на глаз нормально работает. И обратный процесс - загрузка фильтра RenderFile()'ом и потом взятие его handle'а GetModuleHandle()'ом - тоже срабатывает на ура.
     
    Последнее редактирование: 1 фев 2015
    AxXxB нравится это.
  7. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
  8. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Bato-San, знаю с примерно 2006-го года.
     
  9. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    За основу перехватчика взял слегка модифицированный CSampleGrabber из dxmci-mod\grabber.cpp - он у меня не первый год уже работает счётчиком кадров и датчиком отсечки воспроизведения по таймингу. Но незадача: перехватчик субтитров не хочет подхватываться при сборке фильтр-графа. :-(
    Делаю с ним всё как обычно: создаю объект, назначаю ему SetMediaMajorType()'ом тип MEDIATYPE_Subtitle (определён в matroska.h от Gabest), затем AddFilter() и... фиг: в собранном графе субтитровый выход матрёшечного сплиттера подключается прямо ко входу vsfilter'а, а свежесозданный субтитровый перехватчик болтается в стороне. :-(
    Подключаюсь к графу graphedit'ом, переподсоединяю руками - работает. А на автомате не хочет хоть тресни.
    Подробный допрос при помощи graphstudio показал, что выходной пин сплиттера и входной пин перехватчика отличаются: у сплиттерного пина bFixedSizeSamples == FALSE, а у перехватчикового - TRUE. Может это быть причиной? И если да, то как и в какой момент это грамотно исправить?

    PS. Нашёл как сбрасывать bFixedSizeSamples, доработал, не помогает. :-( Все GetMediaType()'ы и EnumMediaTypes()'ы отрабатывают штатно, а Connect() так ни разу и не вызывается. :-(

    PPS. Обошёл проблему трансректально: после RenderFile() проверяю состояние перехватчика - если лапки у него оборваны, то нахожу субтитровый выход сплиттера, разрываю его соединение и вклиниваю перехватчик в разрыв.
    Но вылезла ещё одна грабля - я про неё, признаться, когда-то помнил, но успел забыть: CSampleGrabber сделан на базе CTransInPlaceFilter'а, а в процессе подмены субтитра его длина, ясен перец, будет меняться и как правило в сторону увеличения.
     
    Последнее редактирование: 3 фев 2015
  10. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Таки решил сваять отдельный субтитровый перехватчик, на базе CTransformFilter'а. Делаю minimum minimorum - всего два метода, CheckInputType() и Transform(); вроде бы должно хватить.
     
  11. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
  12. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Ура, работает!
    В ролик включаю две субтитровых дорожки - английскую и т.н. "индексную"; с последней при сборке снимаю атрибуты "по умолчанию" и "принудительно" и выставляю язык "множественные" ("mul" по ISO 639-2), чтобы при проигрывании ролика обычным плеером не мозолила глаза и не сбивала с толку. А в dxmci.dll сразу после успешного RenderFile()'а ищу сплиттер, цепляюсь к его интерфейсу IAMStreamSelect, обшариваю все выходные потоки на предмет субтитровых дорожек, нахожу индексную (пока ищу по фрагменту имени, т.к. IAMStreamSelect не показывает языки по ISO 639 - только по-микро$офтовски) и делаю её активной.
    Дальше работает собственно перехватчик - издевается над каждым пойманным субтитром: по номеру находит запись в блоке перевода, подставляет текст и при необходимости сдвигает времянку (в т.ч. и назад - это вполне можно, т.к. первые субтитры попадают в поток сразу же после начала воспроизведения).

    Но всплыла ещё одна загвоздка: при попытке в качестве субтитровыводилки использовать ffdshow не удаётся воткнуться в разрыв между сплиттером и ним - похоже, при отключении ffdshow'ская входная субтитровая ножка тут же уничтожается и создаётся заново. :-( Видимо, придётся рендерить вручную - через AddSourceFilter(), EnumPins() и Render() каждой ножки отдельно, причём к субтитровому выходу сплиттера сначала вручную подключать перехватчик.
    Но тут опять проблема, которую пока не знаю как обойти. Если source-фильтр сразу сам себе и сплиттер, как Haali'шный матрёшечный, то всё просто и изящно; а если источник (например, обычный микро$офтовский file source) выдаёт наружу смешанный поток и к нему надо отдельно присобачивать сплиттер, то как Render()'у ограничить "фронт работ" или что использовать вместо него, чтобы к выходным ножкам сплиттера ничего автоматом не цеплялось?
    2 All: кто хорошо знает directshow, подскажите, плиз!
     
    Bato-San нравится это.
  13. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Нашёл причину неучастия субтитрового перехватчика в автосборке графа. Похоже, graph builder просто "не знает" о существовании такого типа как MEDIATYPE_Subtitle и поэтому игнорирует.
    Выяснил случайно. В ходе экспериментов обнаружил, что для роликов, в которых ни одна дорожка не помечена флагом "по умолчанию", мацневский Haali media splitter выводит на субтитровую ножку пустой поток типа MEDIATYPE_Text и только после ручного (или IAMStreamSelect::Enable()'ом) переключения на непустую дорожку меняется на MEDIATYPE_Subtitle. Добавил MEDIATYPE_Text фильтру в список поддерживаемых типов - и фильтр сразу начал подхватываться.
     
    AxXxB и Bato-San нравится это.
  14. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    2 All: опрос общественного мнения. Сам пока решить не могу, нужна помощь и поэтому референдум. :-

    Пункт номер раз. Поскольку уже есть механизм, позволяющий на лету подсовывать кинороликам субтитры на любом языке, то имеет ли смысл впихивать в ролики-матрёшки хоть какие-то субтитры кроме индексных, - английские, например?
    Номер следующий. Имеет ли смысл для включения/выключения вывода субтитров в кинороликах гонять dxmci'йный конфигуратор

    [​IMG]

    или лучше для этого дела приспособить уже имеющуюся настройку в игре?

    [​IMG]
     

    Вложения:

  15. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    да, имеет.

    малость опасно. Ибо вызовет здоровое недоумение, если после работы программы или её падения останется не тот язык сабов, а пользователь не в курсе что и где менять.
    Логичнее дописать в доки о возможности смены языка.
    С другой стороны настройка именно включения сабов в самой игре смотрится умнее.
     
  16. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    А какие именно и зачем?
    Прикол в том, что английские субы тоже со временем вылизываются. Не только из-за нестабильности первоисточника, но и чисто эстетически - времянки приходится кое-где править, неразрывные пробелы расставлять и т.д. А перевыкладывать сотни мег роликов из-за сотен байт правок - ИМХО перебор.
    Поэтому я б не против бы сгрузить аглицкие субы туда же, куда и русские, - в блок перевода (файлы xlat(rus|eng|...).iff - аж по паре сотен кил весу), а в роликах оставить только индексы.
    С третьей стороны, на ролике с одними индексами никакой сторонний плеер не покажет никаких субов - или придётся внутри dxmci.dll делать субтитроподменялку полноценным directshow-фильтром с интерфейсами и регить её в системе в качестве такового, чтобы плеер мог подхватить.
    С четвёртой стороны, бетонировать внутрь матрёшек субтитры для удобства плеера имеет смысл в первую очередь как раз самые ходовые - русские, но тогда получается, что либо огород с перехватом субтитров городился зря, либо мы заранее соглашаемся держать в матрёшках не самый вылизанный вариант субтитров.
    Кстати, не имеешь желания дописать субтитровый перехватчик до полноценного directshow-фильтра, чтобы его можно было таки регистрировать в системе? Он и правда крохотулечный - под катом весь его исходник.
    Я неудачно сформулировал? Вопрос номер два был не про выбор языка, а только про включение-выключение киносубов не выходя из игры. В доке про это есть.
    А смену языка киношных субтитров лучше привязать к смене языка субтитров игровых, технически - выбором к подгрузке этого самого блока перевода:

    [​IMG]
     

    Вложения:

    Последнее редактирование: 14 фев 2015
  17. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, ну это в корне меняет дело ! Тогда абсолютно пофиг. Что лучше станет ясно в процессе тестирования. А там уже будем выбирать ! :)
     
    Рыжий Тигра нравится это.
  18. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Bato-San, ОК, ща леплю ролики, дохакиваю взятие флажка "выводить субтитры" и где-то завтра сделаю выкладку.
     
    Bato-San нравится это.
  19. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    И ещё одна бета - wc4dvd-rus-beta12.7z:

    [​IMG] [​IMG]

    Отличия от предыдущей:
    • при выводе на экран с размерами кратными исходным 640*480 (т.е. при 1280*960, 1920*1440 и т.д.; на широких дисплеях кратность считается отдельно для игры, для обзорных сцен и для финальных титров) сглаживание отключается (спасибо nop'у за программную реализацию);
    • работает включение-выключение субтитров в кинороликах через настройки в игре (на авианосце: терминал - настройки), в начале игры субтитры по умолчанию включены;
    • соответственно, из конфигуратора (dxmcicfg.exe) выбор субтитров убран;
    • исправлена тупая ошибка при расчёте пропорций экрана для мониторов более "квадратных" чем 640*480;
    • кое-как затушёвана сделанная Origin'скими разработчиками грабля с единичными миганиями посторонней картинки (типа "двадцать пятый кадр") в полёте при перегрузке процессора;
    • исправлена моя ошибка с кривым выводом орельчиков на внутрироликовых меню (эффект от неё - съехавший далеко в сторону ореольчик - был заметен только на широких экранах, а на 4:3 незаметен вовсе);
    • как обычно, самые свежие финальные титры.
    Да, и самое главное: наконец реализовал давнюю мечту :-) - субтитровые переводы кинороликов не хранить в самих роликах, а подставлять перевод в поток субтитров непосредственно при воспроизведении ролика. Сооответственно, тексты субтитров переехали в файлы перевода (xlat???.fnt).
    Само собой, эта идея потребовала пересборки видеороликов - как минимум добавления в них специальной "индексной" субтитровой дорожки, а такие ролики станут взаимно несовместимы с моей "официальной" раздачей. Поэтому комплект "индексированных" роликов выкладываю отдельно, торрентом:
    magnet:?xt=urn:btih:F67FDD2ED8F9A9A...DC92&dn=wc4-indexed&tr=http://retracker.local
    Достоинство метода - для изменения перевода больше не надо пересобирать ролики (а потом перераздавать сотни мегабайт из-за изменения жалких десятков или сотен байт субтитров), достаточно пересобрать файл перевода и перераздать жалкую сотню килобайт.
    Ещё придумал и немножко опробовал фишку для входного языка компилятора переводов - задавать ключевые слова-операнды команд в специальных переменных типа "ключевое слово". На первый взгляд вроде бы удобно.

    И, конечно, инструкция по сборке экземпляра игры поменялась - не сильно, но:
    • в каталог с уже установленным экземпляром игры скачать комплект индексированных роликов
      • ИЛИ
    • скачать в один каталог мою раздачу без .mkv-файлов, минимальный комплект игры и индексированные ролики
      • ИЛИ
    • скачать образы оригинальных DVD, смонтировать/заболванить, проинсталировать и поверх установленного скачать индексированные ролики
      • ИЛИ
    • скачать и установить версию игры от GOG и поверх неё индексированные ролики;
    • поверх получившегося развернуть последнюю на данный момент бету;
    • воспользоваться своими savegame'ами (если есть), после загрузки savegame'а включить киносубтитры (терминал - настройки)
      • ИЛИ
    • развернуть savegame'ы из каталога save/ раздачи, после загрузки savegame'а включить киносубтитры
      • ИЛИ
    • начать игру сначала (киносубтитры включаются автоматом);
    • при необходимости подправить настройки dxmci'я (путь к обсубтитренным кинороликам, язык перевода и т.д.) запуском dxmcicfg'а;
    • в процессе игры пробовать разные .exe'шники и .dll'ки из каталога misc/ в архиве беты (для пущего удобства они снабжены описаниями в файле misc/files.bbs), разные комбинации graphic enhancement'ов, видеорендереров и прочих настроек (их описания см. в комментах в файле dxmci.ini).
    Ну, и это... бета-тестеры, опять wэлкам! :-
     

    Вложения:

    ThisSuXX, Sherhan007, Butz и 3 другим нравится это.
  20. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    На очереди - изготовление из dxmci.dll полноценного COM-объекта directshow-фильтра, чтобы подставлял субтитры при проигрывании роликов обычным плеером. Первый блин (в предлагаемой бете - в файлах src\dxmci-mod-20150220-0235.7z:dxmci-mod\subhook.cpp, subhook.h участки, обёрнутые #ifdef'ом SUBHOOK_COM) почему-то комом: фильтр регистрируется regsvr32'ом, но попытка загрузить его graphedt'ом обламывается с кодом CO_E_ERRORINDLL и внутрь dxmci'я управление попадает только в DllMain() и всё. :-(
    Кто подскажет, что может быть за фигня такая?
     
    Последнее редактирование: 20 фев 2015
  21. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    ???
     
  22. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    То есть, graphedt'ом.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление