The game viewport is a Canvas surface. It owns projection, culling, labels, sprites, trails, particles, picking, and camera-local interaction. It does not own mining rules, faction meaning, NPC behavior, or durable object lifecycle.
That is the difference between rendering an authored world and quietly building a second simulation in the browser.
server projection -> viewport frame -> primitive draw commands -> Canvas
A ship, station, asteroid field, or event marker can have rich meaning in the world model. By the time it reaches the renderer, it should be concrete draw data: mask sprite, text, line, arc, reticle, particle burst, pick id, layer, and style hints.
The payoff is boring in the best way: React does not know about actors, the renderer does not know gameplay semantics, and the server remains authoritative.