“normal” server is when one of the clients is a host (client acts as both server and client), host starts the game on it own computer and the rest connects to it, commonly used in LAN but can work beyond that. When host leaves games ends as host worked as server
P2P (or rether the thing that is called that way since it not always real P2P) is same as “normal”, but connectivity methods are different in the way so players can connect to eachother even behind NAT and Firewall by using varius tricks, like host connecting to client, proxying (client side or provides by some proxy server), session migration when host leaves, in other words make it fell that everything runs on dedicated where in reality everything is hosted by clients, i think to better word this, it feel that everything is run by the “cloud” ;]. It’s also managed by session server, which is more advances master server which manages connection between devices as well as do match making, some online services provide that for you. UE4 does not support P2P but it is in road map, it’s on the roadmap since long time and it untouched, so some day.
Still you can make session systems with what UE4 has and i think it is possible to make it migrate host, but i don’t think you could do that with just blueprints. IT won’t be comftible thru, 2 players behind NAT and Firewall won;t be able to connect to eachother, UE4 simply need to know diffrent connectivity methods.
dedicated server (don’t mistake with all-purpace server service) is server running sepretly from client, it simply can run alone without client and rendering, it just manages game state and host the game even when there no players. As it usally runs on server machine (but it can run anywhere on any machine) it’s not behind NAT or firewall, so anyone will be able to it. It’s best quality but it a lot more expensive, usally game devlopers relese dedicated server version (or client can turn on dedicated server mode, UE4 can do that by default, you would need to built “Client” build to prevent that) so users can host there servers, manage them… and pay for them
So server cost won’t be devloper issue.
Session management can be done on dedicated servers too, developer host group of dedicated servers and session server simply connect all client to currently empty server, prime example of this method is Rocket League, you can even see cryptic server names being display before game starts ;]
As long as you set up replication in you game right, your game can do both (except P2P for now)