Skip to content

Spot chunks and spawns

Robomodo RMEWorld and streamingApplies toSHRED

Everything a level places that is not a mesh is a spot chunk: a named, typed, transformed point or box: where the skater spawns, where a trigger fires, where the AI changes direction, where a sound plays. They sit in the type-2 sections of the SCP blob. The disc has 387 such sections and 53,015 chunks. Proven · all 547 SCPs

All numbers are big-endian.

A type-2 section holds count chunks of 0x200 bytes, then count world matrices of 64 bytes, one per chunk in the same order. Its size is 0x10 + count × 576. Proven · all 387 sections

Spot chunk512 bytesSHRED98% known

Only the first 0x2C bytes are data. The rest is pool memory that the authoring tool wrote out as it was (identical vertex-like rows repeat from chunk to chunk and the w words are junk).

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x012f32[3] = 1, 1, 1scaleObserved
0xC4u32zeroObserved
0x104u32nameProvensdbm of the chunk's name
0x144u32idProventhe chunk's own id; equals the id of a node in the same SCP for 82% of the chunks
0x184u32parentProventhe id of the group node that owns it
0x1C4u32classProvensdbm of the class name, see below
0x204u32shapeProvensdbm of Rectangle (0xC092526F) or Grid (0x1FEFE6A6)
0x248u32[2]pairUnknowntwo paired ids; 0x41 and 0x42 for rectangles
0x2C468u8[468]poolObserveduninitialised pool data; not meaningful

The matrix after the chunks is the chunk’s world transform (the translation in floats 12 to 14). It equals the world matrix of the node that has the chunk’s id for 49 of 51 chunks checked in CHARLIE; for the 9,551 chunks (18%) whose id is no node’s, it is the only transform. Observed A Rectangle is a centred unit box in the chunk’s frame, from −0.5 to +0.5 on each axis: 36 of 40 and 98 spline points fall inside such volumes of two India grind objects, against 4 for a box from 0 to 1. Observed

The class is the sdbm of its name. The names of 14 are proven by their hash; the census over the disc’s 53,015 chunks: Proven · all 547 SCPs

Class Chunks Class Chunks
Attractor 9,104 ChallengeObj 4,169
AIJunction 6,608 AudioVolume 1,711
Spot 5,862 NavJunction 1,513
SafeRespawn 5,472 AudioTrigger 1,252
GenericTrigger 4,953 BailSpot 372
Teleport 538 ChallengeArea 105
AITriggerSpot 8 VFXSpot 8

The other 11,340 chunks belong to twelve classes whose names are not known: 7641e379 (4,971 chunks), 92b2eb7c (1,075), 7d06de87 (1,003), 32789c00 (924), dccd6fb0 (860), 57ab8107 (799), f3f74aad (585), c9e28dae (545), f1a32444 (292), 145af167 (122), 01ab0a9b (163) and e926a21d (1). Proven · all 547 SCPs The executable’s list of AddSpotChunk_* strings names 22 spot classes (Spot, NavJunctionSpot, AIJunctionSpot, GenericTriggerSpot, AITriggerSpot, AISpawnSpot, AITeleportSpot, AttractorSpot, SpeedSpot, TimeSpot, TrickSpot, ChallengeSpot, ScoreOrbSpot, AudioVolume, AudioSpot, SoundObject, AudioTrigger, ChannelSpot, BailSpot, SafeRespawnSpot, WheelTriggerSpot, TrickOrbSpot). The hash is of the name with or without the Spot suffix, inconsistently (Attractor but BailSpot). Observed That the twelve unknown hashes are among those names is not established.

A drop spot is a spawn point a level offers. The database’s <Level>_dropspots table names it (MAIN.DB) in SPOT_NAME; the chunk whose name equals the sdbm of that string, as written or in lower case, is a Teleport chunk, and its matrix is the spawn transform. Proven · all 194 drop-spot rows

Level Drop-spot rows Resolved to a chunk
Charlie 26 26
Delta 9 8
Echo 14 14
Foxtrot 14 14
India 30 27
Juliet 15 15
Mike 4 4
November 26 26
Oscar 24 24
Papa 32 25
All 194 183

Each resolved row names a Teleport chunk. Proven · all 183 resolved rows The 11 unresolved rows have names such as -1, na, Spawn_MANUALCHALLENGE, Spawn_ESGAMESKATE, Area0x_Teleport or Ch16_Teleport, which match no chunk. Observed Two of Charlie’s rows are crossed: the row BigAir2 names Default_BigAir3_Spawn and BigAir3 names Default_BigAir2_Spawn. Observed The objective spots of tasks (OBJ_SPOT, 87% resolve) and the session boundaries (90%) resolve to chunks the same way. Observed

In CHARLIE all 30 Teleport chunks have a surface below them, at drops of 0.0, 0.3, 0.5, 1.0 (seven) and 4.0 (four) units, with no extra mirror; with x negated the drops are noisy. The chunks’ matrices are therefore in the placements’ space. Observed The spawn matrices are rotations with a flipped z axis for most spawns, and which axis points forward is not established. Unknown

Which axis of a Teleport chunk is the facing?

The matrices say where the skater stands but a comparison with the game’s own spawn orientation has not been made.

What are the twelve unnamed classes?

They are 21% of all chunks, the largest being 4,971 chunks. Their names would come from the executable’s spot-class list or from a script that mentions them.