Skip to main content
Guests are the club’s only source of revenue, and every one of them is simulated individually. Why: the levers the player pulls (hype, promotions, prices, door policy, staff) should show up as real people who do or do not walk in, pay, and buy. All random draws below come from the seeded deterministic generator described in The night loop, so the same seed produces the same crowd.

How many guests come

When the club opens, the engine computes tonight’s expected head count NN and generates exactly that many walk-in guests. N=round⁡ ⁣(DL⋅(0.4+1.0 H100+0.4 R100)⋅Bd⋅Π⋅Σ)N = \operatorname{round}\!\Big( D_L \cdot \big(0.4 + 1.0\,\tfrac{H}{100} + 0.4\,\tfrac{R}{100}\big) \cdot B_d \cdot \Pi \cdot \Sigma \Big) where
  • DLD_L is the venue’s base demand at level LL (guests).
  • H∈[0,100]H \in [0, 100] is hype and R∈[0,100]R \in [0, 100] is reputation.
  • BdB_d is the busy-night bonus: Bd=1.25B_d = 1.25 if weekday⁡(d)=(d−1) mod 7∈{3,5,6}\operatorname{weekday}(d) = (d - 1) \bmod 7 \in \lbrace 3, 5, 6 \rbrace (Wednesday, Friday, Saturday; day 1 is a Sunday), else 11.
  • Π\Pi is the house-policy multiplier (below).
  • Σ\Sigma is the safety multiplier: word gets around, so an unsafe club loses up to a quarter of its walk-ins.
Σ=0.75+0.25⋅Safety100\Sigma = 0.75 + 0.25 \cdot \frac{\text{Safety}}{100} House policies (Level 3 and up; below that Π=1\Pi = 1): Π=(1+0.12 1ladies)⋅δdress⋅clamp⁡ ⁣(1−0.2 c−cL12 kL,  0.3,  1.5)\Pi = \big(1 + 0.12\,\mathbb{1}_{\text{ladies}}\big) \cdot \delta_{\text{dress}} \cdot \operatorname{clamp}\!\Big(1 - 0.2\,\frac{c - c_L}{12\, k_L},\; 0.3,\; 1.5\Big) where 1ladies\mathbb{1}_{\text{ladies}} is 1 on ladies’ night, δdress\delta_{\text{dress}} the dress code’s demand factor (1, 0.95, 0.85 for none, smart, strict), cc the cover the player set, cLc_L the venue’s standard cover and kLk_L the venue’s price scale. A cover above standard thins the crowd; a cheaper one pulls more in. A sealed venue (after a failed inspection) generates N=0N = 0.

Who each guest is

Each guest is drawn independently. Segment. The audience is a weighted mix of five segments. Every active promotion adds weight to the segment its channel reaches, and a dress code attracts big spenders: Pr⁡(segment=s)=ws∑jwj,ws=ws0+2⋅#{active promos targeting s}+1s=premium⋅πdress\Pr(\text{segment} = s) = \frac{w_s}{\sum_j w_j}, \qquad w_s = w^0_s + 2 \cdot \#\lbrace \text{active promos targeting } s \rbrace + \mathbb{1}_{s = \text{premium}} \cdot \pi_{\text{dress}} where ws0w^0_s is the base weight and πdress\pi_{\text{dress}} is 0, 1 or 2. A promotion therefore works twice: it adds hype (more guests) and tilts the mix toward its audience. Gender. A guest is a woman with probability φ=0.42+0.14 1ladies\varphi = 0.42 + 0.14\,\mathbb{1}_{\text{ladies}} Music taste. With probability 0.4 the guest likes the club’s own genre; otherwise a genre is picked uniformly from the segment’s list. Budget. The cash a guest brings, in coin: b0=round⁡ ⁣(U{βslo,…,βshi}⋅kL⋅mdress⋅clamp⁡ ⁣(1+0.15 c−cL12 kL,  0.8,  1.3)⋅μg)b_0 = \operatorname{round}\!\Big( U\lbrace \beta^{\text{lo}}_s, \dots, \beta^{\text{hi}}_s \rbrace \cdot k_L \cdot m_{\text{dress}} \cdot \operatorname{clamp}\!\Big(1 + 0.15\,\frac{c - c_L}{12\,k_L},\; 0.8,\; 1.3\Big) \cdot \mu_g \Big) μg={1woman1+0.5 (φ−0.42)+min⁡(0.3,  0.05 nhost)man\mu_g = \begin{cases} 1 & \text{woman} \\ 1 + 0.5\,(\varphi - 0.42) + \min(0.3,\; 0.05\, n_{\text{host}}) & \text{man} \end{cases} where U{⋅}U\lbrace\cdot\rbrace is a uniform integer draw from the segment’s budget range, mdressm_{\text{dress}} the dress-code budget multiplier (1, 1.2, 1.4), and nhostn_{\text{host}} the hosts on shift. An expensive door brings bigger spenders; men spend more in a room with more women and with hosts working it. Arrival and stay. Arrival minute α∼U{0,…,239}\alpha \sim U\lbrace 0, \dots, 239 \rbrace. Leave minute λ=α+U{stayLlo,…,stayLhi}\lambda = \alpha + U\lbrace \text{stay}^{\text{lo}}_L, \dots, \text{stay}^{\text{hi}}_L \rbrace. Every guest starts with satisfaction 60, tilt 0, and is underage with probability 0.05.

