Caterpillar Quest
Team: Jack Drabenstadt, Matthew Kindja
Role: Game Designer, Hardware Engineer
Caterpillar Quest is a casual exploration game inspired by The Very Hungry Caterpillar. Players control a caterpillar that eats its way through a colorful world, grows through stages of life, and eventually transforms into a butterfly. The game combines exploration, light puzzles, and a visible progression system where size directly reflects player growth. We developed a minimum viable product over two months, then built a custom Arduino glove controller to pair with it.
Game Design
The player moves the caterpillar toward the cursor with left click and jumps with right click. Eating food increases the caterpillar's size, unlocking access to larger foods and new areas. As the caterpillar grows, so does its obstacles. Three levels progress from morning to evening to night, each with unique lighting and environmental challenges.
NPC interactions with a slug (early game) and a cat (late game) provide optional dialogue and perspective on the caterpillar's metamorphosis. Food choices offer strategic tradeoffs: blueberries grant a single jump, strawberries provide a speed boost — each opens new areas. Growing too large, however, can lock you out of smaller spaces you previously explored.
Custom Hardware Controller
I built a custom Arduino controller to pair with the game. An MPU6050 accelerometer tracks hand tilt, mapping directly to cursor position — level hand centers the cursor, tilting moves it proportionally. Penny buttons sewn into the glove fingers complete circuits when touched to a thumb ground, emulating left and right mouse clicks.
The initial approach was velocity-based: the Arduino calculated movement vectors and PyAutoGUI moved the mouse relative to its current position. This produced choppy, drifting movement and never felt intuitive. Switching the Python library to pynput fixed the choppiness but not the underlying problem — accelerometers measure force, not position, so velocity control was fundamentally mismatched.
We pivoted to joystick-style absolute positioning. The cursor position is now mapped directly to the sensor's tilt angle relative to a calibrated neutral position. Hold level, cursor stays centered. Tilt left, cursor moves left. This was immediately more intuitive and paired naturally with the game. The Python pipeline handles auto-detection, calibration, deadzone filtering, scaling, and cursor control via pynput.
The hardware evolved alongside the software. We originally intended 3D-printed finger buttons with tactile switches, but impatient supergluing rendered both prototypes non-functional. We pivoted to pennies: drilled, soldered, and sewn directly into the glove fingers. Touching a finger penny to the thumb penny completes the circuit. It's not elegant, but it worked reliably for the entire playtest session.
Playtesting & Iteration
A blind playtest with five users revealed key issues: food was difficult to spot against the environment, dialogue boxes obstructed the view, and players wanted camera zoom controls. We responded by increasing food contrast, adding a progress bar, implementing scroll-wheel zoom, and locking player movement during dialogue. Players consistently cited movement and jumping as the most enjoyable elements.
Technologies
- Unity / C#
- Arduino
- Python
- Blender
- Adobe Substance Painter