THE SCREEN YOUR STAFF NEVER CLOSE
A still of a live floor is the one thing it is not. So this is the floor, running · start a rig, pause one and watch the billing stop, drop a snack on a tab, end a session and watch the chair free. The costs are computed by the same module your real invoices are.
— PC BAY
RIG-01
In sessionverified_user
RTX 4070 · 165Hz
- Neon Slush₹60
RIG-02
In sessionverified_user
RTX 4070 · 165Hz
RIG-03
Availablegpp_bad
RTX 4070 · 165Hz
errorNo pricing set
Set pricing
— CONSOLE & VR
PS5-01
In session
4K 120Hz · DualSense ×4
- Loaded Nachos₹150
- Coke ×2₹60
PS5-02
Available
4K 120Hz · DualSense ×4
VR-01
In session
Quest 3 · roomscale
Pick a slot and the price is fixed at that chip · the whole ladder is copied onto the session and frozen, so the number you pressed is the number on the invoice. Start it open instead and the clock counts up while the price climbs.
Harbour Line Gaming is invented, and nothing you press here reaches a café. The clocks, the countdowns, the accruing totals and the overtime flag are produced by lib/pricing.ts · the module a real session is billed through.
ONE SHIFT, END TO END
What the press commits somebody to, what the clock does when you pause it, what ending a session hands to Billing, and the handful of things the screen refuses to do because guessing would cost you money.
Pause stops the money, not just the display
What happens to the bill when a controller dies or the power goes
Every running session carries two clocks: the one on the wall, and the one that will be invoiced. Pausing stops the second and not the first. The held time is folded into the session, so it is genuinely not charged rather than hidden from the screen · the timer, the running cost, the auto-end and the rig lock all subtract the same number.
- check_circleThe billing clock stops and the wall clock does not
- check_circleUnder five minutes left the clock turns red, then counts up past zero
- check_circleA session priced past the top of its ladder is flagged as overtime
What changesYou can be generous about a fault without doing it in your head, and the customer watches you do it.
The clock
On the wall clock
38:00
Time since they sat down
Billed
38:00
What the invoice will count
Not billed
00:00
Time the pause gave back
Hold the pause for a few seconds and watch the wall clock keep moving while the billed clock does not. The gap is what the customer is not charged for · a controller that died, a power cut, a queue at the counter.
This one is running. The cost is liveCost() from lib/pricing.ts, the same function the console's own timer calls.
The chair frees before the money is sorted
What ending a session does to the rig and to the bill
Ending one stops the clock, prices it against the snapshot it started on, and returns the rig to available in the same write. The charge does not become an invoice · it parks as a tab at Billing, where snacks can still land on it and where two tabs can settle as one bill.
- check_circleThe rig is available immediately, before anyone pays
- check_circleIt becomes a tab, not an invoice · the bill is cut when somebody pays
- check_circleTick several live rigs and check them out as one bill with one payer
What changesA queue at the counter never blocks the next customer sitting down, which on a Saturday is the difference between a full floor and a half one.
Ending one
No invoice is cut here, on purpose. A bill is a document with a number on it that a customer keeps, and it should be raised when somebody is actually paying · not automatically at the moment a chair empties.
A member can start their own rig
What happens on a Windows rig when nobody is free to walk over
On a locked PC a member signs in at the machine itself and plays against their wallet balance. How long they get is capped by what they can afford, and at time-up the balance is debited without anyone at the counter. It is the one path where money moves without staff, and the floor marks those sessions.
- check_circleSign-in happens at the rig, rate limited
- check_circleThe wallet caps the duration · under a minute affordable, it declines
- check_circleMarked self-serve on the floor, so you know which the counter started
What changesRegulars stop queueing to hand over money they have already given you, and your staff stay on the floor rather than behind the till.
Self-serve
A self-serve session carries its own chip on the floor, so a glance tells you which rigs the counter started and which started themselves. Credit is loaded at the counter by staff · there is no member-facing top-up, and Respawna never takes money from your customers.
The refusals are the feature
What stops a busy evening turning into a bad invoice
Most of what protects a floor is a decision not to guess. A rig whose game type has no price will not start · not on the card, not on the button, and not on the server if you go around both. A preset that runs over bills at the duration that was sold. Two people ending the same session open one tab, not two.
- check_circleAn unpriced rig refuses the sale rather than inventing a rate
- check_circleAuto-end bills at the planned duration, not at the moment noticed
- check_circleA paired lock agent that goes quiet turns red, because unarmed and silent is the risk
What changesThe mistakes that cost money on a full floor are the ones nobody notices until the month is counted, and these are the ones that never get made.
Refusals
Narrow definitions, on purpose
What the figures across the top of the screen actually count
Every one of the four is narrower than its label suggests, and that is deliberate. Today's revenue is money actually collected, with money still running on the floor shown underneath it rather than folded in. Occupancy is measured against the rigs you could have sold, from your own local midnight.
- check_circleStations live counts against every station, including offline ones
- check_circleToday's revenue is paid invoices and entry fees, not open tabs
- check_circleOccupancy is played minutes over sellable minutes, in your timezone
What changesYou can trust the number at a glance during service, which is the only time you will actually look at it.
The four tiles
Stations live
Rigs in session over every station you own, maintenance and offline included.
Today's revenue
Paid invoices and tournament entry fees, bucketed to your timezone. Money still running on the floor is shown under it, not in it.
Occupancy · today
Station-minutes actually played against the minutes your sellable rigs could have sold since local midnight.
Flagged
Stations you have marked maintenance or offline. It is a count of what you set, not an alert engine guessing at faults.
These definitions are written out because the precise one is the useful one. A revenue tile that quietly folded in money still running on the floor would read higher and mean less.
THE FLOOR TELLS ITSELF. EVEN WHEN THE WIFI DOES NOT.
A session started at another terminal, a booking arriving from somebody's phone, a rig changing hands · each one reaches every open console on its own, within a moment of happening. A burst that touches three things at once lands as one update rather than three, so a busy Saturday does not flicker.
Behind it sits a slower check that runs regardless. Sockets drop, café wifi eats them, and a counter screen left open all evening must not go quietly stale because a reconnect failed. The live feed makes it instant; the check underneath makes it certain.
THE SHIFT QUESTIONS
Does the floor update by itself when another terminal starts a session?expand_more
Yes. A session starting anywhere in the café, a booking arriving from a member's phone or a rig changing status reaches every open console within a moment, without anyone pressing anything. Changes that land together arrive as one update rather than several, so a busy evening does not flicker, and a slower check runs underneath in case the connection drops. Clocks and running costs tick every second in the browser on top of that.
Does pausing a session actually stop the customer being charged?expand_more
Yes. Pausing stamps the session and resuming folds that span into a cumulative held total which is subtracted everywhere the session's time is read: the countdown, the running cost, the auto-end timer and the rig lock's own expiry. It is not a display trick · the invoice is cut from the same billable seconds.
What happens if a session runs past the time that was bought?expand_more
A preset session ends itself when the clock reaches zero and is billed at the duration that was sold, so a rig nobody got to for ten minutes does not quietly bill for them. There is also a server-side sweep that closes expired sessions even if no browser is open. An open-ended session behaves differently by design: it keeps climbing the ladder past the top rung one interval at a time and is flagged as overtime rather than freezing at the top price.
Can I start a session on a rig I have not set a price for?expand_more
No, and it refuses in three places. The station card shows a red no-pricing line, the Start button is replaced by a link to set that game type's pricing, and the server rejects the request even if you reach it another way. It would rather decline the sale than invent a rate, because a guessed number becomes a real invoice.
Does ending a session create an invoice?expand_more
No. It stops the clock, prices the session against the snapshot frozen at its start, frees the rig immediately, and parks the charge as an open tab at Billing. Snacks and custom charges can still be added to a parked tab, and two tabs can be settled as a single invoice. The bill is raised when somebody is actually paying.
Is live station control limited to a paid tier?expand_more
No. Live station control, GST invoices, payments and daily and monthly reports are all on Starter, which is the cheapest plan. What Starter limits is the number of stations rather than the features on the floor.