---
phase: 06.3
plan: "11"
subsystem: nameplate
tags: [client, nameplate, remote-rendering, smoothing]
provides:
  - "D-45 Plan B remote nameplate flicker reduction"
affects: [phase-06.3, D-45, Nameplate, PlayerRenderer]
key-files:
  created: []
  modified:
    - apps/client/src/render/PlayerRenderer.ts
    - apps/client/src/render/Nameplate.ts
requirements-completed:
  - REQ-CLI-04
  - REQ-CLI-08
duration: 11 min
completed: 2026-05-14
---

# Phase 06.3 Plan 11: D-45 Remote Nameplate Flicker Summary

**Remote sprites now lerp toward server-state targets before nameplates follow them, and text Y is integer-locked.**

## Accomplishments

- Applied Path A from the plan: smooth remote sprite position with a 0.35 lerp factor before depth/nameplate follow.
- Added `Math.round(...)` to `Nameplate.follow()` text Y calculation to remove sub-pixel text jitter.
- Extended the ring-buffer diagnostic with `sprite_target_y` so operators can compare smoothed position with the raw server target.

## Task Commits

1. **Task 1/2: Remote position smoothing and integer textY** - `cc6834d` (`fix(06.3-11)`)

## Verification

- `pnpm --filter @rebno/client test --run` - PASS, 26 test files passed, 190 tests passed, 4 todo.
- `pnpm --filter @rebno/client typecheck` - PASS.

## Notes

06.3-02 created the ring buffer but did not include staging data. I chose Path A because the phase research identified raw 20 Hz server-state jumps as the likely flicker source, while sprite height and scale are stable in the current atlas path.

---
*Phase: 06.3*
*Completed: 2026-05-14*
