What's next for FoldRush
Inspiration
What if a folding phone could be the controller—not just the screen?
We wanted to explore an interaction that feels specific to iPhone Duo. A small bend becomes a jump, a tilt becomes steering, and a familiar runner turns into a physical experience. That idea became FoldRush: a tiny robot crossing a huge canyon, controlled by how you hold the phone.
What it does
FoldRush is a native 3D runner with a floating canyon course. The robot runs forward automatically. Bend the hinge about 2° from your calibrated resting position to jump, tilt left or right to steer, and reopen your grip to prepare the next jump.
The course takes approximately 50 seconds and includes full-width gaps, partial-width holes, and a glowing finish gate. Players can fall, retry, recalibrate, pause, and complete the level. No screen touches are required during active play when hinge and motion inputs are available.
Before starting, players calibrate their grip and test a practice bend. During the run, “BEND NOW” cues help with timing, and “JUMP!” feedback makes successful inputs visible. When partly folded, the game frames the robot and HUD on the right side to keep the action readable in our demo setup.
How we built it
We built FoldRush in Bitrig using Swift, SwiftUI, SceneKit, Core Motion, and the iOS 27.1 SDK.
SwiftUI’s onHingeChange delivers the hinge angle. Our gesture detector measures movement relative to the player’s calibrated grip, checks that tiny bends are deliberate, and requires a return toward neutral before another jump. Core Motion provides calibrated steering input.
SceneKit renders the robot, platforms, canyon, and finish gate entirely from native 3D primitives. A fixed-step movement system handles gravity, landing, collisions, and short timing allowances around platform edges. The rendered platforms and collision checks share the same level definition.
Duo’s reserved-region APIs guide the interface around the fold. Separate, explicitly labeled simulated inputs let us test hinge and steering behavior when a sensor is unavailable.
Challenges we ran into
The hardest part was making a physical gesture feel predictable. Larger bends were uncomfortable, but very small bends needed protection against sensor fluctuations and accidental repeated jumps. We refined the threshold, added a brief confirmation check, and separated jumping from rearming.
Folding also affected readability. We removed app-level blur and moved the gameplay focus to the right side after observing blur on the left during folding in our demo setup.
Simulator input availability introduced another challenge: hinge input and motion input could not always be treated as a single pair. We made their sources independent and clearly labeled. Simulator inspection was also unreliable, so we supplemented build checks with deterministic gesture and gameplay tests.
Accomplishments that we're proud of
We turned a new hardware capability into the central game mechanic and built a complete playable loop around it: calibration, countdown, running, falling, retry, and victory.
We’re proud of the small, comfortable jump gesture, the entirely procedural 3D world, and a course validated from start to finish using the same gesture detector as gameplay. Our checks cover noisy input, held bends, rearming, jump reach, landing, and falling off edges.
What we learned
Physical controls need careful feedback and forgiveness. A technically detected gesture is only useful if players understand when it registered and how to prepare the next one.
We also learned that foldable design involves both interaction and visibility. The hinge can be an input, while the layout must independently keep the game readable as the device changes shape.
What's next for FoldRush
Next, we want to test comfort and steering on physical iPhone Duo hardware, improve calibration for different grips, and add more courses with distinct environments and obstacle patterns.
We’d also like to explore personal bests, accessibility options, and additional fold-driven mechanics while keeping the core experience simple: bend, jump, and keep running.
Built With
- 27.1
- bitrig**-using-**swift
- core-motion
- ios
- scenekit
- swiftui
Log in or sign up for Devpost to join the conversation.