Guidelines and pointers where to start coding "match setup" system?

Hello everyone,

So I’m at a point where I want to finally start coding some customization settings for the my game. I want to let the users pick a weapon, color and attachments, selecting a map, and match settings. It is a cooperative game up to 6 players that survive waves of enemies (not zombies haha), so I need to let the hosts setup the maximum waves, the difficulty, map selection…

What I don’t understand is where should I put all that stuff? I’m not asking how to code everything, but some kind of text algorithm…

I researched a bit and found out that the best place would be a game instance class… maybe storing current match settings and player equipment kit and everything… But how do I pass it to the next loading map? to make everything load accordingly?

Just to clarify, what I want to do is:

Let the player pick a color and a weapon on client side (this could be easy, storing it in the game instance class)

Hosts can create a new server and select a map. (The map has loaded) and other clients can connect to it. While it’s in the starting stage (probably enum) hosts can select match settings (difficulty and everything else)

Any tips? I have no idea where to start.