odysset
@odysset
Программист, немного музыкант и bmx'ер

Каким образом проанализировать структуру игровых файлов?

Возникла задача попробовать изменить облик игры "столетней давности", написана на RenderWare, но так как я практикую подобные занятия впервые, без напутствий опытных людей мне кажется не обойтись. Например, я хочу заменить текстуру какого либо объекта, как отловить момент ее загрузки и перехватить его и записать вместо нужно, например одноцветную для начала? И вообще, можно каким либо образом попробовать восстановить 3D модели игры, ведь записываются вершины в буфер всегда одинаковым образом. Я конечно может не совсем корректно выражаюсь, если кто знает, поделитесь опытом ну или стоящую статью или книгу укажите, или дайте вектор копательства.
  • Вопрос задан
  • 267 просмотров
Решения вопроса 1
@koronabora
Человек
-1) Если игра старая и интересная, кто-то уже точно занимался такой работой. Очень внимательно ищем любые упоминания о модификации игровых ресурсов. Главный источник - фанатские форумы и сайты.
0) Пробуем найти SDK, или исходники, либо исходники SDK, либо описания алгоритмов хранения для движка, который используется. У движков обычно разные поколения, но даже информация о другом поколении бывает полезной, т.к. иногда, от поколения к поколению, не меняют формат хранения ресурсов.
1) Определяем, запакованы-ли ресурсы игры?
Если запакованы:
2.1) Ищем распаковщик. Если есть, распаковываем и преступаем к пункту 3.
2.2) Распаковщика нет. Если игра старая, то сильно хитрых алгоритмов никто не использовал. Пробуем разные простые алгоритмы, типа zip и т.д. применить на распаковку, определить словарь и т.д. Как признак правильного движения - появление осмысленных структур или имен после действия алгоритма. Это уже чистый реверс-инжиниринг алгоритма запаковки. Если все проходит удачно, у нас появляется свой распаковщик. Далее пункт 3.
Если не запакованы:
3.1) Необходимо понять, где какой ресурс, а также какой ресурс в каком формате хранится. Здесь опять-же, могут быть свои форматы, а могут быть какие-то популярные в тот момент, когда игра разрабатывалась.
4) Отдельным пунктом - вычленение из памяти загруженного приложения. Актуально для текстур, текстовых данных.
5) Отдельным пунктом - анализ исполняемого файла приложения и библиотек на способ загрузки ресурсов. Здесь необходимо обладать пониманием низкого уровня работы разных алгоритмов и знание ассемблера. Для пункта 2 очень полезно.

А вообще, если это RenderWare, то, наверное, подойдет что-то типа такого: libertycity.ru/files/gta-san-andreas/84860-renderw...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы