Fog of war is the product
PlaneSim players know what a real airline would know. Own data is exact, rival internals are hidden or vague, and the boundary is enforced server-side, where no client mod can reach it.
Most simulation games treat hidden information as a missing feature. PlaneSim treats it as the design. The rule we build against is short: players know what a real airline would know. Everything about how competitive information works in the game follows from taking that sentence literally.
Three tiers of knowledge
Your own operational data is exact. Loads to the seat, revenue to the cent, every ledger entry with its memo. There is no fuzz on your side of the fence, because a real airline knows its own numbers.
Rival fares, schedules, routings, and capacity are public. This surprises players who expect fog to mean darkness, but it mirrors reality: a real carrier reads its competitors' published schedules and filed fares every morning. In PlaneSim the Flight Search page will show you any market through a passenger's eyes, every bookable itinerary on the pair with fares, times, connections, and availability. That is the exact candidate set the demand engine books against, and it is open to everyone.
Rival passenger loads, revenue, and internal finances are hidden, or shown only as vague buckets. How full that competing flight actually was, what the route earns, how close that aggressive rival is to insolvency: a real airline does not know these things about its competitors, so neither do you.
Exactness is earned
The boundary is not fixed forever. Exactness about a market is something you earn: fly the market yourself, or commission a market study. What you never get is a settings toggle that turns the fog off. Knowledge in PlaneSim has a price denominated in the game's own currency of aircraft, schedules, and money, and paying it is a strategic decision like any other.
This is where fog stops being a restriction and becomes gameplay. Reading a market through vague buckets, your own exact data, and the public record is a skill. Watching where a rival adds frequency tells you something their hidden load factors would have told you for free. Inference is the game we are actually selling.
Enforced where you cannot reach
The tiers above would be decoration if they were implemented in the interface. They are not. Fog is enforced server-side: the numbers you are not entitled to see never leave the server in the first place.
The distinction matters. A client-side fog is a curtain in front of data that already arrived in your browser, and a curtain can be pulled aside by anyone with the developer console open. A server-side fog means there is nothing behind the curtain to find. No client mod, no memory inspection, no scraped API response can reveal a rival's loads, because no representation of those loads ever crossed the wire to you. The most determined cheater and the most casual player see precisely the same information.
This is one reason the client is forbidden from computing simulation values at all, a rule we described in The server computes every number. A client that derives numbers needs inputs, and inputs shipped to a browser are public no matter what the interface hides. A client that only renders can be handed exactly what the fog permits.
Transparent model, private data
Fog of war coexists with an unusual amount of openness about how the simulation itself works. The Market Analysis screen shows a per-option breakdown of why passengers choose each competitor. The wiki's articles are written from the engine's actual code. We want players to learn the formula rather than guess at it.
The line we hold is between the rules and the state. How demand weighs fare against travel time is a rule, and rules are public; we walked through them in How passenger demand actually works. What a specific rival earned on a specific route last week is state, and that state is private. Depth without opacity on one side, real competitive uncertainty on the other.
The cost, plainly
Fog frustrates people, and we know it. Vague buckets can feel stingy when you are trying to decide whether a route is worth contesting. A spreadsheet-minded player wants the full matrix, and some competing games hand it over.
We think handing it over destroys the thing being competed for. When every carrier sees every load factor, strategy collapses into copying whatever is full, and the market converges into a queue behind the same obvious plays. Uncertainty is what makes a contrarian route bet a bet at all. So the fog stays, not as a limitation we have yet to lift, but as the product.