Robot Gridiron

Devlog · July 11, 2026

Multi-Player

Did I really think this through?

Update

I was playing through a season the other day, feeling pretty good about how things were coming together, and it hit me: how the heck does any of this work in multi-player?

Multi-player has always been a key facet of what this game is supposed to be. You against other owners, an actual league, real people making real bad decisions on their rosters. That’s always been the point. And yet somehow every mechanic I’ve built to this point — game configs, team configs, league settings, robot stats, all of it — has been pulled locally and played through locally. Just me and a client. No server holding the truth.

Sat with that for a minute and it hit me: if there’s no multi-player, this doesn’t work at all. If two humans in the same league queue up their weekly play, someone has to actually resolve who wins the coin flip and who takes the sack. That someone has to be a server, not each player’s local client running its own copy of the same game and hoping the RNG lines up. It just doesn’t.

COMPLETE REARCHITECTURE.

So now I’m rearchitecting the whole thing to be client-server, with constant updates back to the cloud. Every game config, every team config, every roster snapshot lives on the server. The client’s only job is to pick a play and render what comes back.

Basically — each player selects their play for the week, the server sims it, then the results get sent back to each player’s sim to render out. Nobody’s local machine is authoritative anymore. The server is.

I have no clue how real game designers do this stuff. I’m figuring it out as I go — pulling apart what I’d built, working out what has to live where, rewiring flows one piece at a time. Slow and ugly, but I’m making real progress.

Current Dev

Right now I’m moving the play resolver from local-only to server-side and figuring out how the client asks for updates and renders results as they come in. The good news is the resolver was already deterministic — same inputs give same outputs — so once the server drives it, everything downstream (replays, reviews, box scores) just works.

The harder part is everything AROUND the resolver: rosters, damage carry-over, upgrade purchases, mid-week trades. All of that has to be authoritative on the server too, and I have to sort out when the client pulls it, when it’s pushed, and how conflicts get resolved. Lots of “wait, that lives where now?” moments this week.

More next time.