Немножко есть здесь
Ух, ну это мощно (типа 10-20 т. строк ручной работы - получше чем статьи на gamedev). Вот как игры делаются. Значит в GTA приняли некую картину мира и стараются её придерживаться (у вас там open GTA3, open GTASA, наверно уже есть open GTA4 ?-).
Было сделано где-то за год, неспешно, в свободное время.
Где-то в середине процесса я понял, что раньше ничего не знал об игростроении
Основные игровые классы не менялись с GTA3. Те же CPed/CVehicle/CObject. В PS2 версии GTA3, была оставлена debug info. Как минимум половина названий классов и методов оттуда, была перетащена в SA.
IV от SA отличается не очень сильно (основные изменения связаны с сетевым кодом).
С названиями - беда. OpenGTA - занято, Open IV - тоже.
Рабочее название библиотек по IV - Open Liberty City.
Что касается диз-асма - к сожалению я совсем не понимаю как ориентироваться во всех этих sub_... (в обычных экспортриатных dll хотя бы имена сохраняются). Например где находятся классы игровых объектов в vorbis, или в exe (я про SA), и ещё - как смотреть сам экзешник, ида требует dll, я показываю а она мажет с адресом и закрывается ((
А это все - вопрос привычки. Я регулярно разражаюсь пространными философскими фразами про reverse engineering.
Книжек по декомпиляции практически не существует (есть одна, и та старая и с кучей неточностей). Есть пара книжек по ida, но они совсем на уровне "книжка-раскраска" и посвящены, в основном, тому, как понять что делают вирусы.
Я регулярно призываю задавать вопросы по дизассемблированию и декомпиляции, но желающих не особо много.
Есть мои базы от III и SA, в которых достаточно много функций более-менее нормально названо.
База по IV (1.0.4) будет выложена, как только будет дочищена (поправлены огрехи дизассемблера, перенесены имена и комментарии хотя бы из базы по 1.0.3. Сейчас я дошел до середины кодового сегмента - обозвано порядка 11К функций из ~38К; определено порядка 300 структур и классов.
Вообще, для меня копание в коде - это как сборка паззла из нескольких миллионов кусочков.
Сначала - есть огромная куча кусочков, про которые ничего не понятно - откуда они, что на них изображено. По мере складывания, картинка начинает вырисовываться, и можно целенаправленно искать нужные фрагменты, каждый из которых все сильнее и сильнее упрощает процесс.
А пока нарисовал правильную (как я понял) иерархию объектов (но это только малая часть). А вот в моделях всё линейно вроде.
Да, в целом все верно. (_padXXX можно не указывать - это заглушки для мест, где выравнивались поля на 2/4 байта, чтобы не зависеть от версии компилятора).
У моделей в 3/VC/SA/Bully тоже достаточно развесистая иерархия. В IV с моделями стало несколько проще, за счет отказа от примитивных объектов.
You think your day was surreal? Try mine.