Solo Dev Journey: Making Soccer Fan Actually Feel Good Online

Hey,

I’m the only person working on Soccer Fan. No team, no outsourcing — just me handling everything from gameplay to networking to fixing bugs at 2 AM. A while back, I decided to take the game from single-player to online multiplayer using Photon PUN2. I knew it wouldn’t be easy, but I didn’t fully realize how deep the rabbit hole goes with a football game. It’s not just about syncing positions — everything needs to feel fair. Movement, tackles, ball physics, even offside calls… if any of that feels off, players notice instantly. I ended up spending months reworking pretty much the entire multiplayer side. Not just small fixes — a full rebuild in many areas.

One of the first things I had to get rid of was my earlier “Master Client = Team 1” logic. It worked… until it didn’t. I replaced it with Photon Custom Properties so teams are assigned dynamically. It’s a small change on paper, but it opens the door for things like proper lobbies and ranked matches later.

 

Another headache was player assignment. Sometimes remote players just wouldn’t map correctly depending on timing. Super inconsistent. I fixed that by letting each PlayerController register itself and added a retry system in the MatchManager. Not glamorous, but it made things way more reliable.

Getting Movement to Feel Right

This part took longer than I expected.

At one point, everything technically “worked” — but it felt terrible. Players were jittery, the ball was overshooting, and nothing felt grounded.

I spent hours just tweaking prediction values:

  • Players went from 1.5 → 1.05
  • Ball went from 2.0 → 1.05

 

It doesn’t sound like much, but that tiny adjustment made a huge difference. Movement is now much smoother, even on average connections.

Tackles, Syncing, and All the Pain Around It

Tackles are a big part of the game, so they had to feel right. Before, you’d get situations where one player sees a clean tackle, and the other sees something completely different. Not great. I ended up adding dedicated RPC calls (RPC_Trigger, SendStruggleRPC) to sync animations and outcomes properly — things like who keeps the ball, when a struggle starts, etc. Now both sides see the same thing, which is honestly a big relief.

Fixing Match Flow (Finally)

Goals used to break things more than they should have. Double whistles, celebrations not ending, kickoff bugs… it was messy. I centralized the kickoff logic to the Master Client and forced a proper reset after every goal. It’s one of those fixes players might not notice directly, but they definitely notice when it’s broken.

Starting Matches Without Chaos

Another issue: matches starting when one player wasn’t even fully ready. I added a simple readiness system (ReportReadyToStart) so the game waits until both sides are actually prepared — all players spawned, everything initialized — before kicking things off. It sounds obvious, but it solved a lot of weird edge cases.

Dealing With Duplicate Events

Latency caused some events (like goals or ball out) to trigger twice. Rare, but when it happens, it’s obvious. The fix was pretty straightforward: a short cooldown (about 2 seconds) on those RPC calls so duplicates get ignored safely.

Where Things Stand Now

After all that, the game finally feels… right.

Matches are smoother, tackles make sense, and the overall flow is much more consistent. It’s not perfect yet, but it’s at a point where it’s actually fun to play online — which honestly wasn’t always the case during development.

Working solo on something like this is intense. A lot of testing involved running two Unity instances, switching windows constantly, and trying to figure out why something only breaks on the client and nowhere else.

 

Still, seeing it come together makes it worth it.

What’s Next

Right now, I’m focusing on polishing — cleaning up edge cases, improving match events, and making sure everything feels solid moment-to-moment.

If you’re interested in the project, consider wishlisting Soccer Fan on Steam. It really helps.

https://store.steampowered.com/app/3996790/Soccer_Fan__Online_Multiplayer_Football/

More updates soon.

Leave a Reply

Your email address will not be published. Required fields are marked *