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

hhr

Пользователи
  • Публикации

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

  • Посещение

Все публикации пользователя hhr

  1. Rebel Galaxy

    прогнал все версии игры, начиная с ГОГовского инсталятора setup_rebel_galaxy_2.0.0.1.exe и заканчивая четвертым патчем (2.2.0.5), ошибок не встретил. если Lua и либы взяты из сторонних источников, то пробуйте использовать готовый комплект lua531_zlib_lfs_x64.zip (на гитхабе). указанная ошибка произрастает не из Lua, а из lz-либы, данную строку можно закомментировать, но этот файлик, скорее всего, окажется битым. еще можно проверить offzip-ом: offzip.exe -s "Rebel Galaxy\PAKS\DATA.PAK" . 121655...- seek offset: 0x0001db37 (121655)+------------+-----+----------------------------+----------------------+| hex_offset | ... | zip -> unzip size / offset | spaces before | info |+------------+-----+----------------------------+----------------------+ 0x0001db3f- 1 valid compressed streams found... если найденный файлик будет иметь смещение отличное от 0x0001db3f, значит DATA.PAK почему-то попортился. возможно распаковать ресурсы, изменить их и сделать "патч". каждая строка имеет свой уникальный идентификатор, поэтому переводить можно уже сейчас. правда, утилитка rebelgalaxy_export.exe выводит только голые строки, могу только посоветовать "свой" dat2txt.lua. в начале там как раз идет словарь в виде "[ключ]='значение'", его можно будет легко внедрить обратно. а та дикая мешанина, что идет после словаря, позволит понять хотя бы порядок фраз и их назначение (в смысле, что нужно переводить, а что трогать вообще не стоит). все в .dat-ах, "ищите, да обрящете" ;). японский кусочек показывает, что какие-то подвижки для более "правильной" локализации хотя бы были в задумках, но как оно там работает - непонятно.
  2. Rebel Galaxy

    сначала картинки: . то ли я что-то раньше делал не так, то ли с последним патчем добавили таки поддержку нескольких *.PAK файлов, но теперь не нужно перепаковывать основной архив, достаточно засунуть только измененные файлы в новый .PAK. вот маленький пример — DATA2.PAK, можно распаковать и ознакомиться. добавлены пара от балды взятых TTF-шрифтов (Cuprum и Neucha), поправлены шрифтовые конфиги, изменены пару строк в главном меню и в самом первом сюжетном диалоге. теперь о грустном. с этими шрифтами в главном меню (MAINMENU.DAT) подхватывается только изменения в CP1251-кодировке, юникод просто отображается пробелами. а вот в диалогах (INTROHAIL.DAT) даже единственный символ за пределами стандартной латиницы приводит к моментальному вылету, зато юникод работает прекрасно. в продолжении грустного — выложенный выше AutoIT-ный конвертер не работает с юникодом. действительно ли проблема в шрифтах и не уйдет ли она при использовании правильных растровых шрифтов — я хз. в принципе, шрифтовые дескрипторы (*.FONTDEF) достаточно тривиальные, простейшим скриптом можно сконвертировать из результатов BMFont-а.
  3. Rebel Galaxy

    распаковка, обратная упаковка, тестовый конвертер .dat-файлов — https://github.com/hhrhhr/Lua-utils-for-Rebel-Galaxy (прим. файлы создаются с префиксом типа, что-то вроде XX_имяфайла, где XX — число. нужно для обратной упаковки, ибо только по расширению указать тип ресурса не совсем возможно). про шрифты. самое простое — похимичить с файлами MEDIA\FONTS\*.FONTDEF, конкретно нужны DUAL.FONTDEF и TRIVIAL.FONTDEF. изначально они настроены на растровые текстуры, но можно переключить на использование TTF-шрифтов. пример для DUAL: Verdana{ type truetype source media/fonts/verdana.ttf size 16 resolution 1024 antialias_colour true code_points 32-126 192-255 1025 1040-1103 1105} как я не пытался, но UTF-8 игра отказывается жрать, рисует просто пробелы. поэтому остается только использовать однобайтовую CP1251 кодировку, комплектный шрифт VERDANA.TTF с вышеприведенным конфигом выглядит вот так: честно говоря, выглядит хреновенько, можно попробовать поиграться в конфиге с размером шрифта (size) и размером текстуры (resolution). так как текстуру эту нельзя увидеть, то непонятно что происходит с символами, которые не помещаются. если с юникодом ни у кого не получится, то для экономии размера нужно отредактировать список глифов до code_points 32-126 192-255
  4. Rebel Galaxy

    да все получается. только как распространять готовый перевод? в виде перепакованного архива на 1.5 Гб или в виде набора утилит для самостоятельной распаковки/упаковки и пары сотен переведенных файлов? нужно чтобы игра принимала хотя бы распакованные ресурсы или более одного архива. зачатки локализации пока что представлены в виде абы каких японских ttf-шрифтов и заготовки в виде "английская строка = японская строка" с целой одной переведенной строчкой. которую, к тому же невозможно задействовать.
  5. Rebel Galaxy

    p.s. полная распаковка и удаление *.PAKS, увы, тоже не помогает. часть файлов подхватывается, однако чуть ли не треть остальных кроме как из архива читаться не желают... в плане вероятного перевода все очень грустно. текстовые строки впихнуты в конфиги, интерфейс, скрипты (если их можно так назвать), модели, в общем не лежат где-то в одном месте, а равномерно распределены в нескольких сотнях файлов. файлы эти, с типом 15 и (обычно) с раширением .DAT нечто вроде бинарного XML-конфига: char magic[1]; // 0x06uint32 dict_sz; // size of dictionary{ uin32 idx; uint16 len; char str[len];}; // * dict_szvoid read_value() { uint32 name; // see dict uint32 type; // 1-int, 2-float, 5-string from dict, 6-float... char value[4] // convert to needed type}void read_tag() { uint32 tag; // see dict uint32 var_count; for (i=0; i<var_count; i++) read_value() uint32 tag_count; for (i=0; i<tag_count; i++) read_tag()}read_tag(); довольно понятный пример для изучения: файлик в каталоге игры ...\Rebel Galaxy\MEDIA\UI\initialloading\loading.dat это "расшифрованный" конфиг, а распакованный из архива \MEDIA\UI\INITIALLOADING\LOADING.DAT — его бинарное представление. правда, не полностью идентичное, но для знакомства пойдет. вот еще парочка "почти" конвертированных конфигов. самый прикол в том, что словарь в игре, похоже, единый, поэтому чтобы в именах тегов/параметров не было числовых идентификаторов типа $12345678 нужно парсить абсолютно все файлики. для полного счастья довольно много этих идентификаторов живут только в экзешнике. мораль: с переводом будет жутчайший гемор при обновлении игры, которая до кучи еще и в Гринлайте. плюс имеется мешанина из векторных и растровых шрифтов. плюс названия файлов в UTF16LE и в то же время весь текст в однобайтовой кодировке. и ведь эти люди когда-то делали Torchlight, с абсолютно одинаковыми траблами...
  6. Rebel Galaxy

    в целом, формат не особо хитрый: char header[6] = "\x01\x00\x00\x00\x00\x00";uint32 filenames_offset;uint32 flags; // 0x01000080{ uint32 size; uint32 zsize; char data[zsize]; // packed}; // * count of filesuint32 entries; // number of all dirs & filesuint32 count;for (i=0; i<count; i++) { uint16 len; char rootname[len*2]; // UTF16LE name of directory uint32 count; for (j=0; j<count; j++) { uint32 crc; // CRC32 of unpacked data uint8 type; // 8 - directory, 3 - DDS, 4 - image, 13 - font... uint16 len; char name[len*2]; // UTF16LE uint32 offset; // absolute uint32 zsize; // unpacked size (!!!) if (8 == type) // mkdir(rootname + name); else // savefile(rootname + name, offset) }} разобрать/собрать особых проблем нет. контрольные суммы игрой не проверяются, можно везде нули вписать. несжатый размер в секции файловых заголовков дофига раз не совпадает с реальным (помечен как !!!), типа запакован файлик в 17 байт, а в заголовке он фигурирует как ~600 байт. если в DATA.PAKS тупо переименовать (к примеру) MAINMENU.DAT в MAIN1111.DAT, то игра вылетает несмотря на наличие распакованного файла лежащего в MEDIA. но если предварительно скопировать DATA.PAKS в DATA2.PAKS, то отсутствующий файл берется из второго архива, игра запускается. далее затык :( если создать DATA2.PAKS с одним единственным MAINMENU.DAT, то его содержимое читается, но не используется, то есть опять вылетает. остается только полная перепаковка, что есть дикий изврат...
  7. How to Survive

    поищите это слово в охотничьих магазинах или на сайтах про оружие, его там предостаточно.
  8. Space Engineers

    игра целиком и полностью на .Net, все языковые ресурсы лежат в dll-ках, кроме оригинального английского, который и вовсе зафигачен в ресурсы экзешника. в теории можно декомпилировать, к примеру, немецкую локализацию и всунуть перевод туда. шрифты же открыто валяются в количестве 4-х штук, все одинаковые за исключением цвета (ужас-ужас). соорудил генерилку из TTF, https://github.com/hhrhhr/Lua-utils-for-Space-Engineers, инструкция там же.
  9. How to Survive

    вот полностью корректная строка [68] - http://zalil.ru/34811555 , забиты все 255 возможных символов. текст переглючило только из-за неправильной кодировки. попробуйте Akelpad, открыть в нем файл Info.xml, в строке статуса будет UTF-8, ПКМ по этому полю, "Сохранить как -> 1251 (ANSI Кириллица)", только после этого редактировать и сохранять снова.
  10. How to Survive

    \DLC\Characters\Abby\Info.xml изначально сохранен в UTF-8, нужно в первой строке указать правильную кодировку (encoding="CP1251") и пересохранить в CP1251. плюс в файле с переводом (text_new.txt) посмотрите в самый конец строки [68], часть русских букв отсутствует, надо вписать "недостающие" (ГД МНО РСТ...): 68 [ 69461176] = ______—_________________________ !"_$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_Ђ_‚ѓ„…______Њ____‘’””•–—?™__њ___ _ўЈ¤Ґ__Ё©Є__­®_°____µ_·___»јЅѕїАБВ__ЕЖЗИЙКЛ___П____Ф____Щ_ЫЬ___абв___жзийкл__оп____ф____щ_ыь___
  11. How to Survive

    предполагаю что в \SteamApps\common\How to Survive\DLC\Characters\Abby\Info.xml \SteamApps\common\How to Survive\DLC\Characters\Abby\DLC_01\Info.xml \SteamApps\common\How to Survive\DLC\Characters\Abby\Online\Info.xml и так далее. DLC_01 - перс в костюме пожарника, Online - модель для сетевой игры, короче сделано как-то криво ;) <player_info mesh_file="Abby.cmh" anim_file="../mocapAbby.big"... char_name="Abby" <-- !!!...
  12. How to Survive

    народы, я собрал в кучу скриптики и примеры шрифтов, теперь лежат на гитхабе (https://github.com/hhrhhr/Lua-utils-for-How-to-Survive , справа кнопочка Download as Zip), там же краткая инструкция по самостоятельной сборке. начались выходные и мне будет не до сборки переводов.
  13. How to Survive

    опять для Common_PC.fre — http://zalil.ru/34802076, я там убрал точку в "Урон +50.", подправил пару ошибок и добавил пропавшие строки: - 6 [ 0] = + 6 [ 0] = =...- 10 [ 0] = + 10 [ 0] = '...- 68 [ 69461176] = ______—_________________________ !"_$%&'()*+,-./0123456789:;<+ 68 [ 69461176] = ______—_________________________ !"_$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_Ђ_‚ѓ„…______Њ____‘’“”•–—?™__њ___ _ўЈ¤Ґ__Ё©Є__­®_°____µ_·___»јЅѕїАБВ__ЕЖЗИЙКЛ___П____Ф____Щ_ЫЬ___абв___жзийкл__оп____ф____щ_ыь___ последнее это одна длинная строка.
  14. How to Survive

    можно глобально "хакнуть" размер шрифта чтобы он не так сильно уменьшался. в скрипте step_2_1_font_compose.lua есть такие строки: то есть четверка чисел для первого и второго шрифта. первое из них (49 и 31) как-то влияет на общий размер, вот результат для значений 39-49-59 (-10, оригинал, +10): ...... вырезка (в первой картинке длинная строка "уменьшилась" из-за невлезания): ширина уменьшается значительно, высота чуть меньше. если будет использован другой шрифт (а не "мой" Neucha ;) то эту цифру надо будет подбирать.
  15. How to Survive

    других вариантов не получается. да, каким образом "Blueprint" могло превратиться в "Голубое растение"? ;)
  16. How to Survive

    блин... оказался тупой косяк в цикле, в файлике step_2_1_font_compose.lua (для обоих шрифтов использовался один дескриптор). перевыкладывать не буду, надо одну строчку исправить: 10: for j = 1, 2 do11: -- read .fnt-12: local r = assert(io.open(dir .."/font_new_1.fnt"))+12: local r = assert(io.open(dir .."/font_new_" .. j .. ".fnt")) теперь со шрифтами все более-менее нормально. новый патч (для xdelta) - http://zalil.ru/34800204 шрифты - http://zalil.ru/34800206 p.s. ах да, замечания по переводу: - там где в оригинале заглавные буквы, то и в переводе должны быть заглавные, иначе пункты главного меню выглядят странно, названия предметов тоже. - длинные описания "режутся", то есть шрифт уменьшается чтобы влезть в отведенное место.
  17. How to Survive

    имена вроде нормальные: если использовать один шрифт "два раза", то все действительно становится нормально. для проверки заменил в дескрипторе второго шрифта все символы на букву "Щ", но в игре все осталось хорошо. какой-то косяк получается, используются 2 текстуры но положение символов берется только из первой. однако оригинальные текстуры различаются даже шириной символов, не то что положением...
  18. How to Survive

    вставить не проблема, xdelta патч для французского варианта: http://zalil.ru/34799997 (225 Кб) xdelta -d -s old_Common_PC.fre Common_PC.fre.patch new_Common_PC.fre проблема во втором наборе шрифтов: в переводе это значит "Нажмите любую клавишу, чтобы начать." этот шрифт не так часто используется, но все же. p.s. в выложенном варианте я использовал шрифт Neucha (ну очень он мне нравится), однако игра не поддерживает хинтинг, поэтому некоторые буквы "слипаются" ;)
  19. How to Survive

    то есть лучше париться с копипастой спецсимволов, номеров и айдишников, чем один раз сделать по-нормальному?
  20. How to Survive

    тут глянул в языковой файл от X-ящика, оказалось что первая часть (919 файлов) это озвучка. в xbox–версии это обычный RIFF контейнер (правда у меня на нашлось кодеков для него), а в PC–версии — несжатый поток. формат простой: int size;int sampleRate;int bitsPerSample;int channels;char data[size]; может кто еще и звуковой перевод намутит ;)
  21. How to Survive

    ругается на то, что в "строке" нулевого размера встретилось неположенное число, так быть не должно. у тебя файлик точно оригинальный / неизмененный? проверь на другом языке, который точно не "исследовался" ;)
  22. How to Survive

    криво? давай сравнивать вывод: d:\HtS_work>lua step_1_1_lang_decompose.lua Common_PC.eng workeng 1382345183, (1548484608); 0 ( 919), 21516848 ( 739), 291108 ( 7816), 2627912 ( 2),part 1 offset: 56, size: 96435130, name: work/part_1.binpart 2 offset: 96435186, size: 21519804, name: work/part_2.binpart 3 offset: 117954990, size: 291108, name: work/part_3.binpart 4 offset: 118246098, size: 2627912, name: work/part_4.bind:\HtS_work>lua step_1_2_text_extract.lua workd:\HtS_work> на выходе получается text_orig.txt размером 192670 байт, 3918 строк (на одну ошибся ;)
  23. How to Survive

    3919 строк с хоть каким-то текстом, они извлекаются, остальные 3898 — пустые строки. p.s. интересно, когда-нибудь придет понимание того что нота есть самый неподходящий и неудобный ресурс для работы с часто изменяющимся текстом?
  24. How to Survive

    у "меня" текст выглядит так: ...7598 [ 43647172] = PC_INV_L7601 [ 68956080] = Use ¤PC_UP, ¤PC_DOWN, ¤PC_LEFT and ¤PC_RIGHT to move. ¤PC_AIM and ¤PC_SHOOT to shoot.7603 [1917874027] = Press the ¤PC_MAP button to open the map and see your objective(s).7604 [ 7] = Press the ¤PC_RUSH button to run.... пустые строки пропущены, при обратной сборке они добавляются сами. если дадите готовый файл с нетронутым порядком строк, то перекинуть готовый перевод под этот формат — дело 5-10 минут.
  25. How to Survive

    ну вот как-то так: очередной набор, все скриптики на некомпилированной Lua, сама Lua в комплекте последовательность запуска: lua step_1_1_lang_decompose.lua полный_путь_к_Common_PC.eng [рабочий_каталог]lua step_1_2_text_extract.lua [рабочий_каталог]lua step_1_3_font_decompose.lua [рабочий_каталог]... переводим ...... шрифтуем ...lua step_2_1_font_compose.lua [рабочий_каталог]lua step_2_2_text_convert.lua [рабочий_каталог]lua step_2_3_lang_compose.lua [рабочий_каталог] описание: раздербанивает файл на несколько частей. если рабочий_каталог не задан, то все кидает в текущий. каталог должен быть создан до запуска. конвертирует текст в CP1250 кодировку. вытаскивает шрифты и их дескрипторы ручками копируем text_orig.txt в text_new.txt, переводим, сохраняем в CP1251. первый номер в строке, числа в [xxx] не трогаем, строка начинается сразу после " = ". также нельзя трогать слова в начале которых стоит спецсимвол "¤" ручками делаем пару шрифтов через BMFont, настройки: Charset=RUSSIAN; Outline=0; Equalize the cell height=1; Bit depth=32; Channels=outline, glyph, glyph, glyph; ширина/высота обязательно одинаковые. размер шрифта подбирать так, чтобы влезло на одну страницу. сохранять в текстовый .fnt. текстуру сохранить как 32-битный BMP (если в игре будут проблемы, то пересохранить с вертикальным отражением). скопировать текстуры и дескрипторы в рабочий каталог с именами font_new_(1|2).(bmp|fnt). пример готовых шрифтов. скрипт создаст файл part_4_new.bin с новыми шрифтами скрипт создаст файл part_3_new.bin с новым текстом окончательная сборка всего, выходное имя Common_PC.fre примечания: пример шрифтов для второго набора символов не работает, на экране каша и пустота (при запуске смотрите на "Press any key..." для ориентира). первый (основной) шрифт вроде более-менее подходит. не стоит разбирать собственноручно собранный языковой файл и что-то кроме английского варианта, таблица перекодировки "зашита" в step_1_2_text_extract.lua. в остальных языках на несколько символов больше и перекодировка плывет. подгонку шрифтов можно попробовать пофиксить в step_2_1_font_compose.lua вроде все.
Zone of Games © 2003–2025 | Реклама на сайте.

×