Chart Datum
Survey an uncharted strait from a small launch: the seabed is invisible until you sound it, the falling tide redraws the coastline under you, and the sheet you produce is the score.
Chart Datum
A hydrographic surveyor arrives at a strait nobody has measured and leaves with a sheet of paper. That sheet is the entire product of the work, and every number on it was bought by driving a boat over the exact spot where the number is printed. This is that job, compressed into one falling tide.
The strait is real geometry, generated from a seed, and it is never drawn below the water. Above the waterline you get the shore, flat-filled, because you can see a shore. Below it there is nothing at all — not a dark blue, not a guess, not a hint. The seabed is not hidden from you as a puzzle; it is absent, because nothing has measured it yet. Every sounding you take adds one figure to the sheet, and the contour lines that appear are drawn from your figures, interpolated. If the contours are wrong, they are wrong in the way your survey was wrong.
Meanwhile the tide falls, and it takes the coastline with it. The shoreline is not a coordinate here; it is a cross-section — the line where the terrain meets a horizontal plane that is dropping about three metres over two and a half minutes. Shoals you never suspected break the surface mid-channel. Water you crossed comfortably at the start becomes ground. Twice in a typical run, the navigable fairway will quietly split in two, and you will find yourself on the wrong side of it.
Reduced to datum
The figures the launch records are depths below chart datum, not depths below the boat. That is the whole reason charts are usable: the tide is different every hour, so a survey that recorded the water under the keel would expire immediately. Instead the surveyor subtracts the tide out, and the chart carries a number that is true forever — and useless on its own, because the mariner then has to add today’s tide back in to find out whether they float.
The game runs on exactly that distinction. In the corner you get the tide height and the charted water under your keel, computed as the last nearby sounding plus the tide. When you sail off the end of your own survey, that reading goes to a dash, which is the honest answer, and the only warning you will get.
This is also why the sounding rods hang from a plane that never moves. Tilt the camera down and the sheet turns to glass: below it, every sounding you have taken is drawn as a hairline dropping from chart datum to the seabed at that point. The sea surface rises and falls above them; the rods do not.
What is on the sheet
| On the sheet | Reading |
|---|---|
| 84 | Eight metres four, below chart datum |
| 12 | Twelve metres, rounded — deep water drops the tenths |
| 06 | Underlined — dries 0.6 m above datum at low water |
| Magenta figures | Under three metres. Magenta means attention, and nothing else |
| Hairline contours | 2 m, 5 m and 10 m, interpolated from your soundings only |
| Dashed line | The drying line — datum — drawn only where you have seen it dry |
| Heavy black line | The coastline at this instant, which is not where it was |
| Magenta ✕ | A grounding. It stays on the sheet |
Controls
| Action | Mouse / keyboard | Touch |
|---|---|---|
| Steer and throttle | Drag on the water — the launch turns toward the pointer, and the further away it is, the harder you drive | Drag with one finger |
| Look under the surface | Right-drag, or Shift-drag | Two fingers |
| Steer | ← → or A / D | — |
| Throttle | ↑ ↓ or W / S | — |
| Turn the sheet | Q / E | — |
| Raise and lower the eye | R / F | — |
Dead slow doubles the density of your soundings, so the trade is real: a fast transit covers ground and measures it badly, a crawl produces a beautiful strip of a chart and leaves the rest of the strait blank.
Scoring
At low water the survey closes and the sheet is judged on three things — how much of the surveyable area came within range of a sounding, the mean error between your interpolated chart and the seabed that was actually there, and how many times you put the boat on the ground.
| Verdict | Requires |
|---|---|
| CLEAN SHEET | 72% covered, mean error under 0.95 m, no groundings |
| FAIR SHEET | 55% covered, mean error under 1.50 m, at most one grounding |
| PROVISIONAL | 34% covered |
| UNFIT FOR PUBLICATION | Anything less |
How it is built
The seabed is a value-noise field shaped into a meandering channel with eight Gaussian shoals dropped into the fairway, sampled on a half-unit grid. Nothing below the tide is rendered at all: the terrain mesh carries a single world-space clipping plane whose constant tracks the water level, so the geometry under the surface is discarded in the fragment shader rather than hidden behind something.
The chart is not 3D. It is a 2D canvas — coastline and drying line by marching squares over the true terrain, contours by marching squares over an inverse-distance-weighted interpolation of your soundings, figures set in a serif with tabular numerals — and that canvas is mapped onto the water plane as a texture. The sea surface is the sheet. Tilting the camera fades its opacity, which is the only reason the rods below it are ever visible.
There are no lights in the scene. Everything is unlit flat colour with 1px
hairline edges under an orthographic camera on a warm paper ground, which is how
charts have always looked, and which happens to be the cheapest thing WebGL can
draw. Soundings are one LineSegments with a preallocated buffer and a moving
draw range; the interpolation is updated incrementally in a 13-unit disc around
each new measurement, so taking the nine-hundredth sounding costs the same as the
first. Vertical scale is exaggerated three times — as it is on any section drawn
by hand, and for the same reason.