Promoters and happy hour

A booked promoter brings a guest list of U{round⁡(0.8h),…,round⁡(1.2h)}U\lbrace \operatorname{round}(0.8h), \dots, \operatorname{round}(1.2h) \rbrace heads, all from one segment, arriving in the first 75 minutes. They get in free and the promoter is paid a commission per head admitted. A scheduled early happy hour moves each guest who would arrive at minute 60 or later to a uniform minute in the first hour with probability 0.25. A late happy hour extends by 30 minutes (capped at closing) the stay of every guest due to leave between minute 240 and 359.

Extra guests from a night-time promo

Posting a promo after the doors open pulls in extra guests over the rest of the night, fewer the later it is: Nextra=round⁡ ⁣(DL⋅1.0⋅ΔH100⋅Bd⋅clamp⁡ ⁣(300−t300, 0, 1))N_{\text{extra}} = \operatorname{round}\!\Big( D_L \cdot 1.0 \cdot \frac{\Delta H}{100} \cdot B_d \cdot \operatorname{clamp}\!\Big(\frac{300 - t}{300},\, 0,\, 1\Big) \Big) where ΔH\Delta H is the hype the promo actually added (after the 0–100 clamp), tt the current minute, and 300 the last arrival minute (360 minus a 60-minute late-arrival cutoff). Each extra guest arrives at a uniform minute between t+1t + 1 and 300. These guests are appended to the end of tonight’s guest list rather than merged into arrival order, so they are processed after everyone drawn when the club opened.

The door

Each minute, guests whose arrival minute has come join the queue. The door then processes at most 3 queued guests, in arrival order:
  1. Capacity. If the number inside has reached C=round⁡(capacityL⋅(1+0.15 ucap))C = \operatorname{round}\big(\text{capacity}_L \cdot (1 + 0.15\, u_{\text{cap}})\big), the door closes for this minute, unless the player forced it open (a violation under R10). Here ucap∈{0,1,2,3}u_{\text{cap}} \in \lbrace 0, 1, 2, 3 \rbrace is the capacity upgrade tier.
  2. ID check. An underage guest is turned away if the club has security, or if it is below Level 3 (the owner checks IDs at the counter). Otherwise the guest gets in, and an inspector who visits that night will find them.
  3. Dress code. Turned away with probability 0.1 / 0.25 (men) or 0.03 / 0.08 (women) under a smart / strict code.
  4. Cover. If the guest’s budget bb is below the cover cgc_g, they go home: the door never takes a whole wallet. Otherwise they pay cgc_g and their budget drops by it. Here cg=0c_g = 0 for guest-list guests and for women on ladies’ night, and cg=cc_g = c otherwise.
