Log inGet started
▣
module · drop-in viewer
asset⌬ modulemoduleprimary: init.luau·originates fromworld 15f1acc9-b…

track

Los circuitos de Mario Kart OrigoZero Ultimate, construidos en código en cada carga: nada queda congelado en la escena, así que recargar el mundo deja el mismo circuito.

by◐CarneJon·posted 13d ago
What it does

game.track

Los circuitos de Mario Kart OrigoZero Ultimate, construidos en código en cada carga: nada queda congelado en la escena, así que recargar el mundo deja el mismo circuito.

local Track = require("game.track")
local inst = Track.build("pradera")

Qué construye

  • La carretera, como una fila de losas solapadas un 25 % para que no se vea ninguna juntura.
  • Un bordillo claro a cada lado.
  • Nada más: el suelo, el cielo y el mar son de la escena.

Consultas que da la instancia

LlamadaQué responde
inst:nearest(p)La muestra más cercana: index, t, arc, lateral (metros a la derecha del eje), along, planDistance, dir, right.
inst:surfaceAt(p)"road" si el punto cae dentro del ancho del asfalto; si no, la superficie del circuito ("offroad" por defecto).
inst:startPose(i)Posición y rumbo (grados) de la muestra i, que es donde aparece un kart.
inst:despawn()Quita el circuito del mundo.

Track.current es el circuito activo. Construir uno nuevo quita el anterior.

Añadir un circuito

Una entrada en Track.defs: su nombre, dificultad, ancho, colores, y una lista de puntos de control que se cierran en bucle. La curva pasa por todos ellos y el eje Y es la altura.

CampoQué es
pointsPuntos de control { x, y, z } de la vuelta.
widthAncho del asfalto en metros.
surfaceSuperficie de todo lo que no sea asfalto.
walledSi lleva muros que impiden salirse.
lapsVueltas de la carrera.
roadTint / kerbTint / groundTintColores.
skyPreset / timeOfDayCielo del circuito.
seaPreset de océano, si el circuito tiene mar.

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.track — los circuitos: geometría, superficie y progreso. Un circuito se define como una lista de puntos de control que se cierran formando un bucle. De ahí salen tres cosas: la carretera (una fila de losas), y las dos consultas que el kart necesita cada frame — ¿estoy sobre el asfalto o fuera? y ¿por dónde voy de la vuelta? Todo se construye en código en cada carga, así que recargar el mundo deja exactamente el mismo circuito.

Model

byIndex(i: ?) → void

El circuito que ocupa una posición del orden, o nil si aún no está construido.

argtypedescription
i?

indexOf(id: ?) → void

En qué posición del orden está un circuito.

argtypedescription
id?

catmull(p0: ?, p1: ?, p2: ?, p3: ?, t: ?) → void

Curva

argtypedescription
p0?
p1?
p2?
p3?
t?

c(a: ?, b: ?, cc: ?, d: ?) → void

argtypedescription
a?
b?
cc?
d?

sample(def: ?, spacing: ?) → void

Muestrea la curva cerrada cada `spacing` metros, por longitud de arco. Devuelve una lista de puntos, cada uno con su tangente ya normalizada.

argtypedescription
def?
spacing?

spawnSlab(parent: ?, name: ?, sample: ?, width: ?, length: ?, thickness: ?, tint: ?, material: ?) → void

argtypedescription
parent?
name?
sample?
width?
length?
thickness?
tint?
material?

platformVisible(pl: ?, time: ?) → void

¿Está encendida una plataforma fantasmales ahora mismo? `blink` dice cuánto dura cada fase: `on` encendida, `off` apagada, y `phase` el desfase, para que dos plataformas de la misma sala no vayan a la vez.

argtypedescription
pl?
time?

chosenId( ) → void

Qué circuito se levanta, leído de `game/circuit.txt` — una línea, del estilo `circuito = "playa"`. Es lo que hace que cambiar de circuito sea escribir el archivo y reconstruir la escena: el circuito va HORNEADO en la escena, y lo que se crea en tiempo de ejecución no se dibuja (ver PLAN, Trampas).

sampleIndex(fraction: ?, m: ?) → void

La muestra del circuito que cae en una fracción de vuelta.

argtypedescription
fraction?
m?

widthAt(def: ?, arc: ?, total: ?) → void

El ancho de la carretera en un punto de la vuelta. Casi todos los circuitos tienen el mismo de punta a punta; uno con tramos estrechos (los pasillos de una mansión, un puente de madera) declara `def.widthProfile` con los tramos en fracciones de vuelta, y aquí se resuelve cuál toca.

