![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Siberian GRemlin |
![]() ![]()
Сообщение
#1
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
В душевных метаниях наткнулся на новую игру, идея которой мне понравилась, и решил заняться её переводом в спокойной обстановке (её пока не спиратили [игра находится ещё в разработке] и как результат — в рунете о ней не знают, в том числе на ZoG → никто не будет клянчить сделать перевод быстрее, а «переводчики» не будут выпускать машинный перевод с правками). Т.о. мои стремления не улетучатся.
На последние кровные купил её несколько часов назад и чуток поковырялся. Текст без проблем можно редактировать (второй снимок, нижняя строка), но вот шрифты с наскоку взять не удалось. Шрифт представляет из себя текстуру с разметкой, и если с разметкой всё понятно, кроме пары значений, то с самой текстурой сложнее. Как я понял: после заголовка идёт сжатый zlib'ом блок графических данных, которые верно считать пока не удалось. Буду рад любым советам по обработке этой графики. Не исключено, что я где-то стормозил. Образцы. Добавлено. Подозреваю, что графические данные это тело DDS без заголовка. |
Grom PE |
![]()
Сообщение
#2
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 84 Регистрация: 7-February 08 Из: i@grompe.org.ru Пользователь №: 3,120 Спасибо сказали: 95 раз(а) ![]() |
Да, с подставленным заголовком DDS в расжатые zlib-данные показывает картинку. Тут либо DXT3, либо DXT5.
Спасибо сказали:
|
Siberian GRemlin |
![]()
Сообщение
#3
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Я опростоволосился: игра есть в свободном доступе.
|
Siberian GRemlin |
![]()
Сообщение
#4
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Что-то не могу подобрать верный заголовок .DDS — максимум показывает всё полотно синим или чёрным цветом.
Удалось выяснить, что текстура сгенерирована с помощью TexturePacker, судя по всему, в формате zlib compressed pvr (PowerVR) также известном как pvr.ccz либо в его модифицированном варианте, т.к. заголовок отличается. Пробовал сгенерировать любую текстуру, но в ней почему-то данные хранятся в другом виде, не похожем на DDS. Хотя, возможно, я чего-то не понимаю в современной графике. |
-=CHE@TER=- |
![]()
Сообщение
#5
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Скачать бесплатно, без регистрации и SMS: stex2dds.zip
Насчёт ширины/высоты (width/height) не уверен, потому что они там одинаковые (в .DDS просто сначала высота идёт, а уже потом ширина). dwName - имена людей (ANNA и т.п. - они разные), ну и ещё там пара полей фиг знает за что отвечающих. P.S. Как идут дела с первой Кирандией? Да, я такой. (*улыбается*) Спасибо сказали:
|
Siberian GRemlin |
![]()
Сообщение
#6
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
P.S. Как идут дела с первой Кирандией? Да, я такой. (*улыбается*) Пока не делал, но зато разобрался с размерами строк в стеке. Не знаю почему у меня были проблемы в то время с этим, сейчас изменил без проблем. Хочу пока что-нибудь новое сделать, а затем прошлые переводы обновить.Спасибо сказали:
|
Siberian GRemlin |
![]()
Сообщение
#7
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Насчёт ширины/высоты (width/height) не уверен, потому что они там одинаковые (в .DDS просто сначала высота идёт, а уже потом ширина). Какая-то чертовщина творится: просто открываю текстуру в «Photoshop» и пересохраняю (с разными параметрами пробовал), а у неё ширина уменьшается вдвое. ![]() У кого-нибудь есть идеи? |
-=CHE@TER=- |
![]()
Сообщение
#8
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Попробуй текстуру сначала в .TGA перегнать какой-нибудь внешней утилитой, а уже потом открывать, может так сработает.
Ибо формат .DDS такой "весёлый" (см. ссылки на MSDN в исходниках), что его каждый может как хочет трактовать и сохранять, так что там в заголовке практически ни на что полагаться нельзя. Я заполняю только минимально необходимые поля, чтобы оно корректно отображалось, возможно, необходимо что-то ещё. Я сам .DDS не смотрел (нечем), так что конвертировал его в .TGA, чтобы убедиться что всё ок. |
Axsis |
![]()
Сообщение
#9
|
Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 121 Регистрация: 6-February 08 Пользователь №: 374 Спасибо сказали: 149 раз(а) ![]() |
Та формат то нормальный, просто почти в каждой проге его поддержка реализована не на 100% - там поддерживаются одни фишки формата, а там - другие.
Например, столкнулся с необходимостью задать маску каналов - это чтобы не перетасовывать местами байты, когда порядок каналов, например, ABRG. Из просмотрщиков только IrfanView справился, и кажется, nvidia texture tools правильно перегнал в tga (но там только конвертер, просмотра нет). Ни XnView, ни Paint.NET, ни фотошоп с плагинами от той же nvidia, ни Imagine не смогли правильно отобразить такой файл - он либо не открывался совсем, либо каналы были перепутаны (то есть маска просто игнорировалась). А в DDS таких фишек, замечу стандартных и документированных, дофига, вот только не очень-то разработчики графических утилит смотрят в ту документацию... Наиболее адекватной и полной поддержкой, как мне показалось, обладают как раз утилитки от nvidia. Так что попробуй ими dds->tga и потом обратно. nvddsinfo из комплекта может показать специфическую информацию из заголовка в удобоваримой форме (можешь проверить что там у тебя фотошоп дописывает/не дописывает в заголовок) Сконвертировать текстуры бесплатно, без регистрации и SMS и без скачивания ![]() tex2dds.bms CODE IDstring "TEX " Set MEMORY_FILE compressed c3EJVqhhYGBgF+BgQAeMDKQBBSBmwadAAFMIAA== # DDS header ComType unzip_dynamic Get FNAME filename Get W short Get H short GoTo 0x14 Get ZSIZE long Get DATASIZE long PutVarChr MEMORY_FILE 0x0c H long PutVarChr MEMORY_FILE 0x10 W long PutVarChr MEMORY_FILE 0x14 DATASIZE long PutVarChr MEMORY_FILE 0x54 0x35545844 long # DXT5 Log MEMORY_FILE2 0 0x80 MEMORY_FILE Append CLog MEMORY_FILE2 0x20 ZSIZE DATASIZE Append String FNAME += ".dds" Math DATASIZE += 0x80 Log FNAME 0 DATASIZE MEMORY_FILE2 ну и convert_all.cmd CODE for %%I in (*.tex) do "c:\Program Files\QuickBMS\quickbms.exe" tex2dds.bms "%%I" . :: не потеряй точку в конце первой строки - её плохо там видно :) Спасибо сказали:
|
Siberian GRemlin |
![]()
Сообщение
#10
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Спасибо!
Разобрался с форматом и написал обратный упаковщик — игра кушает новый шрифт. Теперь художественная рутина предстоит. Нашёл все шрифты в векторе, и в один уже добавил 90% кириллицы. |
Siberian GRemlin |
![]()
Сообщение
#11
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Кривой шрифт (без сглаживания) и пока обрезанный текст (правка недекомпилированного LUA).
|
Siberian GRemlin |
![]()
Сообщение
#12
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Прошу подсказать, т.к. сам не нашёл. В версии для Windows используется что-то вроде двоичного LUA для хранения текста и пр., а в версии для Mac OS — в текстовом виде (неоткомпилированный). Причём версия для Win, его понимает. Проблема в том, что доступа к версии для Mac у меня есть, а сами файлы дал один из иностранцев.
Может кому-нибудь уже встречался такой формат? Декомпилятор его не понимает, да и компилятор создаёт выходной файл в другом виде. Образцы от обеих версий. |
-=CHE@TER=- |
![]()
Сообщение
#13
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Походу это LuaJIT:
_ttp://luajit.org Гугли "LuaJIT decompiler" или что-нибудь этакое. Нашёл вот это, но не пробовал: _ttp://github.com/bobsayshilol/luajit-decomp Спасибо сказали:
|
Siberian GRemlin |
![]()
Сообщение
#14
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
К сожалению, не то.
|
Siberian GRemlin |
![]()
Сообщение
#15
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
За два вечера написал генератор шрифтов, причём качество прорисовки получилось лучше чем в «Photoshop» и в разы быстрее мазохистского метода редактирование шрифта, которым я сделал шрифт в прошлом году. Да и текстурки получаются компактнее чем у разработчиков.
С (де)компиляцией данных LUA пока глухо. ![]() |
Axsis |
![]()
Сообщение
#16
|
Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 121 Регистрация: 6-February 08 Пользователь №: 374 Спасибо сказали: 149 раз(а) ![]() |
К сожалению, не то. Очень даже то ![]() То что это LuaJIT - это 100%, посмотрел в его исходниках формат raw-дампа bytecode - именно он (заголовок 0x1B, "LJ"). _ttp://wiki.luajit.org/Bytecode-2.0#LuaJIT-2.0-Bytecode-Dump-Format К декомпилятору есть пример. Угадай, по файлам из какой игры ![]() _ttps://github.com/bobsayshilol/luajit-decomp/wiki/Tutorial Так что копай дальше в этом направлении Спасибо сказали:
|
Siberian GRemlin |
![]()
Сообщение
#17
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Он, конечно, что-то декомпилирует, но вот названий переменных с текстом игры на выходе точно нет.
![]() Однако, компилировать верные файлы научился. Без декомпилятора получается нужен доступ к макинтошной версии. ![]() |
-=CHE@TER=- |
![]()
Сообщение
#18
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Заглянул на форум Xentax (кстати, они снова сделали регистрацию платной) и натолкнулся на вот такое: .luc decompiling - там всякие ссылки и документация на виртуальную машину Lua (если ещё актуально).
|
Siberian GRemlin |
![]()
Сообщение
#19
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Уже не актуально: разработчики в последних версиях стали класть чистый код.
|
Siberian GRemlin |
![]()
Сообщение
#20
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 221 раз(а) ![]() |
Доделал-таки перевод, а то когда разработчики игру забросили, желание пропало переводить.
Спасибо сказали:
|
![]() ![]() |
Упрощённая версия | Сейчас: 8th September 2024 - 11:38 |