You are not logged in.
Итак, для начала, я хочу прояснить некоторые глобально полезные вопросы и развеять часть заблуждений.
Начнем с того, как 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
Первая инкарнация 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
Что касаеться самого последнего пункта: у мну Q9450 и HD4870 и DDR3 = игра после avi'шного ролика уходит в бесконечную загрузку
А также призапуске экран мерцает просто уйму раз, даже еще ссылаеться на отсутсвие звукового драйвера - хотя звук есть.
Offline
@DimonCJ - Так все форумы этим забиты: на машинах с >4G оперативки, под 64-бит операционками практически ни у кого не работает. Под вистой 32-бит - как повезет. Даже на XP работает не у всех.
Предположительно, мерцание и бесконечная загрузка - следствие одного и того же - каких-то проблем с DirectX.
Offline
@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
@listener -
(32-бит операционки, на подавляющем большинстве железа, не видят больше 3..3.5G).
А разве есть какое-либо железо, на котором видно более 3,5 гиг оперативы на 32-х битных осях?
Сначала ты надежда и гордость,
Потом о спину ломают аршин. (c)БГ
Offline