We will be undergoing planned maintenance on Oct 7th 6:00AM UTC / Oct 7th 2:00AM ET

Inspiration

Idle and incremental games are one of the most popular genres on mobile, and I play a lot of them. When I looked for one about American football, every "idle football" game I found in the stores was about soccer.

That surprised me, because American football fits the genre better than almost any sport:

A drive is a production line: the ball is snapped, carried, scored and sent back, over and over. Yards, downs and scores are numbers that go up.

So I built the game I wanted to play.

What it does

Gridiron Idle is a mobile game where you grow a football program from a backyard to the top of the sport.

  • 🏈 The loop. A center snaps a ball from the pile, a running back carries it to the end zone, the touchdown pays cash, and the ball has to get back to the pile before it can be used again. You spend cash on more players and more footballs, which earns more cash.
  • 🔗 The twist. The offense is a chain, so the wrong purchase does nothing. If every ball is lying in the end zone, a tenth running back just stands at the line. Hire a ball boy and the whole field wakes up. Each shop card shows what that hire would add right now, so reading the field is the game.
  • 📈 Depth. Quarterbacks and wide receivers open a passing game from level 3. A Playbook of 26 upgrades changes how plays run. There are ten levels, each with a longer field and new team colors.
  • 🎟️ Monetization. Three optional rewarded ads and nothing else: no banners, no interstitials, no in-app purchases.

How we built it

  • Stack. Expo SDK and React Native, TypeScript throughout.
  • Rendering. Every player, field, ball and celebration is drawn in code each frame, then hand-tuned.
  • Ads and rewards. AdMob serves the rewarded ads through react-native-google-mobile-ads. RevenueCat tracks every ad event, and AdMob's server-side verification callback goes to RevenueCat, which verifies the watch and records the reward as a virtual currency ticket.

The reward flow: player taps an offer → AdMob serves the ad → server callback to RevenueCat → RevenueCat verifies the watch → reward recorded, game continues.

Challenges we ran into

  • Making a bottleneck visible. An idle game about throughput only works if the player can see what is stuck. I went through several designs, including a capacity chart, before landing on the simplest one: the field itself shows it (idle players, balls piling up) and each shop card says what it would add right now.
  • Balancing a chain. Every stage limits the others, so one number change ripples through the whole economy. I ended up writing a headless harness that plays full careers with different buying strategies and reports where progress stalls.
  • Performance with a crowded field. Late in the game there are 80+ animated players on screen. Drawing everything procedurally into a single Skia picture per frame, with no image assets, keeps it light.

Accomplishments that we're proud of

  • A sport that had no idle game now has one, and the core idea (find the weak link) is football-shaped rather than a reskin.
  • A complete art style with zero sprites: ten levels, team colors, touchdown celebrations, all in code.
  • Monetization with no forced ads at all, verified through RevenueCat.
  • A deterministic simulation with hundreds of tests, which let one person change the balance with confidence.

What we learned

  1. In an idle game the most valuable UI is the one that answers "what should I buy next?" without a tutorial.
  2. Rewarded ads work best when the reward is a moment inside the fiction. A "two-minute drill" is something a football fan already understands.
  3. A simulation you can run headless pays for itself many times over.

What's next for Gridiron Idle

  • More Playbook branches
  • Seasonal events
  • Using RevenueCat's data on which rewarded placement players choose most, to tune the offers

Built With

Share this project:

Updates

Submission history