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
- En la galería pulsar Multijugador LAN (o
mvn compile javafx:run@game). - Elegir el personaje en el diálogo "Elige tu personaje".
- 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 |
- 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.