PEOPLE
GAMES
COMMUNITY
PROGRESS
PROJECT OVERVIEW
The session product for a shared gaming PC — built around the five facts one status was hiding.
STATE MODEL
1 → 8
The incumbent described a whole session with one word: available. The replacement is eight independent dimensions, each naming what it does not prove.
POLICY CONFLICTS RESOLVED
15
Contradictions between written rules and running code, each traced to its source, consequence and owner. All fifteen resolved — each with a decision on record.
SHIPPED STAGE-1 CORE
1,529
Automated checks in a platform-independent core, guarding states, copy, contrast, grid step and the one rule the product cannot break.
01 / PROBLEM
THREE QUESTIONS. ONE GREEN LIGHT.
A player buys a specific hour on a specific machine. Between that payment and a playable game sit four systems, three companies and one desk — answered by a single status.
PLAYER
“Is this PC actually mine?”
The booking names a number. It is printed on a case under the table, in a room numbered from the other end. Paid time runs either way.
Arbat hall · 52 seats · the app highlights 22
Observed on a real first visit
BUSINESS
“Can we own the session?”
An incumbent system the owner ruled out replacing for twelve months. Integration only. The player-facing layer was the part we could own.
INCUMBENT SYSTEM
locked for 12 months
integration only
PLAYER-FACING LAYER
ours to design and own
Owner decision · investment boundary
OPERATIONS
“Can we prove it’s clean?”
A locked screen looks finished, so staff skip the reboot at a minute-to-minute handover. Nothing asks whether the last player’s accounts are gone.
LOCKED
STILL SIGNED IN
Game launcher · previous player
Store account · previous player
Browser profile · previous player
Operator practice · lab-reproduced
THE SINGLE ANSWER
“Available.”
Three questions, three owners. The incumbent client answered all of them with the same word — and the word was always the reassuring one.
PLAYER
BUSINESS
OPERATIONS
AVAILABLE
one word, three different truths
Why Stage-1 begins with the state model
A GREEN STATUS IS NOT A FACT. IT IS FIVE FACTS AVERAGED INTO A LIE.
BASELINE
WHAT EXISTEDBEFORE THE WORK
A booking app already shipped. Gaming PCs on a third-party club system with its own client. One reference branch, 52 machines. No in-house developer, four hours of capacity a week.
No product spec for the machine side. No API contract I was ever given in full. The baseline and follow-up figures presented in this case study were supplied by Ayazbi, the TOP Game manager.
01
Session state
02
Machine · hall
03
Time remaining
04
Paid until
05
Safe actions
V2 · Session panel — the green dot, and the five facts it averaged away.
03 / REFRAME
THE BRIEF SAID ADMINISTRATOR. THE EVIDENCE SAID PLAYER.
SUPERSEDED · H01
Supported by inherited synthesis describing existing staff mediation — that it happens, not that it is necessary.
CURRENT DIRECTION · H02
Intent, recorded as intent — then counted. After the rollout, 86% of sessions completed without staff assistance.
1 2 3 4 01
Price is visible
02
Player picks the pass
03
Discounts self-served
04
Player pays, no desk
V2 · Tariffs — the one step that always went through the desk, now finished by the player alone.
04 / STATE MODEL
The computer is not a screen. It is a promise with five signatures.
Once autonomy became the target, every comfortable simplification became a liability.
V2 · Lock screen — the machine names itself and grants nothing until someone is identified.
✦
paid ≠ booked
Money has arrived. It says nothing about which machine, or when.
✦
booked ≠ access granted
A reservation is a claim on time, not a door that opens.
✦
access granted ≠ unlocked
The door can open while the machine still refuses the person in front of it.
✦
unlocked ≠ playable
A desktop is not a game. Updates, launchers and accounts sit in between.
✦
playable ≠ clean
The previous session can still be signed in behind a finished-looking screen.
If no administrator stands between the player and the machine, the interface itself has to be honest about what it knows — including the moments when it knows nothing.
THE SPINE OF THE PRODUCT
Eight facts behind one plain sentence.
A locked PC can be ready for the next customer. An unlocked PC can be unusable. A disconnected PC may still be running a paid session — so the specification carries eight independent dimensions, and the player sees one sentence and one action.
Eight independent dimensions collapse into what the player actually reads.

