All.spawn(2) — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
(→Второй блок) |
(<<< aka_sektor) |
||
| (не показана 1 промежуточная версия 1 участника) | |||
| Строка 1: | Строка 1: | ||
| − | + | ==Введение== | |
| − | + | Разбор all.spawn (попытка 2) | |
| − | + | Здесь я постараюсь описать структуру файла all.spawn для игры [[S.T.A.L.K.E.R.:_Shadow_of_Chernobyl]] найденную методом проб и ошибок. Так как появление SDK пока еще за горами, то я надеюсь, что эта информация смoжет оказаться полезной для модостроителей и откроет новые горизонты для этого нелегкого и интересного занятия. | |
| − | + | ==Структура== | |
| + | |||
| + | размер (байт) описание комментарий | ||
| + | ------------------------------------------- | ||
| + | 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> | ||
| + | |- | ||
| + | |Вот здесь и находится самое интересное. Встречается несколько типов секций. Однозначно сказать, чем отличается каждая я пока не могу. Попробую перечислить уже знакомые. | ||
| + | |} | ||
| + | |+ | ||
| + | |} | ||
== Третий блок == | == Третий блок == | ||
| Строка 20: | Строка 151: | ||
Переходим и смотрим дальше ;) | Переходим и смотрим дальше ;) | ||
| + | [[Категория:Неоформленные статьи]] | ||
Текущая версия на 23:15, 19 марта 2014
Введение
Разбор all.spawn (попытка 2)
Здесь я постараюсь описать структуру файла all.spawn для игры S.T.A.L.K.E.R.:_Shadow_of_Chernobyl найденную методом проб и ошибок. Так как появление SDK пока еще за горами, то я надеюсь, что эта информация смoжет оказаться полезной для модостроителей и откроет новые горизонты для этого нелегкого и интересного занятия.
Структура
размер (байт) описание комментарий ------------------------------------------- 4 номер блока 00 00 00 00 4 размер блока (L1) L1 содержание блока
На текущий момент всего таких блоков 4.
- "шапка"
- объединенные файлы level.spawn
- сетка координат (пока непонятно чего)
- список переменных используемых во втором блоке
похоже, что 4-й блок компилируется с использованием файлов level.game из каталогов уровней.
Первый блок
Пока в изучении. Можно только сказать, что по смещению 44 (здесь и далее смещение приводится в десятичном виде, если не указано обратное, а также за ноль принято начало блока) находится 2-байтовое значение, которое содержит количество всех объектов. В версии 1.0001 и 1.0002 оно равно 8641.
Второй блок
| 1-й уровень | 2-й уровень |
|---|---|
размер описание комментарий (байт) ------------------------------------------ 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 содержание . . |
| 3-й уровень | 4-й уровень |
|---|---|
размер описание комментарий (байт) ------------------------------------------ 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 |
| 5-й уровень. Секция 1 | |||||
|---|---|---|---|---|---|
размер описание комментарий (байт) ------------------------------------------ 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 байта |
|
Третий блок
Первые 4 байта - количество объектов. 33 A6 00 00 = 42547
Размер третьего блока - 850940 (без первых 4-х байт)
В итоге имеет размер объекта 20 байт.
Типы объектов
Переходим и смотрим дальше ;)