Multiplayer: salas de prueba y Steam
Flockbay construye juegos online sobre el multijugador de alto nivel de Godot. Mientras construyes, Play aloja una sala de prueba a la que se une, con un código, una segunda ventana o el playtest de un amigo. Las salas solo funcionan en las copias que abre Flockbay: el juego que exportas no las tiene. Para jugar online en el juego que publicas, pídele a Flockbay que añada multijugador de Steam.
Convertir un juego en multijugador
Pídele a Flockbay un juego online. Antes de escribir código de red, pregunta de qué tipo: online o en una sola pantalla, cooperativo o versus, y cuántos jugadores, de dos a ocho.
Se basa en el multijugador de alto nivel de Godot: un MultiplayerSpawner para los jugadores y los objetos instanciados, un MultiplayerSynchronizer para el estado, métodos @rpc para los eventos y el host como autoridad sobre el mundo. Cada escena de jugador lleva el nombre de su id de peer, y ese peer es su dueño.
También establece flockbay/rooms/friends_can_join en true en los ajustes del proyecto. Eso es lo que hace que Play aloje una sala y lo que pone Multiplayer en el menú del juego. La primera vez que un juego lo activa, la app explica para qué sirven las salas.
Las salas son para pruebas
Cada Play de un juego multijugador aloja una sala con un código de seis caracteres, el mismo código de un Play al siguiente. Una sala admite hasta ocho jugadores y las salas son gratuitas en todas las cuentas.
Los jugadores se conectan peer to peer por WebRTC. Cuando una red bloquea una conexión directa, el tráfico pasa por un relay.
Las salas solo funcionan en las copias del juego que abre Flockbay: tu Play, un playtest abierto en Flockbay y un enlace de Share abierto en Flockbay Playtest. El botón y el panel Multiplayer de la esquina superior derecha de la ventana del juego también son de Flockbay. El juego que exportas no lleva nada de eso, ni inicio de sesión de Flockbay ni librería de WebRTC, y se juega en solitario hasta que añades multijugador de Steam.
Probar en un solo equipo
- Pulsa Play.
- Abre el menú del juego, luego Multiplayer, y elige Open a second window. Abre una segunda copia del juego que se une a la sala como otro jugador.
- Juega en las dos. Stop cierra las dos ventanas.
Las dos ventanas comparten la misma carpeta user://, y un solo equipo no muestra latencia de red. Una prueba con un amigo es la verificación real.
Probar con un amigo
- Pulsa Play. El botón Multiplayer de la esquina superior derecha de la ventana del juego muestra el código de la sala, y Copy room code, en el Multiplayer del menú del juego, lo copia.
- Envía a tu amigo el juego con Share for playtesting… y el código.
- Tu amigo abre el enlace, que instala Flockbay Playtest en un PC con Windows y arranca el juego. Abre el panel Multiplayer del juego, escribe el código y pulsa Join.
Alguien que trabaje en el mismo juego, en su propia copia desde GitHub, puede unirse a ti en cambio desde la app: Multiplayer, luego Join a room… y el código. Su Play se une a tu sala hasta que elija Leave room.
El mismo netcode en los dos
Los RPC, MultiplayerSpawner y MultiplayerSynchronizer funcionan con el multiplayer peer que esté establecido. En Flockbay es el de la sala, y en el juego que publicas es el de Steam, así que el código de gameplay no cambia entre uno y otro.
Publicar multijugador online en Steam
El juego que publicas se juega online en Steam. Los jugadores crean un lobby de Steam y se unen a él, invitan a amigos desde el overlay de Steam y se conectan por la red peer-to-peer de Steam, que Valve retransmite por defecto a través de su red Steam Datagram Relay. Nadie abre un puerto, no ejecutas ningún servidor y los jugadores no ven la dirección IP de los demás, salvo que sus propios ajustes de Steam permitan conexiones directas.
Flockbay lo escribe sobre GodotSteam, la GDExtension de Steamworks para Godot, que Play ya ha incluido en un juego multijugador en addons/flockbay_rooms/godotsteam. Es un solo autoload: inicia Steam, el host abre un lobby solo para amigos, Invite abre el diálogo de invitación de Steam, y un amigo se une desde la invitación o desde Join Game en su lista de amigos, con un SteamMultiplayerPeer como peer del juego. No hace nada mientras el juego se ejecuta en Flockbay, así que Play, la segunda ventana y los playtests siguen usando salas. Es un archivo GDScript normal de tu proyecto: léelo y cámbialo como el resto de tu código.
- Consigue el App ID de tu juego. Viene con Steam Direct, una tarifa de app por juego, que se paga en Steamworks. Hasta que tengas uno, la app de prueba Spacewar de Valve, 480, sirve para probar.
- Pídele a Flockbay que añada multijugador de Steam y dale el App ID.
- Abre el menú del juego, luego Ship, y elige Export for Windows…. Guarda la build en una carpeta nueva y vacía: el .exe y las librerías de GodotSteam y de Steam que lo acompañan van juntos a Steam.
- Sube el .exe y las dos DLL a un depot con SteamPipe y después pon la build como live en una rama, en Steamworks.
Probar en Steam
Jugar online necesita dos cuentas de Steam, en la práctica en dos equipos, cada una con la sesión iniciada en Steam.
Con el 480, ejecuta el .exe exportado directamente, con Steam en ejecución, en los dos equipos, e inicia el juego en ambos antes de invitar: una invitación a alguien que no lo está ejecutando abre Spacewar.
Con tu propio App ID, dale a la segunda cuenta una clave de Steamworks para que sea dueña del juego, y luego las dos lo inician desde su biblioteca de Steam.
Turn off multiplayer, o usa tu propio peer
Turn off multiplayer, en el Multiplayer del menú del juego, hace que Play deje de alojar una sala. Tu netcode se queda, y pedírselo a Flockbay lo vuelve a activar.
Si en su lugar quieres un servidor dedicado o unirte por IP directa, pídeselo a Flockbay. Lo construye con un peer propio, como ENetMultiplayerPeer.
Descarga Flockbay
Flockbay es gratis para Windows y Mac. La app está en inglés; estas páginas explican en español lo que hace cada parte.
