Hi there,
I have used “Relay”, “Lobby” and “Netcode for GameObjects” but I’m new to Multiplay.
Actually I worked with SmartForServer, Photon PUN and Fusion so I am familiar with server structures.
But multiplay is a bit confusing.
Fleet configuration :
MAchine: GCP-N2 @ 2.8 GHz | 8 GB RAM
Servers per machine : 10
CPU allowance per server: 10%
Memory allowance per server : 819.2 MB
When I create a test allocation, 10 virtual machine is shown in the list and one of them is online.
Also I set the QueryHandler like this. MultiplayService.Instance.StartServerQueryHandlerAsync(maxPlayers: 20, …);
My game:
The board game similar to a card game and it’s a 4 player game.
My questions:
Can I create and control 5 (20 / 4) different “table/room” int the server? Does this means : 5 different build run in the cloud server? Because each table has unique settings and data, and build store this data.
Or each build run each server and this means:
1 table/room/build = 1 server = 4 players
10 table/room/build = 10 servers = 40 players
This means: I will paid a server price only 40 players.
Is system work like this?
When start to learn Multiplay I was thinking my build run as a plugin and each build will run for a room/ table.
What should/can I do?
Can I store 5 different room/table data in the build and manage these data for each table/room?
Thanks a lot.
As far as I understood it, one allocation means it runs one instance of your executable. What you do within that executable is up to you. But there is no built-in concept of “rooms” in most networking frameworks. It’s up to you to separate clients connected to a server both visually and logically - to represent something like a “room”.
Typically you would have one dedicated server instance per game session.
But for a card game you don’t actually need a networking framework like NGO (the players needn’t be connected with each other) but instead you can create such a game entirely with live services such as Unity Gaming Services plus a Matchmaking service. Take a look at how Marvel Snap implements this.
Thank you for your answer.
I guess so 
If I remember correctly, when I looked at the “Boos Room” and “2DSpaceShooter” projects while working on Relay, Lobby and Netcode, Multiplay was not used in these two projects. Or it was used, but more than one game was not created on a server.
I’ll double check but do you know any projects that use this technique (separate clients connected to a server both visually and logically)?
Yes exactly, we don’t need to use Netcode. I will also definitely check “Marvel Snap” implements.
Not aware of any implementations but discussions around this.
For instance if you have a 1vs1 battle arena but want to support 20 players per server, you could stack the arenas above each other, offset player and arena Y position accordingly, and show only the arena to the players in that arena (network object visibility).
The tricky part is of course ensuring the arenas are well isolated. You can’t have a grenade drop through the floor and explode in another arena, where those players may not even see it visually but still get hurt by it. 
But not really an issue for a card game.
Thanks for your suggestions. They will help me absolutely.
Actually, I’m thinking of using Lobby and Firebase solutions together, but Lobby’s “speed limits” restrict what I want do.
At one time I was working on a game project that used a dedicated server containing a lobby, rooms and ran multiple instances of the game within the same executable. I got so far but gave up on the idea as I decided it was too limiting. In theory for a card game it would work but I definitely wouldn’t recommend going down that route.
I’ve moved on to creating a more general purpose master server for hosting lobbies and rooms and launching separate server instances. This sort of setup would be more suitable for running something lightweight like card games and more depending upon available resources. For popular/demanding games I’d look at something more scalable like UGS.
I’ve not looked too deeply but it sounds like this asset NetcodePlus could work for what you’re after.
Thanks for your suggestions.
Can you give some more details? This “master server” can be many different locations such as EU, US, Asia etc. at the same time? Which server solution did you use?
I haven’t finished it yet. It started out as something more for my own use which expanded in scope and I thought about making into an asset. For that it really needs to be bullet-proof and I’m having to do a fair amount of refactoring for unit testing and some changes aren’t quite as elegant as I’d like.
It’s nothing too fancy though, the idea being you use your choice of server hosting and where you want to server located.
Did you check out NetcodePlus, going by the documentation it does its own server instancing but I don’t know how that works, I should have a look into it.
Yes, I took a brief look. Yes they use another Cloud Server Installation.
Hi @CodeSmile , but how is it possible without using NetworkManager to connect and share data to other players?
At least we need some RPC methods.