En esta ocasión vamos a crear rápidamente un sistema multijugador que podemos compilar por pixel si lo deseamos, crearemos estos 4 elementos

BPI_TUT: es un blueprint de interfase, una interfaz Blueprint es una colección de una o más funciones (solo nombre, sin implementación) que se pueden agregar a otros Blueprints. Se garantiza que cualquier Blueprint que tenga la interfaz agregada tendrá esas funciones. A las funciones de la Interfaz se les puede dar funcionalidad en cada uno de los Blueprints que la agregaron. Esto es esencialmente como el concepto de una interfaz en la programación general, que permite que múltiples tipos diferentes de Objetos se compartan y se acceda a ellos a través de una interfaz común. En pocas palabras, las interfaces de Blueprint permiten que diferentes Blueprints compartan y envíen datos entre sí.

GI_TUT: es del tipo game instance La instancia del juego es una clase de administrador que no se destruye al cambiar de nivel en tu juego.
Esto significa que datos como la salud del jugador, la puntuación, la munición y más se pueden almacenar entre niveles. Todos los datos del juego se conservan hasta que el jugador cierre del todo el juego.

MAINMENU: es la escena donde vamos a colocar la interfaz con la que el usuario va a crear una sala para jugar o unirse a una.

WBP_TUT:  es un widget blueprint el cual lo usamos para crear interfaces gráficas.

El blueprint interfase lo encontramos aquí

El game instance lo encontramos haciendo clic en blueprint class

Luego en ALL CLASES buscamos Game Instance

El widget blueprint lo encontramos aquí

Para crear el nivel solamente hacemos clic en Level.

En el BPI_TUT que es el blueprint de interfase vamos a crear dos funciones, Host Session y Join Session. no olvides hacer siempre clic en Compile.

Ahora abrimos GI_TUT que es el gameinstance

Hacemos clic en Class Settings y luego en la derecha en Interfaces seleccionamos BPI_TUT, de esta forma a la izquierda ya podremos acceder a las funciones creadas en la interfase anterior.

En el host no tenemos mucho en especial, pero resumiendo los nodos nos quedaría así:

Event Host Session que extiende de BPI_TUT y el simbolo a la derecha nos indica que nos referimos a esa interfase.

Show Mouse Cursor como su nombre lo indica es para mostrar u ocultar el cursor y en este caso usamos el set porque queremos cambiar su valor.

Get Player Controller: Obtiene el controlador del jugador.

Create Session: El nodo Create Session es donde todo comienza. Una vez que su juego haya creado correctamente una sesión, otras instancias de su juego podrán descubrirla (utilizando el nodo Find Session ) y luego unirse a ella (usando el nodo Join Session ). En este nodo, puede especificar la cantidad de jugadores permitidos en la sesión y si la sesión debe originarse en modo LAN. Para los módulos del subsistema en línea que lo admiten, establecer el modo LAN en falso intentará crear un juego de Internet.

Open Level by name se utiliza para abrir un nivel, en resumen con este bloque de código estamos diciendo que el usuario crea una sesión, el cursor del usuario va a ser visible, se crea la sesión y salta al nivel que en este caso se llama prueba y esto conectado al nodo de On Success que obtuvo una respuesta positiva y no olvidar colocar en options la palabra listen para escuchar a los que desean unirse.

Con el Join Session es muy similar al anterior, con la diferencia que usaremos este nodo Get(a copy) dada una matriz y un índice, devuelve una copia temporal del elemento en la matriz en ese índice (dado que es una copia, los cambios en este elemento NO se propagarán de nuevo a la matriz).

En max Results lo dejamos en 100

Ahora editamos el widget como deseemos.

A los botones les debemos dar los nombres de variable

En cada botón hacemos clic en On Clicked para que se agregue el evento

Creamos los Player Start que necesitemos, basta con solo duplicar el original.