Windows PC VR only. The Quest build is unchanged: Quest players stay on
0.4.0. This release rolls the
0.4.1-beta for Valve Index controllers (GitHub issue #2) into a regular release. It adds the
seated-play hands fix (issue #3), scope and swimming fixes, and a new water surface.
Index controllers
- The menu opens. Index controllers have no menu button. Hold the objectives-panel button —
left B — for about half a second: the pause menu opens, and inside a menu the same hold
backs out. A tap still toggles the objectives panel. The first tutorial plate in the training
level says so when Index controllers are detected. - Tooltips name Index buttons by hand ("LEFT B"), since both Index controllers carry A and B.
Fixes
- Footsteps land with the feet. Steps come from the game's own footstep keys at the moment
a foot touches the ground (the old build fired two step trains at once), the running legs cycle
at the pace the run animation was authored for, and walking is two steps a second. A footstep
from a non-finite position is no longer played at full volume. - Sun shadows no longer depend on where you look. A shadowed balcony was lit at the screen
centre and shadowed at the edge of a wide field of view; the shadow now stays where it is. - Hand calibration is symmetric. The zombie-pose calibration used to land the left hand
about 20° off the right one in roll. Recalibrate once after installing this build (stand
straight, arms forward, click the main stick).
VR
- Seated play: hands stay with your head. Before your first Recenter View in Seated posture
the hands were measured from a default height above the floor while the head already sat at
the character's eye height, so a low sitter's hands ended up at table height (issue #3,
PSVR2). They now hang from the headset until you recenter. - Scope: the sky shows in the lens. The scope and zoom lenses, the cinematic screen and the
spectator view drew into targets without a stencil buffer, which sent the sky through a
fallback that drops sky walls beyond the far plane, exactly the walls a scope looks at. Those
targets now carry the same depth-stencil buffer as the eyes and paint the sky the same way. - Scope: no more flicker or body jitter while sighted. The scope's own render pass ran
first each frame and left two marks meant for the eyes: it handed the level's object culling
its narrow cone, so a frame now and then lost objects, people or the sky, and it threw away
the motion-smoothing history of everything it did not draw, which always included your own
body, so walking while sighted jittered. Aim, zoom and spectator passes now draw without
touching either. - Swimming: the body swims, the feet stay quiet. Only the scuba outfit carried swim
animations, so every other outfit kept its walk cycle under water and its footsteps kept
firing whenever the pool floor counted as ground; the full-body VR posture hid the body
while swimming. The swim clips now reach every outfit, footsteps follow the original rule
(none with the head under water, still on ladders), and the full body shows on the swim
clip.
Water
- Water has a surface now. Water surfaces built from the level's water volumes (the
tropical basin among them) draw with drifting ripples, a reflection that strengthens at
grazing angles the way real water does, and a sun highlight. The authored colour and
transparency are unchanged.r_water_quality 0restores the previous flat two-pass look. - The ripples never repeat. The surface moves as drifting noise that never lines up with
itself, however far the water reaches from the level's centre — large open water such as a
sea no longer shows a checkerboard — and the reflection and the bent floor follow it. - Pools mirror the room. Water surfaces reflect the actual scene around them (walls,
fixtures, crane, people) instead of a generic chrome map, with the reflection wobbling on the
ripples. One pool per frame, chosen nearest;r_water_reflect_areasets how large a pool
may be to get it. - Indoor pools catch the lamps. The level's lights glint on the ripples (the nearest four
that reach the surface), so a basin lit by wall lamps no longer looks unlit. - Water has depth. The pool floor bends under the ripples, deep water shades toward the
pool's own colour while the shallows stay clear, and the hard line where the water met the
walls is gone.r_water_refract 0turns it off. - Water keeps its authored look. Water a level draws as nearly opaque (a grotto pond) shows
its own surface texture again instead of the bare floor beneath it, so whatever stands in it
no longer seems to float; clear pools take only a faint tint of it. Where a level lays a thin
surface over a larger body of water (a sea, a stream), the two draw as one surface instead of
the top one hiding the body's colour. - Caustics. Light focused by the ripples plays on the floor and walls under every pool, and
on whatever is in the water, from the same wave field that draws the surface, fading with
depth. Seen through the surface and while swimming.r_water_caustics 0turns it off. - Splashes and a wake. A bullet hitting the water from above rings the surface and throws
the game's own water ring, and wading or swimming at the surface leaves a trail of ripples
behind you. Both ride on the same wave field as the surface.r_water_ripples 0turns them
off. - Under water, the surface overhead takes the fog. It was the one crisp thing in a fogged
pool; it fogs with the walls now. - Lights under the water show through it. Glow sprites below the surface (the pool-wall
lamps in the Dumas basin) were painted over by the water; they refract with the wall behind
them now.
Reporting
- Every Feedback report now carries diagnostics: the OpenXR runtime and headset, the bound
controller profile, your calibration values, the last frame-time window and the last few
hundred lines of the game log. Open the Feedback screen right after the moment you want to
report — the report also carries a save of that moment. - The build identifies itself as
0.4.1in the menu and in reports.
Packaging
- The audio libraries are separate files now. OpenAL Soft and FluidSynth (both LGPL) ship as
OpenAL32.dllandlibfluidsynth-3.dllbeside the executable, so anyone can replace them with
their own build. Their complete sources are inlicenses/sources/; the separate "relink"
download is no longer produced.LGPL-LIBRARIES.mdexplains replacing a library.