О переводе ресурсов игры в формате HEX

Список разделов Другое Оффтопик

Описание: Для общения на свободные темы.

Сообщение #1 Овцеухов » 08.05.2017, 22:09

Времени суток, обращаюсь сюда, ибо это волшебное место всегда помогало. Прост не представляю, с чего начать.
Положим, есть игра. В игре есть набор файлов с текстовыми ресурсами, которые спокойно видятся HEX-редакторами.
Вопросы. Как туда вмонтировать кириллицу, какой использовать редактор, и как это вообще делается?
Ну, хотя бы язык знаю.
Спойлер
Изображение
Овцеухов M
Автор темы
Аватара
Откуда: Каменнорожинск
Репутация: 14
С нами: 10 лет 10 месяцев

Сообщение #2 LUR » 09.05.2017, 00:19

Овцеухов, как человек, имеющий опыт в переводе foobar2000 на русский язык, могу дать пару советов.
Редактировать напрямую бинарные файлы в принципе можно... но!
1. Не факт, что программа сможет корректно отобразить кириллицу, все будет зависеть от внутренней кодировки строк и шрифтов, используемых в ней. В фубаре, к примеру, используется кодировка UTF-8 и системные шрифты по-умолчанию, так что проблем с отображением русского текста нет, слава богу.
2. Если программа написана на C/C++, то обычно строки представляют собой последовательность байт, заканчивающихся нулем (признак конца строки). В таких языках, как Паскаль (delphi) длина строки располагается в начале строки. В общем редактировать напрямую строки, это значит пытаться вщемить в уже существующую фиксированную длину строки перевод. Тут уж как повезет, либо хватит места либо не хватит, поэтому никто так в наше время и не делает. Более менее серьезный подход в данном случае использовать программы типа Radialix, которая поможет задать перевод любой длины тем, что сама выделит дополнительное пространство для строк и перенесет их туда, изменив ссылки в коде программы, то есть сделает за вас всю черную работу.
3. Бывает так, что программист напрямую в коде указывает длину строки. Это делается для безопасности, чтобы случайно не начать писать по недозволенным участкам памяти. Так вот в данном случае Radialix не справится. То есть справится, но программа будет отображать лишь часть строки, потому как ожидает строку той длины, что задал программист. Так в фубаре такие строки тоже встречаются. Тут придется уже лезть в код и самому исправлять длину строки, геморой еще тот, но может повезти, и такого не будет.
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца


Вернуться в Оффтопик