For years we have built short browser games for employees: marathons, onboarding, events for companies with thousands of people. The same engine works outside the company. A game can hold a shopper's attention for minutes where a wrapper gets three seconds, and it can give a brand the direct contact with buyers that retail never does.
Here is one of those games: Factory Run, built for a snack brand. It's playable right here in the article, with sound, on a phone or a laptop.
It follows one rule. The game gives nothing away for free. The discount isn't handed to everyone: it grows with the player's skill, so the reward goes to the people who spent the most time with the product.
How can a snack brand use a browser game to turn a promo into a discount people earn and a habit they keep? Let people play before you ask them for anything, make the reward something they earn, and give them a reason to come back tomorrow.
The client
A mass-market snack or beverage brand: a chocolate bar is the classic example, with codes under the wrapper. It sells through retail, has no direct contact with the buyer, and spends on code promotions every year.
The problem
- Few codes get entered. A typical "enter a code for a chance to win" promo activates a few percent of the packs sold, and nothing happens after the code goes in.
- No first-party data. The retailer knows the buyer. The brand doesn't.
- The brand doesn't stick at the shelf. The decision takes three seconds.
- People don't cross over to other products. Someone buys the same item for years.
- Nothing holds attention between purchases.
What we build
A game where the reward is earned, not drawn. It works on its own as a discount in the brand's store, which is what you can play below, and it's the engine of a full on-pack campaign, which comes after.
The game is Factory Run: chunky 3D ingredients, soft animation, and a belt that keeps finding new ways to get in the player's way.
Press Play, then tap or click when the right ingredient is inside the ring.
How it plays
- What to take next is shown twice: on a large round badge next to the claw and in the recipe panel at the top.
- There's no room for error. The first defect ends the shift: the wrong item, a spoiled ingredient, or an order that timed out (the bar under the recipe).
- A recipe built with perfect taps makes a super bar: rays, sparks and double points.
- Every bar gets its own wrapper, set by the first ingredient of the recipe: cocoa, milk, nut, caramel, berry or wafer. On the result screen the bars sit on a shelf.

A discount that grows with the score
| Bars made | Discount |
|---|---|
| 10 | 5% |
| 20 | 10% |
| 30 | 15%, and the shift is won |
When the shift ends, the player gets a code for the last tier they reached: eight letters and digits, unique, copied with one tap.
A flawless player makes 10 bars in a little over a minute and all 30 in about four. With no room for error, 5% is within reach and 15% is a rare prize. That's the design. The discount isn't handed to everyone. Its size depends on how long someone stayed with the brand and how closely they looked at the product. Six wrappers are six flavors of the line, and a player looks at them dozens of times in one shift.

One caveat about the demo: its code is generated in your browser and isn't recorded anywhere, so it can't be redeemed. In a live promo the server issues the code after it has checked the shift.
How it gets harder
The belt barely speeds up. A belt that flickers past makes people dizzy. The difficulty comes from interference instead.
| Time in the shift | What shows up |
|---|---|
| 0–10 seconds | A three-step recipe, and only ingredients on the belt |
| 10–25 seconds | Four steps, plus things that don't belong: a bolt, a glove |
| 25–45 seconds | The order changes on the fly: the badge blinks for a second, then shows a different ingredient. Some items ride under a steel cloche that lifts right at the claw. A cart robot bumps the conveyor, the claw jams for a second, and items tumble off the belt |
| 45–70 seconds | Five steps. Spoiled ingredients and decoys: a pebble for a nut, soap for caramel. Items come closer together |
| 70 seconds and on | Six steps, more cloches and order changes, and the robot comes by more often |

