Exploring Rive as a Lightweight Game Engine through Interactive Motion
Overview
This project is a fully playable curling game built entirely inside Rive, using its newly released scripting feature. The goal was to explore how far Rive can be pushed beyond micro-interactions and UI motion, and whether it can support more complex, logic-driven experiences such as a small game.
Timed with the start of the Winter Olympics, and inspired by my guilty pleasure of watching curling, this project became a focused experiment in combining motion design, interaction design, and game logic in a single Rive file.
The final result weighs in at ~2 MB, making it a lot lighter than a comparable build created in a traditional game engine like Unity.
Challenge
Rive is most commonly used for interactive UI elements and animations. With scripting now available, I wanted to see if I could create a full game logic without relying on external code or heavy runtimes
The core challenge was to implement:
Physics-like behavior
Collision detection
Player input affecting motion in real time
A clear scoring system
All while keeping performance high, file size low, and the experience responsive across platforms.
Artboard overview
Solution
The entire game was built 100% inside Rive, with no external logic, frameworks, or game engines.
Key systems implemented:
Stone throwing mechanic
Player input controls the force and direction of the throw.
Sweeping system
Sweeping dynamically alters the stone’s trajectory, mimicking real curling mechanics.
Collision detection
Stones interact with each other and the environment in real time.
Scoring logic
Points are calculated based on stone position at the end of each round.
All logic, animation, and interaction live inside a single Rive file (~2 MB), a fraction of the size you’d typically expect when using engines like Unity, even for simple games.