Log inGet started
·
scene · drop-in viewer
asset⌬ scenescene·originates fromworld 3a9e3328-0…

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.

by◐lauramarka·posted 14d ago
What it does

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

EntityWhat it is
World/GroundA 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/SkyOvercast 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/TutorThe player prototype — PrototypeOnly, copied once per joining user.
PlayerSetups/Tutor/BodyThe player's body, declared empty. entrypoint.luau's ensureBody composes the humanoid avatar into it after the load settles (see below).
PlayerSetups/Tutor/CameraRigThe 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/StreetSpawnWhere joining users arrive, at the south end of the street.
Cast, Story, Screens, Sound, StageMount 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

FileWhat it is
build.luauThe scene as code. Rebuilds in place on save; an entity keeps its id.
entrypoint.luauRuns 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.jsonThe baked scene. Loaded when the world opens; build.luau is what regenerates it.

Interface

What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.

This asset doesn't declare a schema or structured payload.

Sub-parts

Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.

10items
▣
module · born here
❒asset
# game.Game The spine of **Hidden Love — A Bangladeshi Romance Story**. One shared module holding the constants and the rules, so no two slices have to agree by convention. ```lua local Game = require("game.Game") Game.bus.on("chapter", function(n) print(n) end) ``` Nothing here touches the engine at require time — it is data and pure functions, safe to require from a scene entrypoint, a component, a module or an `execute` chunk. ## What it holds | Field | What it is | |---|---| | `ART` | The art-direction sentence, verbatim from the reference pass. Every generated prompt reuses it word for word. | | `TITLE` / `SUBTITLE` / `ENDING_TITLE` | The title card and the closing card. | | `CAST` | The seven named people: who they are, what they wear, and the reference image for the two leads. | | `CHAPTERS` | The twelve chapters in order — `place`, `who`, `beat`, `objective`. The storyline is this table. | | `PLACES` | The seven sets the world slice builds, each with the reference image it answers to. | | `METERS` / `TIERS` | friendship, trust, closeness — and the three ways the same ending can land. | | `MOUNTS` | The names of the scene's mount entities a slice attaches to. | | `SLICES` | The five slice modules the entrypoint requires and mounts. | | `bus` | `on` / `off` / `emit`. How slices talk without requiring each other. | ## The rule the whole game runs on Every chapter reaches the end. The meters decide how *warm* the telling is, not whether it finishes — `warmth(state)` is the mean of the three meters as 0..1, and `tier(state)` names what that earns at the finale. ## State and saving `Game.newState()` is the whole save: chapter, the three meters, the choices taken, flags, the phone log, and time in chapter. `Game.SAVE_PATH` is where it is written, under `/zero/source/local/`. `Game.addMeter(state, key, amount)` clamps and announces on the bus; move the relationship through it and never by assignment, so everything watching stays in step. ## Mounting The scene lays down one entity per key in `Game.MOUNTS` and the entrypoint hands them to each slice's `mount(refs)`. A slice that is not present yet is not an error — the scene loads without it.
▲ 0↑ born
backing path · scenes/main.scene

Problems

Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.

0problems
No problems reported. This asset, its contents, and its direct deps are clean as of the latest commit.
⌬ZeroMind agent review · awaiting first pass
Findings
Reviewer findings (handle · model · tag · quoted note) appear here once the per-pass review log lands. Today only the rolled-up agent_score is exposed.
usability—
did it work as advertised
quality—
authoring polish + cohesion
performance—
frame & memory budget held
agent review score
—
/ 100
awaiting first pass
usability × 0.40
+ quality × 0.35
+ performance × 0.25
± compat factor

Usability ratings

Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".

—%no reports yet
Sign in to report whether this part worked for you.
Discussion

Scoped to this part · feeds back into the world's score.

0comments
Sign in to post.sign in
No comments yet. Be the first.