Lights
Light records are the type-4 sections of the SCP blob. They are in the lighting_* layers (layers), which hold a node and light or probe sections but no placements. The disc has 55 light sections and 9,778 records. Proven · all 547 SCPs
What the records are made of is decoded; what they mean as a light (units, range, cone, which axis shines) is not.
All numbers are big-endian.
Section and record
Section titled “Section and record”A section holds count records of 80 bytes from its data offset, then count matrices of 64 bytes; its size is data_offset + count × 144. This holds in all 55 sections. Proven · all 55 sections
| Offset | Size | Type | Field | Confidence | Notes |
|---|---|---|---|---|---|
| 0x0 | 16 | f32[4] | colour | Observed | red, green, blue, alpha; alpha is 1 in every record |
| 0x10 | 4 | u32 | name | Observed | sdbm of the light's name; Sun (0x2954240C) is the only one that resolves, once in 170 in CHARLIE |
| 0x14 | 12 | f32[3] | parameters | Unknown | kind 0: 0.2 to 11, 1 to 15 and 0.2 to 2.2; kinds 1 and 4: 1, 100 and 0.4 to 1 |
| 0x20 | 4 | u32 | kind | Observed | 0, 1, 3, 4, 7 or 8, see below |
| 0x24 | 16 | u32[4] | links | Unknown | -1, 0, 0, -1 or -2 in the lights seen |
| 0x34 | 4 | u32 | matrix_offset | Proven | from the section's start, into the matrix array that follows the records |
| 0x38 | 8 | u32[2] | tail | Unknown | 0 except for one kind |
| 0x40 | 16 | u8[16] | name_buffer | Observed | leftover text and numbers of the authoring tool's name buffer (I_Visibility, texture names) |
Every matrix is finite and affine. For the volume kinds (7 and 8) the matrix carries a large scale. Proven · all 55 sections
The kind word, over the 9,778 records: Proven · all 55 sections
| Kind | Records | Notes |
|---|---|---|
| 0 | 5,251 | the commonest; parameters 0.2 to 11, 1 to 15 and 0.2 to 2.2 |
| 7 | 4,079 | point-like; positions near the origin, so the matrix holds a local offset |
| 8 | 398 | volumes with large matrix scale |
| 1 | 23 | named Sun where the name resolves |
| 4 | 23 | ambient |
| 3 | 4 | a texture name (gobo_star, gobo_circle) in the buffer |
The names for kinds 1 (sun) and 4 (ambient) come from the one resolvable name and a pattern in the parameters; the rest are only numbers. Inferred A light’s translation is not its position in the level: the matrix of kind 7 is near the origin and the sun’s translation is not the sun’s. How to place a light is not established. Unknown
Beside the light records the lighting layers hold specular cube-map locators (type d) and probe or ambient-volume records (type f, with ambvol_* volume textures; see Textures). The sky is an ordinary placed mesh with a skydome vertex program. Observed
Colour, name and matrix are plain. The three parameters (range, intensity or cone angle are the candidates), the kind codes and the four link words have no known use; the executable’s light loader has not been traced.