SYNTHETICTEACHING FICTION Not a Split Fiction level. Not affiliated with Hazelight or EA.
Mio yaw: A/D or ,/. · Zoe yaw: ←/→ or [/]
Orange wall with N is north (ahead at yaw 0).
T switch shooter · F/Enter shoot the live threat nearest the shooter whose centre is inside the shooter's own eye camera (the Split POV view, also used in orbit view) · Num 0 Zoe shoots (denied blip if none) · respawn after 5 s
Floor wedges show each eye camera's horizontal field from the eye, not the full 3D view.

Set default saves the controls in this browser. Reset restores the built-in values and forgets that save.
Mouse (optional): drag to orbit, wheel to zoom, double-click to reset. No pointer lock.

Dual-listener 7.1 routing demo

PlayCanvas engine (github.com/playcanvas/engine) + Web Audio. Routing is a demo simplification, not a claim that Hazelight ships 7.1 this way.
Audio not started. Browsers need a click before sound can play.
8 output channels W3C order, indices 0–7, measured on the 8-ch bus before the limiter and the destination. Noise plays pink noise on that one channel only.
Off is Web Audio order. On swaps Ls↔Lsr and Rs↔Rsr on the speaker output, including gameplay and the noise buttons. Saved with Set default.
7.1 speaker map (top view) Logical bus positions (ITU angles). Glow = peak level per channel, pre-swap, same taps as the meters.
Mio only = sources whose direction Mio owns (his half + his share of the C/rear seam) and his shots. Shared music and pink noise show only in Both.
Mixer Mute always silences that layer. If any Solo is on, only soloed layers play.
Walk-in footsteps play only while they are moving in. At the stop radius they stand still and only the attack roar/bite plays. Idle walk does not play once they have stopped. Death and respawn stay on their own row. All of them use each zombie's 7.1 gains, scaled by that listener's distance first.
Scene Even zombies walk in on Mio, odd ones on Zoe. At the stop radius they freeze and only attack. Grid is 1 m, bold every 5.
Count 8 0–16
Gap 12.0 apart
Spawn 24.0 m
Speed 3.0 m/s
Stop 4.0 m
Near 4.0 m
Far 32.0 m
Rolloff 1.0 demo curve
Demo curve, not a published Hazelight formula. Full volume inside Near, quiet at Far. Rolloff 1 is linear; higher drops faster. Level uses the closest listener once. Attenuation circles draw the falloff between Near and Far: brighter rings are louder.
Attack 3.5 s
Roar gap 0.6 s
Mio yaw 0°
Zoe yaw 0°
Shooter Mio
Kills Mio 0 · Zoe 0
Threats az = local azimuth from the player (0 ahead, + right). ◉ = threat centre inside that player's eye camera (75° vertical FOV, half-window aspect, eye 1.65 m up and 0.85 m ahead; no occlusion), the same test as shooting. audio = FRONT/REAR hemisphere of the direction owner's az (|az| ≤ 90°), an audio direction, not "on screen". Level is whoever is closer. Direction is whoever looks at it most (smaller |az|), panned only inside that listener's half: their left/right = inner seam vs outer edge, front/side/rear = that half's front, side, rear speaker. "dir · lvl" only when those are different people.
Mio half: L·Ls·Lsr | seam: C / Lsr+Rsr | Zoe half: R·Rs·Rsr
Mio azZoe azaudioowner L R C F Ls Rs Lsr Rsr
Documented SFBroad idea only: attenuation from the listener closest to the source, panning from whoever is looking at the sound the most (design talk 22:33–23:42). Music is generally shared between the players (the interview notes exceptions).
Demo simplificationThe exact rule is invented: smallest |az| wins outright (ties go to the closer listener), one 7.1 instance panned only inside that listener's permanent half (Mio L/Ls/Lsr, Zoe R/Rs/Rsr, phantom C and Lsr+Rsr seam), and all gains, including the music's C/L/R split. Hazelight's technical talk blends the listeners' perspectives; the side offset reaches full effect when the other listener is outside attenuation range, and recedes when both are present (22:12). The near/far/rolloff curve, side↔rear swap, meshes, timbres, freeze-at-stop, roar gap, shots and the whole scenario are invented too.