All.spawn(2) — S.T.A.L.K.E.R. Inside Wiki

All.spawn(2)

Материал из S.T.A.L.K.E.R. Inside Wiki

Перейти к: навигация, поиск

Введение

Разбор 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.

  1. "шапка"
  2. объединенные файлы level.spawn
  3. сетка координат (пока непонятно чего)
  4. список переменных используемых во втором блоке

похоже, что 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 байта
5-й уровень. Секция 2
Если секция есть, то содержит копию координат из секции 1, вектора вращения представлены в виде 0, Y, X, то есть в обратном порядке с опущенной Z координатой. Только есть еще 2-3 непонятных кода.
6-й уровень. Секция 1
Вот здесь и находится самое интересное. Встречается несколько типов секций. Однозначно сказать, чем отличается каждая я пока не могу. Попробую перечислить уже знакомые.

Третий блок

Первые 4 байта - количество объектов. 33 A6 00 00 = 42547

Размер третьего блока - 850940 (без первых 4-х байт)

В итоге имеет размер объекта 20 байт.


Типы объектов

Переходим и смотрим дальше ;)

Другие места
LANGUAGE