Where a snack brand can use it
1. The brand's online store. The game sits on the home page or in the cart, and the discount code applies to the order. This is what the demo shows.
2. A joint promo with a retailer. The code redeems only at one retail chain. The chain gets shoppers and covers part of the discount. It's the same logic as partner prizes in our bank game: the reward is paid for by whoever gets the customer.
3. A new flavor launch. The new flavor enters the game as an ingredient and as a wrapper. Players can vote with their taps: the recipe they build most often ships as a limited edition.
4. A flavor collection. Six wrappers, six badges. Collect them all and win a separate prize. That's cross-selling built into the game: the player learns the rest of the line.
5. A full on-pack campaign. Codes under the wrapper, a daily game, a leaderboard and prizes. It's the biggest version, so it gets its own section.
The full version: an on-pack campaign
Everything from here to the fraud checks is a campaign plan, not something you can play in this article. The code under the wrapper becomes the start of a habit, not a lottery ticket. Factory Run stays the same game, but the reward changes: bars turn into points, the discount tiers become prize tiers, and super bars earn extra chances.

- Buy. A code under the wrapper, a QR code and a short link on the pack.
- Play free. Anyone can play right away, with no sign-up and no code: one game, one try a day, and points don't count. This is the top of the funnel and, more importantly, a legal requirement (more on that below).
- Sign up. A phone number confirmed by a text-message code, and a nickname for the leaderboard. We ask for name and address only when someone claims a physical prize.
- Enter a code. One code gives three plays, and plays don't expire.
- Game of the day. Three games rotate daily, so there's a reason to come back tomorrow.
- Score. Points go to the player's account and to a weekly leaderboard.
- Spend or save. Take an instant prize now or save up for a bigger one. Making that choice is what keeps people around.
- Come back. A free play every day and a weekly leaderboard reset, with a reminder on reset day.
- Collect. A code from each product unlocks its own badge, and collecting the whole line wins a separate prize. That is cross-selling built into the game.
| Game | What the player does | What it sells |
|---|---|---|
| Factory Run | Drops a claw with one tap on the next ingredient of the recipe as it rides past on the belt. One wrong pick is a defect, and the shift is over. | What's inside and how it's made, without a line of label copy |
| Shelf Sprint | Stocks a store shelf by merchandising rules in 30 seconds | Pack recognition: the player looks straight at the packaging for 30 seconds |
| Recipe of the Day | Builds a dish from the brand's products, following a hint | Cross-selling: people discover the rest of the line |
Factory Run is the first of the three and the one that's built. The other two are concepts.
The player's account
Points and plays left. A history of entered codes. A badge for each product, with the missing ones showing. An overall leaderboard, a weekly one, and one just for friends via a referral link. Prizes with their status and tracking number. The full promo rules.
A referral earns a play for each friend who gets as far as their first game, not just for signing up. Rewarding sign-ups alone invites fraud.

