Is there something that I will be losing if I assume that the player will always be a client, and always run a dedicated server even if the player is playing alone?
I ask because it would simplify the process a bit if I don’t have to think of the player as being potentially a server.
Why would you want to run a server if you are building a single player game? There would be an overhead, since both, the client and the server, will need to load your game data and they are two different processes on the same machine (so, more CPU power needed and more memory needed on the same machine).
It is generally “not fine” to force a dedicated server for single player. Not only does this create increased overhead, in the long term it increases project complexity, is not user-friendly, and is prone to numerous issues and bugs. What happens if the server crashes but the client doesn’t? Vice versa? What if there is some sort of software firewall or anti-virus preventing the server from opening local ports?
You could go down this road… it just isn’t recommended. If you’re doing co-op and already are adding replication support for clients, why not have single player at least be a listen server?