main
The one scene of **Hidden Love — A Bangladeshi Romance Story**. Its `scene.json` is the world's startup scene (`.world_settings` → `world.startup_scene`), so this is what loads when the world opens.
scenes/main
The one scene of Hidden Love — A Bangladeshi Romance Story. Its scene.json
is the world's startup scene (.world_settings → world.startup_scene), so this
is what loads when the world opens.
What is in it
| Entity | What it is |
|---|---|
World/Ground | A stand-in slab at street level so the skeleton has a floor. The world slice replaces it with the real street, the rooms and the new town. |
World/Sun, World/Ambient, World/Sky | Overcast monsoon light: a weak cool high sun, a lot of grey-blue ambient, and a closed high cloud deck. The world slice retunes these for the rainy night and the sunrise. |
PlayerSetups/Tutor | The player prototype — PrototypeOnly, copied once per joining user. |
PlayerSetups/Tutor/Body | The player's body, declared empty. entrypoint.luau's ensureBody composes the humanoid avatar into it after the load settles (see below). |
PlayerSetups/Tutor/CameraRig | The gameplay camera the in-play.png reference was drawn from: over the shoulder, high, looking slightly down, fov 52. It also carries the AudioListener, so a player hears from where they see. OwnerOnly, so each peer has their own. |
Spawns/StreetSpawn | Where joining users arrive, at the south end of the street. |
Cast, Story, Screens, Sound, Stage | Mount entities. Empty on purpose. Each slice attaches its component to one of these. |
build.luau is where the scene is written as code, and it is owned by the
harness, not by a slice — a slice that writes it will be clobbering four
others. A slice adds an entity by attaching its component to its mount, or by
spawning under it at runtime, never by editing this file.
Two things that are load-bearing
The body is composed by the entrypoint, not by an Asset component. A
bundle an Asset component instantiates on awake composes while the scene swap
is still tearing the previous root down, and it loses the entity it is composing
into —
bundle:instantiate: the root entity '…' left the world while this bundle was
being composed onto it, so there is no composed root to return.
— which leaves a body with a full controller rig (Humanoid, Locomotion,
MovementState, PlayerAvatar) and no mesh: it walks, and it is invisible.
Composing it explicitly once the load has settled works every time. If that ever
changes, the fix belongs in entrypoint.luau's ensureBody, not in a slice.
The world does not seed a play-mode avatar or camera. .world_entrypoint.luau
seeds only the edit-mode slots, because the scene authors its own
PlayerPrototype and the engine spawns the local player from that. A world-level
default as well would spawn a second avatar alongside it.
Files
| File | What it is |
|---|---|
build.luau | The scene as code. Rebuilds in place on save; an entity keeps its id. |
entrypoint.luau | Runs on every load: composes the player body, mounts each slice onto its mount entity, and puts the skeleton's proof-of-life card on screen. |
scene.json | The baked scene. Loaded when the world opens; build.luau is what regenerates it. |
Scoped to this part · feeds back into the world's score.