Hi everyone, this is my first question on Unity forums, so apologize if I do not express myself well or if this question does not go here.
I am looking to make a game with the following characteristics:
At first, it will be for Android, but I want to add iOS in the future as an option.
Multiplayer game, where the games are hosted by users, with a limit of 8 or 16 players (I do not know how many players can keep mobile devices, but the more, the better).
The users will connect to the games that will be listed in a lobby, and they can also create a match (the connection to the matches must be by match name, not by IP host).
FPS mechanics (real-time multiplayer game). Although I know that with this type of solution the host will have a latency advantage, it is not something important.
With these characteristics, I have looked for a solution but I am really confused about the tools and technologies that I should use. What solution do you recommend that best fits the features listed? Where should I start?
Thanks for reading and sorry for the bad english (it’s not my native language).
I’d start by taking a look at Photon. Most any other networking solution will require creating your own match making, lobby system, and getting around NAT yourself.
A mobile FPS for 8+ players all connected to another mobile device as server seems a bit overkill, unless you require all players to use exclusively high end iPhones
Have you considered running the multiplayer code on an actual server? Devices don’t run dedicated connections and FPS games require low latency to be enjoyable.
For these kind of games a client-server model is usually the only way to go. You have an actual server running the game logic, with stable network bandwidth, offloading clients from running the server side and providing a more enjoyable game experience overall.
Platforms like SmartFoxServer and similar work great for these kind of projects.
So, is it not possible to host a game of 8 or 16 players on a mobile server as a server / client at the same time? No way?
I have been reading about SmartFoxServer, but I am a bit confused about the concept of concurrent user. He says that they give me 100 concurrent users for free. So, although my users are divided into rooms of, say, 10 players, can there only be 10 rooms at the same time in my game? Is not there any way to have an unlimited number of rooms, and that does not entail a cost?
Thanks for your attention.
Edit: If it’s not too much to ask, I’d like to know which solution uses the game I’ve put in the edit of the initial post
About actual published games, it is hard to tell because very few of our customers (I guess 10% or less) let us know what they have created with our product. Taking a look at our showcase, we have this project for example:
Maybe for a lite 2D game that is not too heavy on rendering. But if we’re talking 3D shooter with 10-16 players, it’s going to be very hard to make it playable. Especially considering the wide variety of hardware you find in the mobile market. And then there’s the problem of network performance, which is kind of the true limitation especially for action games, and the reason why the proper way is to use a dedicated server.
The limitation is only for the number of players connected at the same time. The rest is unlimited so you can create as many rooms/games as you want.
The problem they are referring to is not caused by the chosen networking API, but the variability in the quality of cellular data services. Cellphone data is prone to high packet loss, congestion issues in populated areas, wide swings in ping times, etc. FPS games generally need smooth and reliable network connections to avoid a frustrating gameplay experience (not necessarily high bandwidth, but low latency, low variability in latency, and low packet loss).
Your choice in networking API doesn’t solve this problem. If a dedicated server is hosting the game, then network performance issues are at least isolated to individual clients experiencing them. With a player acting as host, then all players experience the network performance of the host in addition to their own potential network performance issues on their end.