Перейти к содержимому
Zone of Games Forum

Рекомендованные сообщения

The Legend of Korra: Video Game

Жанр: Action / 3rd Person / 3D

Платформы: PC XONE X360 PS4 PS3

Разработчик: PlatinumGames

Издатель: Activision

Дата выхода: 21 октября 2014 года

Игра на том же движке, что и Metal Gear Rising Revengeance, хотя и не так сложна в разборе. Нешифрованные DDS-текстуры в файлах DDT (шрифты там же). Текст пока ищу.

 

Spoiler

 

# CRI CPK archives (script 0.3)quickbmsver "0.5.32"endian bigcomtype cpkidstring "CPK "set query_offset long 0set query_index long 0set query_name string "TocOffset"callfunction query_utf 1set toc_offset long UTF_VALUEif toc_offset == 0    set query_name string "ITocOffset"    callfunction query_utf 1    set toc_offset long UTF_VALUEendifset query_name string "ContentOffset"callfunction query_utf 1set content_offset long UTF_VALUEset query_name string "Files"callfunction query_utf 1set CpkHeader_count long UTF_VALUEset query_name string "Align"callfunction query_utf 1set CpkAlignment long UTF_VALUEgoto toc_offsetgetdstring signature 4if signature != "TOC "if signature != "ITOC"    print "Error: TOC signature not found at offset %toc_offset|x%"    cleanexitendifendifset query_offset long toc_offsetset query_index long 0set query_name string ""callfunction query_utf 1set CpkHeader_count2 long UTF_VALUEset toc_entries long table_info_rows    # it remains saved after the callif CpkHeader_count == 0    math CpkHeader_count = CpkHeader_count2endif    set query_offset long toc_offset    set query_index long 0    set query_name string "FilesL"    callfunction query_utf 1    set itoc_filesl string UTF_VALUE    set query_name string "FilesH"    callfunction query_utf 1    set itoc_filesh string UTF_VALUE    set query_name string "DataL"    callfunction query_utf 1    set itoc_datal string UTF_VALUE    xmath itoc_datal "itoc_datal + toc_offset + 8 + table_info_data_offset"    set query_name string "DataH"    callfunction query_utf 1    set itoc_datah string UTF_VALUE    xmath itoc_datah "itoc_datah + toc_offset + 8 + table_info_data_offset"    math FORCE_CONTENT_OFFSET = 1    math query_offset = itoc_datah    for query_index = 0 < itoc_filesh        callfunction EXTRACT 1        xmath content_offset "file_offset + file_size"    next query_index    math FORCE_CONTENT_OFFSET = 1    math query_offset = itoc_datal    for query_index = 0 < itoc_filesl        callfunction EXTRACT 1        xmath content_offset "file_offset + file_size"    next query_indexmath FORCE_CONTENT_OFFSET = 0math query_offset = toc_offsetfor query_index = 0 < toc_entries    callfunction EXTRACT 1next query_indexstartfunction EXTRACT    if content_offset < 0           # "if" can't be unsigned        set add_offset long query_offset    elif query_offset < 0        set add_offset long content_offset    elif content_offset < query_offset        set add_offset long content_offset    else        if FORCE_CONTENT_OFFSET != 0            set add_offset long content_offset        else            set add_offset long query_offset        endif    endif    set query_name string "DirName"    callfunction query_utf 1    set file_name string UTF_VALUE    set query_name string "FileName"    callfunction query_utf 1    set file_name2 string UTF_VALUE    string file_name += /    string file_name += file_name2    set query_name string "FileSize"    callfunction query_utf 1    set file_size long UTF_VALUE    set query_name string "ExtractSize"    callfunction query_utf 1    set extract_size long UTF_VALUE    set query_name string "FileOffset"    callfunction query_utf 1    set file_offset long UTF_VALUE    math file_offset += add_offset    if CpkAlignment != 0        if file_offset % CpkAlignment            xmath file_offset "file_offset + CpkAlignment - (file_offset % CpkAlignment)"        endif    endif    if extract_size > file_size        clog file_name file_offset file_size extract_size    else        log file_name file_offset file_size    endifendfunctionstartfunction query_utf    set COLUMN_STORAGE_MASK     long 0xf0    set COLUMN_STORAGE_PERROW   long 0x50    set COLUMN_STORAGE_CONSTANT long 0x30    set COLUMN_STORAGE_ZERO     long 0x10    set COLUMN_TYPE_MASK        long 0x0f    set COLUMN_TYPE_DATA        long 0x0b    set COLUMN_TYPE_STRING      long 0x0a    set COLUMN_TYPE_FLOAT       long 0x08    set COLUMN_TYPE_8BYTE2      long 0x07    set COLUMN_TYPE_8BYTE       long 0x06    set COLUMN_TYPE_4BYTE2      long 0x05    set COLUMN_TYPE_4BYTE       long 0x04    set COLUMN_TYPE_2BYTE2      long 0x03    set COLUMN_TYPE_2BYTE       long 0x02    set COLUMN_TYPE_1BYTE2      long 0x01    set COLUMN_TYPE_1BYTE       long 0x00    set UTF_VALUE_OFFSET long 0    set UTF_VALUE string ""    xmath offset "query_offset + 0x10" # needed by the tool    goto offset    set table_info_table_offset long offset    getdstring UTF_signature 4    if UTF_signature != "@UTF"        print "Error: not a @UTF table at %offset|x%"        cleanexit    endif    get table_info_table_size long    set table_info_schema_offset long 0x20    get table_info_rows_offset long    get table_info_string_table_offset long    get table_info_data_offset long    get table_name_string long    get table_info_columns short    get table_info_row_width short    get table_info_rows long    for i = 0 < table_info_columns        get schema_type byte        get schema_column_name long        putarray 0 i schema_type        putarray 1 i schema_column_name        putarray 2 i -1     # schema_constant_offset        xmath TMP "schema_type & COLUMN_STORAGE_MASK"        if TMP == COLUMN_STORAGE_CONSTANT            savepos schema_constant_offset            putarray 2 i schema_constant_offset            xmath TMP "schema_type & COLUMN_TYPE_MASK"            if TMP == COLUMN_TYPE_STRING                getdstring DUMMY 4            elif TMP == COLUMN_TYPE_DATA                getdstring DUMMY 8            elif TMP == COLUMN_TYPE_FLOAT                getdstring DUMMY 4            elif TMP == COLUMN_TYPE_8BYTE2                getdstring DUMMY 8            elif TMP == COLUMN_TYPE_8BYTE                getdstring DUMMY 8            elif TMP == COLUMN_TYPE_4BYTE2                getdstring DUMMY 4            elif TMP == COLUMN_TYPE_4BYTE                getdstring DUMMY 4            elif TMP == COLUMN_TYPE_2BYTE2                getdstring DUMMY 2            elif TMP == COLUMN_TYPE_2BYTE                getdstring DUMMY 2            elif TMP == COLUMN_TYPE_1BYTE2                getdstring DUMMY 1            elif TMP == COLUMN_TYPE_1BYTE                getdstring DUMMY 1            else                print "Error: unknown type for constant %TMP%"                cleanexit            endif        endif    next i    xmath TMP "table_info_string_table_offset + 8 + offset"    xmath string_table_size "table_info_data_offset - table_info_string_table_offset"    log MEMORY_FILE TMP string_table_size    for i = query_index < table_info_rows        xmath row_offset "table_info_table_offset + 8 + table_info_rows_offset + (i * table_info_row_width)"        for j = 0 < table_info_columns            getarray type 0 j            getarray column_name 1 j            getarray constant_offset 2 j            if constant_offset >= 0                math data_offset = constant_offset            else                math data_offset = row_offset            endif            xmath TMP "type & COLUMN_STORAGE_MASK"            if TMP == COLUMN_STORAGE_ZERO                set value long 0            else                goto data_offset                xmath TMP "type & COLUMN_TYPE_MASK"                if TMP == COLUMN_TYPE_STRING                    get string_offset long                    goto string_offset MEMORY_FILE                    get value string MEMORY_FILE                elif TMP == COLUMN_TYPE_DATA                    get vardata_offset long                    get vardata_size long                    # currently ignore it                    #goto vardata_offset MEMORY_FILE                    #getdstring value vardata_size MEMORY_FILE                    set value string vardata_offset                elif TMP == COLUMN_TYPE_FLOAT                    get value long                elif TMP == COLUMN_TYPE_8BYTE2                    get DUMMY long  # no 64 bit support!                    get value long                elif TMP == COLUMN_TYPE_8BYTE                    get DUMMY long  # no 64 bit support!                    get value long                elif TMP == COLUMN_TYPE_4BYTE2                    get value long                elif TMP == COLUMN_TYPE_4BYTE                    get value long                elif TMP == COLUMN_TYPE_2BYTE2                    get value short                elif TMP == COLUMN_TYPE_2BYTE                    get value short                elif TMP == COLUMN_TYPE_1BYTE2                    get value byte                elif TMP == COLUMN_TYPE_1BYTE                    get value byte                else                    print "Error: unknown normal type %TMP%"                    cleanexit                endif                if constant_offset < 0                    savepos row_offset  # row_offset += bytes_read                endif            endif            goto column_name MEMORY_FILE            get column_name string MEMORY_FILE            if column_name == query_name                set UTF_VALUE string value  # result_value_value (qthis)                math i = table_info_rows    # break                math j = table_info_columns # break            endif        next j    next iendfunction

 

