Помощь - Поиск - Пользователи - Календарь
Полная версия: Spacebase DF9
CTPAX-X > Ресурсы > Ресурсы
Siberian GRemlin
В душевных метаниях наткнулся на новую игру, идея которой мне понравилась, и решил заняться её переводом в спокойной обстановке (её пока не спиратили [игра находится ещё в разработке] и как результат — в рунете о ней не знают, в том числе на ZoG → никто не будет клянчить сделать перевод быстрее, а «переводчики» не будут выпускать машинный перевод с правками). Т.о. мои стремления не улетучатся.

На последние кровные купил её несколько часов назад и чуток поковырялся. Текст без проблем можно редактировать (второй снимок, нижняя строка), но вот шрифты с наскоку взять не удалось. Шрифт представляет из себя текстуру с разметкой, и если с разметкой всё понятно, кроме пары значений, то с самой текстурой сложнее. Как я понял: после заголовка идёт сжатый zlib'ом блок графических данных, которые верно считать пока не удалось. Буду рад любым советам по обработке этой графики. Не исключено, что я где-то стормозил.

Образцы.

Добавлено.
Подозреваю, что графические данные это тело DDS без заголовка.
Grom PE
Да, с подставленным заголовком DDS в расжатые zlib-данные показывает картинку. Тут либо DXT3, либо DXT5.
Siberian GRemlin
Я опростоволосился: игра есть в свободном доступе.
Siberian GRemlin
Что-то не могу подобрать верный заголовок .DDS — максимум показывает всё полотно синим или чёрным цветом.

Удалось выяснить, что текстура сгенерирована с помощью TexturePacker, судя по всему, в формате zlib compressed pvr (PowerVR) также известном как pvr.ccz либо в его модифицированном варианте, т.к. заголовок отличается. Пробовал сгенерировать любую текстуру, но в ней почему-то данные хранятся в другом виде, не похожем на DDS. Хотя, возможно, я чего-то не понимаю в современной графике.
-=CHE@TER=-
Скачать бесплатно, без регистрации и SMS: stex2dds.zip
Насчёт ширины/высоты (width/height) не уверен, потому что они там одинаковые (в .DDS просто сначала высота идёт, а уже потом ширина).
dwName - имена людей (ANNA и т.п. - они разные), ну и ещё там пара полей фиг знает за что отвечающих.
P.S. Как идут дела с первой Кирандией? Да, я такой. (*улыбается*)
Siberian GRemlin
QUOTE(-=CHE@TER=- @ Dec 17 2013, 04:40) *
P.S. Как идут дела с первой Кирандией? Да, я такой. (*улыбается*)
Пока не делал, но зато разобрался с размерами строк в стеке. Не знаю почему у меня были проблемы в то время с этим, сейчас изменил без проблем. Хочу пока что-нибудь новое сделать, а затем прошлые переводы обновить.
Siberian GRemlin
QUOTE(-=CHE@TER=- @ Dec 17 2013, 04:40) *
Насчёт ширины/высоты (width/height) не уверен, потому что они там одинаковые (в .DDS просто сначала высота идёт, а уже потом ширина).
Какая-то чертовщина творится: просто открываю текстуру в «Photoshop» и пересохраняю (с разными параметрами пробовал), а у неё ширина уменьшается вдвое. blink.gif
У кого-нибудь есть идеи?
-=CHE@TER=-
Попробуй текстуру сначала в .TGA перегнать какой-нибудь внешней утилитой, а уже потом открывать, может так сработает.
Ибо формат .DDS такой "весёлый" (см. ссылки на MSDN в исходниках), что его каждый может как хочет трактовать и сохранять, так что там в заголовке практически ни на что полагаться нельзя.
Я заполняю только минимально необходимые поля, чтобы оно корректно отображалось, возможно, необходимо что-то ещё. Я сам .DDS не смотрел (нечем), так что конвертировал его в .TGA, чтобы убедиться что всё ок.
Axsis
Та формат то нормальный, просто почти в каждой проге его поддержка реализована не на 100% - там поддерживаются одни фишки формата, а там - другие.
Например, столкнулся с необходимостью задать маску каналов - это чтобы не перетасовывать местами байты, когда порядок каналов, например, ABRG. Из просмотрщиков только IrfanView справился, и кажется, nvidia texture tools правильно перегнал в tga (но там только конвертер, просмотра нет). Ни XnView, ни Paint.NET, ни фотошоп с плагинами от той же nvidia, ни Imagine не смогли правильно отобразить такой файл - он либо не открывался совсем, либо каналы были перепутаны (то есть маска просто игнорировалась). А в DDS таких фишек, замечу стандартных и документированных, дофига, вот только не очень-то разработчики графических утилит смотрят в ту документацию...
Наиболее адекватной и полной поддержкой, как мне показалось, обладают как раз утилитки от nvidia. Так что попробуй ими dds->tga и потом обратно. nvddsinfo из комплекта может показать специфическую информацию из заголовка в удобоваримой форме (можешь проверить что там у тебя фотошоп дописывает/не дописывает в заголовок)