argtypedescription
def?
arc?
total?

build(id: ?, opts: ?) → void

Construye el circuito `id` y lo deja como el activo. Devuelve su instancia.

argtypedescription
id?
opts?

nearest(p: ?) → void

La muestra más cercana a un punto, con el lateral y el avance.

argtypedescription
p?

widthAt(arc: ?) → void

El ancho de la carretera en un punto de la vuelta, para saber si un kart va sobre el asfalto o fuera.

argtypedescription
arc?

surfaceAt(p: ?) → void

Qué superficie hay bajo un punto. De momento asfalto dentro del ancho y la superficie del circuito fuera; los atajos y objetos añaden excepciones más adelante.

argtypedescription
p?

centre( ) → void

Dónde cae el centro del circuito, para colocar el suelo y el mar.

gridPose(index: ?) → void

Dónde se coloca el kart número `index` en la parrilla de salida: dos por fila, alternando lado, y cada fila una detrás de la anterior. Sale de aquí, y no de cada sitio que coloca un kart, para que el jugador y los rivales estén en la misma parrilla y no en dos inventadas.

argtypedescription
index?

heightAt(p: ?, y: ?) → void

Qué altura tiene el suelo en un punto. Los circuitos planos devuelven 0, que es la mayoría; una playa con bajío devuelve la rampa que baja del borde de la arena hasta el agua. El kart conduce a esta altura, así que esto es lo que hace que se pueda bajar a la orilla en vez de flotar. `y` es la altura a la que va el kart ahora mismo, y sirve para que las plataformas de atajo sean de un solo sentido: se aterriza en ellas bajando, y se pasa por debajo sin que te levanten.

argtypedescription
p?
y?

platformPose(i: ?) → void

Dónde está cada plataforma de atajo, para que las monedas y los Dash Panels se puedan colocar encima.

argtypedescription
i?

startPose(index: ?) → void

Dónde y mirando hacia dónde aparece un kart en la salida.

argtypedescription
index?

despawn( ) → void

adopt(id: ?) → void

Aprende un circuito que YA está en la escena, sin construir nada. Es lo que hace la escena al cargar: la geometría la puso `build.luau` al autorizar y en play solo hace falta saber por dónde va la carretera.

argtypedescription
id?
⌬ Metadata
descriptionCircuitos de Mario Kart OrigoZero Ultimate: define la vuelta con puntos de control y construye la carretera, con consultas de superficie y progreso.

Sub-parts

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

8items
▣
module · born here
❒asset
# game.core El contrato compartido de **Mario Kart OrigoZero Ultimate**. Ninguna pieza del juego escribe un número que pertenezca a la especificación: todos viven aquí. `require("game.core")` desde cualquier parte del mundo. ## Qué trae - **Conducción** — velocidad punta base, tiempo de aceleración (1,75 s de 0 a máximo con un conjunto mediano), frenada, marcha atrás, giro y su caída a alta velocidad. - **Las 3 cilindradas** — 50cc / 100cc / 150cc con sus multiplicadores. - **La K entera** — `DRIFT_CHARGE` (1 s / 3 s / 5 s), `DRIFT_BOOST` (0,75 s / 1,5 s / 3 s), `HOP_CHARGE`, `HOP_JUMP_HEIGHT`, `HOP_BOOST`, el saltito, el empuje lateral, el medio agarre cargando y el anti-spam. - **Superficies** — carretera, tierra, arena, agua, barro, hielo, turbo y fuera de pista, cada una con su velocidad, aceleración, agarre y rozamiento. - **Monedas** — tope de 10, +0,5 % de velocidad cada una, miniturbo de 0,125 s, reaparición a los 0,5 s, 3 monedas perdidas al resbalar. - **Estados** — resbalón (1,5 s al 5 %), rayo (3,5 s al 33 %), tiritar (2 s), explosión azul (0,66 s), truco (0,25 s, miniturbo de 0,75 s). - **Estadísticas** — `Core.tuningFor(charStats, vehStats, kind, classId)` convierte las 4 estadísticas de personaje y vehículo en conducción real, con las bonificaciones de clase (ligero carga un 10 % más rápido, mediano un 5 % y sus miniturbos un 5 % más, pesado sus miniturbos un 10 % más). ## Uso ```lua local Core = require("game.core") local tune = Core.tuningFor(char.stats, veh.stats, char.kind, "150cc") -- tune.topSpeed, tune.accel, tune.turnRate, tune.chargeSpeed, tune.boostTimeMul ```
▲ 0↑ born
backing path · game/track.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.