LAN Guia de Uso - vykymoon/rpg-character-creator GitHub Wiki

Antes de empezar

  • Cada jugador necesita la aplicación y al menos un personaje guardado (crear uno con el Wizard). Los personajes no viajan por la red: cada cliente lee su propio characters.json.
  • Todos los equipos deben estar en la misma red local.
  • Una de las máquinas hace de anfitrión (ejecuta el servidor).

Paso 1 — Anfitrión: iniciar el servidor

Opción A (desde la app): abrir la aplicación (mvn clean javafx:run) y pulsar Iniciar Servidor en la galería. Aparece el aviso "Servidor LAN iniciado".

Opción B (sin interfaz):

mvn compile exec:java@server
# otro puerto:
mvn compile exec:java@server -Dexec.args="9000"

Verás GameServer autoritativo escuchando en puerto 8887.

Paso 2 — Anfitrión: averiguar la IP local

Sistema Comando
Windows ipconfig → "Dirección IPv4"
macOS ipconfig getifaddr en0
Linux hostname -I

Ejemplo: 192.168.1.20.

Paso 3 — Abrir el puerto en el firewall

Permitir conexiones entrantes TCP al puerto 8887 (o el elegido) en la máquina anfitriona. En Windows, la primera vez suele aparecer un aviso del Firewall de Windows para Java: hay que permitir el acceso en redes privadas.

Paso 4 — Cada jugador se conecta

  1. En la galería pulsar Multijugador LAN (o mvn compile javafx:run@game).
  2. Elegir el personaje en el diálogo "Elige tu personaje".
  3. Escribir la URL del servidor:
Situación URL
Mismo equipo que el servidor ws://localhost:8887
Otro equipo de la red ws://192.168.1.20:8887
  1. Se abre la ventana del juego. Mover con flechas o WASD.

Qué verás

  • Un círculo por jugador conectado, del color de su clase.
  • Tu personaje con anillo dorado.
  • Los nombres sobre cada círculo.
  • Si alguien cierra su ventana, desaparece para todos.

Solución de problemas

Síntoma Causa probable Qué hacer
"No se pudo conectar a ws://…" El servidor no está corriendo, IP/puerto incorrectos o firewall Confirmar que el servidor imprimió el mensaje de inicio, revisar IP y puerto, abrir el firewall
"No hay personajes guardados" No existe characters.json Crear un personaje en el wizard; ejecutar desde la raíz del proyecto
El personaje no se mueve Aún no llegó el primer state, o la celda destino está bloqueada (árbol, agua, piedra) Esperar un instante; probar otra dirección
Choco con obstáculos que no veo El fondo es una imagen fija; las colisiones vienen de la cuadrícula lógica del servidor Limitación conocida (ver Limitaciones y Mejoras)
Fondo de color sólido en vez de imagen No se encontró background_multiplayer.jpg Ver la sección de imagen del mapa en LAN: Cliente
Pulsé "Iniciar Servidor" y dice iniciado pero no conecta Puerto ocupado (el error ocurre en el hilo del servidor) Revisar la consola; cerrar el otro proceso en el 8887 o usar otro puerto con exec:java@server
Dos jugadores se ven como uno Mismo playerId (coincidencia de nombre y milisegundos) Reconectar uno de ellos

Detener el servidor

  • Si se inició desde la galería: cerrar la aplicación (no hay botón de detener).
  • Si se inició con Maven: Ctrl+C.