WORK TYPE
Individual work
Designing @UC Berkeley
TIME
Jan 2024 - Feb 2024
1 month
SKILLS
Physical Computing
Circuit Prototyping
3D Modeling
3D Printing
TOOLS
Arduino
Rhino 7
Flashy Bird! is a product hacking project, introducing a unique and immersive gaming experience by integrating a squishy flashlight's dynamic squeeze as the primary interaction mechanism.
The energy from the flashlight directly influences the bird's flight in the Flappy Bird arcade game, fostering a tangible connection between physical actions and on-screen adventure.
As the flashlight's energy dissolves in seconds, users can play with the art of timing and control to navigate through randomly generated barriers. Every squeeze becomes a thrilling and responsive gaming experience, bridging the gap between physical touch and digital play.
This venture is inspired by the nostalgic and gratifying tactile feedback of squeezing a self-powered flashlight, a sensation ingrained in my memory since childhood. The joy of continually squeezing the handle, keeping the light alive, sparked the idea.
This interaction resonated with the simplicity of another popular game - Flappy Bird, sharing the mutual attribute of requiring continuous pressing to continue.
The self-powered mechanism behind a squishy flashlight is a Dyno Torque, which uses the a gear chain inside to spin the the magnet. Then the copper wires below will generate current through the wire to power up its original LED. Applying the rule that the resistance value will change according to the voltage of current, I hacked into the flashlight, removed its original LED light and connected to a potentiometer for transmitted data back to an Arduino board.
As for the digital display, the WS2812B LED matrix and the conversion algorithm was adopted. Since the matrix is basically an LED string placed in a snake pattern, it might have some difficulties when performing display moving across columns (e.g. the moving wall), I remapped the digit of the LED string into two arrays: the bird array and the wall array.
The bird, depicted by a dot, descends by one digit during each display refresh time unit. Upon detecting a pressing input, characterized by an instantaneous change in the resistance value, the dot elevates, ascending by two digits.
To represent the bird, I utilized an array, and similarly, employed an array for the wall. Initiating the "gap" with a random function determined the starting index, and the wall's movement was then dynamically calculated, aligning with the snake pattern of the entire LED matrix.
Players must avoid collisions, either by falling to the ground or hitting a wall, resulting in a Game Over with a :( face on the screen. Afterward, the arcade returns to an idle state, ready for the next game.
Recognizing that the game currently only displays failures, feedback from users revealed a sense of frustration, especially among those unfamiliar with the game controls. To address this, implementing an awarding or passing system can serve as a motivational element, encouraging novice users to persist the challenge.
The flashlight's satisfying tactile feedback is a key feature, but its table-placed interaction can diminish this sensation. Transforming the design into a hand-held product enhances the tactile stimulation, amplifying the arcade experience.