About the Project
Inspiration
The main inspiration behind this project was the beauty of simple objects combining to create incredibly complex solutions. Rube Goldberg machines have always fascinated me because they transform everyday items into elaborate chains of events. What makes them so engaging isn't just reaching the goal—it's how you get there.
I wanted to capture that feeling in a game where there isn't a single correct solution. Instead, players are encouraged to experiment, iterate, and discover creative ways to solve each puzzle. The novelty of each solution adds another layer of depth: you're not just solving the level, you're solving it in a way that is uniquely yours.
How I Built It
The game was built using Phaser 3 with TypeScript, while Enable3D and Ammo.js power the physics simulation. Every interactive object is driven by physics, allowing players to build authentic chain reactions where momentum, collisions, and timing all play an important role.
The goal was to create a sandbox-like puzzle experience where simple mechanics could combine to produce emergent behavior, making every successful contraption feel rewarding.
Challenges We Ran Into
The biggest challenge was managing a large number of interacting physics objects while keeping the simulation stable and predictable. Even small changes in object placement or timing could produce completely different outcomes, making debugging difficult.
Handling user interactions and keeping the game logic organized also became increasingly complex as more mechanics were introduced. Designing puzzles that allow for creativity without making them either trivial or impossible was another significant challenge.
What I Learned
This project taught me a great deal about physics-based game development, structuring large TypeScript projects, and designing systems that encourage player creativity rather than enforcing a single solution.
More importantly, I learned that giving players simple tools can lead to surprisingly complex and satisfying gameplay. Often, the most memorable moments come from unexpected interactions that neither the player nor the developer originally intended.
Built With
- ammo.js
- devvit
- enable3d
- phaser.js
- redis
- three.js
- typescript
- webgl
Log in or sign up for Devpost to join the conversation.