A dark, minimalist push-your-luck browser game built with React and pure SVG — no image assets, no backend, no external services.
Ringfall is an infinite, procedurally-generated risk/reward path game. You start at the center of a radial board and pick your way outward, ring by ring. Each node you can reach is either safe or hiding a trap — you never know which until you commit. Push further out for a bigger multiplier, or bank your score and walk away with what you've earned.
- Endless, procedurally-generated rings — no two runs follow the same path
- Seeded fairness algorithm — every ring guarantees at least one safe way forward, so the game is hard but never unwinnable
- Compounding score multiplier that scales with how deep you go
- Scan ability — spend a limited resource to reveal a node's true status before committing
- Bank-anytime mechanic — classic push-your-luck tension between greed and safety
- Best-run tracking via localStorage, always visible against your current attempt
- Fully generative visuals — dark theme, glowing cyan accents, SVG rings and nodes, no image assets anywhere
- React + Vite, functional components and hooks only
- Game logic (ring/node generation, fairness algorithm, scoring, difficulty scaling) lives entirely in plain utility files under
src/game/, decoupled from React - State orchestration via a single custom hook,
useRingfallGame - Styling via CSS variables and SVG filters — no UI framework, no external assets
- Persistence via
localStorageonly, no backend
src/
game/ pure logic: ring model, fairness algorithm, difficulty scaling, scoring
hooks/ useRingfallGame — game state orchestration
components/ RingBoard, CollapseOverlay, RunSummary, Hud
App.jsx top-level composition
index.css theme variables and base styles
npm install
npm run devThis project was an exploration into push-your-luck mechanics rendered entirely in generative SVG. Development has moved on to a new game concept in a separate repository, so Ringfall is preserved here as-is rather than actively maintained.
MIT