Tamagrow
A pet that grows from your Valorant and League matches. The hard part was making sure it only reacts to things that actually happened.
- Client
- Consumer app, Overwolf store
- Year
- 2025
- Duration
- 5 months to public release
- Team
- 1 designer, 2 engineers
- Role
- Design & engineering
- Type
- Interactive
- Approach
- Overwolf · TypeScript · Game Events Provider · Companion state machine

Companion window, development build.
The idea
Most Overwolf apps for Riot games are stat trackers. Tamagrow is a pet instead: it reacts during a session, levels up over weeks, and players feed it, dress it up and build a party. One account covers both games, so a pet raised in League comes along to Valorant. The two games report events through Overwolf very differently, which is where most of the engineering went.
Game event data
Overwolf's event feed duplicates kills, sometimes never sends a match-end event, and can rename fields after a game patch. Each game gets its own adapter that maps its events into one schema, and a normalizer turns the stream into a single record per finished match. Live events only drive the pet's mood between rounds. Growth and rewards read the finished match record and nothing else, so a glitch in the live feed can't level anything up.

Inventory and party screen.
Rewards
A match pays out once, keyed by its match ID, so restarting the client can't award the same game twice. If a Valorant match never sends its end event, it closes after 90 seconds of silence and earns nothing for the unfinished part. Currency from matches goes into the market and a gacha system for cosmetics, backgrounds and items, all shared across both games. Friends and a weekly leaderboard came in a later update, once the core loop was stable.
Staying out of the way
If an overlay causes stutter, players blame it and uninstall. We kept idle CPU under 1% on a mid-range test PC (Ryzen 5 3600, GTX 1660). The pet reacts between rounds, not during fights, and the window hides on a hotkey.
Patch days
Riot and Overwolf updates can break the event feed overnight. We keep about 30 recorded matches from both games and replay them through the normalizer after every update. If the output doesn't match the expected match records, the release waits. Supporting a new game means writing one more adapter. Nothing downstream changes.

Event pipeline, from game events to the companion, rewards and patch-day replay.
Scope
- Overwolf app for Valorant and League of Legends
- Per-game event adapters and match normalizer
- Companion state machine: mood, growth and care
- Accounts, inventory, market and gacha
- Friends and weekly leaderboard
- Recorded-match replay harness for patch days