Сконвертировать текстуры бесплатно, без регистрации и SMS и без скачивания biggrin.gif
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
Спасибо!
Разобрался с форматом и написал обратный упаковщик — игра кушает новый шрифт. Теперь художественная рутина предстоит. Нашёл все шрифты в векторе, и в один уже добавил 90% кириллицы.
Siberian GRemlin
Кривой шрифт (без сглаживания) и пока обрезанный текст (правка недекомпилированного LUA).
Siberian GRemlin
Прошу подсказать, т.к. сам не нашёл. В версии для Windows используется что-то вроде двоичного LUA для хранения текста и пр., а в версии для Mac OS — в текстовом виде (неоткомпилированный). Причём версия для Win, его понимает. Проблема в том, что доступа к версии для Mac у меня есть, а сами файлы дал один из иностранцев.

Может кому-нибудь уже встречался такой формат? Декомпилятор его не понимает, да и компилятор создаёт выходной файл в другом виде. Образцы от обеих версий.
-=CHE@TER=-
Походу это LuaJIT:
_ttp://luajit.org
Гугли "LuaJIT decompiler" или что-нибудь этакое.
Нашёл вот это, но не пробовал:
_ttp://github.com/bobsayshilol/luajit-decomp
Siberian GRemlin
К сожалению, не то.
Siberian GRemlin
За два вечера написал генератор шрифтов, причём качество прорисовки получилось лучше чем в «Photoshop» и в разы быстрее мазохистского метода редактирование шрифта, которым я сделал шрифт в прошлом году. Да и текстурки получаются компактнее чем у разработчиков.

С (де)компиляцией данных LUA пока глухо. sad.gif
Axsis
QUOTE(Siberian GRemlin @ Dec 25 2013, 21:36) *
К сожалению, не то.
Очень даже то smile.gif
То что это LuaJIT - это 100%, посмотрел в его исходниках формат raw-дампа bytecode - именно он (заголовок 0x1B, "LJ").
_ttp://wiki.luajit.org/Bytecode-2.0#LuaJIT-2.0-Bytecode-Dump-Format

К декомпилятору есть пример. Угадай, по файлам из какой игры biggrin.gif
_ttps://github.com/bobsayshilol/luajit-decomp/wiki/Tutorial
Так что копай дальше в этом направлении
Siberian GRemlin
Он, конечно, что-то декомпилирует, но вот названий переменных с текстом игры на выходе точно нет. sad.gif

Однако, компилировать верные файлы научился. Без декомпилятора получается нужен доступ к макинтошной версии. huh.gif
-=CHE@TER=-
Заглянул на форум Xentax (кстати, они снова сделали регистрацию платной) и натолкнулся на вот такое: .luc decompiling - там всякие ссылки и документация на виртуальную машину Lua (если ещё актуально).
Siberian GRemlin
Уже не актуально: разработчики в последних версиях стали класть чистый код.
Siberian GRemlin
Доделал-таки перевод, а то когда разработчики игру забросили, желание пропало переводить.
Это упрощенная версия форума. Для просмотра полной версии нажмите нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.