Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2007, 13:46   #1
Mafiozik
Новичок
Джуниор
 
Регистрация: 05.12.2007
Сообщений: 2
Лампочка Помогите с анимациями игры Mafia.

Я уже бывал на различных форумах по програмированию, но помочь никто не хотел, т.к говорили что всё это ФУФЛО.... Надеюсь сдесь мне помогут.
Есть одна замечательная игра под названием Mafia: The City of Lost Haven. Я как и многие занимаюсь её редактированием, у нас на форуме был человек который делал различные программы в помощь модостроителям, но после того как наш форум взломали его ни кто не может найти. Возник вопрос можно ли создать какой либо конвертер из
5ds (это файл анимации игры) в 3ds и обратно. Я сам почти не разбираюсь в программровании, но ради этого готов постараться.
Подскажите на каком языке программирования лучше/проще новичку
писать эту программу и какие данные о структуре файлов 5ds и 3ds нужны? Подалуйсто помогите!!!!
Mafiozik вне форума Ответить с цитированием
Старый 05.12.2007, 15:31   #2
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

Странно. По-мойму существуют скрипты для 3ds max, которые позволяют переводить из фомата 5ds в 3ds. Поищите на сайте игромании, там должны быть спец. плагины.
Если хотите писать сами, то нужны все сведения о структуре этих файлов. Найти их можно наверно только на сайтах посвященных Mafia: The City of Lost Haven.
bill вне форума Ответить с цитированием
Старый 07.12.2007, 11:15   #3
Mafiozik
Новичок
Джуниор
 
Регистрация: 05.12.2007
Сообщений: 2
По умолчанию

