kaiverse.js)> Codex v9.10.64 · Tier 1.5 · Codex §Comprehensive Plans
> AI / low-credit: One control fix per session; render-only 3rd-person; on stop log Last worked / Next.
Status: OPEN. Owner-reported while flying. Browser kaiverse.js only (Tier 1.5 player ship + controls). Surgical, reversible, flag-gated; do NOT alter nsUpdateCamera first-person movement math — the 3rd-person view is an additive, render-only layer (see CLAUDE-CODE-HANDOFF.md SCOPE box). Hard-refresh to apply.
Workflow: the owner is the tester (he flies + reports), the architect writes these specs, you (CLI) implement. Eyeball-iterate: ship one small change, owner flies + reports, tune. Don't guess the feel — that's his call.
---
B is hardwired to "return to core" — wrong. Make it context-dependent back/cancel:
The owner says the throttle speed is "way too unreal." Two fixes:
(a) Analog throttle from the controller. The throttle should be a smooth 0→1 driven by an analog control — right trigger (RT) as the primary throttle (light press = slow cruise, full press = full speed), and/or left-stick magnitude as it already half-does. Map it into NS.throttleT continuously, not in coarse D-pad steps. Keyboard/no-pad behavior stays as-is.
(b) Kill the "unreal" feel. Right now top speed / acceleration reads teleporty. Make world-speed dynamic and believable:
window.KAIVERSE_MAX_SPEED (and the analog curve) so the owner can A/B in the console.Bug (owner's words): "when I move it makes me view forward, but then the camera view shows in front of where I'm going — like GTA when it looks at you moving toward the camera, then back to 3rd person, then back. It's not great." → The camera is oscillating between behind the ship and in front of it.
Cause: the chase camera is anchoring/recentering on the velocity vector (or flipping the offset sign), so when velocity and look-direction disagree, the camera swings to the front and snaps back. Classic velocity-based-recenter glitch.
Fix — anchor the camera to the LOOK/HEADING direction, never to velocity:
shipPos − fwd * chaseDist + up * chaseHeight, where fwd is the look/flight forward (the same basis nsUpdateCamera already builds), up is the camera up. The camera always sits behind where the nose points — it can never cross to the front.c.vel direction to place or orient the camera. Velocity only feeds the *pull-back distance* (faster = farther + slightly wider FOV), never the *angle*.NS._chasePos toward the target each frame) so it swings smoothly when you turn — but the target is always behind fwd, so it can't flip.cam.lookAt(shipPos) (look at the ship), camera up = the flight up. No sign flips.pre()/post() wrap around the render call; after render restore cam.position to the real ship position so next frame's movement starts from the ship, not the chase point. nsUpdateCamera movement stays byte-for-byte unchanged.window.KAIVERSE_THIRDPERSON / a key).Guardrails (verify after):
1. B backs out of menus, never teleports to core.
2. Throttle responds analog to the trigger; open-space cruise feels fast-but-real, the approach to a surface slows to a believable crawl — no teleporty jumps.
3. In 3rd-person the camera stays smoothly behind the ship at all times — no flip to the front, no GTA reverse-cam, no snapping. Turning swings the camera around smoothly.
4. First-person (toggle off) is identical to before. Picking + proximity effects still correct.