Best practice for passing user data up to server

I have a game where the clients have locally saved data which parametrizes how their pawn is ultimately created on the server when they join (which character class, their inventory etc)

So the clients seem to be re-connecting to the server using ClientTravel. This has a Options string, which is parsed out of the URL and which can apparently include data passed from the client.

Is this the best place to include such client data?

I was thinking I could have a file including all the parameters for the client, and then pass the string as an option in URL eg: ?params={“weapon”=“pistol”} (I guess this will have to be URIEncoded somehow)

Is there a better way to do this?

Question is, if this inventory settings have any locked content and stuff, which can be hacked. I think you can do something via replication system btw

Good point - I’m not sure if the URI is sent in the clear or not.

I was thinking of having the players join as generic ‘spectators’ until they have a chance to pass the data up to the server via RPC, so that the server can spawn the ‘real’ pawn. That doesn’t really seem much better though because the inventory still has to be serialized in the RPC arguments.

Maybe explain more inventory system and customization you making and how it impacts the game

The inventory is basically the items they have unlocked and equipped on their character. This inventory data is persistent locally on the client’s machine.

The game mode creates the pawn for each player when he connects, and spawns actors for each equipped item carried by the pawn, so it needs to know what items the player is carrying.

Does items are unlocked with some kind of level, kind of similar to CoD?

The items are not strictly associated with level, because the player can choose some arbitrary subset of all the items that are unlocked for them. Sort of like a typical RPG.