loading… 0 of 9 answered
01 why
Baked output could have been serialized as a recipe — a list of 'create entity with these components' instructions. Why serialize chunk memory instead?
a Recipes take more disk spaceb Replaying a recipe means running the full structural-change machinery per entity at load time; a chunk image is already in final layout, so loading is a byte copy with no archetype computation or component writes at allc Recipes can't represent component valuesd Chunk memory compresses bettercheck 02 how
Why does streaming a baked section of 10,000 static props beat instantiating the same 10,000 entities?
a Streaming uses the GPUb Streaming cost scales with bytes and I/O bandwidth and can happen off the main thread; instantiation pays per-entity structural change on the main thread, scaling with entity count and archetype complexityc Instantiation is not supported for static objectsd They cost the same; streaming is just more convenientcheck 03 why
Why must Entity references inside a baked scene be remapped when it loads?
a Because entity data is encrypted on diskb An Entity is an index-plus-version into a specific world, not a pointer — the loading world already has entities at low indices, so a stored index means something different or nothing at allc Because references become null during serializationd They don't need remapping; they're absolutecheck 04 why
You store an entity's index as a plain int in a component, then read it after a scene load. What happens?
a It works — indices are stable across loadsb Nothing patches it, because remapping only covers Entity fields the serializer recognizes; you get a value that resolves to a real live entity that is the wrong onec The build fails at bake timed It throws a null reference exceptioncheck 05 why
A baked prefab entity has to satisfy two conflicting requirements at once. What are they, and what resolves the conflict?
a Be small and be fast; solved by compressionb Be a fully baked entity with correct archetype and values (so instantiation has a source to copy), yet be invisible to gameplay queries (so it isn't rendered, moved or damaged) — resolved by a zero-size Prefab tag that queries exclude by defaultc Be managed and unmanaged; solved by a wrapperd Be serialized and streamed; solved by sectionscheck 06 how
A component holding 4 KB of navigation data, on 10,000 entities. Price it.
a Fine — 40 MB is affordable on modern hardwareb Chunk capacity collapses to about three entities per 16 KB chunk before any other component, destroying density and prefetch benefit, while storing 10,000 identical copies of 4 KB to represent 4 KB of informationc It's efficient because the data is contiguousd The compiler deduplicates identical component values automaticallycheck 07 why
Why can't shared immutable data just be a raw pointer in a component?
a Pointers are illegal in C#b Three independent failures: managed references can't live in unmanaged components or be touched by Burst; a raw address is meaningless after serialization, so a baked scene of pointers is garbage on load; and a pointer gives the job safety system nothing to reason aboutc Pointers are too slow to dereferenced Only one entity may hold a pointer at a timecheck 08 why
Why are internal links inside a blob stored as relative offsets rather than absolute addresses?
a Offsets are smaller than pointersb It makes the blob position-independent — every reference means 'so many bytes from here', so the blob is valid wherever it lands in memory, which is what lets it survive serialization and be loaded to any addressc The CPU can only address relativelyd It allows the blob to be mutablecheck 09 why
Why is blob immutability what makes the sharing safe, rather than merely a restriction?
a Immutable data is faster to readb If a blob could be written, 10,000 entities referencing it across parallel jobs would be a data race by construction — read-only shared data has no write to overlap, so every reader parallelizes freelyc Immutability saves memoryd It prevents accidental typos in the datacheck
your notes stored in this browser · syncs when you sign in
← m05.l05 m05.l07 →