Ron Bronson

Play To Clinch

Earth’s first-ever team tennis computer game — junior circuit, college, and a co-ed pro league, on one continuous engine.

Designer & sole engineer · 2026 · pctennis.xyz ↗
Screenshot of pctennis.xyz

The only tennis games that exist are individual ones — which makes sense, because tennis is an individual sport. But for those in the know, it’s also a team sport. For decades, high-school and college players in the US have competed in a team format where a combination of matches each count for a point, and the team that wins the most wins the tie. We crown national champions this way, the same way March Madness does for basketball.

And yet there’s never been a way to play it at the team level. I wanted to build a team tennis simulation for years — back when I was a high-school coach, if nothing else, just for fun. None of the existing tennis games had anything like it. Recent sims on Steam added junior tennis that came close, but the nearest you got was developing players in a junior academy.

After building oregontennis.org and its suite of rankings, tools, and analysis, I had a thought: maybe now was the time. I even had an old repo where I’d tried before. Why did it take so long? Nobody wants this but me — but it felt too worth trying not to. And I’d just built a baseball sim, so I could port a lot of that engine work into tennis. (Credit, too, to everyone who’s built simple open-source tennis simulations over the years; they made it plausible to attempt this myself.)

Under the hood it’s just a Python engine. The UI reveals a vast world.

College team tennis

The core is college-format dual matches. Two teams. Three doubles matches that combine into a single team point, six singles matches worth a point each — first team to four points wins. Lineups are seeded by player strength, doubles pairings are formed intelligently, and the engine simulates point by point, so you see every serve, every rally, every error. Box scores and play-by-play transcripts show exactly what happened.

You build a program across four years: recruit players, watch your roster age and develop, and run a full college season across D1, D2, or D3, men’s or women’s. Track conference standings, send your best eight to a national bracket, and crown a champion. A single rating spans juniors through college through the pros — a D3 women’s player and a D1 men’s player sit on the same scale, and that scale is your recruiting yardstick.

Junior rankings and recruiting

Before college, recruits compete on a junior circuit. Results matter; badges accumulate; rankings shift. You can read a recruit’s résumé — tournament history, match record, year-by-year ranking progression. The recruiting board shows the top prospects with their current rating and two independent scouting projections of where they could land. The ceiling stays hidden until you offer a spot and they commit: some players have hidden upside, some are overrated hype, some outperform expectations.

GTT: the professional circuit

Once players graduate, they turn pro. GTT is a global team tennis league where franchises draft college graduates each off-season and compete across a season. It’s co-ed — three men’s singles, three women’s singles, three mixed doubles, first franchise to five points wins the match. Spin up a league of 8 to 16 franchises and run it week by week, watching players age and eventually retire; the top performers are drafted into the Hall of Fame, and a player’s college and pro careers live on one continuous profile.

Simulate a full GTT season or step through it match by match. Every result updates the standings, the playoffs are single-elimination, and a champion is crowned each year.

How it works

Every match is deterministic: same seed, same result. You can reproduce a specific match, share scenarios with others, and test recruiting strategies without randomness getting in the way. The engine simulates at different levels of detail depending on the task — point by point for college and showcase matches, and a faster model for bulk junior tournaments that still lands realistic results. Both stay deterministic.

The architecture

The core is Python, with no dependencies outside the standard library; a Flask web app sits on top, and everything runs on SQLite. It’s fast enough to simulate full seasons in seconds. The choices are deliberate — Python because it’s clear and deterministic, SQLite because it’s portable and needs no separate database, no frontend framework, no cloud lock-in. The whole thing runs offline. The web UI is just a window into an engine that exists independent of it.

What you can do right now

  • Match Simulator — create two players and simulate a match with configurable rules (college format, pro sets, tiebreak variations, best of 3 or 5).
  • Dual Match Viewer — watch a team match with lineups, real-time scoring, and clinch scenarios.
  • College Seasons — run a full D1, D2, or D3 season and watch a bracket tournament.
  • Junior Circuit — generate a recruiting class, run the junior tournaments, and see how players rank and develop.
  • Recruiting Board — browse the top prospects and see their scouting reports and ceiling projections.
  • GTT League — create a professional franchise league, run seasons year by year, and build a Hall of Fame.
  • Hall of Fame — career records and accomplishments across college and pro.
  • Player Pages — read a player’s career from college through retirement.
  • Methodology — how the rating system works and why matches are decided the way they are.

Play it at pctennis.xyz ↗