← Playground一覧に戻る

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 sheetReading
84Eight metres four, below chart datum
12Twelve metres, rounded — deep water drops the tenths
06Underlined — dries 0.6 m above datum at low water
Magenta figuresUnder three metres. Magenta means attention, and nothing else
Hairline contours2 m, 5 m and 10 m, interpolated from your soundings only
Dashed lineThe drying line — datum — drawn only where you have seen it dry
Heavy black lineThe coastline at this instant, which is not where it was
Magenta ✕A grounding. It stays on the sheet

Controls

ActionMouse / keyboardTouch
Steer and throttleDrag on the water — the launch turns toward the pointer, and the further away it is, the harder you driveDrag with one finger
Look under the surfaceRight-drag, or Shift-dragTwo fingers
Steer← → or A / D
Throttle↑ ↓ or W / S
Turn the sheetQ / E
Raise and lower the eyeR / 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.

VerdictRequires
CLEAN SHEET72% covered, mean error under 0.95 m, no groundings
FAIR SHEET55% covered, mean error under 1.50 m, at most one grounding
PROVISIONAL34% covered
UNFIT FOR PUBLICATIONAnything 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.