PDA

Просмотр полной версии : Формат BIG файла


вегуд
24.12.2005, 19:31
Не оставляю надежды, что кому-то из посетителей это интересно :rolleyes:

начну издалека (для тех кто прогуливал информатику :) )
что такое формат файла и зачем он нужен.
формат файла - это его структура, определяющая расположение
информационных блоков, плюс способ представления данных.
обычно, структура файла предусматривает наличие
так называемой сигнатуры (подписи), которая отличает один
формат от другого. как правило, подпись располагается в самом начале файла.
например, у zip-файлов это "PK", у bmp - "BM", у EXE - "MZP",
сигнатура BIG-файлов - "BIGF" или "BIG4"... в этом можно убедиться, открыв
файлы в hex-редакторе или просто в FAR-е (установите себе Far. www.rarlab.com. Для жителей exUSSR он бесплатен).

вот текстовый файл. он не имеет структуры - она и не нужна, потому что это
просто однородные данные (около 100 различных символов, которые мы можем понять)
в чистом виде, как они есть.

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

насчет упомянутого выше способа представления данных.
например, если в палитре 256 цветов, то один пиксель
может быть описан числом от 0 - 255. такое число будет занимать
ровно 1 байт. можно просто записать N пикселей в виде
N байт и это будет просто как грабли (так устроен формат BMP)
но тогда бы у нас картинки занимали по 2-3 мегабайта.
поэтому придумывают такие способы записи этих пикселей,
чтобы сократить размер файла. получается, что в зависимости
от самого изображения файл будет то больше, то меньше.
потому что пустую картинку с белым фоном можно записать как
картинка 100х100, цвет пикселя: 1, количество пикселей: 10000.
и не обязательно при этом прописывать каждый белый пиксель.
примерно делается в формате GIF. поэтому он дает
плохое сжатие для избражений с градиентами и выигрывает по размеру
у JPEG'а, если на картинке изобилуют места с однородным фоном.

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



возвращаясь к теме... :o
BIG-файлы. что это такое?
это файлы, которые содержат другие файлы.
что-то навроде архивов с нулевым сжатием.

зачем они такие нужны?
например в фифе около 10000 файлов
текстуры футболок, 3д модели лиц, и всякое прочее говно
если бы 10000 файлов по отдельности лежали в каталоге,
то занимали бы больше места чем если бы их засунуть
в один файл. так устроена файловая система FAT или NTFS.
на каждый файл отводится какое-то место кратное определенному
числу (не вдаваясь в подробности про всякие сектора и кластеры...)
как правило файл не занимает всего места, что ему отведено,
но место оказывается как-бы занятым. при наличии большого
числа файлов эти "незанятые" хвостики складываются
в солидные мегабайты.
можете проверить, посмотрев в виндовсе правой кнопкой свойства папки или файла.
в свойствах будет два размера:
"размер" - сколько по сути занимают файлы
и
"да диске" - сколько эти файлы отъедают места на самом деле.
слабонервных разница может шокировать.
например 100 файлов по 1 байтку, казалось бы должны
занимать 100 байтиков. а получается порядка 2-3 мегабайт (в зависимости от размера диска).


снова, возвращаясь к теме... :eek:
таким образом, структура BIG-файла такова:
указано общее число подфайлов (назовем их так) в BIG-файле.
затем идет таблица, содержащая
- размер подфайла,
- смещение подфайла (кол-во байт от начала до места, где лежит содержимое подфайла)
- имя подфайла.
затем идет содержимое всех подфайлов, помещенных в данный BIG.
данная структура позволяет без проблем найти и извлечь
нужный подфайл из BIG'а.


замечу, что в PES5 применяется формат ASF,
аналогичный по функции BIG файлам и
практически аналогичный им по структуре...
с той разницей, что в ASF нет имени подфайла
(недавно узнал что песоиды называют подфайлы "слотами" :) )


более детально, позже, в следующем посте...
а то сегодня что-то заносит не в ту степь.. :confused:

Goal
24.12.2005, 19:40
Интересно, но к чему это ?

вегуд
24.12.2005, 19:44
Интересно, но к чему это ?

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

Nefelim
24.12.2005, 21:21
вегуд, я, например, все это отлично знаю. Только я не понял, а зачем мне формат .BIG-файлов? :o

D@P
24.12.2005, 22:10
вегуд, почти ничего из этого толком не знал. а ты доступно всё рассказал.
хорошая качественная леция:)
продолжай в том же духе.

Asiat
25.12.2005, 16:28
Поотркывал взякие графичекие файлы в хексэдиторе к сожалению структуры не понял :o
И почему вся инфа записывается там при помощи цифр и ABCDEF ?

Schweinsteiger
25.12.2005, 16:44
Всегда найдутся люди, которым интересно из каких винтиков-шпунтиков сделана его любимая игруха. Уж куда лучше, чем обсуждать кто как бреется и где учится. Мне лично, очень интересно было читать Вегуда. Вообщем "пиши ещё" и "Требую продолжения банкета!"(с)

