Need ideas on creating a type of state before joining to game server

Hello everyone…

Basically I want a functioning like this

Player opens the game -> Enters the Id pass -> Enters a server where the player is able to choose characters, can choose items and skills with data pulled form a database -> Enters a game server.

The game only needs to handle around 6-8 players at max. But I am a bit confused regarding how to create the screen where the player is able to choose his characters and change items and all.

It can be done by using another Unreal Engine 4 server the bandwidth load on it will be negligible as the player can only change items, skills and all so not much replication is not needed there. However, I am not sure how many players would connect to it + Unreal engine 4 might not even be most suitable for something like that.

Another option is to pull that data from another place into the game using an HTTP requests into the local game where the player can choose skills and all and that request is passed on to the server. I am not sure which approach might be good for something like this.

The question is, is your pre-game state already a multiplayer state or not? Like, do players see each other while they are picking the characters or does some kind of server-browsing or matchmaking come after selecting the character?

If players, or rather their clients, should already be aware of each other, I would definitely advise to treat that pre-game state as a multiplayer session. Make a map and game mode specific for this pre-game lobby. If not, treat the character selection as a single player session.

I would use a custom networking solution to get the player data, instead of another UE server. HTTP requests sounds good. Another option is to use TCP or UDP with sockets. Useful info on that by Rama. You can then connect to your data server independent of whether you are in a single player or multiplayer session.

Hi all,

I’m working on the project here with Envenger and what we’re mainly concerned about moving forward is our architecture as far as networking goes. As we continue to work on the item class, the player class, etc., I worry that come time for making it all multiplayer-capable, we end up needing to make tons of changes to each of those.

The goal is a basic launcher → client → game/match server, similar to any MOBA you see nowadays like LoL or DotA. You enter an ID/Pass via a launcher (or maybe inside the client) and it loads up all your pertinent account info like level, current money, etc. Inside that client, you have characters where you can edit their inventory, stats, and skills as well as chat functionality with other people logged into the client (i.e. friend’s list). Also inside that client, you hit the play button and after your queue pops, you are put into the actual game server, where gameplay takes place against 9 other people. The match ends and the relevant information is passed back to the client where it updates things like your level and money.

The question Envenger is posing is what do we need from a networking perspective to make this happen? Is it all done via Unreal or do we need to make custom web type plugins? For example, I know LoL is done via Adobe Air and I don’t know if all the back-end database type stuff is done through that as well, or how exactly it works. I’m just a project manager, so there may be more technical terms, but I still want to ensure we get this architecture right before moving too far forward.

Thanks!

The player are independent from each other and are don’t need to know any thing else other than their own information. Thanks for the link I will take a look at it.

In that case you could either use a single player map for the character selection or a custom launcher for the pre-game experience.

If you use the single player map, you can get the character data via HTTP or TCP. When its time to join a game, you can pass any arguments to the server URL as if it was an HTTP request. For example if I’m joining a server at IP address 127.0.0.1 I can pass arguments by running this console command in uE:



open 127.0.0.1?name=Mark?hero=56?weapon=3


So thats one way to pass any information from a pre-game state (UE or external) to a multiplayer server. The server can then parse it in GameMode::Login().