A locked PC can be ready
Ready for whoever comes next, and granting nothing at all until someone is identified.
An unlocked PC can be unusable
Unlocked and busy: the wipe owns the machine until it can prove the last player is gone.
A paid session outlives the answer
The timer runs on facts the client keeps re-checking, never on one status it decided to trust.
The specification grew considerably, and every surface now needs a freshness rule instead of a confident countdown. Twelve product invariants had to be written before a single screen was drawn.
In exchange, no screen can claim readiness from a status it never observed — the exact failure that produced sixteen unowned minutes and a compensation nobody was told about.
05 / PRODUCT EXPERIENCE
SHORTEST PATH TO A PLAYABLE GAME.
One dominant action per screen, chosen by state: enter with the app code, pick a package, start the session, choose a game, continue CS2, confirm the added time, finish safely. Balance, loyalty and club offers never compete with it.
LOCK The station number is the largest element on screen — larger than the logo, read from a metre away by someone who has just walked in. No number in configuration means no number on screen and no login offer at all.
HOME Session status is persistent chrome, not a fifth destination. Player counts and star ratings were removed: the club has neither the source nor the right to show them.
LIBRARY Installed and ready is a filter, not a badge. «Game clicked» is not «game ready» — launch carries nine states from requested to playable.
LAUNCH ROUTE Own account or club account — the consequential difference. Credentials are never stored or shown in TOP Game, on a machine the next stranger will use in an hour.
TARIFF Price and the resulting end time are both visible before payment. The client displays one authoritative offer; it never calculates a rate, a discount or a refund.
SESSION Time is the product’s main object, not a status line. This is its full-screen form; in game, the same four actions live in a compact tray-and-hotkey panel. The always-on-top overlay was tested against anti-cheat, focus and exclusive-fullscreen behaviour on real titles before rollout.
06 / SYSTEM
THREE FORMS. ONE PRODUCT.
Full screen, no desktop behind it. Locked machine, unresolved identity, ending and cleanup.
During a stable game. Time, extend, help, end. Never a shop, never a profile editor.
Before play, or opened during a session. Home, Games, Club, Profile — status and balance are chrome.
13
screens in the prototype
80
local transitions
9
game-launch states
12
product invariants
One writer per fact
The hardest part was not the interface. It was agreeing who owns each consequential fact once four systems disagree. «The backend decides» is not an answer: a backend cannot prove a physical action happened.
So requested state, last observed state, observation time and entitlement are stored as four different things. The client presents, executes, observes and reports honestly — including result unknown. It never creates an entitlement, adds time, prices anything or declares cleanup done.
Three ways to sign in
01 — A short-lived claim from the mobile app, bound to the visible identity of this machine.
02 — One-time phone verification, or assisted recovery.
03 — Reusable phone and password — parity only, approved by the shared-PC threat review. Its prominence on the lock screen was settled with the design system after the review.
A bank success is not an hour of play.
Recovery is the product, not an error state bolted onto it. An unknown result never resolves itself into success or failure, and a retry re-checks the original attempt instead of creating a second one that could charge a player twice or end the next player’s session.
01 WRONG PC
02 RESULT UNKNOWN
03 PAID, TIME UNCONFIRMED
04 EXTENSION BLOCKED
05 CLEANUP UNCONFIRMED
06 SAFE TO LEAVE
ENTRY
Three entry layouts were explored in the file. The QR-first layout was declared current after the threat review; the other two are kept as a record.
VOLUNTARY ENDING
The exact remaining time and the approved consequence of giving it up. If the financial consequence is unknown, the action is not offered as final.
REMOTE ASSISTANCE
Who is asking, what for, and for how long — consent is bounded to ten minutes, the indicator persists, and a stop control stays on screen.
A CATEGORICAL REFUSAL
SOME REFUSALS MUST NOT OFFER RETRY.
If the scanned claim belongs to another machine, repeating it cannot help. The screen names the category and points at the right desk instead of inviting a second attempt.
Sixteen lock states are specified, including «verification unavailable — this is not a refusal of your booking», «station not configured» and «machine out of service». The last two offer no login at all.
ENTITLEMENT
Valid — for a different station
ACCESS
Not granted here
NEXT ACTION
Go to your own PC. No retry control is drawn.
09 / ACCESSIBILITY & LANGUAGE
A PHONE IS HELD. THIS SCREEN IS READ STANDING UP.
The type scale, the contrast floor and the keyboard model all follow from one physical fact: the reader is a metre away, has just walked in, and may be looking for a machine rather than at the screen.
TYPE SCALE
14 · 16 · 18 · 20 · 24 · 32 · 48 · 64 · 232
STATION NUMBER
232
232 px — one per screen, read from a metre away
the same number, at the size it is actually drawn
TYPE FLOOR
14 px, never lower. The 10–13 px sizes carried over from mobile were all lifted; density comes from spacing, not from shrinking text.
SCALE
14 · 16 · 18 · 20 · 24 · 32 · 48 · 64 · 232 — the last one is the station number, one per screen.
CONTRAST
4.5:1 body · 3:1 large · 7:1 over photography. Text on an image always sits on a defined scrim gradient.
KEYBOARD
Every critical flow is operable by keyboard, with a visible 2 px focus ring. The mobile system has no focus colour — a phone has no keyboard — so this token was added and approved for the PC client.
LANGUAGES
Russian, Kazakh and English are equal. Kazakh strings run 10–20% longer, so layouts are checked in all three. Kazakh was proofread by a native speaker before rollout.
STATUS
Nothing is carried by colour alone; every status has text. Reduced motion disables animation, and there is none during a game at all — the frames belong to the game.
10 / DESIGN LANGUAGE
Two oranges. No red.
Two audits turned a screen that looked strong into a screen that could be built. The rules below are what survived them — short enough to be remembered by whoever builds the next screen.
MAIN TYPEFACE
RegularMediumSemiBold
Onest
AaBbCc01234567{(!@#$?&)}
#E75503
Every primary action. Its label is near-black at 5.40:1 — no light label passes on solid orange.
#FF823F
Every orange word and active state, at 7.93:1 on card. Six oranges found in the file were reduced to these two roles.
#35D07F
Used once in the whole flow: the confirmed end of a session.
#FFB16F
Warnings and refusals share one colour. A refused login is a state with a way out, not an alarm — the system has no red.
The 71.87% discovery
The lock screen carried 8.6 and 12.9 px text, three type families, and a left margin at five different values while the right was clean. Dividing the odd sizes by 0.71865 returned whole numbers: a block designed at another scale had been pasted in and squashed. That one act explained almost every geometric defect.
White text sat on a photograph of lava — 3.5:1 body, 1.4:1 for a highlight label, unfixable by colour. Scrim became a component with a defined gradient and a minimum height. A Kazakh greeting began with a Latin «C» instead of a Cyrillic one: identical to the eye, broken for search, spellcheck and font fallback.
Three surfaces, one palette
The home screen read well and lived in a different design system from the lock screen and the mobile app — cool blue-grey against warm. The audit counted twenty near-whites doing the job of three text roles, thirteen type sizes against nine, and twelve corner radii where four sat side by side, indistinguishable.
A «recently played» badge failed at 2.60:1; white reaches only 3.69 on that orange. The label became near-black at 5.40:1, and the rule generalised into the two-orange system above.
0
type sizes below 14 px after the rebuild
0
foreign fonts remaining
0
elements out of frame
0
text overflows — verified by script, not by eye
11 / THE BUILT PRODUCT
Keeping demo accessexplicit.
The Windows client uses .NET 8 and WPF, with privileges held by the service. The example below documents the demonstration build; it is separate from the integrated player flow described in this case study.
The demo entry model has ten states. None of them grants access to a paid session.
TopGame.Core / Entry / EntryStatus.cs
// Demonstration build: entry status model.
// This example does not grant a paid session.
enum EntryStatus
NotPresented
Checking
RefusedWrongStation
RefusedNotStarted
RefusedExpired
Unverifiable
NeedsStaff
ResultUnknown
ServiceUnavailable
Offline
// Integrated access depends on the incumbent
// system, not on a locally simulated approval. In the demonstration build, the demo banner is tied to the authority implementation. A labelled debug control opens the session interface for inspection. This describes demo behaviour, not the live entry flow.
Keep the boundary visible
A demo may show the interface without granting a paid session. The integrated product relies on the incumbent system for entitlement. Keeping these contexts distinct prevents a demonstration from being mistaken for real access.
The same discipline runs through the rest. Publisher artwork is absent by design, so a tile without a licensed file is drawn from the letters of its title and says so. Station identity splits into a machine id and a printed display number: when hardware is replaced, the sticker does not change.
Scope: the client owns the player-facing layer only. Windows lockdown, game launching, payments and the backend stay with the incumbent system and are reached through integration — the client never creates an entitlement. It is per-monitor DPI aware, and the legal wording carried over from iOS was reviewed by a lawyer before rollout.
1,529
automated checks in the platform-independent core
47
QR strings hand-encoded and read back by an independent scanner
76 × 3
localisation keys in RU · KK · EN
11
deterministic failure scenarios on a debug switch
12 / THE PAYOFF
WHAT IS BUILT, WHAT IS MEASURED,
WHAT COMES NEXT.
Ayazbi, the TOP Game manager, supplied the before-and-after figures below. They cover sessions without staff assistance, time to play, staff interventions and repeat payment attempts.
STATUS
BUILT
Designed, built, running
MEASURED
Counted during the Stage-1 rollout
NEXT
Scoped for Stage-2
STAGE-1 PILOT RESULTS
MEASUREDSource: Ayazbi, TOP Game manager. Before-and-after figures for the rollout in Almaty; metric definitions are shown below.
MEASURE
BEFORE
AFTER
HOW IT WAS COUNTED
01
Sessions completed without staff assistance
54%
86%
«Assistance» is any staff action at the desk. A conversation at the counter counts, not only a ticket.
02
Arrival → playable median
8:00
3:10
Clock starts at the door, not at login. Queue time belongs to the metric.
03
Staff interventions per 100 sessions
34
11
Counts only interventions the system could have prevented.
04
Duplicate payment attempts
4.1%
0%
No repeat payment attempts were recorded in the reported after period. This metric tracks attempts, not duplicate charges.
ANTI-GAMING RULE
Autonomy counts only when the session also ends cleanly. A metric you can improve by making the system harder to leave is not worth moving.
01 / BUILT
A designed system and a running Stage-1 client
Eleven screens, a state model, a payment guard and an entry flow that exists as software — not as a slide. Everything a team could pick up on Monday and put in front of a player.
BUILT · VERIFIABLE BY LOOKING AT IT
02 / MEASURED
Four numbers that moved
The reported measures cover independent sessions, time to play, staff interventions and repeat payment attempts. Before-and-after figures were supplied by Ayazbi, the TOP Game manager.
MEASURED · BEFORE AND AFTER
03 / NEXT
Stage-2: the rest of the lifecycle
PC-to-PC transfer is already self-service. Extension across midnight, group bookings and refunds remain staff-assisted and are in scope for Stage-2.
SCOPED · STAGE-2