![]() |
Изучение и архитектура .rep файла катсцен
Вложений: 2
Всем добрый день. Как-то раз я отписывал уже благодарность к Golod55 за его .doc файл с попыткой изучения катсцен. Это действительно хорошая работа, которая местами помогла нам продвинуться в нужном направлении.
А посему - настало время возвращать долги. Пока что прикрепляю в виде ссылки на статью в ВК с описанием структуры, а так же прикладываю 2 скрипта 1. Скрипт на C# с использованием элементов Unity3d (Там Юнити отвязывается очень легко, но писал для себя в первую очередь) 2. Паттерн, для программы ImHex, позволяющий свободно через него загружать и вполне удобно редактировать Хексом любую уже имеющуюся катсцену. Статья: https://vk.com/@mafiape-rozetskii-rep-kamen-katscen В виде Word Документа https://disk.yandex.ru/i/QyUcafwcNOtqsQ Забугорная English version https://disk.yandex.ru/d/fdRd5RE15Z0mFA Пример https://youtu.be/dN1wbrFiMr0 P.S. Как будут силы, сяду за написание того чего знаю в плане корректной интерпретации и чтения данной катсцены. |
Вложений: 1
Пока пытался понять логику переменных автомобиля - сделал вот такую упрощенную дебаг катсцену. Содержит всего 2 ключевых кадра для камеры и точки, куда камеры смотреть и 1 объект "автомобиль Томми" с 10 ключевыми кадрами.
Довольно просто с её помощью дебажить, разбираться как это работает и изгаляться над машиной как тебе угодно. Плохая новость - я хрен его знает что эти за unk Значения внутри машины. Пока что из актуальных гипотез - похоже на флаги какие-то побитовые на самом деле. Например последний байт unk1 безумно похож на коробку передач. Я подозреваю, что они машины буквально в игре записывали как геймплей внутренним demo_record, который был вырезан после. |
Машины в роликах "играются" не как акторы, а как фреймы.
Так, чтобы сделать едущую машину, чехам пришлось перемещать\вращать ее запчасти как фреймы. Отсюда, кстати вылезла проблема с неправильным положением кардверей в роликах у замененых моделей автов. |
Цитата:
Для меня это 2 одинаковые вещи, потому что я отталкиваюсь от концепции Юнити3д как GameObject с позицией, кватернионом и внешними скриптами, которые могут на этот самый объект влиять. Ну и да, те же колёса вращение как я заметил отрабатывает буквально сам код в авто у них в катсцене (под это нет ключевых кадров), который висит на машине и это не записывается в сами кадры. Как и эдакая симуляция трансмиссии в том числе. |
фрейм - енто объект, разные типы есть: модель, саунд, свет и т.п., а актор - все остальное: спецсвойства, напр. физика автов, поведение челов[задает список программ, которые доп-но обрабатывают объект].
|
Вложений: 1
Вкачусь в эту тему, будет как небольшие дневники с заметкамим. Они менее посвящены катсценам, но плодить темы... Такое себе.
Есть у нас условный класс CHuman (Как он назывался в ваниле неизвестно). Он имеет в себе 2 переменные анимаций. Каждый номер отвечает за определённую анимацию. Вот список, полученный реверсом, когда я экспериментировал с модификацией катсцен. Публичный гугл документ со всем С чем я именно вкатился еще дополнить? В Game.exe довольно хардкодом в самом конце записан этот самый список. Вложение 2470 |
видны невооруженным взглядом над списком адрес каждой анимации, напр 248A6400 - адрес анимки pumpar.i3d
|
Цитата:
Сегодня постараюсь расписать пример использования и как их можно самостоятельно вызвать. Видеоролик к пояснениями. Таблица с номерами анимаций Таблица с добавочными анимациями, которые кладутся поверх номерных. Ну и напоследок по старой доброй памяти - список всех анимаций из катсцен. Если есть какие-то вопросы на которые я могу ответить - буду рад подсказать :) |
а что за прога в ролике?
|
Цитата:
Программ сейчас 3 штуки основных. IDA - сейчас лично для меня вообще не обновляется, безумно мощная, но боже, какая же она в плане использования новичками неудобная. Мне прям страшно её было запускать - безумный комбайн. В последний раз такой страх испытывал перед 3Ds Max на старте, да перед Фотошопом в детстве. GHidra - безумно крутой, опенсурсный и бесплатный инструмент, но нет дебаггера для Мафии Binary Ninja - платная (пирачу, грешен), но при этом актуальная и развивается тоже. И есть реалтайм дебаггер, работающий с игрой. В целом её интерфейс безумно простой, но при этом довольно наглядный. Безумно блин удобно внутри неё сразу все структуры прокидывать. А, ну и конечно мой любимый Cheat Engine. Без него и 1/10 весёлых вещей я не смог бы найти. |
я IDA юзал для потрошения, но представление в С, смотрю, более глаз_френдли и могло облегчить понимание смысла написанного, в то время как IDA удобна для структурирования(в граф представлении).
|
Забавный факт. Файлы .5ds анимаций содержат не только повороты, хех.
Я пока изучил лишь с анимацию перезарядки, автомата томпсона. Там имеется среди анимируемых объектов - объект под названием "notify" Отвечает за 2 важные вещи - отцепление левой руки персонажа от автомата (автомат перестает делать Look At на gun2), а так же именно там происходит вызов отсоединения обоймы. КАК это работает - я пока не имею ни малейшего понятия и если честно не совсем обладаю огромным желанием это реверсить. Но да, забавный факт. |
вероятно, спецобъект для синхронизации анимок оружки и чела.
кстати не факт что он нужен в игре, можно его переименовать и посмотреть как игра отреагирует. |
Цитата:
|
Цитата:
Допишу пока тут. В файлах .5ds notify имеет в начале ключевой флаг 0x10 После него идёт u16/short - кол-во ключевых кадров. size; Дальше в виде u16/short - в каких именно кадрах массив кадров keyframes[size] И после u16/short - идут сами эвенты. Кодировку ток начал расшифровывать. Всем желающим присоединиться - велком) |
Цитата:
Он двигается *ультра* кастрированно, спору нет, этот весёлый аспект еще буду разбирать. Но все-же это Акт. В отличие от его дочерних запчастей тип дверей, руля и прочего. И сразу же исправление базара. Происходит перемещение *И* фрейма и актора. Синхронное. |
Цитата:
|
Цитата:
|
Нотифай можно перевести как "уведомление" наверно ога.
Программа оружия мелькала где-то, выследить ее несложно; также понятно почему раньше(и сейчас) сложности с заменой\добавлением оружки - оное захардкодено в немалое степени для оригмоделей(обоймы, откидывание ствола и пр.). |
Цитата:
|
Цитата:
Добавлено через 3 минуты Давно не заходил, но тут распишу тогда. Думал это вообще никому не интересно, поэтому и не выкладывал изыскания. notify - это "эвенты" из Юнити. То есть инициализация события из анимации. Цитата:
Сами "события" зашиты и запрятаны в сам движок, тут спору нет Я пошел от обратного - исследовал все файлы анимации тогда и составил вот такую таблицу, какой номер что именно означает. Авось кому-то пригодится. https://docs.google.com/spreadsheets...it?usp=sharing |
Текущее время: 09:37. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.11 Release Candidate 2
Copyright ©2000 - 2025, vBulletin Solutions Inc. Перевод: zCarot