In short, when you start the game in Unreal Engine and setup to spawn 2 clients they will spawn in the same world. When you start two separate instances of the game, as you did; they spawn in their own world. To fix this you will need to connect to the server on each of these clients. Either player one connect to player two, vice versa.
If you want to setup a system so that they spawn into the same world you would have to do some trickery and setup some code on Begin Play. You can set it so that the first player tries to connect to an IP address. If it fails it hosts it’s own server. When the next client opens the game it will automatically connect to the first client. (Keep in mind that this may be a bad solution for scaling for more players).
Thanks for the reply, but what if i want to make that without having to deal with low level details like IPs and ports, What is the popular method in UE that provides an interface to deal with that?
It all comes down to IP addresses in the end. For testing and local hosting it’s a great method for connecting and hosting a server.
If you don’t want to use that I suggest implementing a Online-Sub-System. These add additional features when hosting on a specific platform. Epic and Steam has one if I am not mistaken. I suggest looking at this thread for a deeper dive into this: Advanced Sessions Plugin