#1 27-10-2008 15:13

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

Bully: адреса и процедуры, форматы ресурсов

Итак, для начала, я хочу прояснить некоторые глобально полезные вопросы и развеять часть заблуждений.

Начнем с того, как Bully относится к GTA. Чтобы внятно ответить на этот вопрос, нужно представить структуру практически любой игры (и любого GTA в частности). Очевидно (буквально), что в игре есть графический движок. Есть скриптовый движок. Есть звуковая подсистема. В той или иной степени, есть обработка игровой физики. Менее очевидные части - AI и управление ресурсами (aka streaming). И есть совсем незаметная часть - то, что связывает все перечисленное воедино.

По ходу эволюции GTA, практически все компоненты менялись:

* графика - III/VC/SA использовали Renderware Graphics, LCS/VCS - что-то совсем непонятное (по слухам, ранние версии RAGE), IV - RAGE (во всей его красе).
* скрипты - III/VC/SA - scm, LCS/VCS - scm+lua (для сетевой части), IV - собственные скрипты (для которых пока нет общепринятого названия)
* физика - плавно эволюционировала от III к SA (LCS и VCS, насколько мне известно, используют слегка модифицированный код от VC); в IV была полностью заменена на связку из Bullet+Euphoria
* AI - система Objectives в III/VC/LCS/VCS; CTask с потомками в SA и IV (Да, AI в четверке взят из SA практически без изменений).

Неизменным оставалось одно: система управления игровыми объектами. В любом GTA есть CBaseModelInfo с потомками и CEntity (тоже с потомками). Пулы в которые это все собирается. .ide/.ipl, из которых читаются model info.

Ошибочно считается, что файлы конфигов - признак использования Renderware либо чего-то унаследованного от него. Это не так. Эти файлы относятся к собственному коду R*. Тому, что можно назвать GTA Game Engine. Данный код присутствует в любом GTA и отсутствует в любой другой игре.
Ни в Table Tennis, ни в Midnight Club:LA ничего подобного нет, хотя они обе используют RAGE.
Я также ни встречал подобных структур ни в одной игре на базе Renderware.

Итак, возвращаясь к началу, в Bully имеется вышеопределенный GTA Game Engine в полном объеме.
Иное было бы странно, т.к. Bully сделан на основе Vice City. (А не SA, как полагает общественное мнение). Т.о., вопрос, относится ли Bully к серии GTA, я полагаю решенным положительно.

А теперь можно переходить к структурам и ресурсам.

Offline

#2 27-10-2008 15:46

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

Re: Bully: адреса и процедуры, форматы ресурсов

Первая инкарнация Bully (для PS2), использовала Renderware Graphics. На момент порта на 360 и Wii, RWG 3.x безнадежно устарел, а 4.x уже принадлежал EA, с которой у R*/T2 несколько натянутые отношения. Для меня, до сих пор остается загадкой, почему не был использован RAGE, который, к этомум моменту был уже готов, и на котором был сделан Table Tennis. Возможно, с RAGE были какие-то проблемы, возможно в R* не захотели выдавать его сторонней (на тот момент) команде, которая занималась портом...  Но, свершившийся факт, Bully для 360, Wii и PC использует GameBryo 2.3 - идеологического наследника Renderware.

Для моддинга, в этом есть большой плюс: все инструменты, которые были  созданы для Oblivion и других игр на базе GameBryo, подойдут для Bully c небольшими модификациями. Более подробную информацию, можно найти здесь: http://niftools.sf.net
Чтобы жизнь показалась совсем замечательной, а глубинах пиратской бухты, можно найти Evaluation версию GameBryo 2.3, которая заменой одного .obj лишается ограничений. К сожалению, в этом дистрибутиве, отсутствует полный набор исходников, но кое-что все-таки имеется (аналог Renderware Skeleton и исходники импортеров/экспортеров для 3dsmax и maya).

Со скриптами - немного сложнее. Скорее всего, в R* предполагали выполнить полный переход на Lua. В LCS и VCS, это удалось лишь отчасти (т.к. затраты на переписывание имевшегося кода от III/VC были сочтены непропорчинально большими), и на Lua были сделаны только принципиально новые части (сетевой код). Поскольку скрипты Bully изначально писались с нуля, они были написаны полностью на Lua.

