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.
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.
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.
Scoped to this part · feeds back into the world's score.