Quote: "Q • My assumption is that if a make a server in AppGameKit itself, i can not host it anywhere online, is this correct?"
A • Incorrect.
There are two types of Network Protocol...
UDP (Universal Data Protocol)
TCP (Transmission Control Protocol) … this within AppGameKit is called "Sockets"
Now the difference between these two is that a Socket (TCP) is more like an Open Line of Communication., so once you're connected you can essentially directly talk to the other Computer as you would any Internal Data Set.
So say you wanted to push out Positional Data... well you could just Broadcast (Send) three Consecutive Floats and they'd be sent as you called said Function. The same with receiving... so in this regard TCP is great for say talking to a Website that's going to send back a String as a Response, or Simple Data; but if you want to do anything more complex, such-as say sending Positional Data; well you then have to write some redundancy to ensure that said Data has actually sent correctly (and in the correct order).
This is actually why Server-Client approaches were first Development., because it's better to have Clients all sending their Updates to a Server that can handle all of the complicated Back-End; with the Clients essentially receiving Consistent (and Important) Updates ONLY for them.
UDP is a little different, as instead of sending individual data transmissions... instead you create "Packets" (Messages as AppGameKit calls them)., which are always going to have the same structure; in-fact you can tag them with IDs to handle Different Data Packets.
In this regard it GREATLY streamlines the process of say a Multiplayer Server-Client approach., but it also alternatively opens up (or rather makes it a dang sight easier) to use other approaches, such-as Peer-to-Peer or Round-Robin (Dynamic Hosting).
As for all intended purposes everyone on the UDP Network can acquire said Data Packets, and make sense of them without the need for Dedicated Hosting Backend; thus eliminating the need for a Server-Client Model.
What approach is best for you... well it will depend entirely upon the Game you have, and what Data is needed to support Multiplayer.
•
A common rookie mistake I see all the time., is that people will assume that a Single Player Game can simply be made Multiplayer via connecting two Instances of the Game and sending Update Data between the two; simply swapping out AI for a Human Player.
This really is rarely the case...
Typically speaking if you want Multiplayer, then you kind of have to design your Game Engine AROUND being Multiplayer... then for Single Player you can Emulate the Networking Elements when you want to use AI.
It might sound backwards to do it this way... but you'll find there are a lot of important considerations in HOW you handle the internal Data Messages that typically won't really mesh well when you develop the other way.
Heck something as simple as a Message Priority System... i.e. "Is it important that X is Updated Each Frame?" because when you're Networking, sure some of your Players MIGHT be on Fast 100Mb+ Broadband; but A LOT of them wont (esp. on Mobile) and then there's Data Plans / Bandwidth Restrictions... which a lot of territories and mobile internet providers will typically cap.
Such efficiency has to somewhat be baked into how the Game plays and feels., else the experience is going to be entirely different between the two.