К сожалению дял моддеров, R* использует слегка модифицированный транслятор Lua (генерирующий файлы .lua.lc или  .lur). Особенностью этого транслятора является то, что из байткода полностью удаляются имена функций, локальных переменных и upvalue.  luadec не может этого перенести, и горестно зовет генерала файлуре. ChunkSpy корректно дизассемблирует все скрипты (но дизассемблированный байткод - это страшно).
Соответственно, все, что требуется - модифицировать luadec, чтобы отсутствующие имена заменялись автоматически сгенерированными. После этого, проблема скриптинга должны быть решена.
Альтернативный вариант (так сказать, совмещение приятного с полезным) - транслятор из Lua-шного байткода в IV-шный, и маленькая подключаемая из .asi виртуальная машина.

Теперь, что касается .exe-шника. Bully.exe - мечта реверсера. Для всех небиблиотечных классов оставлен RTTI (что дает имена и иерархии всех классов, в которых есть хотя бы один виртуальный метод). Классы без RTTI - как правило, библиотечные. Для них есть соответствующие библиотеки и debug info.
Количество оставленных отладочных сообщений - первосходит III, VC и SA вместе взятые.

Портит это все только одно - на большинстве современных конфигураций, возникают фатальные баги, которые не дают пройти даже первую миссию. Так что, чтобы не заниматься два раза одной и той же работой, я собираюсь дождаться патча.

ЗЫ. К хорошему посту должна прилагаться картинка: http://public.sannybuilder.com/bully/nifscope.png

Offline

#3 27-10-2008 17:26

DimonCJ
Registered: 05-12-2006
Posts: 14
Website

Re: Bully: адреса и процедуры, форматы ресурсов

Что касаеться самого последнего пункта: у мну Q9450 и HD4870 и DDR3 = игра после avi'шного ролика уходит в бесконечную загрузку sad
А также призапуске экран мерцает просто уйму раз, даже еще ссылаеться на отсутсвие звукового драйвера - хотя звук есть.

Offline

#4 27-10-2008 18:54

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

Re: Bully: адреса и процедуры, форматы ресурсов

@DimonCJ - Так все форумы этим забиты: на машинах с >4G оперативки, под 64-бит операционками практически ни у кого не работает. Под вистой 32-бит - как повезет. Даже на XP работает не у всех.

Предположительно, мерцание и бесконечная загрузка - следствие одного и того же - каких-то проблем с DirectX.

Offline

#5 28-10-2008 03:59

CatZilla
Registered: 21-07-2008
Posts: 4
Website

Re: Bully: адреса и процедуры, форматы ресурсов

Прошу прощения, но у меня ХР 64 бита - и все летает.


Intel Core 2 Duo E8400@3.83GHz, Gigabyte GA-EP35-DS3P, Patriot Memory 8500EL Series 2GB @1066MHz, MSI NX9600GT-E, 320 WD IDE + 400 WD GB SATA
CCCP2.png
clanuserbar.png

Offline

#6 28-10-2008 19:04

listener
From: Vice City
Registered: 09-11-2006
Posts: 616
Website

Re: Bully: адреса и процедуры, форматы ресурсов

@CatZilla - основная проблема, кажется, решилась: проблема не в 64-битности, а в объеме памяти (32-бит операционки, на подавляющем большинстве железа, не видят больше 3..3.5G).

Если выставить через msconfig объем используемой памяти (я поставил 3800М), все работает без визуальных глюков (VistaU/64, T9500 (Penryn 2.6Ghz), 4G => 3800M, Quadro FX3600M/512M (~GF8800GS))

Вообще, похоже на какой-то фундаментальный баг в стриминге: я вчера ухитрился один раз поймать бесконечную загрузку на XP/32бита.

Еще, эти добрые люди ухитряются читать cuts.img и triggers.img по одному байту за раз (видать, чтобы грузилось дольше).

PS. Но, самое главное, что оно заработало у меня на девелоперском ноуте, и, как чуточку разберусь с делами (рабочий проект, который нужно сделать к субботе и компилятор скриптов для IV (к 2008/11/17)) можно будет покопаться в Bully в полном объеме.

Last edited by listener (28-10-2008 19:10)

Offline

#7 28-10-2008 19:11

Capushon
Registered: 13-08-2006
Posts: 350
Website

Re: Bully: адреса и процедуры, форматы ресурсов

@listener -

(32-бит операционки, на подавляющем большинстве железа, не видят больше 3..3.5G).

А разве есть какое-либо железо, на котором видно более 3,5 гиг оперативы на 32-х битных осях?


Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ

Offline

Board footer

Powered by FluxBB