My game will be client-server, and I'd like to prevent the hosting player from enjoying the usual benefits you'd associate with playing on a server. For example, the advantage of the server running ahead of time compared to clients.
Are there simple ways of mitigating host advantage? Or do I have to make something complicated? My naive solution would be having the host run a "ghost" state, and a client state, on the same map.
The ghost state is an authoritative server simulation, it doesn't render the simulation which remains invisible, but does run ahead of time making calculations and decisions as usual. The host also plays a client on the same map, in which their input is regarded as any other client across the network, and like any other client is required to wait for the server simulation to make and transmit outputs. And so the host doesn't enjoy an advantage because they aren't playing the simulation which is making executive decisions on the game state ahead of client time.
Has this solution been done by any other games, or is there a better way of handling the problem?