Skip to content

Jugabilidad - Documentación Técnica

Esta documentación está dirigida a desarrolladores. Para información sobre el juego dirigida a jugadores, ver Jugabilidad. Para los hechizos disponibles, ver Hechizos.

Networking y Sincronización

Arquitectura de Red

El juego utiliza una arquitectura de servidor autoritativo donde el servidor tiene la última palabra sobre el estado del juego.

Tickrate y Timing

  • Tickrate del servidor: 50 Hz (cada 20 ms) — SERVER_CONFIG.TICK_INTERVAL_MS = 20.
  • Movimiento por tiles: 1 tile cada 200 ms a velocidad normal (STEP_DURATION_MS = 200, 10 ticks), escalado por el moveSpeed del entity.
  • Predicción + reconciliación: el cliente predice su propio movimiento y reconcilia con la confirmación del servidor. Ver Movimiento › detalle.
  • Sincronización por AOI: solo se sincronizan las entidades cercanas al jugador (Area of Interest), no toda la sala.

Mensajería Cliente-Servidor

Cliente → Servidor:

  • MOVE con direction mientras una tecla está presionada.
  • STOP_MOVE al soltar las teclas de movimiento.
  • ATTACK para realizar un ataque.
  • CAST_SPELL para lanzar un hechizo (con spellId y opcionalmente target).
  • TOGGLE_SPELL para prender/apagar auras toggle.
  • INTERACT_NPC para abrir vendor de items o de hechizos.
  • BUY_SPELL para aprender un hechizo en el maestro.
  • CHAT para enviar mensajes.
  • Otros comandos según se implementen.

Servidor → Cliente:

  • Estado sincronizado de jugadores y NPCs mediante Colyseus Schema.
  • Posiciones (x, y), estados y nombres.
  • Atributos finales (HP, Mana) incluyendo modificadores de items.

Sincronización de Atributos

  • Los atributos (HP, Mana) se sincronizan con los valores finales (incluyendo modificadores de items).
  • El servidor calcula los atributos finales en cada tick usando getFinalAttributes().
  • El cliente recibe estos valores y los muestra en el HUD.
  • No se sincronizan valores base: Solo los valores finales calculados.

Sincronización de Entidades

Jugadores

  • Cuando dos jugadores se conectan a la misma sala:
    • Cada uno ve al otro moverse en el mapa en tiempo real.
    • El servidor sincroniza las posiciones (x, y), estados y nombres mediante Colyseus Schema.
    • Los atributos (HP, Mana) se sincronizan con los valores finales (incluyendo modificadores de items).
  • Las posiciones se sincronizan mediante Colyseus Schema.
  • El heading (dirección) se actualiza según el último movimiento válido.

NPCs

  • Los templates viven en shared/data/npcs.ts (fuente única de verdad); el placement por mapa va en shared/maps/*.json.
  • Los NPCs hostiles tienen IA completa: aggro, pathfinding A*, persecución y combate (melee y spells). Ver la guía del jugador en NPCs y criaturas y, para devs, la sección de AI en la documentación del servidor.
  • Los NPCs amigables (vendedores, maestros, sacerdote, reclutadores, reyes) responden a la interacción por click.
  • Se sincronizan mediante Colyseus Schema igual que los jugadores, filtrados por AOI.

Colyseus Schema

El juego utiliza Colyseus Schema para la sincronización eficiente de estado:

  • Ventajas: Solo se envían los cambios (delta compression).
  • Estructura: Cada entidad tiene su propio Schema que se sincroniza automáticamente.
  • Rendimiento: Optimizado para minimizar el tráfico de red.

Wiki del jugador de Aureum.