I’m also devving a FPS game (for mobile VR).
When I walked into Unity land some weeks ago from having used another engine for years I was thinking (ahhh… easy cheap networking here we come, weeee… BUMP!)
Like you I’ve been checking out solutions:
RE BOLT:
Unfortunately Bolt doesn’t have relay fallback yet, so ~30% of users cant connect. Downer!
The perfect solution is going to be P2P like Bolt which falls back to cloud relays distributed around the globe.
Apparently “Thunder” will give P2P with relay fallback out of the box, I think they closed beta access on that now though?
OWN HOSTED SERVER:
having one geographically located relay server is not good for a serious FPS, you need to keep pings <~100ms planet wide really.
RE RELAYS:
With the ~70% P2P connect success you’re never going to be able to get away from having relay/s easily.
But there is a way to reduce relay requirements to almost 0: P2P capable clients (with a UPNP opened port or good punch-through) can act as super-nodes and serve data on behalf of clients that cant open port or punch through. you would still need a central matchmaking server, but no problem if it was just one for the whole planet even slow with pings over 1 sec. But don’t expect to see this implemented commercially, it would be like opening a restaurant to sell plates of food that never deplete, not good for revenue. However having said that I have a hunch that’s how GPGS works under the hood (GooglePlayGameServices realtime), but that’s only for mobile, and good luck devving with it because you cant test it without building and uploading to mobile device.
RE PUN:
the 100ccu plan (5 years for $95) is pretty good value, I’m sure Exit games would run a considerable loss if anyone had 100ccus connected for 5 years, certainly self hosting to reach the same performance would be way more expensive.
Having say 12 rooms of 8 players is a reasonable amount for an indie game and you get guaranteed connect, and as you say, its super easy to implement. Their geographically distributed servers are excellent, the whole globe gets reasonable pings. That’s what I’m going to start with on launch of my game (PUN+), for now I’m on cheapo free plan.
However, any solution that has server costs puts the developer in the position where they are afraid of more players, a bad position to be in. We can design around that a little: give players some good offline content to keep them busy. or…
HYBRID SOLUTION IDEA:
Build a frankenstein… Mix and match techs, show Bolt rooms to any players capable of p2p. Maybe let non p2p capable players know that if they port forward their router or enable UPNP then they will have more rooms available.
HINDSIGHT IS 20/20:
To get 20/20 vision right now: Build an encapsulated networking wrapper for your game, this way you can swap out networking solutions quickly in future without rewiring the whole game and with minimal retesting needed.
Good luck, we’re gonna need it;)