Back to Blog
Engineering2026-06-027 min

We built a full radar/ARPA trainer in the browser — WebGL, no install

J

John C. Thomas

Founder, BlueWave Projects

Every mariner working toward a radar endorsement has to learn to read a radar display — to take the blips on a Plan Position Indicator, plot their motion, and work out whether the ship three miles off the bow is going to pass safely or put you on a collision course. Traditionally you learn this in a classroom simulator or on a real bridge. We built one that runs in a browser tab.

No install, no license dongle, no scheduled lab time. Open a URL and you are looking at a live radar scope. Here is what went into it and why the browser was the right call.

What it actually is

It is a WebGL radar and ARPA (Automatic Radar Plotting Aid) training simulator. On screen: a Plan Position Indicator with a rotating sweep, your own ship at center, and traffic moving around you in real time. You can place targets, set their course and speed, and then practice the actual skills the exam tests:

  • Reading relative motion versus true motion
  • Working out CPA and TCPA — the closest point of approach and the time until it
  • Running a trial maneuver — "if I turn 20 degrees right, does that target clear?" — before committing
  • Using the bridge instruments — electronic bearing lines, variable range markers, guard zones
  • Applying the Rules of the Road to what the scope is telling you
  • It is not a toy animation of a radar. The geometry is real: the relative-motion vectors, the CPA math, the way a target's trail behaves under true versus relative motion are all computed the way an actual ARPA computes them.

    Why the browser

    The obvious objection is that serious simulators are native applications. For training, the browser wins for one specific reason: access. A mariner studying for an endorsement does not want to install software, manage a license, or book lab time. They want to practice on a phone on a crew-change flight, or on a laptop at the galley table. The lowest-friction path to "practice the skill ten more times" is a URL.

    The browser also means every update is instant — no app-store review, no version anyone has to update. We ship an improvement and the next person to open the scope has it.

    The hard part: a radar scope in WebGL

    A radar PPI is a genuinely demanding thing to render. The sweep rotates and paints returns that then fade; sea clutter and rain have to look and behave plausibly; targets leave trails whose shape encodes their motion; and all of it has to stay smooth while the simulation computes target geometry every frame.

    We render the scope in WebGL with custom shaders — the sweep, the afterglow, the clutter are GPU work, not DOM elements. The simulation layer — target motion, CPA/TCPA solutions, the ARPA tracking, the collision-rules logic — runs alongside and drives what the shaders draw. Keeping the graphics on the GPU is what lets the whole thing hold a smooth frame rate on a phone, which is exactly where a studying mariner often is.

    Depth is the moat

    The easy 80 percent of a radar sim is a rotating line and some dots. The 20 percent that makes it a training tool is the domain depth: the IMO-spec instruments behaving correctly, the collision-rules logic giving the right guidance for a given encounter, the trial maneuver actually solving the geometry, the guard zones alarming when they should. That depth is where most "radar simulators" stop and where a real trainer has to keep going. It is also the part you cannot fake — a mariner will spot a wrong CPA instantly.

    What I would tell another team

  • For training tools, access beats fidelity. A slightly simpler simulator everyone can open beats a perfect one nobody installs.
  • Put the heavy visuals on the GPU. Custom shaders are what let a demanding real-time display run smoothly on the device the user actually has — often a phone.
  • The domain depth is the product. Anyone can render a sweep; the value is in the instruments and the rules being correct.
  • Ship to a URL so every improvement reaches every user immediately.
  • If you have a hard skill that people currently learn from a textbook and you suspect they would learn it faster by doing it, [that is the kind of thing we build](https://bluewaveprojects.com/booking).

    More from BlueWave