Three prize tiers
- Instant digital prizes. A partner promo code, a sticker pack, wallpapers. They unlock automatically at a threshold, with quotas set in advance. People need to win something on day one, or they won't come back.
- Guaranteed prizes for saving up. Merch. Reach the threshold, claim it in the account, enter an address. It's guaranteed, not a draw, and that keeps the players who don't top the leaderboard.
- Grand prizes. Weekly prizes by leaderboard and a final one. The cutoff time is fixed, the table is snapshotted, and the top players are checked by hand before anything ships.
The legal detail that usually shows up late
In most jurisdictions, a promotion with a chance-based prize has to offer a way to enter without buying anything. That's why the free daily play in step 2 isn't only there for retention. It's how the promo stays legal. We build it in from day one instead of reworking the promo right before launch.
Fraud protection, in short
A promo doesn't get past the client's lawyers without it. The demo in this article has none, because it has no server. The game logic is already written so that a server can replay a shift from the recorded input.
- Codes are generated cryptographically, not in sequence, with a checksum inside so an invalid code is rejected before it reaches the database. Each code is tied to one account forever. Code entry is rate-limited, with a CAPTCHA after that.
- Accounts need a verified phone number: one number, one account. Devices are fingerprinted, and matching shipping addresses go to manual review.
- Scores aren't sent by the player's device. The device sends a stream of game events, and the server recalculates the result itself, which stops the most common way to cheat. On top of that, plausibility checks flag scores above what's physically possible, reactions faster than a human, and perfectly even timing.
- Audit: a log of every action in the promo period, a leaderboard snapshot at every cutoff, and a report on every prize issued and why.
What makes it feel premium
This isn't pixel art. Retro works for employee events because it's nostalgic. For a brand that lives on its packaging, the game has to look as good as the pack: warm light, chunky 3D ingredients, and the mood of a calm mobile game, not an arcade.
- The product is in the frame as an object, not a logo in the corner. For a client, the packaging style is carried into the game scene.
- Every pick has feedback: the claw closes, the ingredient drops into the mold, and a finished bar gets wrapped and flies into the box.
- Numbers count up instead of appearing, and every screen change is animated.
- 60 frames per second. Without it, nothing else on this list matters.
- No stock art. Every scene is drawn for the brand. The brand in the demo is made up.
- The final screen is a shelf of the player's own bars, not a "Game over".
What we measure
These are targets for the on-pack campaign, not results we're reporting. We agree on them with the brand before launch, then instrument the game and report against them.
| Metric | Typical code promo | Target with the game |
|---|---|---|
| Codes entered, as a share of packs sold | 1–3% | 5–8% |
| Sessions per participant | 1–2 | 4+ |
| Players who play without a code | No such option | 25%+ of all players |
| Players entering codes from two or more products | Not measured | 30%+ |
| Opt-in contact base | Depends on the promo | Counted and handed to the client |
| Average time with the brand | Seconds at the shelf | Minutes per session |
The last row is the one a marketing director cares about most. Consumer brands almost never get to buy minutes of attention. They buy impressions.
The game lives inside your app
For a consumer brand, most engagement happens on a phone: in a loyalty app, or on a promo page opened from the QR code on the pack.
We don't build mobile apps. We don't make native apps, ship to the App Store or Google Play, or take over a client's release cycle. And none of that is needed. The game runs in the browser, so it opens from a link or inside a loyalty app as a web view. There's nothing to download, no app-store release, and updating the game doesn't require an app update.
What we need from the brand:
- An entry point: a QR code on the pack, a page in the online store, a loyalty tab or a push notification.
- A way to send the result back to the account the shopper already has: a discount code or prize points.
- User identification, so the result reaches the person who played.
It's the same setup as plugging our employee games into a company portal. We build it as one mechanism for both.
The snack brand in the game is made up. Figures on the screens are examples.
We built a second consumer game on the same engine: a cashback game for a bank, where the player earns points and the bank pays nothing. And if you want to see how we build games around a specific job rather than from a catalog, read the four-departments case, or see how custom builds work.
Frequently Asked Questions
Do people need to download anything to play?
No. The game runs in the browser, the same way it runs in this article. On a website it sits right on the store or promo page. In a loyalty app it opens as a web view inside the app the shopper already has, so there's nothing to install and no app-store release. Updating the game doesn't require an app update either.
Can I use the discount code from the demo?
No. The demo creates the code in your browser and doesn't record it anywhere. In a live promo the server issues the code after checking the shift, and the brand decides where it redeems: its own store or a partner retailer.
Why let people play the promo game without a code?
Two reasons. It's the widest part of the funnel, because people try the game before they buy. And in most jurisdictions a promotion with a chance-based prize must offer a way to take part without a purchase. The free daily play covers that from day one, so the promo doesn't need reworking right before launch.
How do you stop people from cheating on the leaderboard?
In a live promo, the player's device never sends a final score. It sends a stream of game events, and the server recalculates the result on its own. On top of that, plausibility checks flag impossible scores, inhumanly fast reactions and suspiciously even timing. Codes are cryptographic and tied to one account, accounts need a verified phone number, and top players are checked by hand before prizes ship.
What does the game need from our existing systems?
Three things: an entry point (a page, an app card or a push), a way to credit the result to the user's account, and user identification so the result reaches the right person. If the app or loyalty program can't accept results from outside, we'll tell you on the first call what would need to change.

