Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/mbeckham4-hub/Rudi-Foodi/llms.txt

Use this file to discover all available pages before exploring further.

Rudi Foodi runs entirely in the browser and supports two control schemes out of the box. On desktop you use the keyboard to move Rudi and drag the mouse anywhere on screen to orbit the camera. On mobile (and any touch screen) a virtual joystick in the bottom-left corner handles movement, while swiping anywhere else rotates the camera. A large circular ZOOMIES button in the bottom-right corner is reachable on both platforms and unlocks Rudi’s boost mode. Both input methods are active simultaneously, so you can plug in a keyboard while on a touchscreen device and both will work at once.

Keyboard Movement

Rudi moves relative to the current camera direction — pressing W always moves Rudi forward from the camera’s perspective, not toward the world’s north.
Key(s)Action
W or Move forward
S or Move backward
A or Strafe left
D or Strafe right
Diagonal combos (W+D)Move diagonally (full speed)

Mouse Camera

Click and drag anywhere on the game canvas to orbit the camera around Rudi. The drag is handled by the full-screen #cameraZone overlay which captures pointer events across the entire viewport.
ActionEffect
Drag left / rightRotate camera horizontally (cameraYaw)
Drag up / downTilt camera vertically (cameraPitch)
Horizontal drag applies a sensitivity of 0.008 radians per pixel and vertical drag applies 0.006 radians per pixel. cameraPitch is clamped to the range −1.2 → 1.05 radians so the camera can never flip upside-down.

ZOOMIES Button

The ZOOMIES button (#zoomButton) is fully clickable on desktop. A single click toggles boost mode on; clicking again turns it off. While boost is active, the button turns yellow and scales up slightly (scale(1.12)) as a visual confirmation. Boost drains at 22% per second and recharges at 18% per second — the current percentage is shown in the HUD’s Zoomies field.

Camera Details

The game camera is a THREE.PerspectiveCamera(60, ...) — a 60° vertical field of view — that orbits around Rudi at a fixed distance of 20 units. Its position is recalculated every frame from cameraYaw and cameraPitch:
horizontalDistance = cos(cameraPitch) × 20
verticalOffset     = sin(cameraPitch) × 20 + 10
camX = rudiPos.x − sin(cameraYaw) × horizontalDistance
camZ = rudiPos.z − cos(cameraYaw) × horizontalDistance
camY = max(2.5, verticalOffset)
The camera lerps toward its computed target position at a rate of 0.11 per frame so it feels smooth rather than snapping. It always looks at the point (rudiPos.x, 1.6, rudiPos.z) — slightly above Rudi’s feet — to keep him well-framed.

HUD Buttons

Two interactive buttons live inside the top-left HUD (#hud). Both are pointer-events: auto so they work even though the HUD itself is non-interactive.
ButtonIDFirst TapSecond Tap
Zoom stacks: N#zoomStacksButtonHighlights red — arms a reset confirmationResets speedStacks and speedMultiplier to 1
Clones: N#cloneCountButtonHighlights red — arms a clone-clear confirmationRemoves all clones from the scene
Both buttons require two taps to take effect. The first tap turns the button red and shows a confirmation hint at the bottom of the screen; the second tap executes the action. This prevents accidental resets mid-run.

Build docs developers (and LLMs) love