places.sceneModule
Builds the seven places a player can discover beyond the Peel Kabuki night market, each standing on the ground and roads `game.city.metro` lays out from `game.city.map`:
places
Builds the seven places a player can discover beyond the Peel Kabuki night market, each standing on the ground and roads game.city.metro lays out from game.city.map:
- Smoothie Docks: the quay with a chain railing and bollards, container stacks in rows, two gantry cranes, sodium masts, the smoothie shed and two moored boats.
- Peel Park: a lawn ringed in stone behind a red torii, a koi pond with hologram koi, an arched bridge, a shrine, stone lanterns, benches and cherry trees.
- Gold Row: a marble fountain under a gold banana on the roundabout island.
- Rust Alley: graffiti, rust pipes, AC units, lantern cables and the door of a bar with no name.
- Pixel Peel: an open-fronted arcade with rows of cabinets, a dance stage and a rooftop sign.
- The Undercroft: a skate lot under the highway with quarter pipes, a funbox, kickers, a grind rail, a half court and fire barrels.
- The Promenade: benches, coin binoculars, food kiosks and vending machines along the cliff.
What it adds
A places entity holding:
places_geometry: static meshes, batched per material per tile.places_colliders: static triangle-mesh colliders.places_lights: about 45 point lights.places_props: the crane and cherry-tree bundles.
What it needs
- It requires
game.city.map,game.city.look,game.city.kitandgame.shared.geo. - It uses the
game.city.propsbundles for the dockside crane and the cherry tree. - Place it under
mount_cityaftergame.city.metro. It takes no params. - The district's
LightBudgetmust listplacesamong its roots, so these lights share the renderer's light cap with the rest of the city.
Interface
What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.
conforms to
zero/source-extract/v2game.city.places — the places a player can discover beyond the Peel Kabuki night market, each built on the ground game.city.map gives it: SMOOTHIE DOCKS the quay with its chain railing and bollards, container stacks in rows, two gantry cranes, sodium masts, the smoothie shed and boats moored on the black water PEEL PARK a lawn ringed in stone behind a red torii, a koi pond with hologram koi, an arched bridge, a shrine, stone lanterns, benches and cherry trees GOLD ROW the roundabout's island: a marble fountain under a gold banana, and its sign RUST ALLEY graffiti, rust pipes, AC units and lantern cables over a back lane, and the door of a bar with no name PIXEL PEEL an open-fronted arcade: rows of cabinets, a dance stage and a rooftop sign THE UNDERCROFT a skate lot under the highway: quarter pipes, a funbox, kickers, a grind rail, a half court and fire barrels THE PROMENADE benches, coin binoculars, kiosks and vending machines along the cliff OWNED BY THE CITY SLICE. Placed once by scenes/main.scene/build.luau under `mount_city`, after game.city.metro, which builds the ground and roads these places stand on. Materials are game.city.look's, shared with the district and the metro. Static geometry is batched per material per CHUNK tile under `places_geometry`; collision is batched into static triangle-mesh colliders under `places_colliders`; lights stand under `places_lights` (the district's LightBudget names `places` among its roots); the cranes and cherry trees are bundles under `places_props`.
propHandle(r: () → void
| arg | type | description |
|---|---|---|
| r | ( |
newG( ) → Geo
vtx(g: Geo, x: number, y: number, z: number, nx: number, ny: number, nz: number, u: number, v: number) → number
| arg | type | description |
|---|---|---|
| g | Geo | |
| x | number | |
| y | number | |
| z | number | |
| nx | number | |
| ny | number | |
| nz | number | |
| u | number | |
| v | number |
tri(g: Geo, a: number, b: number, c: number, nx: number, ny: number, nz: number) → void
a triangle, wound so that it faces n
| arg | type | description |
|---|---|---|
| g | Geo | |
| a | number | |
| b | number | |
| c | number | |
| nx | number | |
| ny | number | |
| nz | number |
quad(g: Geo, p: { { number } }, n: { number }, uv: { { number } }) → void
four corners in order round the quad, one normal, a uv per corner
| arg | type | description |
|---|---|---|
| g | Geo | |
| p | { { number } } | |
| n | { number } | |
| uv | { { number } } |
ellipse(cx: number, cz: number, rx: number, rz: number, n: number) → void
closed outlines as {x, z} points
| arg | type | description |
|---|---|---|
| cx | number | |
| cz | number | |
| rx | number | |
| rz | number | |
| n | number |
circle(cx: number, cz: number, r: number, n: number) → void
| arg | type | description |
|---|---|---|
| cx | number | |
| cz | number | |
| r | number | |
| n | number |
cap(g: Geo, pts: { { number } }, y: number, dir: number, uvS: number, cx: number, cz: number) → void
a flat fan over a closed outline that is star-shaped about (cx, cz)
| arg | type | description |
|---|---|---|
| g | Geo | |
| pts | { { number } } | |
| y | number | |
| dir | number | |
| uvS | number | |
| cx | number | |
| cz | number |
wall(g: Geo, pts: { { number } }, y0: number, y1: number, cx: number, cz: number, out: number, tu: number) → void
vertical faces round a closed outline, facing away from (cx, cz) when out is 1 and toward it when out is -1
| arg | type | description |
|---|---|---|
| g | Geo | |
| pts | { { number } } | |
| y0 | number | |
| y1 | number | |
| cx | number | |
| cz | number | |
| out | number | |
| tu | number |
ringTop(g: Geo, inner: { { number } }, outer: { { number } }, y: number, uvS: number) → void
a flat band between two closed outlines with the same number of points
| arg | type | description |
|---|---|---|
| g | Geo | |
| inner | { { number } } | |
| outer | { { number } } | |
| y | number | |
| uvS | number |
wedge(x0: number, x1: number, z0: number, z1: number, h: number) → Geo
a ramp rising along +z from nothing at z0 to h at z1
| arg | type | description |
|---|---|---|
| x0 | number | |
| x1 | number | |
| z0 | number | |
| z1 | number | |
| h | number |
quarterPipe(w: number, R: number, D: number) → Geo
a quarter pipe w wide with transition radius R and a coping deck D deep: it faces +z, its back (and the deck behind it) at z <= 0
| arg | type | description |
|---|---|---|
| w | number | |
| R | number | |
| D | number |
pitchQ(dy: number, dz: number) → void
rotation about x that turns +z toward (0, dy, dz)
| arg | type | description |
|---|---|---|
| dy | number | |
| dz | number |
rr(a: number, b: number) → number return a
| arg | type | description |
|---|---|---|
| a | number | |
| b | number |
pick(t: { any }) → any return t
| arg | type | description |
|---|---|---|
| t | { any } |
getMat(key: string) → any
| arg | type | description |
|---|---|---|
| key | string |
frame(px: number, py: number, pz: number, yaw: number) → void
| arg | type | description |
|---|---|---|
| px | number | |
| py | number | |
| pz | number | |
| yaw | number |
noFrame( ) → void
toWorld(x: number, y: number, z: number) → void
| arg | type | description |
|---|---|---|
| x | number | |
| y | number | |
| z | number |
add(key: string, g: any) → void
| arg | type | description |
|---|---|---|
| key | string | |
| g | any |
box(key: string, x0: number, y0: number, z0: number, x1: number, y1: number, z1: number, tu: number?, tv: number?, skip: any?) → void
| arg | type | description |
|---|---|---|
| key | string | |
| x0 | number | |
| y0 | number | |
| z0 | number | |
| x1 | number | |
| y1 | number | |
| z1 | number | |
| tu | number? | |
| tv | number? | |
| skip | any? |
addAt(key: string, g: any, yaw: number, x: number, y: number, z: number) → void
a piece made about its own origin, turned by yaw and set at (x, y, z)
| arg | type | description |
|---|---|---|
| key | string | |
| g | any | |
| yaw | number | |
| x | number | |
| y | number | |
| z | number |
beam(key: string, a: { number }, b: { number }, t: number) → void
a beam of section t from a to b
| arg | type | description |
|---|---|---|
| key | string | |
| a | { number } | |
| b | { number } | |
| t | number |
collider(x0: number, y0: number, z0: number, x1: number, y1: number, z1: number) → void
| arg | type | description |
|---|---|---|
| x0 | number | |
| y0 | number | |
| z0 | number | |
| x1 | number | |
| y1 | number | |
| z1 | number |
light(x: number, y: number, z: number, c: { number }, intensity: number, radius: number) → void
| arg | type | description |
|---|---|---|
| x | number | |
| y | number | |
| z | number | |
| c | { number } | |
| intensity | number | |
| radius | number |
prop(p: any, x: number, y: number, z: number, yaw: number, s: number) → void
| arg | type | description |
|---|---|---|
| p | any | |
| x | number | |
| y | number | |
| z | number | |
| yaw | number | |
| s | number |
solidRing(key: string, cx: number, cz: number, r0: number, r1: number, y0: number, y1: number, n: number, colTop: number?) → void
shared pieces
| arg | type | description |
|---|---|---|
| key | string | |
| cx | number | |
| cz | number | |
| r0 | number | |
| r1 | number | |
| y0 | number | |
| y1 | number | |
| n | number | |
| colTop | number? |
solidDisc(key: string, cx: number, cz: number, r: number, y0: number, y1: number, n: number, colTop: number?) → void
| arg | type | description |
|---|---|---|
| key | string | |
| cx | number | |
| cz | number | |
| r | number | |
| y0 | number | |
| y1 | number | |
| n | number | |
| colTop | number? |
neonFrame(key: string, cx: number, cy: number, z0: number, z1: number, w: number, h: number) → void
a neon outline round a w x h rectangle in the xy plane, z0..z1 deep
| arg | type | description |
|---|---|---|
| key | string | |
| cx | number | |
| cy | number | |
| z0 | number | |
| z1 | number | |
| w | number | |
| h | number |
signZ(key: string, cx: number, cy: number, z: number, dir: number, w: number, h: number, neon: string?, uv: { number }?) → void
a sign on a wall at z, facing +z (dir 1) or -z (dir -1): a metal backing, the picture and a neon frame
| arg | type | description |
|---|---|---|
| key | string | |
| cx | number | |
| cy | number | |
| z | number | |
| dir | number | |
| w | number | |
| h | number | |
| neon | string? | |
| uv | { number }? |
bench(yaw: number, x: number, y: number, z: number) → void
a park bench facing +z
| arg | type | description |
|---|---|---|
| yaw | number | |
| x | number | |
| y | number | |
| z | number |
vend(yaw: number, x: number, y: number, z: number) → void
a vending machine, its lit front at z = 0 facing +z
| arg | type | description |
|---|---|---|
| yaw | number | |
| x | number | |
| y | number | |
| z | number |
crate(key: string, x: number, y: number, z: number, s: number, yaw: number) → void
| arg | type | description |
|---|---|---|
| key | string | |
| x | number | |
| y | number | |
| z | number | |
| s | number | |
| yaw | number |
drum(key: string, x: number, z: number) → void
| arg | type | description |
|---|---|---|
| key | string | |
| x | number | |
| z | number |
fireBarrel(x: number, z: number) → void
an oil drum with a fire glowing in it
| arg | type | description |
|---|---|---|
| x | number | |
| z | number |
railRun(pts: { { number } }) → void
chain railing on posts
| arg | type | description |
|---|---|---|
| pts | { { number } } |
rAtTh(th: number) → number
| arg | type | description |
|---|---|---|
| th | number |
pathRect(x0: number, z0: number, x1: number, z1: number) → void
paths: in from the gate, round the pond, on to the shrine
| arg | type | description |
|---|---|---|
| x0 | number | |
| z0 | number | |
| x1 | number | |
| z1 | number |
bp(t: number) → void
the arched bridge over it
| arg | type | description |
|---|---|---|
| t | number |
slab(z0: number, y0: number, z1: number, y1: number) → void
gable roof
| arg | type | description |
|---|---|---|
| z0 | number | |
| y0 | number | |
| z1 | number | |
| y1 | number |
toro(x: number, z: number) → void
stone lanterns along the walks
| arg | type | description |
|---|---|---|
| x | number | |
| z | number |
cabinet(yaw: number, x: number, z: number) → void
| arg | type | description |
|---|---|---|
| yaw | number | |
| x | number | |
| z | number |
localOf(wx: number, wz: number) → void
| arg | type | description |
|---|---|---|
| wx | number | |
| wz | number |
strip(x0: number, z0: number, x1: number, z1: number) → void
half court
| arg | type | description |
|---|---|---|
| x0 | number | |
| z0 | number | |
| x1 | number | |
| z1 | number |
binoculars(x: number, z: number) → void
| arg | type | description |
|---|---|---|
| x | number | |
| z | number |
kiosk(x: number, kanji: string) → void
| arg | type | description |
|---|---|---|
| x | number | |
| kanji | string |
The discoverable places of Banana City: Smoothie Docks, Peel Park, Gold Row, Rust Alley, the Pixel Peel arcade, the Undercroft skate lot and the Promenade.Sub-parts
Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.
Showing the 199 items nearest this part. It holds more than this page lists.
Problems
Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.
agent_score is exposed.+ 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".
Scoped to this part · feeds back into the world's score.