I could use some help getting pointed in the right direction on an appropriate networking solution for my game. The thing is I don't need or want an authoritative server running my games, once the players have been matched the game can be played entirely peer to peer. I successfully added the UNet multiplayer to an old version of my game years ago but I'm otherwise very inexperienced with online services, which is why I'm posting here for guidance. I have almost no idea which multiplayer system, matchmaking server, and database I should be using.
Most important to me is cost, I need something I can build and test for cheap or free that will have a low cost with lots of users in the future. The game will be sold first in China in a free-to-play model so that's potentially thousands or millions of concurrent non-paying users. I'm looking into adding Forge Networking Remastered to my project with an Amazon AWS EC2 instance to run the matchmaker and authentication, which may or may not be the right idea at all.
Here's some info on the way my game uses networking:
The game is played 1v1 only (for now). Cheating by hacking the client is impossible by design, the players only send a list of moves to each other (grid point to grid point) and moves enabled by hacking will simply desync the game. They can make up to a couple dozen moves each second which can be bundled and sent at a very low frequency because those moves do not directly affect the other player more than once every second or two at most. I have no physics, animations, Transforms, or player models to sync.
Whatever networking solution I use will need a way to connect the players to each other by a matchmaking system that pairs them based on skill level. This part I've never done before. I know I can't let the client declare the player's skill level without checking it against an authoritative database (which also needs to record the outcome of every match) so I'm going to need a whole user login system.
In addition to automatic matchmaking I'd also like if they had the option to search for opponents by name and physical proximity, make friends lists (and spectate their friends' games), set up unranked offline local matches, and very importantly allow cross-play between PC, Android, iOS, and eventually even web browsers and consoles. They'll need to be able to login to their own account from every platform (not simultaneously) and have their wins and losses tracked across all devices.
The problem I'm facing is that all the information I find about networking solutions advertises features like "animation syncing" and "hundreds of players in one game" which I'm never going to use, and then charges hundreds of dollars a month for a thousand or more simultaneous players. I just need my matchmaking server to connect the players and get a reported result of the game when it's done (win/loss/disconnect/desync). It does not need to run any games itself or stay connected to a game in progress.
As I understand it, this means that my game actually *should* run peer-to-peer, or at least client-server with one of the players as host. Am I missing something? Any recommendations for services that do what I need?
Most important to me is cost, I need something I can build and test for cheap or free that will have a low cost with lots of users in the future. The game will be sold first in China in a free-to-play model so that's potentially thousands or millions of concurrent non-paying users. I'm looking into adding Forge Networking Remastered to my project with an Amazon AWS EC2 instance to run the matchmaker and authentication, which may or may not be the right idea at all.
Here's some info on the way my game uses networking:
The game is played 1v1 only (for now). Cheating by hacking the client is impossible by design, the players only send a list of moves to each other (grid point to grid point) and moves enabled by hacking will simply desync the game. They can make up to a couple dozen moves each second which can be bundled and sent at a very low frequency because those moves do not directly affect the other player more than once every second or two at most. I have no physics, animations, Transforms, or player models to sync.
Whatever networking solution I use will need a way to connect the players to each other by a matchmaking system that pairs them based on skill level. This part I've never done before. I know I can't let the client declare the player's skill level without checking it against an authoritative database (which also needs to record the outcome of every match) so I'm going to need a whole user login system.
In addition to automatic matchmaking I'd also like if they had the option to search for opponents by name and physical proximity, make friends lists (and spectate their friends' games), set up unranked offline local matches, and very importantly allow cross-play between PC, Android, iOS, and eventually even web browsers and consoles. They'll need to be able to login to their own account from every platform (not simultaneously) and have their wins and losses tracked across all devices.
The problem I'm facing is that all the information I find about networking solutions advertises features like "animation syncing" and "hundreds of players in one game" which I'm never going to use, and then charges hundreds of dollars a month for a thousand or more simultaneous players. I just need my matchmaking server to connect the players and get a reported result of the game when it's done (win/loss/disconnect/desync). It does not need to run any games itself or stay connected to a game in progress.
As I understand it, this means that my game actually *should* run peer-to-peer, or at least client-server with one of the players as host. Am I missing something? Any recommendations for services that do what I need?