Turned-away guests still use up one of the 3 door slots that minute.

When a guest buys

Every minute, each guest inside picks one token from the menu at random and decides whether to go to the bar. Why: demand should respond smoothly to price, to the room’s mood and to the market, without the player having to micromanage individuals. The price. The player sets a list price pkp_k per token. During happy hour the list drops to ℓk=max⁡(1,round⁡(0.5 pk))\ell_k = \max(1, \operatorname{round}(0.5\,p_k)), otherwise ℓk=pk\ell_k = p_k. Guests pay the list times the live market multiplier μk,t\mu_{k,t}: πk,t=max⁡ ⁣(1,  round⁡(ℓk⋅μk,t))\pi_{k,t} = \max\!\big(1,\; \operatorname{round}(\ell_k \cdot \mu_{k,t})\big) The reference price. Each token has a standard price for the venue, which follows the real-world spot price of its underlying stocks: pˉk=max⁡ ⁣(1,  round⁡(round⁡(pk0 kL)⋅χk))\bar p_k = \max\!\big(1,\; \operatorname{round}(\operatorname{round}(p^0_k\, k_L) \cdot \chi_k)\big) where pk0p^0_k is the token’s default price and χk∈[0.2,5]\chi_k \in [0.2, 5] the spot factor (current spot over the spot when the club first saw it, weighted over the token’s legs; 1 when offline). The bar probability. A guest with tilt τ\tau goes for token kk with probability qg,k,t=βt⋅0.06⋅min⁡ ⁣(1.5,  pˉkℓk)⋅Fk,t⋅max⁡ ⁣(0.2,  1−τ150)q_{g,k,t} = \beta_t \cdot 0.06 \cdot \min\!\Big(1.5,\; \frac{\bar p_k}{\ell_k}\Big) \cdot F_{k,t} \cdot \max\!\Big(0.2,\; 1 - \frac{\tau}{150}\Big) Here EtE_t is crowd energy and κt=min⁡(1,60 nrel/inside)\kappa_t = \min(1, 60\, n_{\text{rel}} / \text{inside}) the share of guests covered by Guest Relations staff (see Crowd, DJ & security). One draw decides. The engine draws a single u∼U[0,1)u \sim U[0, 1) per guest and minute, and with δt=0.5⋅lerp⁡(0.6,1.4; Et/100)\delta_t = 0.5 \cdot \operatorname{lerp}(0.6, 1.4;\, E_t/100) the dance chance: action={buy ku<q and b≥πk,t and a bar slot is freewait at the bar (−1 satisfaction)u<q and b≥πk,t and no slot is freedanceu<q+δt otherwiseidle (−0.05 satisfaction)else\text{action} = \begin{cases} \text{buy } k & u \lt q \text{ and } b \ge \pi_{k,t} \text{ and a bar slot is free} \\ \text{wait at the bar } (-1 \text{ satisfaction}) & u \lt q \text{ and } b \ge \pi_{k,t} \text{ and no slot is free} \\ \text{dance} & u \lt q + \delta_t \text{ otherwise} \\ \text{idle } (-0.05 \text{ satisfaction}) & \text{else} \end{cases} So a guest who can afford the token buys with probability qq and dances with probability δt\delta_t; a guest who cannot afford it dances with probability q+δtq + \delta_t. Below Level 3 the energy factors are 1 and δt=0.5\delta_t = 0.5. Bar throughput. The bar serves at most 2 (1+nbartender)2\,(1 + n_{\text{bartender}}) orders per minute. Guests are served in arrival order; once the slots run out, the rest wait and lose satisfaction.

What a sale does

If the token is out of stock, the guest is disappointed (satisfaction −10-10) and from then on only orders tokens that are in stock. Otherwise: b←b−πk,tcoin←coin+πk,t−round⁡ ⁣(0.05⋅max⁡(0,  πk,t−ckbuy kL χk))τ←τ+fomoksat←sat+5\begin{aligned} b &\leftarrow b - \pi_{k,t} \\ \text{coin} &\leftarrow \text{coin} + \pi_{k,t} - \operatorname{round}\!\big(0.05 \cdot \max(0,\; \pi_{k,t} - c^{\text{buy}}_k\, k_L\, \chi_k)\big) \\ \tau &\leftarrow \tau + \text{fomo}_k \\ \text{sat} &\leftarrow \text{sat} + 5 \end{aligned} where ckbuyc^{\text{buy}}_k is the token’s buy cost and 0.05 the platform’s share of the spread over spot. The stock of kk drops by one. Buying a round. Right after a purchase, a man who can still afford it buys a second unit (if a bar slot is free) with probability ρt=min⁡ ⁣(0.55,  0.08+0.4 ft+0.02 nhost)\rho_t = \min\!\big(0.55,\; 0.08 + 0.4\, f_t + 0.02\, n_{\text{host}}\big) where ftf_t is the share of women among guests inside. The round adds +2 satisfaction.

Spend per guest

There is no fixed spend-per-guest constant. A guest’s spend is whatever the per-minute rule produces until the night ends or they leave, bounded by their budget: spendg=cg+∑purchasesπk,t  ≤  b0(cg≤b0 for every guest let in)\text{spend}_g = c_g + \sum_{\text{purchases}} \pi_{k,t} \;\le\; b_0 \qquad (c_g \le b_0 \text{ for every guest let in}) The one exception is the sparkler parade (see Crowd, DJ & security). A guest whose remaining budget covers a bottle at round⁡(0.35 mtable)\operatorname{round}(0.35\, m_{\text{table}}) may copy the parade and buy one; the club books the full bottle price as table revenue, but only 40% of it comes out of the guest’s budget (the other 60% is an impulse splurge). Sparkler bottles therefore let a guest’s total spend exceed b0b_0. Over a stretch of minutes where the guest can afford the tokens and the bar has slots, the expected number of purchases per minute is 1∣M∣∑k∈Mqg,k,t\frac{1}{\lvert M \rvert} \sum_{k \in M} q_{g,k,t} plus rounds, with MM the tokens unlocked at this level.

The token market inside the club

Each token trades at a multiplier μk,t\mu_{k,t} on its list price, starting at 1. Why: the party moves the market, and the market moves the guests. Every minute: μk,t+1=clamp⁡ ⁣(μk,t⋅exp⁡ ⁣(0.002 Et−5050−0.015 (μk,t−1)+Pt⏟drift+1.7 vk (2u−1)⏟shock),  0.4,  3)\mu_{k,t+1} = \operatorname{clamp}\!\Big( \mu_{k,t} \cdot \exp\!\big( \underbrace{0.002\,\tfrac{E_t - 50}{50} - 0.015\,(\mu_{k,t} - 1) + P_t}_{\text{drift}} + \underbrace{1.7\,v_k\,(2u - 1)}_{\text{shock}} \big),\; 0.4,\; 3 \Big) where vkv_k is the token’s volatility, u∼U[0,1)u \sim U[0, 1), and the pump PtP_t is 0.06 in the minute the DJ takes the decks plus 0.004 per minute while the DJ’s anthem plays. A slow average follows the price, μˉk,t+1=μˉk,t+0.05 (μk,t+1−μˉk,t)\bar\mu_{k,t+1} = \bar\mu_{k,t} + 0.05\,(\mu_{k,t+1} - \bar\mu_{k,t}), and drives FOMO: Fk,t=clamp⁡ ⁣(1+3(μk,tμˉk,t−1),  0.75,  1.4)F_{k,t} = \operatorname{clamp}\!\Big(1 + 3\Big(\frac{\mu_{k,t}}{\bar\mu_{k,t}} - 1\Big),\; 0.75,\; 1.4\Big) Guests also feel their own paper profit. Each buyer keeps a cost basis θg\theta_g, the running mean of the menu-wide index It=1∣M∣∑kμk,tI_t = \frac{1}{\lvert M \rvert}\sum_{k} \mu_{k,t} at their purchases. Each minute, with pnl=It/θg−1\text{pnl} = I_t / \theta_g - 1: sat←sat+0.6 pnl,τ←τ+8 max⁡(0, −pnl)\text{sat} \leftarrow \text{sat} + 0.6\,\text{pnl}, \qquad \tau \leftarrow \tau + 8\,\max(0,\, -\text{pnl}) Losing guests get tilted, and tilted guests buy less and start fights (see Crowd, DJ & security).

Reserved tables

At minute 90 the tables booked by Guest Relations arrive and pay their minimum spend in one go. Bookings per seat type ss are fixed when the club opens: ns=min⁡ ⁣(seatss,  round⁡(demands⋅clamp⁡(1−es (msmˉs−1), 0, 1.5)))n_s = \min\!\Big(\text{seats}_s,\; \operatorname{round}\big(\text{demand}_s \cdot \operatorname{clamp}\big(1 - e_s\,(\tfrac{m_s}{\bar m_s} - 1),\, 0,\, 1.5\big)\big)\Big) demands={seatss⋅(0.3+R/200)bar seats (walk-ins)nrel⋅1.5⋅(0.5+R/100)VIP, sofa, table\text{demand}_s = \begin{cases} \text{seats}_s \cdot (0.3 + R / 200) & \text{bar seats (walk-ins)} \\ n_{\text{rel}} \cdot 1.5 \cdot (0.5 + R/100) & \text{VIP, sofa, table} \end{cases} where msm_s is the player’s minimum spend, mˉs=round⁡(ms0 kL)\bar m_s = \operatorname{round}(m^0_s\, k_L) the standard one (ms0m^0_s = 750, 300, 200, 60 for VIP, sofa, table, bar) and ese_s the elasticity (0.5, or 0.7 for bar seats). Table revenue is ∑sns ms\sum_s n_s\, m_s.

Players as guests

In multiplayer, a human visitor walks in while the club is open (the night, before 04:00, not sealed after a failed inspection) by paying the club’s cover from their own wallet (no entry if it can’t cover it) and buys at the list price times the live market multiplier, max⁡(1,round⁡(pk μk,t))\max(1, \operatorname{round}(p_k\, \mu_{k,t})), decreasing the club’s stock exactly like a simulated guest. Player visitors always pay full price: the happy-hour discount and free entry (guest lists, women on ladies’ night) apply only to simulated guests. What they buy goes home with them; the club never buys back.
Day 7 (weekday 6, Saturday), hype H=40H = 40, reputation R=60R = 60, safety 100, no house policies, no promos.Head count. N=round⁡(160⋅(0.4+0.40+0.24)⋅1.25⋅1⋅1)=round⁡(208)=208N = \operatorname{round}\big(160 \cdot (0.4 + 0.40 + 0.24) \cdot 1.25 \cdot 1 \cdot 1\big) = \operatorname{round}(208) = 208 walk-ins, against a capacity of 190. Late arrivals will queue at a full door.A guest. An urban25 man draws a base budget of 150, so b0=150×48=7200b_0 = 150 \times 48 = 7200 coin. He pays the standard cover of 600 and enters with 6600.His first minute at the bar. He picks Tesla. The reference is pˉ=round⁡(25×48)=1200\bar p = \operatorname{round}(25 \times 48) = 1200 (spot factor 1). The player has priced it at ℓ=1500\ell = 1500; the market is flat (μ=1\mu = 1, F=1F = 1), energy is 50, no Guest Relations, tilt 0:β=0.8+0.45×0.5=1.025,q=1.025×0.06×min⁡ ⁣(1.5,12001500)×1×1=0.0492\beta = 0.8 + 0.45 \times 0.5 = 1.025, \qquad q = 1.025 \times 0.06 \times \min\!\big(1.5, \tfrac{1200}{1500}\big) \times 1 \times 1 = 0.0492That is about 4.9% per minute, or roughly 3 purchases an hour if every token were priced like this. Priced at the reference instead, qq rises to 0.0615 (+25%), but each sale brings in 1200 rather than 1500.