I am now reaching the point where my game needs multiplayer capabilities, and I am very lost on this topic even after doing research for many days. I am in 4th year of University for Software Engineering and been working on this project for a while now. From research I have done I think I need asynchronous server, and I don’t need Photon and most the multiplayer services here as they are for realtime games. I only need to keep the user connected, confirm their data and update their data to database every once in a while and do some simple matchmaking against other people data ( NO real time battles between 2 people, only ever one person that is connected with everyone else ).
Game and platform: iOS and android turn based battle game
What I need for my game is below.
Authentication:
When the user starts the game they need to login to a database.
When they advance their character like want to do a “equipment upgrade” it should send request to database.
When they are in the game and want to do any battle it should request to enter ( confirm with database ), and only report back when they lose or win. The client handles the logic of the battle so it is not really using multiplayer as it only cares when they enter or if they win/lose and update this data.
Should also disconnect from game when user lost connection and be able to detect this.
Matchmaking:
Show other people that authenticated themselves to battle other people near their level and allow the user to battle them (but it is done through client with AI that takes over the other people and doesn’t actually battle the real person which is described above as it uses client logic of the battle )
There is no real connection done to other people as they do not battle other people.
Analytics:
Need a plugin that supports this.
Chat:
Always allow any person that logged in to talk in the chat (multiple channels) that user can change and talk at any time.
Push notifications:
Send notifications to user phone when something important happened in the game like every mobile game does when user is not playing.
Friends:
Be able to have a friend list and show if they are offline or online in the game.
Save Game:
Should save the game whenever any authentication is done as I described above.
Misc:
Be able to support a potential million people or above, I don’t ever expect this number but I want to prove myself to jobs that I can do a game that support more than 20 people lol and I want to start pushing myself further.
I have little money and cant afford to pay monthly amounts for low amount of users, I also refuse to pay absurd amounts of money if I accidentally or by luck get a lot of users in the 500k-1mil+ range. I am of course willing to pay a reasonable and fair price.
I cannot host my own servers like Forge is requesting as this is not possible for my current situation, so the multiplayer solution needs to host their own servers ( even though this perfectly satisfies money issues and everything above, their hosting problem is a big problem ).
If anyone could help me on Skype that would be great thanks as I have a few questions, just let me know if you are interested in that too.
What would be the proper multiplayer solution for my game? I am very aware of the basic stuff like UNET, Photon, Forge, etc. So any support and or help with putting me in a better direction would be great, thanks!