Networking, gamemode & FClassFinder

I would like to know how networking exactly works when it comes to Gamemode initialization and further player spawning. I have read all the documentation but still, I have read Gamemode only exists on server-side and GamemodeState exists on client-side. Also, how does one have a default client-side menu for server connection with menus only, i.e. without local spawning, or doesn’t a standalone game start a server instance but editor does?

Also, I am trying to change Gamemode’s default pawn but I am failing at finding the desired class,

static ConstructorHelpers::FClassFinder<APawn> DefaultPawn(TEXT("PlayerPawn"));
	if (DefaultPawn.Succeeded())
	{
		DefaultPawnClass = DefaultPawn.Class;
	}

Okay lots of questions. Let’s start witht the last one. If you have access to the class in c++, you can just set the DefaultClasses like this:

DefaultPawnClass = APawn::StaticClass();

No need for FClassFinder if you aren’t using BP classes.

Networking

When it comes to networking, Unreal Engine handles all the networking with it’s replication system.
I would advice reading the docs on this, as it should clarify how spawing actors work. Spawing players is no exception here. When the server spawns an Actor that is marked to replicate (bReplicates is true), then the Actor also gets spawned on the client automatically.

I like these two official playlists to get decent understanding of the basics:

Networking Basics

Blueprint Multiplayer, this handles menus and connecting

both playlists are Blueprint only, but the principles are the same for c++.

Pawn class thingy works perfectly fine, thanks! Now, about networking, I guess reproducing the blueprint tutorial series in C++ can be done without an issue?

Yeah, the principles transfer almost 1 to 1