Перевод игры: http://notabenoid.org/book/64255/

Прогресс перевода: 214.png

Изменено пользователем 0wn3df1x
  • +1 1

Поделиться сообщением


Ссылка на сообщение

Напоминает многострадальный Metal Gear Rising.

Забивали, забивали - сделали.

Вроде всё уже отработано, всё тоже самое. Но как всегда забили. Хотя бы написали чем помочь для продвижения.

Поделиться сообщением


Ссылка на сообщение
Напоминает многострадальный Metal Gear Rising.

Забивали, забивали - сделали.

Вроде всё уже отработано, всё тоже самое. Но как всегда забили. Хотя бы написали чем помочь для продвижения.

Текстуры перерисовывать...

Поделиться сообщением


Ссылка на сообщение
Текстуры перерисовывать...

А перерисовать что конкретно? Шрифты? А какие буквы на какие менять надо?

Поделиться сообщением


Ссылка на сообщение

Проблема в том, что в игре нет субтитров вообще. Отсюда нет никакого ризона делать перевод.

Поделиться сообщением


Ссылка на сообщение
Проблема в том, что в игре нет субтитров вообще. Отсюда нет никакого ризона делать перевод.

А звук выйдет заменить?

Поделиться сообщением


Ссылка на сообщение

Дык выпустите хотя бы перевод меню и там всего остального что имеет текс) вообще в английском не шарю (((

а что если перевести озвучку по кусочкам ? не вариант ?

Поделиться сообщением


Ссылка на сообщение
так когда ждать?

За перевод никто не брался. Так что никогда.

Поделиться сообщением


Ссылка на сообщение
так когда ждать?

есть надежда на перевод от фанатов?

Поделиться сообщением


Ссылка на сообщение
Проблема в том, что в игре нет субтитров вообще. Отсюда нет никакого ризона делать перевод.

Есть резон, можно сделать и без субтитров озвучку этих диалогов.

Там не так уж их много.

Имхо, самый затык именно в текстах, которые в .mcd (т.е. например data000.cpk\core\coreui.dat\MessCommon.mcd). Там же в mcd, наверное, всё. И текст предметов магазина и меню, и пр.

И шрифт потом генерится из этой инфы, отдельно для каждой менюшки, разве нет?

А звук выйдет заменить?

Получится.

 

Spoiler

Я пробовал подменять и посмотреть как работает с разной длинной.

Всего 30 видеороликов, из которых большая половина содержит диалоги.

720p, кстати

Перекодировать их довольно гемморойное занятие, для шестиканального ADX нормального софта еще нету.

Но обратно в игру - без проблем. Можно даже и хардсаб наложить.

Три видеоролика из этих 30 не получилось ничем сконвертить в смотрибельный вид.

Но, если в них есть речь, то можно их рипнуть прямо во время игры.

а что если перевести озвучку по кусочкам ? не вариант ?

Перевод почти всей есть. Имело бы смысл допилить, если бы можно было перевести текст менюшек и надписи

 

Spoiler

Я и так почти всю озвучку перевёл (на 70% готово).

Может самую малость косячно, но все поправимо.

Пример: https://yadi.sk/i/rfNUuULLpxLv9

Там не так много и сложнее/дольше бы было искать переводчиков уровня "понимаю на слух", прошедших игру и смотревших шоу (надо же различать голоса, знать имена и сюжет). Сабов же там нет ни в каком виде.

Так что, если это доделать, нужнее будет озвучить эти фразы.

Думаю, что найти Корру, Джинору и Комментатора будет самой большой проблемой.

590 фраз всего

https://yadi.sk/d/1YCMBc66pwZLq

Из них 294 это Корра (а еще и в видеороликах будет реплик 20 точно)

около 103 фразы у комментатора. Самые сложные, как для понимания на слух, так и для озвучивания

67 фраз у Хундуна (старика)

37 у Джиноры

где-то 20 фраз у разных врагов и Чи-блокеров. Там с ними тоже сложно, так как очень похожие голоса. Наверное, озвучивал 1-2 актёра

и совсем по мелочи у Раавы, Булина, Айро, Тензина, Мако, пробендеров и т.п.

У меня нету текста диалогов для 50 фраз, преимущественно комментатора. Я очень примерно только понимаю, что там бубнит.

Нужен человек, который может это понять (уровень англ надо поближе к уровню "родной язык", я так думаю. Там очень завывает и нетривиальные слова)

Для остального есть текст, и перевод к нему (65%)

Для роликов нет ни перевода, ни диалогов.

Требуется художник для перерисовки текстур

Я художник. Но разве художник тут поможет, если там текст непонятно как менять?

Ссылки все сдохли, но я распаковал ресурсы по какому-то мануалу для металгира.

cpk распаковывается, dat внутри него - тоже, dtt конвертятся в текстуры.

Но текст-то в .mcd и как его менять??? Нужен крутой хакер.

Вижу шрифты в coreui и ui

 

Spoiler

d821bd9e30a1.png

Но, вы шутите. Это не похоже на простые файлы шрифтов и их слишком много.

Наверняка они составляются кусочками какого-то одного шрифта, автоматически. Может быть, даже векторного.

Вот видел MGGRTools, там mcdtool.exe что-то необычное делает. Зачем столько шрифтов лежит в fonts/all_fonts?

Наверняка этот скрипт из текста и этих шрифтов собирал всё.

Для Legend of Korra это всё не подходит, к сожалению. У меня ничего не получилось с ним.

А прога там на питоне и запакована ещё хитро, хотя лично мне это все равно бы не помогло, если бы и был исходник .py

Тот кто делал mcdtool для MGGR наверняка смог бы разобраться т.к. тут одного поля ягоды. Но, не факт, что захочет переделывать скрипт под Корру.

И очень мало человек, кто это вообще сможет сделать, как мне кажется

Изменено пользователем Krent

Поделиться сообщением


Ссылка на сообщение

Руссификатор Legend of Korra v0.2

https://yadi.sk/d/5uCF3kg-qaPPz

Выкладываю то, что сделано на данный момент. Руссифицирует только видеоролики (субтитры, хардсаб)

698f2dfebbe5.png

Вот отдельно от игры, обычным видео для просмотра в плеерах https://yadi.sk/d/ruU8H1Poqc4sY (MKV, 5.1 звук, eng+rus сабы).

Может, кому-то понадобятся

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

 

Spoiler

Музыка и озвучка в формате wem. Он конвертится через bnkextr.exe и можно в нете найти скрипт wem2wav - подойдет. Обратно конвертится через Wwise_v2015.1.5. В стиме куча разных FAQ и мануалов, во многих играх этот wem используется, включая Killing Floor 2

Видео в формате USM. На ютубе у какого-то чувака есть ролик, как это видео перекодить это в MKV через Winamp и FFMPEG. Довольно сложным может показаться для того, у кого не достаточно технических навыков работы с коммандной строкой и т.п.

Обратно кодится через Scaleform VideoEncoder. Гуглится, хоть и не на каждом углу лежит.

Небольшая проблема в том, что звук 6-канальный. Нужно wav'ки через FFMPEG разрезать на 6 mono, лучше написать для этого скрипт. В архив я положил скрипты, которые разрезают wav на шестиканальный, либо конвертят в стерео.

Или вообще взять уже законверченные мной видеоролики. Можно смикшировать 6-канальный в стерео, в игре будут такие работать.

Остальные форматы, как в MGRR.

mgrrtools, MGGRTools_Performer, DTT2DDS, cpk_unpack и т.п.

Шрифты там свои. flatz выложил исходники mgrrtools. На всякий случай, зеркало: https://yadi.sk/d/FVwj8EgMqGx7s Могут пригодится разобрать .mcd файлы.

Все проги для Legend of Korra в одном архиве:

https://yadi.sk/d/SDCXmKgEqaPU3

А в этом архиве переконверченные видеоролики, субтитрыr к ним (в понятных форматах) и таблица с внутриигровыми диалогами (и сами диалоги):

https://yadi.sk/d/ezLnrtQjqaUP4

То, что переводил я - CC-BY, используйте как хотите (с оглядкой на оригинальные права, конечно).

У меня затык произошел с переводом Iroha (продавец в магазине). Когда вставляешь его файлы озвучки, то она всё равно не меняется в игре. Он говорит пару секунд по-аглийски, а потом затыкается. Даже если удалить вообще его файлы озвучки, все равно произносит пару сек.

Возможно, в файле проекта Wwise это всё просто, но его нет. Может, там стоит какой-то спецэффект эха или ещё что. Нужно очень ломать голову, почему она не проигрывается и где спрятана остальная озвучка. Учитывая незамысловатость и простоту самой игры и её непопулярность (в теме никто даже не отписался), не стоит выделки.

Сюжет же можно понять из руссифицированных видеороликов.

Вот отдельно, частично переведенные, субтитры к диалогам игры: https://drive.google.com/open?id=1uUO2KEMoo...fx0kDh9_4yhyAiQ

Кому любопытно о чем там в игре болтают, но не понимает англ или интерестно почитать, то может посмотреть.

Изменено пользователем Krent

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: 0wn3df1x
      Smushi Come Home

      Жанр: Приключение Платформы: PC Разработчик: SomeHumbleOnion Издатель: Mooneye Studios Дата выхода: 10 июня 2023 Движок: Unity  
      У игры 1092 отзыва, 99% из которых положительные.
      Игра занимает 14 место среди самых популярных игр 2023-го года без русского языка по версии SteamDB.
    • Автор: mercury32244

      Дата выхода: 10.07.2018 
      Жанр: jRPG 
      Разработчик: Media Vision 
      Издательство: Sega
      За не имением кодера и по желанию переводчика, который переводил данный проект, проект данной группой больше не ведётся. Все вопросы по проекту можете задать непосредственно @Estery


Zone of Games © 2003–2024 | Реклама на сайте.

×