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

Shegorat

Технобоги
  • Публикации

    64
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем Shegorat


  1. Shegorat Ты уже второй день капитанишь. Вчера просвещал нас, что в игре уже есть кириллица, сегодня распаковываешь, то что уже давно распаковано. Завтра что ожидать? Туториал по запуску игры?

    Тихо, тихо. Иш как разбушевался...

    Ладно, не нужна помощь - так и скажи. Все, ухожу. У меня и так был тяжелый день, не хочу выслушивать еще и нападки со стороны виртуальных критиков...


  2. В версии от НеоГейма уж очень много промта, так что работа и в том, и в этом случае займёт примерно одинаковое время. Я к чему спрашиваю, по поводу перевода отдельных файлов. Меня смущает то, что некоторые реплики персонажей я в сюжетной части вообще не встречаю. Возможно, это реплики из вырезанного в PC-версии кооператива или мультиплеера? Если так, то зачем в несколько раз усложнять себе работу.

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

    Вот распакованный LANGUAGE.POD http://rghost.ru/52041912


  3. Thief1987, я так уж и понял, шрифты в W32ART02.POD. Пойду разберу COMMON.POD. Давай уж оптимизируем перевод под Steam версию. Но для этого нужен Haoose. Он писал VPatch.

    Как я понял субтитры в data\subtitle

    Но сначала нужно определиться будут ли здешний пользователи редактировать уже существующий перевод. Шрифты то уже подходят. Остался текст.

    В игре есть поддержка кириллицы и также есть "русская локаль", но там английский текст. Это все видно по выше приложенному файлу LANGUAGE.POD.

    thumb_4c88e4a923d6ea0e4f41d079234f9701.png

    Завтра-послезавтра может накидаю распаковщик/упаковщик.


  4. Shegorat Я в принципе посмотрел как сделали пираты, так как они сделать будет намного проще. Но в общем если сделаешь репакер, тоже хорошо)

    Для начала мне нужно скачать игру. А она качается в час по чайной ложке ~70 кб/с :russian_roulette:

    Ну или скиньте мелкие архивы - оригинальный и патченный.


  5. Технически - без проблем.

    Но во-первых вставлять руками ~150 файлов слишком скучно, во-вторых это не понадобится, потому что никто переводом заниматься не будет, текста там действительно много, в районе мегабайта.

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


  6. Я думаю буду делать 2 инсталятора, сабы и озвучка + сабы. Так что каждый выберет для себя оптимальный вариант.

    Я так понимаю проблем с утилиткой, для сборки-разборки текстов, не возникло?

    Если надо, могу помочь со сборкой инсталляторов - опыт в этом деле у меня есть, ну или по ссылке в подписи помогут.


  7. Пока было время чуток подправил шрифты. Но было бы лучше, если бы шрифты рисовал кто-то более опытный в этом деле.

    Как закончите переводить/редактировать пишите в личку - соберу бетку русификатора.

    А пока вот как выглядит текст в игре на данный момент.

     

    Spoiler

    75c6b35bdcd41927c473dce28a1e455c.jpeg049311d68e18f499457ad06732519069.jpeg4929d624b2dd0d01f8efe006b048b64f.jpegc9d13590dc72b322aa6035ae85b3ae8f.jpeg67e794d3fd31dacba557c253ac8e0a48.jpeg84c81f0b9080f33635fc6beabd4a1b2b.jpeg61afebcf50ce2d7fa5fcc75791a70efe.jpegb0bf80ef2791f2f2e32768174efc9b7f.jpeg966907e70b263cda5f63aa6902941b52.jpeg


  8. Вот это пока не знаю что, встречал единицы тоже, посмотри в ui_core_us, вот лог (unk1 - это как раз твой se_dummy):

    ...

    Разобрался, это индекс записи в сообщении.

    Угу, похоже на то.

    unk3, по всей видимости, тоже какой-то монотонно возрастающий индекс, правда, не пойму, почему он начинается с трех.

    Он не всегда начинается с 3-х и иногда скачет сразу на несколько значений вперед - к примеру тот же ui_core_us. Вечером еще поковыряю, ты пока оставь эти значения и делай распаковку/упаковку.


  9. Я всегда работаю с utf-8, не понял, с ним тоже косяки? Свою утилиту планирую доделать на выходных, если управишься быстрее - еще лучше, только скажи заранее, чтоб я зря время не терял.

    Только с charsetgen. Я думаю, что упаковку/запаковку должен делать один человек.

    Я разбираю ресурсы уже просто из интереса. Разбираюсь с последней таблицей, это таблица очередности вывода строк, больше пока ничего сказать не могу.

    Кстати, обнаружил, что записей ссылающихся на блоки тоже может быть несколько у строки с одним ID.

     

    Spoiler

     

    FSeek(hdr.offset_string_table);struct{  long s_offset;  long s_entrycount;  long s_unk3; // пока предполагаю, что это значение связано с последней таблицей  long s_id;  FSeek(s_offset);  struct   {    long se_offset;    long se_blockcount;    long se_dummy;  // = 0 dummy?    long se_totallength;    long se_fontid;    FSeek(se_offset);    struct    {      long   be_offset;      long   be_prev_block_len; // prev block length?      long   be_length;      long   be_length2; // = be_length+1      long   be_line_height;      long   be_dummy;    } block_entry[se_blockcount];  } string_entry[s_entrycount];} string_table[hdr.count_string_table];

     


  10. Могу вас обрадовать - игра хавает большие текстуры. Тестировал с текстурой 1024x512. Единственное - немного накосячил при запаковке, поэтому без пробелов.

     

    Spoiler

    97eb11a933a56e2b4254b84330ab4b41.png

    flatz

    charsetgen не распознает русские символы. Исходный файл в utf-8 кодировке, при других кодировках ругается.

    Выдираемый текст думаю лучше оформлять в теги аля bbcode, и значения подстановки также, к примеру [rep]code/kern[/rep].


  11. Не знаю, не смотрел еще, возможно это тупо просто смещение после буквы до начала следующей.

    Сомневаюсь, что это смещения. К примеру вот.

    ID 1985731027:         C    o    n    t    r    o    l    ,         i    t    '    s         R    a    i    d    e    n    .     0000 0000 0000 ffff 0000 fffe 0000 0000 0003 0000 ffff 0000 0000 0003 0000 fffe 0000 0000 ffff 0000 0000        I    '    m         o    n         t    h    e         g    r    o    u    n    d    .     0000 0000 0000 0003 0000 0000 0003 0000 0000 ffff 0003 ffff 0000 fffe ffff 0000 ffff 0000

     

    или

    ID 838574851:         O    r         O    c    t    o    C    a    m    o    ,         o    b    v    i    o    u    s    l    y    ,     0000 0000 0003 0000 0000 fffe ffff 0000 0000 ffff ffff 0000 0003 0000 0000 0000 0000 0000 ffff ffff 0000 0000 fffe        s    i    n    c    e         t    h    a    t         w    o    u    l    d         b    e         u    s    e     0000 0000 0000 ffff ffff 0003 0000 0000 0000 fffe 0003 0000 ffff ffff 0000 0000 0003 0000 ffff 0003 0000 ffff ffff

     


  12. Так я всю необходимую информацию уже описывал тут. Не уверен только за "старшую часть структуры", про которую ты говоришь, т.к. не очень понял, какую именно структуры ты имеешь ввиду. Как я уже писал, там есть таблица, отвечающая за координаты символов на текстуре, эти координаты представлены в виде UV-координат текстуры, поэтому нам нужно тупо взять u/v-коэффициенты, которые преобразовывают целочисленные пиксельные координаты (x,y) в UV-координаты (u,v): u_factor=1/texture_width, v_factor=1/texture_height, а далее тупо u=x*u_factor, v=y*v_factor, наоборот, я делал в обратном порядке. Только, если мне память не изменяет, нужно корректно округлять значения крайних пикселей, т.е. та координата, что меньше, должна быть округлена вниз, а та, что больше - вверх (вроде так, ну или наоборот). Текст кодируется просто - указываются индексы в этой таблице координат. Но там есть еще другая таблица - таблица кодов символов (codepoint), вот в ней содержится индекс символа из таблицы координат. Т.е. если ты хочешь узнать, какому коду символа соответствует символ с такой-то координатой, то смотришь в таблицу кодов символов, находишь тот, где индекс координаты совпадает и берешь индекс уже в этой таблице.

    Алгоритм конвертирования я представляю таким (скорее всего, его и использовали разработчики): берем кириллический шрифт, растеризуем его в общую текстуру, порядок расположения символов не так важен, далее проходимся по всем текстам, группируем линии в блоки символов (получается, что новая строка не входит в массив символов, а только лишь генерирует новый блок), в блоках символов выделяем все коды символов (codepoint), отсеиваем со всех блоков дубликаты кодов, создаем текстуру куска шрифта для данного текста, циклом перебираем все используемые коды и поочередно добавляем кусочек текстуры этой буквы из общей текстуры шрифта, генерируем u,v координаты из пиксельных координат на получившемся куске, записываем в таблицу координат, далее составляем таблицу кодов, пробегаясь опять по кодам символов, ищем соответствие в таблице координат, пишем его в структуру, а далее генерируем текстовые блоки - для каждого символа блока ищем соответствующий ему индекс в таблице координат, записываем в структуру и заполняем оставшиеся таблички в MCD (нижняя таблица вроде одинаковая, я не смотрел, что там, помимо кода текста).

    Кстати, как предлагал Thief1987 можно попробовать использовать одну общую текстуру на все тексты, так как возможно, что игра его съест тоже.

    Собственно мне было непонятно только про u,v-коэффициенты. Остальное я в принципе все разобрал, кроме последних таблиц.

    А говорил я про структуру текста, она ведь состоит из двух слов: младшее идентификатор символа, старшее я думаю что это флаг синхронизации с анимацией. К примеру после пробела он всегда равен 3. Но пока у меня нет игры, я не могу об этом судить.


  13. да, так гораздо лучше :happy: кто примерно знает когда будет готов русификатор? :happy:

    Ребят, ну как будет, так будет. Зачем торопить переводчиков?

    Лучше все-таки выложить бету и исправлять ошибки по ходу . Все-таки пропущенные буквы или одно слово в тексте -не так страшно . Там и самому додумать можно . Главное,чтобы основа была.

    Я без проблем могу собрать тестовый русик, там всего-то два файла. Мне просто нужно скинуть весь текст.


  14. Какая помощь нужна с разбором ресурсов, если они разобраны уже? И почему нет смысла переводить, я тоже не пойму. Запаковать обратно 100% реально, китайцы же сделали. Просто нужно этим заняться, написать обратную утилиту, попробовать CPK перепаковать (кстати, никто так и не попытался?), у меня пока на это нет времени, возможно у кого-то найдется.

    Я предлагаю немного разделить силы. Т.е. один разбирается с кодированием текста по таблице символов. Другой с текстурой и связанной с ним таблицей. Вот только я не понял каким образом ты предлагаешь переводить float в decimal.

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

    Насчет CPK, кажись был некий cpkmaker, я пока глянуть не могу, игра докачается часа через 3.


  15. Жесть адская, формат предусматривает возможность "переворачивания" структуры. Вот спарсил нормально: http://pastie.org/private/ers1npzgmimbffkczb6oa

    Переворачиваю, когда встретился символ перевода строки, но я думаю, что это плохой подход. Надо подумать, может как-то иначе проверять можно.

    А теперь другой баг всплыл - после переворота теряется первый символ с новой строки.

    Ты имеешь в виду записи, где второй long = 2? Это же количество лайнов/блоков/строк, т.е количество элементов в таблице по смещению. И переворачивать не нужно структуру, код 0x8000 одинарный. После него начинается следующий блок.

    struct {  long se_offset;  long se_blockcount;  long se_unk2;  // = 0 dummy?  long se_totallength;  long se_unk4;  // = 3  FSeek(se_offset);  struct  {    long   vl_offset;    long   vl_unk0; // prev block length?    long   vl_length;    long   vl_unk2; // = vl_length+1    int64  vl_unk3; // = 39  } lines[se_blockcount];} string_entry;

     

    Но я сужу по тем данным, что у меня есть. Самой игры у меня пока нет.


  16. Получилось))))

    Тоже хотел обрадовать. Правда я не досконально все разбирал и есть очень много неизвестных мне данных. Но я все это дело проворачивал на шаблоне 010 Editor и пока не решаюсь переводить на нормальный код.

    Пруф:

     

    Spoiler

    4736cdad74751a0c5a03361ab7be406b.jpeg[/post]


  17. Я промониторил по диагонали. Неправильно расположение будет по умолчанию, ибо количество символов разное в языках. Если только в каждой строке сидеть и считать. Но это еще муторнее, чем при парсинге

    Я немного про другое. Я про их группировку. Там же не только теги перевода строки, но еще и другие теги присутствуют, у которых параметры передаются после тега.

    Т.е к примеру

     

    было:  "some text.\\\some text"стало: "new some text.\\ new text\"

     

    И вот тут может быть ошибка, потому как в оригинале допустим

     

    было:  "some text.{$fffe}{$fff2}{$a9}some text"стало: "new some text.{$fffe}{$fff2} new text{$a9}"

     

    Тег {$fff2} имеет параметр {$a9}, и, если параметра нет, то будет ошибка при запаковке.

    И так около 300-350 строк было.

    Как-то так это все выглядит. Пока больше скриншотов не могу нащелкать.

     

    Spoiler

    Я менял шрифты, чтобы убрать межсимвольные интервалы. Их еще нужно будет подправить, аккуратнее сделать.


  18. Смотри личку

    Угу, ковыряю. Небольшая просьба - проверить расположение обратных слешей, я полчаса вылавливал избыточные слеши при обратном парсинге тегов и вот теперь вылавливаю их неправильное расположение при впихивании в игру.


  19. надеюсь многие будут согласны, что стиль оригинальных шрифтов игры сосет, может вставите в русификацию нечто более "строгое"? :victory:

    В чём проблема? PSD есть? Есть. Рисуем такие шрифты, какие хотим. Только сохраняем разметку и каждый символ отдельным слоем пожалуйста. Я туда просто забил Arial для теста.


  20. ну как бы: http://notabenoid.com/book/45638/

    меня вот что беспокоит в тексте начал встречать строки наподобие вот такой "Hey there! Йђ\". Эти сиволы ведь не должны встречаться. Проблем потом с запаковыванием не будет?

    Нет, проблем быть не должно. Ну или если и будут, то я это дело исправлю. Ведь по сути там в исходном файле записан не код символа как такового, а его номер в таблице шрифтов. Кстати, кто шрифты будет рисовать?


  21. Я в предидущем посте уже поправился:

    Извиняюсь, самое первое не прыг на начало текста, а тип фона под текстом.

    И еще:

    F2FF 0000 0000 - следующий фрейм отрисовки текста (сперва показан один текст, какое-то действие - показан второй... n-ный). Вторая двойка байт я не знаю что такое, а вот последняя, третья - число букв в строке.

    F4FF 0000 - Иконки кнопки клавиатуры, вторая пара байт - id иконки\кнопки. Обе пары байт не входят в расчет спец символов, они являются частью строки, и входят в расчет длинны строки. Нужно в текст сохранить вторую пару байт.

    Да, я не заметил. С утра как-то мозг отказывался работать. Саму игру я не запускал, основывался на субъективном разборе формата. Сейчас просмотрел еще раз. Я забыл обработать пустые значения, без них файл будет собран ошибочно. Да и внес некоторые правки в обработку спецсимволов.

    http://rghost.ru/50098257

    UPD: Все моя невнимательность :sorry: . Обновил файл, изменение небольшое, но могло помешать пакеру.

    http://notabenoid.com/book/45638/

    Правильно или нет?

    Я там не зареган, поэтому пока посмотреть не могу


  22. Spoiler

    f278f370e16d25f8eb383b7a6ca6c509.jpg[/post]

    Извиняюсь, самое первое не прыг на начало текста, а тип фона под текстом.

    Нет, число байт перед строкой фиксировано. Как бы то ни было вот текст http://rghost.ru/50087967 . Я быстренько пробежался по нему, вроде нет пропавших символов. Пакер пока не делал, но на основе тех данных, что я сохранил его можно сделать.

    P.S. Да, открывать лучше чем-нибудь вроде Notepad++.

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

×