Rayne
25.12.2005, 17:11
И почему вся инфа записывается там при помощи цифр и ABCDEF ?
это, судя по описанию, шестнадцатиричная система исчисления.
а hex редакторы, значит, редакторы, переводящие файл в шестнадцатиричную систему. :eek:

зы извиняйте, если бред :D

smallball
25.12.2005, 21:21
Согласен с Nefelim-ом, даже учитывая "близость" смерти вегуда. На дворе 21-й век, каждый формат файла должен сопровождаться соответствующей утилитой по его обработке. Если стороннему (не придумавшему этот формат файла) программисту приходится писать свою утилиту, то это просто плохой формат файла. При чем как обычно эти проблемы вызваны недостатком конкуренции на рынке (ЕА вообще нужно давно засудить за монополизм). И даже если сейчас ничего с этими "форматами" поделать нельзя, то через несколько лет (как раз к вегудовой "кончине") сменится поколение программистов поколением нетфреймворкинистов и все встанет в стандартизованное русло (никому больше в голову не придет придумывать что то свое). Проще говоря, Microsoft всех "за уши притянет" к стандартным (читай своим) средствам разработки программ. При чем кого будет волновать, что файлы занимают на диске в 10 раз больше места, чем "положено", если размеры дисков растут пропорционально снижению стоимости одного мегабайта.

smallball
25.12.2005, 22:12
я уже стар...
Только опираясь на это...
Так что никаких наездов. :)
Просто хотелось понять, зачем все это нужно? Искать "приемника", но для чего? Если для редактирования фифы, то нет же никакой гарантии, что в 2008-м она будет такой как сейчас? Если просто для поддержки и развития сайта, то при чем тут big-файлы? Ну и уж вряд ли это написано просто для "нам будет полезно". С таким же успехом D@P ты мог бы кратко описать часть лекции из медицины. Я бы с удовольствием почитал... ;)

D@P
25.12.2005, 23:06
СЗОТ: если хотите, я не против.
пусть каждый расскажет то, в чём он незауряден. поделится мыслями с окружающими.
на нашем сайте 4 человека, связанные с медициной: врач-ординатор Илья, Клерик (3 курс стомат), Хуба (4 курс стомат), я (1 курс лечфак).

а насчёт фифы: формат файлов уже долгое время один и тот же. почему бы не научить нас, простых юзеров, в программинге не секущих, простейшим приёмам? сейчас времени нет, но на каникулдах надеюсь что-нибудь освоить. помощь "мастера" здесь не помешает:)

вегуд
26.12.2005, 01:21
Согласен с Nefelim-ом
я в чем-то тоже с ним согласен, но все-таки читать я его не заставлял ;)
понятно, что на фифу ему насрать с большой горы, однако этот раздел не только про скрипты, но и про редактирование игр (и про ПЕС тоже будет ;) ).

На дворе 21-й век, каждый формат файла должен сопровождаться соответствующей утилитой по его обработке. Если стороннему (не придумавшему этот формат файла) программисту приходится писать свою утилиту, то это просто плохой формат файла.
никого это мягко говоря не колышет, в первую очередь разработчика формата. пользователь вообще не должен совать свой нос в устройство программ - это прописано в лицензии. как правило, форматы файлов коммерческих программ являются (сюрприз, сюрприз!) коммерческой тайной и не разглашаются. где вы видели описание форматов Word, Excel? PDF? это закрытые форматы.


При чем как обычно эти проблемы вызваны недостатком конкуренции на рынке (ЕА вообще нужно давно засудить за монополизм).

ЕА сейчас жмут со всех сторон. в прессе полно скандалов связанных с нещадной эксплуатацией работников EA, которые вкалывают без выходных и премиальных.. наверное, все это не от хорошей жизни.
по крайней мере, в спорт-симах наметилась серьезная конкуренция со стороны Конами и 2KSports.


И даже если сейчас ничего с этими "форматами" поделать нельзя, то через несколько лет (как раз к вегудовой "кончине") сменится поколение программистов поколением нетфреймворкинистов и все встанет в стандартизованное русло (никому больше в голову не придет придумывать что то свое).

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


Проще говоря, Microsoft всех "за уши притянет" к стандартным (читай своим) средствам разработки программ. При чем кого будет волновать, что файлы занимают на диске в 10 раз больше места, чем "положено", если размеры дисков растут пропорционально снижению стоимости одного мегабайта.
это Микрософт тут недавно притянули за яйца к использованию открытого стандарта для Word. ну пользуются их средствами (XBOX SDK например позволяет писать для 2-х платформ одновременно). но во-первых, никто не заставляет - напротив - стоит это дорого. и потом, средство оно и есть средство. а то как ты его используешь - это уже сугубо твое дело. ну а про размеры.. конкуренцию еще никто не отменял.. да и жесткие диски сейчас вроде как достигли предела плотности записи и пока дешеветь не собираются.


