Bonprix
Competitive shopping game
The game
Bonprix is the twisted re-creation of a supermarket’s self-checkout as an exciting arcade machine. The goal of the game is to shop as expensive as possible, within a limited amount of time.
During the game, players have to quickly scan as many items as they can with the installation’s built-in barcode scanner. A screen above the scanner shows which random piece out of a stuffed shopping basket has to be “bought” next. There’s a great variety of products available: cheap things, like an old Baguette, or tasty Spaghetti Bolognese in a can, but also expensive luxury items, like a glamorous Louis Vuitton bag and precious Dolce & Gabbana sunglasses. Every two seconds, the product on the screen gets a discount and its price drops. But Bonprix is all about the total sum on the final bill, so you better buy fast and avoid the discounts if you want to fight for the highscore!
At the end of the game, each player is rewarded with a happiness-inducing dopamine-high, caused by a perfectly simulated shopping-spree and a printed receipt proves the player’s hard earned score in Euros and Cents.
It had to be fixed everyday with hot glue and tape
How it works
The hardware of the game consists of a checkout-desk that we have built out of a few old palettes. The rough construction is covered by cardboard onto which we glued silver checker plate decoration foil. Enclosed by the cardboard is an old convertible laptop, running Linux, and a cheap handheld barcode scanner, which is connected to the computer via USB. The scanner presents itself to the computer as a keyboard and the laptop receives scanned barcodes in the same way as it would read regular keystrokes. The barcodes for the products were created with an online barcode generator website.
To give the installation an inviting look, we used some WS2812B programmable LED strips for light effects. An Arduino Nano controls the LED’s which we put below the scanning surface and around the transparent “Caisse 1”-sign. When the barcode scanner detects a barcode, its internal LED blinks twice. This blinking light is detected by a photoresistor which is connected to the Arduino and a much brighter flashing of the LED strip in the scanning area is triggered. The green flashing clearly indicates to the players that a barcode was detected successfully and makes the whole scanning area look quite legitimate.
With another Arduino Leonardo, we read the state of the start button. The Leonardo also presents itself to the computer as a USB keyboard. Whenever the start button is pushed, the microcontroller sends the string “StartGame” as simulated keystrokes to the laptop and a new round of highspeed shopping begins!
When fellow ENIAROFer Guillaume Stagnaro saw our project, he donated a secondhand thermal receipt printer module which was previously used in an ATM. The small unit is also connected via USB and is recognized by the computer’s operating system as a normal printer. The paper receipts round up the simulated shopping experience quite nicely. Merci Guillaume for this little treasure!
Last but not least we wanted to have a good sound. So we also added a bluetooth speaker to the setup. Basically, the whole electronics is simply just an old computer with a few things attached to it via a USB-hub. No big deal. Now let’s have a look at the software:
The program for Bonprix was written in Javascript and we ran it in Firefox. We chose Javascript, because it is cross-platform and it can handle the display of text and photos easily. Furthermore, it is simple to read keystrokes and to play sound samples and I actually like to code in JS.
Printing the receipt via Javascript works simply by calling the “window.print()” method. With the CSS “@media” rule, we designed two different documents - the game screen, which is shown on the laptop monitor and a completely different one which is printed as a receipt. Usually, there’s a dialog box opened when the browser wants to print something, but of course we wanted the printer to spit out receipts without user confirmation. Thankfully, this dialog can be suppressed in Firefox by first entering “about:config” in the URL bar and then setting the boolean “print.always_print_silent” to “true”. VoilĂ .
You can find the source codes for the game further down below, at “additional resources”.
ENIAROF & Les 8 Pillards
Bonprix was part of ENIAROF #32, an international DIY fun fair, founded by Antonin Fourneau. During one week in late April 2022, about 60 people prepared all kinds of games and attractions around the theme “Laborious Games”. We opened the doors to the public on the weekend after, which included also 1st of May, the international workers day.
Our DIY fun fair took place at “Les 8 Pillards”, a former factory for industrial burners, which has now turned into a huge art space.
Thanks
Big thanks to Antonin and Thomas for organising this event, to all Eniarofers for their exciting contributions and to everyone at Les 8 Pillards for being so warm and welcoming! Special thanks go out to Guillaume for the neat little printer! We had a great time in Marseille and hopefully, we are going to do another ENIAROF together in the future at Les 8 Pillards!
Additional resources
- Bonprix photos all hires and CC-BY Niklas Roy & Kati Hyypä
- Bonprix sourcecode (.zip)
- Video in high quality on archive.org
- ENIAROF Website / Facebook / Instagram
- Les 8 Pillards Instagram / Facebook