
hhr
Пользователи-
Публикации
118 -
Зарегистрирован
-
Посещение
Все публикации пользователя hhr
-
прогнал все версии игры, начиная с ГОГовского инсталятора 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-ах, "ищите, да обрящете" ;). японский кусочек показывает, что какие-то подвижки для более "правильной" локализации хотя бы были в задумках, но как оно там работает - непонятно.
-
сначала картинки: . то ли я что-то раньше делал не так, то ли с последним патчем добавили таки поддержку нескольких *.PAK файлов, но теперь не нужно перепаковывать основной архив, достаточно засунуть только измененные файлы в новый .PAK. вот маленький пример — DATA2.PAK, можно распаковать и ознакомиться. добавлены пара от балды взятых TTF-шрифтов (Cuprum и Neucha), поправлены шрифтовые конфиги, изменены пару строк в главном меню и в самом первом сюжетном диалоге. теперь о грустном. с этими шрифтами в главном меню (MAINMENU.DAT) подхватывается только изменения в CP1251-кодировке, юникод просто отображается пробелами. а вот в диалогах (INTROHAIL.DAT) даже единственный символ за пределами стандартной латиницы приводит к моментальному вылету, зато юникод работает прекрасно. в продолжении грустного — выложенный выше AutoIT-ный конвертер не работает с юникодом. действительно ли проблема в шрифтах и не уйдет ли она при использовании правильных растровых шрифтов — я хз. в принципе, шрифтовые дескрипторы (*.FONTDEF) достаточно тривиальные, простейшим скриптом можно сконвертировать из результатов BMFont-а.
-
распаковка, обратная упаковка, тестовый конвертер .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
-
да все получается. только как распространять готовый перевод? в виде перепакованного архива на 1.5 Гб или в виде набора утилит для самостоятельной распаковки/упаковки и пары сотен переведенных файлов? нужно чтобы игра принимала хотя бы распакованные ресурсы или более одного архива. зачатки локализации пока что представлены в виде абы каких японских ttf-шрифтов и заготовки в виде "английская строка = японская строка" с целой одной переведенной строчкой. которую, к тому же невозможно задействовать.
-
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, с абсолютно одинаковыми траблами...
-
в целом, формат не особо хитрый: 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, то его содержимое читается, но не используется, то есть опять вылетает. остается только полная перепаковка, что есть дикий изврат...
-
поищите это слово в охотничьих магазинах или на сайтах про оружие, его там предостаточно.
-
игра целиком и полностью на .Net, все языковые ресурсы лежат в dll-ках, кроме оригинального английского, который и вовсе зафигачен в ресурсы экзешника. в теории можно декомпилировать, к примеру, немецкую локализацию и всунуть перевод туда. шрифты же открыто валяются в количестве 4-х штук, все одинаковые за исключением цвета (ужас-ужас). соорудил генерилку из TTF, https://github.com/hhrhhr/Lua-utils-for-Space-Engineers, инструкция там же.
-
вот полностью корректная строка [68] - http://zalil.ru/34811555 , забиты все 255 возможных символов. текст переглючило только из-за неправильной кодировки. попробуйте Akelpad, открыть в нем файл Info.xml, в строке статуса будет UTF-8, ПКМ по этому полю, "Сохранить как -> 1251 (ANSI Кириллица)", только после этого редактировать и сохранять снова.
-
\DLC\Characters\Abby\Info.xml изначально сохранен в UTF-8, нужно в первой строке указать правильную кодировку (encoding="CP1251") и пересохранить в CP1251. плюс в файле с переводом (text_new.txt) посмотрите в самый конец строки [68], часть русских букв отсутствует, надо вписать "недостающие" (ГД МНО РСТ...): 68 [ 69461176] = ______—_________________________ !"_$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_Ђ_‚ѓ„…______Њ____‘’””•–—?™__њ___ _ўЈ¤Ґ__Ё©Є__®_°____µ_·___»јЅѕїАБВ__ЕЖЗИЙКЛ___П____Ф____Щ_ЫЬ___абв___жзийкл__оп____ф____щ_ыь___
-
предполагаю что в \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" <-- !!!...
-
народы, я собрал в кучу скриптики и примеры шрифтов, теперь лежат на гитхабе (https://github.com/hhrhhr/Lua-utils-for-How-to-Survive , справа кнопочка Download as Zip), там же краткая инструкция по самостоятельной сборке. начались выходные и мне будет не до сборки переводов.
-
опять для Common_PC.fre — http://zalil.ru/34802076, я там убрал точку в "Урон +50.", подправил пару ошибок и добавил пропавшие строки: - 6 [ 0] = + 6 [ 0] = =...- 10 [ 0] = + 10 [ 0] = '...- 68 [ 69461176] = ______—_________________________ !"_$%&'()*+,-./0123456789:;<+ 68 [ 69461176] = ______—_________________________ !"_$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_Ђ_‚ѓ„…______Њ____‘’“”•–—?™__њ___ _ўЈ¤Ґ__Ё©Є__®_°____µ_·___»јЅѕїАБВ__ЕЖЗИЙКЛ___П____Ф____Щ_ЫЬ___абв___жзийкл__оп____ф____щ_ыь___ последнее это одна длинная строка.
-
можно глобально "хакнуть" размер шрифта чтобы он не так сильно уменьшался. в скрипте step_2_1_font_compose.lua есть такие строки: то есть четверка чисел для первого и второго шрифта. первое из них (49 и 31) как-то влияет на общий размер, вот результат для значений 39-49-59 (-10, оригинал, +10): ...... вырезка (в первой картинке длинная строка "уменьшилась" из-за невлезания): ширина уменьшается значительно, высота чуть меньше. если будет использован другой шрифт (а не "мой" Neucha ;) то эту цифру надо будет подбирать.
-
других вариантов не получается. да, каким образом "Blueprint" могло превратиться в "Голубое растение"? ;)
-
блин... оказался тупой косяк в цикле, в файлике 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. ах да, замечания по переводу: - там где в оригинале заглавные буквы, то и в переводе должны быть заглавные, иначе пункты главного меню выглядят странно, названия предметов тоже. - длинные описания "режутся", то есть шрифт уменьшается чтобы влезть в отведенное место.
-
имена вроде нормальные: если использовать один шрифт "два раза", то все действительно становится нормально. для проверки заменил в дескрипторе второго шрифта все символы на букву "Щ", но в игре все осталось хорошо. какой-то косяк получается, используются 2 текстуры но положение символов берется только из первой. однако оригинальные текстуры различаются даже шириной символов, не то что положением...
-
вставить не проблема, xdelta патч для французского варианта: http://zalil.ru/34799997 (225 Кб) xdelta -d -s old_Common_PC.fre Common_PC.fre.patch new_Common_PC.fre проблема во втором наборе шрифтов: в переводе это значит "Нажмите любую клавишу, чтобы начать." этот шрифт не так часто используется, но все же. p.s. в выложенном варианте я использовал шрифт Neucha (ну очень он мне нравится), однако игра не поддерживает хинтинг, поэтому некоторые буквы "слипаются" ;)
-
то есть лучше париться с копипастой спецсимволов, номеров и айдишников, чем один раз сделать по-нормальному?
-
тут глянул в языковой файл от X-ящика, оказалось что первая часть (919 файлов) это озвучка. в xbox–версии это обычный RIFF контейнер (правда у меня на нашлось кодеков для него), а в PC–версии — несжатый поток. формат простой: int size;int sampleRate;int bitsPerSample;int channels;char data[size]; может кто еще и звуковой перевод намутит ;)
-
ругается на то, что в "строке" нулевого размера встретилось неположенное число, так быть не должно. у тебя файлик точно оригинальный / неизмененный? проверь на другом языке, который точно не "исследовался" ;)
-
криво? давай сравнивать вывод: 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 строк (на одну ошибся ;)
-
3919 строк с хоть каким-то текстом, они извлекаются, остальные 3898 — пустые строки. p.s. интересно, когда-нибудь придет понимание того что нота есть самый неподходящий и неудобный ресурс для работы с часто изменяющимся текстом?
-
у "меня" текст выглядит так: ...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 минут.
-
ну вот как-то так: очередной набор, все скриптики на некомпилированной 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 вроде все.