Bringing Seven Kingdoms Into the Modern Age with a Tabletop Arcade Game
See how Clem Mayer built the cult-classic real-time strategy game Seven Kingdoms into a dedicated tabletop arcade machine.
The premise
Over 25 years ago in the late '90s, Clem Mayer from the YouTube channel element14 Presents was busy enjoying a fun, albeit less popular real-time strategy (RTS) game compared to Age of Empires, called Seven Kingdoms. In it, the player must work to defeat their opponent through espionage, diplomacy, and/or warfare. More recently, the game has been released as an open source project, allowing anyone with the know-how to compile and run the game for themselves. Beyond doing just this, Mayer wanted to take it a step further by letting users play it on a custom arcade cabinet, just like how retro games were enjoyed back in the day.
Designing an arcade cabinet
Mayer's first task was to create an arcade cabinet for his tabletop game idea, and that meant spending many hours in FreeCAD trying to tweak the design and get it ready to laser cut. Except, he was able to avoid all of this tedious labor by taking advantage of the boxes.py tool from Florian Festi which let him simply input the size of the screen and what material was being used before dynamically generating an SVG for download. Additional decorations were added, including "Seven Kingdoms" in giant letters across the top and cutouts for the controls.
Getting the game to run
The plan was to make the game run on the least performant hardware possible, such as a Raspberry Pi 2 B+ or a BeagleBone. Although the C code compiled fine, the Arm architecture of the chosen single-board computers proved to be an insurmountable obstacle due most likely to a memory error when run for more than a few minutes. Realizing this approach would not work, Mayer instead opted for an older LattePanda which contains an x86-based Intel CPU running Windows 10.
Lighting effects
Because no epic arcade cabinet would be complete without cool lighting effects, Mayer decided to add a strip of WS2812B NeoPixel LEDs around the speaker holes at the top and below the letter cutouts. But due to the fact that the LEDs require precise timings, an application running on top of Windows would not be able to guarantee when it could output those pulses. Luckily, the LattePanda has a built-in ATmega32U4 microcontroller (the same one as the Arduino Leonardo) that communicates directly with the CPU, allowing for programs and data to be sent with ease. The program May created gently fades the LEDs in before setting them all to black and starting the cycle over again.
The control scheme and outputs
Five cutouts were made on the front panel for a series of buttons and a large trackball. The arcade buttons are mirrored to allow for right and left-handed players to play the game with both the left and right mouse buttons being triggered. Scrolling around the map is done via the trackball that outputs a PS2 signal before being converted to USB for the LattePanda. The display is simply an old computer monitor connected over HDMI, and household AC power is delivered through a connector on the side.
What's possible?
The end result is a wonderfully styled arcade cabinet running a classic computer game, complete with the retro trackball and buttons for an authentic feel. Beyond this game, however, is the possibility to adapt this cabinet for even more titles running on a variety of hardware. For more information about Mayer's project, you can watch his video here on YouTube or view more detailed product specifications here on the element14 website.