Travelers can enter a pool, float, swim together and return to shore. Swimming is an explicit gameplay setting; existing cosmetic water keeps its original behavior.
#Try it
Pull codex/engine-foundations, restart npm run dev:editor, and open the private
link printed by that command. Choose New world → Quiet pond → Preview → Save →
Publish, then open the new invitation in two browser profiles. Existing published
invitations retain their original world and engine.
Walk off the jetty. Use the normal movement controls to swim and Shift/controller sprint to move faster. Follow the sloping stone landing on the right to walk out, or press Jump near the surface to reach a low bank. Reload while floating to check that your journey continues in the pond.
For another place, open Atmosphere → Water → Allow swimming. Set depth and normal/fast pace, preview, then Save and Apply or Publish. Depth bounds the gameplay volume below the surface; it does not excavate collision geometry. Shape a bed and an accessible shore. Turning off water removes its swimming setting in the same transaction; Undo restores both. Existing saved pond drafts keep their shallow bed until edited; the new template has a deeper bed and sloping exit.
#Contract and limits
- World format 23 /
swimming-world.23, gameplay recipeswimming.1. Depth is 1–40 m, normal speed 0.5–4 m/s, fast speed at least normal and at most 6 m/s. The volume uses the water rectangle and flat authored surface height. Decorative wave phase does not affect shared physics. - The same collision motor runs locally and on the trusted host. Surface float, drag, acceleration, jump exit and collision remain bounded. Large physics steps subdivide to at most 1/30 s in a swimming place. Shallow beds remain walkable.
- Physics checkpoint format 3 binds the swimming volume and preserves native bodies, controller settings, velocity, grounding, held jump and platform state. Engine checkpoint replay preserves the complete motor. Persistent host restart retains the durable pose and starts a fresh trusted input stream.
- RemoteActor v4 and presentation format 16 carry swimming locomotion. Historical descriptors/envelopes retain their prior validation. A bounded four-clip blend transitions between idle, walking, falling and the new breaststroke animation. A stalled peer holds a swimming pose rather than standing in the water.
- Saved undo survives authoring-store restart. Water edits conflict with swimming edits; unrelated atmosphere changes can merge. Live revisions update swimming even when collision topology stays unchanged. Prefab capture omits this place-level setting.
This is surface swimming: diving controls, currents, buoyant objects, vehicles, underwater rendering and final character/environment art remain open. Seeded rivers now provide sculptable channels and walkable banks. The current character model remains subject to the user's required final art pass.
#Acceptance · 2026-10-25
| Check | Result |
|---|---|
| Full headless suite | 904 passed, 68 skipped; one stale command-count assertion corrected and passed on focused rerun |
| PostgreSQL cooperative/trusted swimming | Both passed: peer poses, saved water position and host restart |
| Hardware browser | Both swimming scenarios passed on Intel Arc B390 / xe-3lpg |
| Software WebGPU browser | Both swimming scenarios plus cosmetic-water editing and existing walk/jump animation passed |
| Production build | Types, package boundaries, client/server/author tools and retained engine passed |
| Detached packaged CLI | Pond template → export → import → check → compile passed outside checkout |
Browser journeys cover editor validation/save/reload/undo/redo, two published travelers using main and Worker graphics, swimming animation, reconnect and the walkable shore exit. Headless cases additionally cover long-fall entry, braking, walls, jump exit, exact checkpoint continuation, trusted prediction, live revision and durable authoring undo. The shared view below and narrow controls were visually reviewed. No Docker or remote-CI execution is claimed.
Implementation checks caught shallow-bed snap drift (fixed with a checkpointed
1 mm contact nudge), an inaccessible first stair (replaced by a sloping landing),
and the old animation blend limit during falling-to-swimming transitions (now
supports four clips with a regression). Fixture identities/start clearance and
test-helper type inference were corrected. The initial software browser driver
overshot the landing between observations; closed-loop keyboard steering passed
the same exit assertion without extending its timeout. Local logs are under
.data/ld-swimming/; CI includes swimming browser and persistent-room checks.
Engine: 40734764ec618948bf66c99a03249cbd17b45f49937f2ddf9acee4eac7ea7568.

The pre-existing software restoration reload timing gate, sustained/mobile performance and all full-roadmap acceptance requirements remain open.