Log inGet started
▣
module · drop-in viewer
asset⌬ modulemoduleprimary: init.luau·originates fromworld 5164eb76-1…

audio

One looping music bed and the one-shots the game needs, all cued off the bus in `game.core` — no slice calls another slice to make a noise.

by◐Cxrn·posted 19d ago
What it does

game.audio — the sound slice

One looping music bed and the one-shots the game needs, all cued off the bus in game.core — no slice calls another slice to make a noise.

ClipCued by
music/racestarts at mount, loops for the whole session.
sfx/boostthe boost event — drift, trick, mushroom or feather.
sfx/cratethe crate event, and again (higher, quieter) on lap, and low on finish.

Generated with the audio_gen service and promoted to .soundClip assets by the importer. They are resolved on a real-time retry rather than once, because a world that opens while the import is still running must still get its sound.

API

local A = Core.system("audio")
A.play("boost", { pitch = 1.1 })
A.music(true) / A.music(false)
A.ready()            -- which clips have landed

Two entities carry the sources: MkoMusic (Music, non-spatial, looping) and MkoSfx (SoundEffect, non-spatial, used for one-shots). The scene carries the world's one AudioListener — nothing here adds a second.

Interface

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

conforms to

zero/source-extract/v2

game.audio — the sound slice of Mario Kart OrigoZ. One music bed and a handful of one-shots, all cued off the bus the slices share: a boost, a crate taken, a progress point, the finish. The scene carries the world's one AudioListener; nothing here adds another. The clips are generated by the audio service and land as files under game/audio/. The importer promotes each into a `.soundClip`, which can take a moment, so they are resolved on a real-time retry rather than once: a world that opens before the import finished still gets its sound.

Audio

music( ) → void

boost( ) → void

crate( ) → void

clipFor(name: string) → any

argtypedescription
namestring

makeSource(entityName: string, sourceType: string, volume: number) → void

argtypedescription
entityNamestring
sourceTypestring
volumenumber

play(name: string, opts: any) → void

Play a named clip once: boost, crate, lap or finish.

argtypedescription
namestringWhich clip (boost, crate).
optsany{ volume = n, pitch = n } overrides for this play.

examples

Core.system("audio").play("boost")

music(on: boolean) → void

Start the looping music bed, or stop it.

argtypedescription
onbooleanTrue to play, false to stop.

ready( ) → void

Which clips have landed, for reading back.

mount( ) → void

Slice entry: stand the sources up and listen to the bus.

tryClips( ) → number

Sub-parts

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

22items
·
soundclip · born here
❒asset
# race Managed audio asset. Edit the `.metadata` `settings` block to change compression.
▲ 0↑ born
▣
module · born here
❒asset
# core The shared contract of **Mario Kart OrigoZ**. Every slice reads its rules here, so no slice hard-codes a number that belongs to the game. `require("game.core")` from anywhere in this world. ## What it holds | Field | What it is | |---|---| | `TITLE`, `PROMPT`, `ART` | The game's name, the *pulsa J para jugar* prompt, and the art-direction sentence — word for word from the reference pass, reused by every prompt. | | `CIRCUITS` | The three circuits: id, name, laps, layout (`ring` / `square` / `ribbon`), racing surface, what lies beyond the edges, and half-width. | | `KART` | How a kart feels: max speed, acceleration, braking, turn rates, hop and gravity, drift multipliers, trick spin. | | `SURFACE` | What each surface does to you: `road` 100%, `water` 75%, `grass` 50%, `space` falls. | | `SPARK` | The drift charge table: blue at 1.0s (0.5s boost), orange at 2.5s (1.25s), rainbow at 4.0s (2.5s). | | `BOOST` | Trick 0.75s, mushroom 2.0s, feather 2.0s. | | `ITEMS` | Crate respawn (8s) and the mushroom / feather odds. | | `RESCUE` | How Lakitu puts you back: drop height, lift speed, lift duration. | | `PHASE`, `flow`, `race` | The flow state machine and the live race clock. | | `records` | The best time on each circuit, kept in `runtime_data.world` — shared and durable. | ## API - `M.circuits()`, `M.circuit(id)`, `M.circuitIndex(id)` - `M.register(name, api)` / `M.system(name)` — how slices reach each other - `M.on(name, fn)` / `M.emit(name, payload)` — the slices' event bus (`phase`, `circuit`, `lap`, `crate`, `boost`, `rescue`, `finish`) - `M.setPhase(p)`, `M.selectCircuit(id)`, `M.openControls()`, `M.beginRace()`, `M.startRace()`, `M.tick(dt)`, `M.reachPoint(total)`, `M.finishRace()` - `M.records.get(id)` / `M.records.set(id, ms)` / `M.records.all()` - `M.formatTime(ms)` → `"00:45.678"`, `M.countdownLabel(seconds)` - `M.clamp`, `M.lerp`, `M.approach` ## Who reads what - **kart** — `KART`, `SURFACE`, `SPARK`, `BOOST`, `RESCUE`, `race`. - **tracks** — `CIRCUITS`, `SURFACE`, `reachPoint`, `PHASE`. - **items** — `ITEMS`, `BOOST`, `FEATHER_LIFT`, `emit("crate")`. - **screens** — `flow`, `race`, `records`, `formatTime`, `PHASE`. - **audio** — `on("phase")`, `on("boost")`, `on("crate")`, `on("finish")`.
▲ 0↑ born
·
soundclip · born here
❒asset
# boost Managed audio asset. Edit the `.metadata` `settings` block to change compression.
▲ 0↑ born
·
soundclip · born here
❒asset
# crate Managed audio asset. Edit the `.metadata` `settings` block to change compression.
▲ 0↑ born
backing path · game/audio.module

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.