Про структуру 3ds я думаю найти не сложно, а вот про 5ds мне пришлось попотеть, но вот результат:
Цитата:
Документация 5ds \\GOLOD55 06.02.06 Общий блок: 1. 354453001400 флаг файла 2. 0010ADF7D624C101 8 байт из 4дс 3. 50020000 сумма от "начала считывания" до конца файла(L). Все три пункта занимают 18 байт. 4. 0400 "начало считывания" оно же кол-во объектов в анимке(S) 5. 2003 общее время анимки(S) в усл. единицах(покадрово): 25 ед=1сек. [у нас 2003=800dec=32сек(800/25)] 6. подблоки(содержат доступы к именам и блокам объектов). длины 8 байт(2*L). Кол-во их равно кол-ву объектов. а) 34020000 сумма от "начала считывания" до имени объекта1. 24000000 сумма от "начала считывания" до блока объекта1. Объем всего общего блока таким образом = 24000000(hex) +18(dec)=54 байта от начала файла, и далее уже пойдут блоки объектов. б) 3A020000 сумма от "начала считывания" до имени объекта2. 98000000 сумма от "начала считывания" до блока объекта2. с) 43020000 сумма от "начала считывания" до имени объекта3. 2C010000 сумма от "начала считывания" до блока объекта3. д) 47020000 сумма от "начала считывания" до имени объекта4. E8010000 сумма от "начала считывания" до блока объекта4. блоки объектов на примере объекта1(Box01 оно же башня крана) 1. 04000000 - флаг движений(см.коммент.)(L) 2. 0600 - кол-во секторов в движении объекта1(S). Каждый тип движения разбивается на нужное кол-во кусков, и каждому назначается временной промежуток(время движения к данной точке). 3. 00006400C8002C01F40158020000 времена кусков(S). Их кол-во = кол-ву кусков движений. Причем если число четное, то к нему прибавляется еще одно время (задержка перед повтором анимки?(обычно = 0000)). [т.е. типа(куски\кол-во времен): 2\3; 3\3; 4\5; 5\5: 6\7; 7\7...] 4. сектора. 6 штук. в данном случае это ротации. т.е. объем всех секторов объекта1=6*(4*4(F))=96 байт. Иначе это либо коорд, либо шкалинги, а они по 12 байт(3*4(F)). имена объектов Ну соотв. у нас 4 имени. Писать через нуль-байт, заканчивая файл им же. Регистры букв имеют значение(необходимо полное совпадение имени). =================Комменты:========= ================ 1. Флаги типов движений: 02000000 - координатное 04000000 - ротационное 08000000 - шкалинговое также объект может иметь в своем блоке либо все типы движений, либо иметь их в разных сочетаниях. В таком случае их флаги складываются. Примеры: коорд+рот = 2+4=6(06000000) коорд+шкал = 2+8=10(0A000000) рот+шкал = 4+8=12(0C000000) коорд+рот+шкал = 2+4+8=14(0E000000) Порядок записи разных типов движений в одном блоке - от меньшего к большему(коорд-рот-шкал, т.е. в наших примерах именно в таком порядке). EDIT: не совсем так. Например если у объекта коорд- и ротдвижения, то сначала пишется подблок с ротациями(!) Другие сочетания не проверялись, но вероятно, если есть ротдвижение, то оно пишется всегда первым подблоком. Смешанные движения объекта в общем случае независимы, поскольку каждый подблок имеет своё разбитие на куски. 2. Времена секторов. На нашем примере: ко времени 0000 объект должен быть в секторе1(т.е.принять ротацию из сектора1), ко времени 6400(100dec) - принять ротацию из сектора2, ко времени C800(200dec) - ротацию3(а она совпадает с рот2, т.е. получается "пауза" в движении башни( в 100(dec)) и т.д. Время посл. сектора вообще обычно равняется общему времени анимки(2003 у нас), но в данном случае оно = 5802(600dec). Просто к этому времени башня уже выполнила возврат.ротацию и не нуждается в дальнейшем движении до конца всей анимации; и, как видно, мафа в начало ее не возвращает поскольку данное время не равняется общему. Таким образом можно\нужно\ задавать скорость движения. Оно соотв. = длина пробега/время отпущенное на это богом. С ротациями несколько хитрее. Максимальный угол вокруг одной оси(на примере Y далее) за одно движение не может превышать 270град, поскольку как минимум одна ротация(в смысле осьX\Z на нашем примере; ее знак) должна указывать направление вращения, и при превышении 270град оно теряется; в результате вращение идет по формуле nn=360-mm(nn-угол в игре; mm - задаваемый угол в анимке). Почему 270? Потому как макс критич. изменение каждой ротации = 180град, а расположены они под 90град друг к другу как известно(т.е. при 180град теряется направление задаваемое X(но для анимки это еще некритично), а еще при доп. 90град - задаваемое по Z(тогда писец поскоку и синус и косинус угла оба меняют знаки). В общем, имеет смысл разбить 360град на две части(три точки в анимке). При таком разбитии макс.скорость вращения в мафе = 12.5 оборотов\сек. Можно разбить 0\270\180\90, тогда бует 5 точек/3оборота, скор.= 18.75 оборотов\сек 3. Mise16krajina\ MISE04-KRAJINA\scene.5ds 1. 354453000400 флаг файла 2. 00426391EA76C001 8 байт \из 4дс\ 3. 19000000 время анимки? 4. B4CE693F 0.9133 ? 5. 00000000 0 ?
Но я в этом вообще ничего не понял, каким образом пишется конвертор?
Достаточно ли здесь информации?
Mafiozik вне форума Ответить с цитированием
Старый 07.01.2008, 11:27   #4
|{ () T
Пользователь
 
Аватар для |{ () T
 
Регистрация: 06.01.2008
Сообщений: 23
По умолчанию

думаю, что достаточно!
|{ () T вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу помогите в создании игры!! Wisee Помощь студентам 2 16.06.2008 13:04
Помогите в создании игры Кронос Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 11.11.2007 14:49
У меня свой сайт я хочу зделать онлайн игру! помогите те кто умеет делать флеш игры! Denfer Свободное общение 1 07.08.2007 14:06
Помогите с компиляцией игры, код есть (Delphi 4) Дилетант Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 06.05.2007 20:57
помогите в написании игры steck Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 29.04.2007 07:50