What it does
createService opens a shift. Parties arrive by a rate that speeds up through the shift, or by an exact schedule, and
wait in a queue with a limit; when it is full, the next party walks away. They are seated at a place with enough
seats, by the player or by themselves as places free up, look at the menu, wait for their order to be taken, wait for
the food, eat, wait to pay, and leave the place dirty until it is cleared.
Patience is in hearts. A party waiting on the player, in the queue, to order, for food or to pay, loses a heart every few seconds at its kind's pace, and at none it leaves angry; seating it, taking its order and serving each item each win one back, while thinking and eating cost nothing. The bill is the menu price of what the party ordered, and the tip is a share of it that grows with the hearts left. The shift ends when its time is up and the last party has gone, and it is won if the money reached its goal.
Your game calls seat, takeOrder, serve, collect and clear; each returns null when done, or a reason when
not, so a refused click can say why. step advances in fixed steps, drain returns what happened, arrivals, walkouts,
orders, payments with their tips, lost hearts, angry exits and the end of the shift, and snapshot and restore save
it as plain JSON. A host autopilot plays it for an attract mode or a test.
Features
- Arrivals — a rate that ramps across the shift, or an exact schedule of who comes when.
- A queue with a limit — a full queue turns the next party away.
- Seating — places with seat counts, filled by the player or automatically.
- The whole visit — thinking, ordering, waiting, eating, paying and a place left to clear.
- Patience in hearts — lost while waiting on the player, won back by each thing done, with an angry exit at none.
- Bills and tips — menu prices, and a tip that grows with the hearts left.
- A chosen flow — leave out ordering, eating, paying or clearing, and let the queue seat itself.
- Guest kinds and a menu as data — couples, business diners, families and regulars, and a diner menu, built in.
- Events and saves — every arrival, heart and payment as an event, and the shift as JSON.
- A host autopilot — takes money, brings orders, takes orders, clears and seats, most urgent first.
Good for
- Restaurant time-management games — seating parties, taking orders and clearing tables, in the style of Diner Dash.
- Counter and takeaway games — customers who order on arrival and pay on delivery.
- Shops and market stalls — a queue of buyers with patience and a till.
- Hotel desks and reception games — guests who arrive, wait, are served and leave.
- Tycoon and management games — a shift with a money goal and arrivals that grow busier.
- Any game with a queue of impatient people — where hearts and tips make speed matter.
Make it yours
The options are the seed, the guest kinds and menu, the places (a count of two-seaters, or each with its own seats), the flow, the arrivals, the queue limit, the shift's length and money goal, the tip at full hearts, and how many hearts each good deed wins back. A guest kind sets its party size, hearts, patience, tipping, thinking and eating time and items per person; a menu item sets its price and how often it is ordered.
The flow is what makes very different games. A full diner keeps every step, so the player seats each party, takes its order, brings the food, collects the bill and clears the table. A coffee counter turns ordering, eating, paying and clearing off and lets the queue seat itself: customers step up, order at once, and pay the moment their drink arrives.
A quick look
A shift with two tables, a party seated, and an order bubble shown when they are ready:
const shift = game.customers.create({ seed: 2, places: [{ seats: 2 }, { seats: 4 }] });
shift.seat(partyId, 'p2');
shift.step(dt);
for (const e of shift.drain()) if (e.kind === 'ready') showOrderBubble(e.party);
Works with
cooking-counter— a kitchen of stations and plates and a counter, built on these customers.walk-serve— a server walking a floor plan of tables, built on these customers.
Good to know
- Parties are whole: they arrive, sit and leave together.
- Reservations, moods beyond hearts, and guests who dislike each other are not modelled.
- Cooking, carrying and walking are not here; they belong to
cooking-counterandwalk-serve. - The pack draws nothing; your game presents the queue, the tables and the hearts from its state and events.






