Kamera og pose
getUserMedia + requestVideoFrameCallback · MediaPipe Tasks Vision (OSS)
Ekte kamerabilde, ekte skjelett fra en ekte modell — ikke MockPoseProvider.
Klokkebeskrivelsen står Unknown med vilje: vi har ikke målt hvilken klokke
presentationTime faktisk er forankret i på tvers av nettlesere, så denne
kilden er alltid urangert. Se ADR-0004 og sprint 18 i Motion Proof-planen.
Pågår nå
Ingen battles akkurat nå.
Musikk
Miljø
Effekter
Kobler til økten …
Kamera
Sending
Opptak
Detaljer
Resultat
ScoreResult → ComboState → CrowdMeter, ett steg per treffTiming-rygg
Midtsonen er det faktiske toleransevinduet for gjeldende BPM — ikke en fast bredde. Tikk til venstre er tidlig, til høyre er sent.
| Beat | Avvik | Bånd | Score | Reason codes | Chain | Multiplier | Crowd |
|---|
Lag en dans
challenge::build_challenge · median og varians fra egne takes
Du plasserer ingen treffvinduer selv. Du danser din egen dans minst tre ganger, og
afterbeat-core finner fasiten: median-banen gjennom takene dine. Toleransen er
variansen mellom dem — danser du stramt hver gang, blir utfordringen stram. Danser du med
rom for variasjon, blir den romslig. Du kan ikke merke dansen din som «hard» — den blir
hard fordi du var presis.
Takes
Åtte sekunder per take, minst tre. Behold de du er fornøyd med, ta opp fler ved behov.
0 av minst 3 opptak.
Ingen opptak ennå.
Utfordringen
Redigering
edit::plan_edit · overlegg i det komponerte bildetEn vanlig auto-editor gjetter hvor det interessante er ved å se på lydstyrke. Vi trenger ikke gjette: vi har taktrutenettet, score for hvert slag og bevegelsesenergien, så planen bygges på det som faktisk skjedde. Alle kutt legges på takt — et klipp som begynner midt i en takt føles feil selv for noen som ikke vet hvorfor.
Auto-redigering
Ingen økt tatt opp ennå.
Opptaket har ingen loggede bevegelser å tegne effekter fra.
Tekst og stickers
Legges inn i det som sendes live og tas opp — ikke bare i forhåndsvisningen.
Lyseffekter
Reagerer på taktslaget, ikke på en fast frekvens — ellers slår de mot musikken.
Live fra telefonen
/ws/live · positurrelay, ikke video
Trykk Send live på telefonen, og Se live her.
Det som sendes er normaliserte landmarks — cirka 1 kB per frame mot ~100 kB for
et videobilde — og denne skjermen tegner dem med nøyaktig samme
drawSkeleton og drawTrails som telefonen bruker.
Scoringsveien (/ws/motion) er urørt: å se på kan ikke påvirke et resultat.
Scenen
CalibrationProfile → MotionFrame → evaluate_timingTre ting kalibreringen måler om en ekte spiller, gjort om til kontroller her. Se hvordan hver av dem påvirker figuren og målingen — ikke bare et tall i en tabell.
Tempo
120 bpm
Slaget spillet regner alt mot. TrackClock planlegger hvert treffvindu
fra dette — dobler du farten, halveres tiden du har til å reagere.
Kroppsstørrelse
1.00×Simulerer en høyere eller lavere spiller. Range måles mot spillerens eget komfortområde — en høy og en lav spiller skal score likt på samme relative utslag.
Sporingskvalitet
0.90
Dårlig lys eller occlusion senker denne. Under grensen (hentet fra
MIN_OBSERVATION_CONFIDENCE, ikke gjettet her) blir resultatet
Neutral — systemet mangler bevis, det er aldri spillerens feil.
Beatmapet
BeatmapRuntime · MoveEvent-vinduer plassert på en tidslinje
Hvert treff er et forenklet MoveEvent: hvilket slag det skal treffes på,
og hvor mange millisekunder spilleren faktisk traff ved siden av. Plasseringen på
linjen under er ikke dekorasjon — den er beregnet fra de samme tallene som sendes
til serveren.
Kompilatoren
jsonschema (OSS) → validate_beatmap · ADR-0005
Et fullstendig beatmap som JSON, kompilert i to lag. Først skjemakonformitet
— har det de feltene og typene beatmap.schema.json krever, sjekket av det
åpne kildekode-biblioteket jsonschema. Består det, kjøres
domenereglene — GDD-en og ADR-0005s gate-tetthetsregel. Et beatmap som
feiler lag én sendes aldri til lag to.
Administrasjon
QA og infrastruktur-verifiseringAlt under beviser at koden virker — infrastruktur, algoritme-selvtester, determinisme — ikke noe som hjelper noen med å faktisk danse. Derfor samlet her, ikke spredt blant stedene en spiller faktisk bruker.
Rytmefølging
find_motion_peaks + RhythmFollowing (egenbygget, ikke GPL)
Følger bevegelsen takten — uten et forhåndsdefinert beatmap. Knappene under
sender et ekte 1D-signal (simulert håndhøyde over tid) til
/api/rhythm/analyze, som finner ekte hastighetstopper og
sammenligner fasen deres mot forventet slag.
Lydkilder
cpal + symphonia (OSS) · SPIKE-002 kildeenumerering
To ekte ting, ikke to påstander: hvilke lydenheter denne serveren faktisk
ser gjennom cpal akkurat nå, og en symphonia-dekoding av en
committet WAV-fil — beviser at nivå 2 i musikkstrategien (lokale filer) fungerer
ende til ende.
Enheter
Dekoding
Inferensmotoren
tract-onnx (OSS) · ren Rust, ingen C++-binærfil
Ingen pose-modell finnes ennå — det krever et ekte kamera å verifisere mot, se
ADR-0008. Dette beviser noe smalere og like viktig: at selve kjøremotoren virker.
Grafen under er en ekte, committet ONNX-fil (y = x·2 + 1), lastet og
kjørt av tract — samme motor som skal kjøre en faktisk posemodell senere.
Determinisme
run_directory(qa/golden/)Kjernekravet i hele arkitekturen: samme innspilte bevegelse skal gi identisk score på Windows, Android og iOS. Dette kjører de forpliktede referansestrømmene mot dagens evaluator-kode og viser om det fortsatt holder.
Toppliste
Ingen runder ennå i denne økten.
Resultatene under er fra denne økten på denne enheten. Serveren lagrer ingen score ennå, så det finnes ingen liste på tvers av spillere. Det krever lagring og en avklaring om hvem som eier tallene.
Opptak
Ingen opptak ennå. Et opptak starter automatisk når du sender live, og filen tilbys når du stopper.
Innstillinger
Kalibrering
calibration::estimate_latency · measure_body_scale
Mellom lyden går ut av høyttaleren, treffer øret, kroppen reagerer, kameraet fanger
det og modellen svarer, ligger en forsinkelse vi ikke kjenner.
Trådløse ørepropper alene ligger typisk på 150–300 ms, og treffvinduet er
±125 ms ved 120 BPM — uten måling ville du bommet på alt, og det
ville sett ut som om spillet var ødelagt. Regnestykket gjøres av
afterbeat-core: median av trykkene, ikke snitt, så ett bomtrykk ikke
definerer latensen din.
Forsinkelse
Hør fire slag, trykk så på hvert slag. Bruk det du faktisk skal danse med — høyttaler eller ørepropper.
Kropp
Åtte sekunder: strekk armene ut til sidene og ta et skritt til hver side. Da måles rekkevidde og utslag mot din egen kropp, ikke mot en referansedanser.
Profilen din
Lagres bare på denne enheten. Latens og kroppsmål hører til oppsettet ditt — ørepropper, kamera, rom — ikke til en konto.