Просто хотелось понять, зачем все это нужно? Искать "приемника", но для чего? Если для редактирования фифы, то нет же никакой гарантии, что в 2008-м она будет такой как сейчас?
во-первых, хочется выявить более-менее соображающих людей, которым это интересно и дать им пищу для ума. но жизнь на фифе не заканчивается и если завтра мне в голову ударит моча и я полезу копаться в ГТА или в СИМсах или еще в чем-то (остряки могут добавить "в жопе"), то подходы останутся теми же, а опыт работы с фифой только поможет.
во-вторых, я пишу для себя. это упорядочивает мысли (но пока получается не очень).

в чем-то изложенном (а может во всем) я могу ошибаться :rolleyes:

вегуд
26.12.2005, 02:01
Поотркывал взякие графичекие файлы в хексэдиторе к сожалению структуры не понял :o
И почему вся инфа записывается там при помощи цифр и ABCDEF ?

так сходу сложно что-либо понять - требуется анализ и сравнение множества файлов.
насчет букв..
A = 10
B = 11
...
F = 15
итого от 0 до F - 16 чисел шестнадцатеричной системы исчисления, которая используется для удобства работы с числами в компьютере (в силу того, что память состоит из двоичных элементов, и размеры всех типов данных являются степенью двойки, поэтому 16-тиричное число легче разложить по байтам, точнее не надо разлогать - оно уже разложенное получается. в отличие от 10-тиричного)
один символ в файле - это байт (8 бит). байт может быть от 0 - 255.
в шестнадцатеричной системе от 0 - FF (видите, как удобно? :))

один байт - это одна буква, один символ, потому что диапазона от 0 - 255 хватает, чтобы поместить алфавит, цифры и прочие значки. таблица соответствия между значками (буквами) и числами от 0-255 называется .... забыл как. но вобщем, эти таблицы могут быть разными (ASCII, наример). отсюда, различные кодировки. кто-то там придумал русскую букву А поместить под номером 60, а кто-то под номером 80... а мы расхлебываем.

два байта образуют тип данных слово (word). максимальное значение слова,
как можно догадаться - FFFF, что в нашей 10-тиричной системе равно 65535.
обычно для записи, например, смещений и размеров используют 4 байта.

следует иметь в виду - то что в большинстве случаев когда в файл записывается число, то сначала записывается младшие байты а, потом старшие. например, число 7000 в шестадцатеричном виде будет - 1B58,
а в файле мы его встретим таким:
58 1B

smallball
26.12.2005, 10:44
2 вегуд:
1) Про цели этой темы мне все понятно.
2) Про "закрытые форматы" не совсем согласен. Да лицензионное соглашение может наложить запрет на "копание внутри", НО для разработчика хорошо бы разобраться в причинах, которые заставляют людей копаться (и еще бы оценить кол-во этих людей). ИМХО если контролировать этот процесс (а не тупо прикрываться лицензионным соглашением), то можно не плохо заработать и именно этот фактор в последнее время укрепляет позиции Open Source. Основным параметром для определения "лезть или не лезть в прогу" можно назвать полноту и качество реализации функций, заложенных в программный продукт (а так же потенциал программы). Вторым по значимости можно назвать умение конкретных разработчиков (все люди ведь разные). Для примера (из последнего) Doom3 и Quake4 делались на одном и том же "движке", хотя по производительности они различны (и даже Quake4 в чем то превосходит в качестве графики). И именно по этим причинам очень мало желающих "залезть" в Word, а фифу и пес "стремятся доработать" даже те кто не знаком с шестнадцатиричной системой исчисления.
3) Хотелось бы по подробнее про усложнения в фифе. Что именно усложнилось (улучшилось?) с 2004 по 2006.

вегуд
26.12.2005, 14:30
2) ну почему же, лезут в ворд.. особенно когда надо снять пароль с документа.. вспомним также дело эдоб против склярова... вобщем, чаще лезут не чтобы сделать "хорошо" :) а даже наоборот - если не защитишь свои файлы от хитрожопых умельцев, еще и разорят чего доброго..
3) я помню два гемора: появление fifa.fat и появление новой системы менюшек, которые так толком никто и не научился редактировать. а вот когда они появились, не помню.. кажется в 2004-ой

Asiat
26.12.2005, 14:56
smallball не переходи на личности, а то сидит и это не нужно и то ему не надо.

smallball
26.12.2005, 15:33
если не защитишь свои файлы от хитрожопых умельцев, еще и разорят чего доброго..
мегалол, тема BIG-файлов раскрыта. Ставлю в подпись до выхода РПЛ06. :)

2 Asiat:
Это не в укор сказано (тем более не в укор лично кому то), просто "удачное" выражение подвернулось. Ну и уж никак не мог подумать, что это кого то обидит (если это так то звиняй), ведь каждый из нас специалист в своей области. :)

вегуд
01.04.2006, 04:01
продолжение следует

D@P
01.04.2006, 21:15
надеемся:)

C.Rivlaldo
25.06.2007, 13:28
А можно узнать для чего нужны fat и bh файлы?

Коба
04.05.2008, 01:40
Привет!
Сто лет прошло с даты опубликования информации насчет BIG файлов, но именно сегодня понадобилось! Толковее ничего не нашел (я правда в этом деле лох, мне нужно было имено это и кратко). Так что идея передачи знаний живет и процветает. Никого не слушай, давай в том же духе!