I'm trying to get some clarification on an ideal architecture configuration for my game. I’ve been scouring all the available documentation and forums posts, many of which have been leading me in the right direction I think, but there’s a lot of ambiguity because there’s a lack of UE4 specific knowledge for my ideal use case as far as I have found.
It's a game with dedicated servers, hosted by Playfab and not external, ideally, and a main multiplayer feature is a server browser that lists all available, running servers.
I have managed to get a successful response with a Cloudscript function call for ListMultiplayerServers, as I needed to maintain client/server security.
And I can display those servers on a client-side server browser UI widget, though they're only for one region at the moment and all have the same name, which is the Region, as there don't seem to be any Server name-specific parameters.
The questions I have now are specific to how I need to configure the server and multiplayer logic in relation to available Playfab calls:
- For my UE4 Game Instance, do I need to make a call to start the game server instance with a 0-player lobby, waiting for players to join, or can it remain in standby mode in the server browser and some type of StartGame call be made to kick off the server from the first connecting client? This likely would be answered if I knew what is happening for the server executable on the server-side. Once builds are uploaded, are they ran automatically, and that's Standby mode? Or is Active when the executable is actually ran. Please elaborate on this, if possible.
- In this type of model, when would Server Shutdown occur? I assume a call made within the game instance of the headless server build once a check happens determining all connected players have disconnected? If this is the case, will this server still remain in Standby Mode when a shutdown call is performed?
- I will also want to implement a more standard form of Quickplay/Matchmaking, so do I need to tie any of that logic specifically into the dedicated headless server, or are those all client-side calls to kick off a server when needed, if none are available?
- Is the dedicated server management in Playfab tied in to Matchmaking so much that matchmaking is required to be used in order to find/join any available servers, both empty/standby ones as well as running servers with players?
- Each server will have a lobby map/game mode upon initial player join, where players can choose sides, modify equipment while waiting for a timer or ReadyUP-type function to start the first match. After that match, the players and their teams, data, etc. would be retained and returned to the lobby, waiting for the next match to start. (There will be a playlist of maps, with players returning to the lobby after each one) From how I understand it regarding Unreal Engine 4, this would need to be maintained within one running session, containing multiple game modes.
The server/gameplay flow I’m trying to implement is ideally as simplified as I can make it, as my focus is more on gameplay for more complex development. I need players to have a level of control over what servers they can see and join, akin to how games like Battlefield or ARK use their server browsers. A server browser that simply displays all available servers, with the potential to filter those servers by certain parameters, likely received by server-specific details.
However, I would still like simplified, standard matchmaking in the main menu. Assuming these functions are all modular, I can implement a party system down the road as well.
I’m also primarily using blueprints but can make Cloudscript calls and work in C++, if necessary. Blueprints just simply provide a cleaner and less error-prone method to get a testable, working concept build up and running quickly.
I do understand after looking through many of the forum posts and documentation that you have limited UE4 and Blueprint specific materials to reference, however, whatever assistance you can provide for this specific workflow I would like to document and post, as well. This is a pretty standard model for UE4 template projects and Playfab provides a quicker back-end solution with Blueprints than Gamesparks/Gamelift from Amazon, so it’s ideal for our team and likely many others to reference for the future.
I’ve tried to be as descriptive as possible, but if any of this isn’t clear or is too confusing, please let me know and I’ll do my best to clarify on my end.