We are making a unity mobile game with multyplayer part. Multyplayer part is a huge world map with some points of interest (for example buildngs, that players could conquer). So, every player on server could send his army to a point on map to attack some building/gather some resources/ hunt an animal etc. There is not a lot of data that need to be send per player, but there are a lot of player that could play on same map simultaniously (up to 1000) What multyplayer solution would fit the best for such a project? thanks a lot
Netcode for ECS for large worlds. If you’re not making game in ECS, then probably some photon solution. I would not recommend netcode for gameobjects, as it does not seem to have the tools required for this (world partitioning, ghost importance, etc)
Do I get this right? You want to make a mobile game with up to 1,000 concurrent players and you manage to consistently misspell “multyplayer”? You’re off to a bad start.
First, you are asking the wrong question to begin with.
How much is “not a lot of”? You need to be precise with that amount because this effectively determines how much you are going to have to pay for bandwidth. You also need to use this number to assess whether this undertaking is viable at all, both technically and financially.
If you determine that the max. bandwidth for a given player will be n MB/s and you intend to target even mobile players with 3G or worse connections, that number may be unsustainable. Not because of the networking tech but because of bandwidth and connection quality.
But more importantly: what’s your live service budget?
How much are you willing and able to spend on live services post AND prior to launch? Because you need to test, you will also have to ask yourself how you’re going to get 1,000 concurrent players to play your game many times leading up to the launch. You do plan financially for an open public beta phase, free of cost, right?
Assuming you need realtime networking with corresponding server hosting, lobby, matchmaking, relay, authentication, cloud save and possibly cloud code services then … you are very unlikely to get this for a worldwide 24/7 game of this scale for under $1,000. Per month. You could get away with a single server during testing and development but then you need to scale to worldwide which means at least one server per continent/region, likely several.
Doing this calculation is entirely up to you, but do it now! Otherwise you may be wasting everyone’s time and possibly your own financials. Take any single pricing list, make some high and low end assumptions about the scale of your project, run the numbers and likely be like .
That said, given the mobile environment, given the number of players, given the limited bandwidth available with spotty connectivity, I’m going to make some assumptions:
-
the game is turn-based
-
whatever may look like realtime-animations is simply the client performing a fancy playback of events
-
players don’t see each other’s units in realtime
-
they either are not seen on the map or they do not interact in realtime, meaning all motion is deterministic
To that end, you will be building your own WebRequest (REST) API and a backend server of any kind that runs the game simulation (pure logic). Then you can get away with a lot less services (eg matchmaking) and a high number of concurrent players might be possible.
If you do insist on realtime networking and realtime interaction with realtime state synchronizing of 1,000 concurrent players you are essentially trying to develop the equivalent of an MMO for mobile. This is not achievable. If only because it won’t pay for the live service costs, plus the initial development costs, plus me extrapolating that someone asking this kind of question is not (yet) up to a task of this grandeur.
But please do learn, for example by scaling the game down to one hundredth and start from there. You can always grow it bigger over time.
Hey, what you need is https://discussions.unity.com/t/832040
Reactor is AWESOME.