Inspiration

Growing up, "Kancha" or "Goti" (Marbles) was a staple street game in India—simple, tactile, and incredibly competitive. We wanted to capture that nostalgic feeling of kneeling in the dirt, lining up a shot, and the satisfying "clack" of glass hitting glass. For the Reddit Daily Games Hackathon, we saw the perfect opportunity to digitize this classic, turning a physical skill into a daily digital puzzle circuit.

What it does

Goti: Daily Circuit is a web-based physics arcade game. Players control a "Striker" marble using a drag-to-shoot slingshot mechanic. The goal is simple but challenging: clear the ring of target marbles.

  • 5 Unique Stages: Players progress through 5 levels of increasing difficulty, culminating in "The Chaos Grid"—a dense field of bumper obstacles.
  • Daily Challenge: The game is designed to be a quick, daily loop to test your precision and strategy.
  • Physics Simulation: It models ground friction (mud/dirt feel), marble weight, and elastic collisions.

How we built it

We built the game using React and TypeScript with Vite for the build toolchain.

  • Custom Physics Engine: Instead of using a heavy library, we wrote a lightweight custom physics engine in TypeScript to handle vector math, circle-to-circle collisions, and wall bounces.
  • SVG Rendering: The game board and marbles are rendered using SVGs, allowing for crisp visuals and smooth performance on any device.
  • CSS Art: The marbles aren't images—they are CSS gradients designed to look like real glass spheres with specular highlights and shadows.

Challenges we ran into

  • The "Feel": Getting the physics right was the hardest part. Real marbles on dirt don't slide forever; they drag and stop abruptly. We spent hours tweaking friction coefficients and restitution values to make the marbles feel "heavy" yet satisfying to shoot.
  • Collision Tunneling: At high speeds, marbles would sometimes pass through each other or walls. We had to implement sub-stepping and precise collision resolution to ensure solid boundaries, specially for the Stage 5 bumper grid.
  • Feature Creep: We initially tried to build a complex "movable striker" system for Stage 4. After testing, we realized it lowered the difficulty too much and broke the game's flow. We made the hard call to scrap it and focus on better level design instead.

Accomplishments that we're proud of

  • The "Chaos Grid": Designing Stage 5 with internal bumpers created a genuinely fun, defensive puzzle that requires bank shots to solve.
  • Zero Dependencies: The core game logic relies on zero external game libraries—just pure math and React state.
  • Visual Polish: We're really happy with how the hand animation and marble visuals came together to create a polished, cohesive aesthetic.

What we learned

We learned a lot about vector mathematics and game loop optimization within a React environment. Managing state updates for 30+ moving objects at 60fps taught us valuable lessons about rendering performance and memoization. We also learned that sometimes, simpler controls (just aiming and power) lead to deeper gameplay than complex mechanics.

What's next for Goti: The Marble Game

  • Multiplayer: Adding a turn-based vs. mode to truly emulate the street game experience.
  • Marble Skins: collectible designs and rare glass types.
  • Level Editor: Allowing the community to build their own "Chaos Grids."

Built With

Share this project:

Updates