|
|
| Строка 1: |
Строка 1: |
| − | ==Введение==
| + | инфа в процессе корректировки... |
| − | | + | --[[Участник:HikeR|HikeR]] 03:10, 6 мая 2007 (MSD) |
| − | Разбор all.spawn (попытка 2)
| + | |
| − | | + | |
| − | Здесь я постараюсь описать структуру файла all.spawn для игры [[S.T.A.L.K.E.R.:_Shadow_of_Chernobyl]] найденную методом проб и ошибок. Так как появление SDK пока еще за горами, то я надеюсь, что эта информация смжет оказаться полезной для модостроителей и откроет новые горизонты для этого нелегкого и интересного занятия.
| + | |
| − | | + | |
| − | ==Структура==
| + | |
| − | | + | |
| − | размер (байт) описание комментарий
| + | |
| − | -------------------------------------------
| + | |
| − | 4 номер блока 00 00 00 00
| + | |
| − | 4 размер блока (L1)
| + | |
| − | L1 содержание блока
| + | |
| − | На текущий момент всего таких блоков 4.
| + | |
| − | #"шапка"
| + | |
| − | #объединенные файлы level.spawn
| + | |
| − | #сетка координат (пока непонятно чего)
| + | |
| − | #список переменных используемых во втором блоке
| + | |
| − | | + | |
| − | похоже, что 4-й блок компилируется с использованием файлов level.game из каталогов уровней.
| + | |
| − | | + | |
| − | ==Первый блок==
| + | |
| − | | + | |
| − | Пока в изучении. Можно только сказать, что по смещению 44 (здесь и далее смещение приводится в десятичном виде, если не указано обратное, а также за ноль принято начало блока) находится 2-байтовое значение, которое содержит количество всех объектов. В версии 1.0001 и 1.0002 оно равно 8641.
| + | |
| − | | + | |
| − | | + | |
| − | ==Второй блок==
| + | |
| − | | + | |
| − | | + | |
| − | {|
| + | |
| − | |+
| + | |
| − | |-
| + | |
| − | !<big>1-й уровень</big>||<big>2-й уровень</big>
| + | |
| − | |-
| + | |
| − | |
| + | |
| − | размер описание комментарий
| + | |
| − | (байт)
| + | |
| − | ------------------------------------------
| + | |
| − | 4 номер секции 00 00 00 00
| + | |
| − | 4 размер след. параметра L1
| + | |
| − | L1 количество объектов
| + | |
| − | 4 номер секции 01 00 00 00
| + | |
| − | 4 размер вложенной секции L2
| + | |
| − | L2 содержание секции
| + | |
| − | 4 номер секции 02 00 00 00
| + | |
| − | 4 пустышка 00 00 00 00
| + | |
| − | Содержит вложенную секцию, в версии 1.(много нолей)1
| + | |
| − | | + | |
| − | ее размер равен CD F6 26 00 (2553549) байт.
| + | |
| − | |
| + | |
| − | размер описание комментарий
| + | |
| − | (байт)
| + | |
| − | ------------------------------------------
| + | |
| − | 4 номер объекта 00 00 00 00
| + | |
| − | 4 размер L1
| + | |
| − | L1 содержание
| + | |
| − |
| + | |
| − |
| + | |
| − |
| + | |
| − |
| + | |
| − |
| + | |
| − | .
| + | |
| − |
| + | |
| − | .
| + | |
| − | |+
| + | |
| − | |}
| + | |
| − | | + | |
| − | {|
| + | |
| − | |+
| + | |
| − | |-
| + | |
| − | !<big>3-й уровень</big>||<big>4-й уровень</big>
| + | |
| − | |-
| + | |
| − | |
| + | |
| − | размер описание комментарий
| + | |
| − | (байт)
| + | |
| − | ------------------------------------------
| + | |
| − | 4 номер секции 00 00 00 00
| + | |
| − | 4 размер след. параметра L1
| + | |
| − | L1 номер объекта
| + | |
| − | 01 00 00 00 разделитель
| + | |
| − | 4 размер вложенной секции L2
| + | |
| − | L2 содержимое секции
| + | |
| − |
| + | |
| − |
| + | |
| − | |
| + | |
| − | размер описание комментарий
| + | |
| − | (байт)
| + | |
| − | ------------------------------------------
| + | |
| − | 4 номер секции 00 00 00 00
| + | |
| − | 4 размер вложенной секции L1
| + | |
| − | 2 еще раз размер L1-2=L2
| + | |
| − | L2 содержание секции 1
| + | |
| − | 4 номер секции 01 00 00 00
| + | |
| − | 4 размер вложенной секции L3
| + | |
| − | 2 еще раз размер L3-2=L4
| + | |
| − | L4 содержание секции 2
| + | |
| − | |+
| + | |
| − | |}
| + | |
| − | | + | |
| − | {|
| + | |
| − | |+
| + | |
| − | |-
| + | |
| − | !<big>5-й уровень. Секция 1</big>||
| + | |
| − | |-
| + | |
| − | |
| + | |
| − | размер описание комментарий
| + | |
| − | (байт)
| + | |
| − | ------------------------------------------
| + | |
| − | 01 00 начало секции всегда 01 00
| + | |
| − | x текст до первого 00
| + | |
| − | y текст до первого 00
| + | |
| − | 00 FE разделитель всегда 00 FE
| + | |
| − | 4 координата X float
| + | |
| − | 4 координата Y float
| + | |
| − | 4 координата Z float
| + | |
| − | 4 координата X вращение,float
| + | |
| − | 4 координата Y вращение,float
| + | |
| − | 4 координата Z вращение,float
| + | |
| − | 00 00 FF FF FF FF FF FF разделитель
| + | |
| − | 4 неизвестно почти всегда равно 29 00 76 00
| + | |
| − | (кроме пары десятков случаев)
| + | |
| − | 4 версия игры 06 00 00 00
| + | |
| − | 2 номер объекта
| + | |
| − | 2 размер вложенной секции включая эти 2 байта
| + | |
| − | |
| + | |
| − | | + | |
| − | {|
| + | |
| − | |-
| + | |
| − | !<big>5-й уровень. Секция 2</big>
| + | |
| − | |-
| + | |
| − | |Если секция есть, то содержит копию координат из секции 1, вектора вращения представлены в виде 0, Y, X, то есть в обратном порядке с опущенной Z координатой. Только есть еще 2-3 непонятных кода.
| + | |
| − | |-
| + | |
| − | !<big>6-й уровень. Секция 1</big>
| + | |
| − | |-
| + | |
| − | |Вот здесь и находится самое интересное. Встречается несколько типов секций. Однозначно сказать, чем отличается каждая я пока не могу. Попробую перечислить уже знакомые.
| + | |
| − | |}
| + | |
| − | |+
| + | |
| − | |}
| + | |
| − | | + | |
| − | == Третий блок ==
| + | |
| − | | + | |
| − | Первые 4 байта - количество объектов. 33 A6 00 00 = 42547
| + | |
| − | | + | |
| − | Размер третьего блока - 850940 (без первых 4-х байт)
| + | |
| − | | + | |
| − | В итоге имеет размер объекта 20 байт.
| + | |
| − | | + | |
| − | | + | |
| − | | + | |
| − | == [[all.spawn(2)_Object_types|Типы объектов]] ==
| + | |
| − | | + | |
| − | Переходим и смотрим дальше ;)
| + | |
| − | | + | |
| − | [[Категория:Форматы файлов]]
| + | |