Bunker Blast 3000

Bunker Blast 3000 at Urban Putt in San Fransisco.

Overview

Bunker Blast 3000 is a mini-golf installation in the form of a retro arcade game. The conceit is that golf balls seem to move back and forth between the physical world and a scene from a lo-fi 80s video game; as the player putts a ball into the base of the game cabinet, it disappears and is replaced by its crude in-game analogue, seamlessly transitioning between the physical and virtual worlds. As the virtual ball disappears, the physical ball reappears from the bottom of the cabinet.

The goal is to shoot the virtual ball into a hole inside the spaceship, causing the ship’s destruction. A carefully aimed putt—its trajectory transferred to the virtual ball—can avoid in-game obstacles to get to the target. Players can even make trick shots, banking on the walls of the spaceship, trying for a hole in one.

Visual Design

The project uses a 80’s vector game aesthetic to make the visual transformation, from real to virtual world, absurd and hopefully funny. Inspired by vector classics like Tempest and Star Wars, the game takes place inside a spaceship, rendered as a 3D wireframe, in primary colors.

The enclosure is modeled after arcade cabinets of that era, adapted to the physical requirements of the installation. The art on the outside of the cabinet is inspired by the the lush, pulp sci-fi decoration of 80s cabinets, which, while overselling their primitive on-screen graphics, still served to seduce players into the game’s world.

Implementation

The major components needed to realize our vision are as follows:

  • Game code, written in C#, and built on the Unity game engine

  • A custom, high-speed ball tracker

  • Ball capture and return mechanisms

  • A game cabinet, designed to support and enclose all of the mechanical and electronic systems

simplified system architecture

simplified system architecture

Ball Tracker

The game needs a shot tracking system that can accurately measure the trajectories (speed, direction, and position) of the physical balls in order to create matching virtual representations. One of the challenges here is that the sensor can never miss a shot, no matter how hard it is hit, and we’ve learned that folks can be surprisingly intense when playing mini golf (especially after a few drinks).

One obvious option is to use a conventional computer vision system. However, due to requirement that we track high-speed shots, such a system would need frames to be captured and processed at around 500 Hz, which would necessitate an expensive camera, and would likely exceed available bus bandwidth and compute power.

Instead we built a system using low-cost analog line scan cameras, which are perfectly suited to an application like this (they’re also used for racing photo finishes). A microcontroller reads out the camera’s CCD, performs some simple compression, and sends the data over USB 2.0 500 times per second, with a total latency of only a few milliseconds. The total cost of this solution is about $200, and requires less than 1% of the power of a modern CPU.

Ball Handling

In addition to tracking the ball accurately, the installation needs to capture a shot, hold it in the cabinet, and finally return the ball to the player. Our system needs to perform these functions for balls hit at a wide range of speeds, and with virtually perfect reliability—no stuck balls, and the like. The system also needs to reliably handle the relatively common case where additional balls are shot before the initial one is returned. Finally, because we try to create the illusion that the physical ball becomes virtual, it’s important that the ball makes as little sound as possible once it enters the cabinet.

The solution here involves two main parts, a passive “feeder” for capturing and guiding the ball, and an active ball return mechanism. The feeder also needs to supply balls to the return mechanism, one at a time, while avoiding blockages when multiple balls are shot.

The return mechanism is built around a solenoid that shoots a captured ball along a ramped pathway and out of the cabinet. The solenoid is driven by a custom driver board, connected to the PC via a USB microcontroller.

Credits

Concept — Dan Rosenfeld

Game Programming and Design — Jon Miller, Dan Rosenfeld

Mechanics, Electronics, and Firmware — Dan Rosenfeld

Visual Design — Dan Rosenfeld, Martin Sprouse

Sound Effects — Andrew Roth

Cabinet Graphics — Steve Thomas