Skip to content

Sistemas

guidota edited this page May 9, 2019 · 2 revisions

Systems

Los sistemas tienen como responsabilidad procesar entidades, usando cierta lógica (acotada) aplicada a X componentes. Estos tienen un "Aspect" que nos indica a que entidades quiere procesar, es decir que componentes tiene o no, y en caso de cumplir con esa premisa, seran procesados.

Cliente

Animaciones

IdleAnimationSystem

  • Aspecto: Debe tener "Character" y "Heading". No debe tener Moving ni AttackAnimation.
  • Contexto: Las animaciones llevan la cuenta de un llamado "idleTime", que dependiendo de el momento en el que está, se usara para renderizar de alguna manera distinta, para asi simular una animacion de idle.
  • Responsabilidad: Se encarga que con el paso del tiempo ir actualizando este "idleTime" en las entidades.

MovementAnimationSystem

  • Aspecto: Debe tener "Character" y "Heading". No debe tener Moving ni AttackAnimation.
  • Responsabilidad: Avanzar el tiempo de las animaciones

Camara

CameraFocusSystem

  • Aspecto: Debe tener Focused y WorldPos
  • Responsabilidad: Mover las coordenadas de la camara para seguir al personaje principal.

CameraSystem

  • Responsabilidad: Crea las camaras (GUI y world), sabe hacer zoom.

Network

ClientSystem

  • Responsabilidad: Es el encargado de procesar y ejecutar Kryonet, actúa como listener y sabe enviar paquetes.

TimeSync

  • Responsabilidad: Sincronizar el tiempo local con el del servidor cada X segundos.

Physics

MovementProcessorSystem

  • Aspecto: Debe tener Focused, AOPhysics y WorldPos (personaje principal)
  • Responsabilidad: Prediccion y reconciliacion. Cuando el personaje tiene intenciones de moverse, predice el movimiento, y una vez recibida la respuesta del servidor, valida la prediccion, en caso de haber pifiado, corrige la posicion.

MovementSystem

  • Aspecto: Debe tener AOPhysics y WorldPos
  • Responsabilidad: Mueve las coordenadas (float, no int) de las entidades.

PhysicsAttackSystem

  • Aspecto: Debe tener AttackAnimation o Attack
  • Responsabilidad: Avanzar animacion de ataque, y actualizar el intervalo de golpe.

PlayerInputSystem

  • Aspecto: Debe tener Focused y AOPhysics
  • Responsabilidad: Chequea si hay intenciones de moverse (Lee las flechas o WASD)

Rendering

CoordinatesRenderingSystem

  • Aspecto: Debe tener Focused y WorldPos
  • Responsabilidad: Renderizar las coordenadas en la esquina de la pantalla

CharacterRenderingSystem

  • Aspecto: Debe tener Character, WorldPos, Body y Heading.
  • Responsabilidad: Renderizar a los personajes en la camara utilizada para el "world"

CharacterStatesRenderingSystem

  • Aspecto: Debe tener Character y WorldPos.
  • Responsabilidad: Renderiza los estados de un personaje. TODO: agregar estados

CombatRenderingSystem

  • Aspecto: Debe tener CombatMessage, Body y WorldPos.
  • Responsabilidad: Dibuja los mensajes de combate sobre el personaje (daños, fallos, mana recuperada)

DialogRenderingSystem

  • Aspecto: Dialog, Body y WorldPos
  • Responsabilidad: Renderizar los mensajes de las entities

FXsRenderingSystem

  • Aspecto: FX y WorldPos
  • Responsabilidad: Maneja los FXs y distintas animaciones (puede haber FXs repetidos) y los renderiza.

LightRenderingSystem

  • Aspecto: Focused
  • Responsabilidad: Dibuja la luz central y oscurece fuera del rango de vision.

MapLowerLayerRenderingSystem

  • Responsabilidad: Dibuja las capas previo a los personajes (terreno y animaciones)

MapUpperLayerRenderingSystem

  • Responsabilidad: Dibuja las capas posteriores a los personajes

NameRenderingSystem

  • Aspecto: Debe tener Character, WorldPos y Name
  • Responsabilidad: Dibujar los nombres

ObjectRenderingSystem

  • Aspecto: Debe tener Object y WorldPos
  • Responsabilidad: Renderiza los objetos en el suelo

ParticleRenderingSystem

  • Aspecto: Debe tener FX y WorldPos
  • Responsabilidad: Renderiza las particulas luego de renderizar personajes (como meditar)

StateRenderingSystem

  • Aspecto: Debe tener WorldPos y Immobile (por ahora)
  • Responsabilidad: Por ahora solo renderizar una P cuando estas paralizado o alguien de tu clan

TargetRenderingSystem

  • Aspecto: Debe tener Focused
  • Responsabilidad: Si has seleccionado un hechizo y estas por lanzar, dibuja el tile al cual va a dirigir el ataque en caso de hacer click

Servidor

Networking

FinisterraSystem

  • Responsabilidad: Maneja las conexiones mientras se esta en la pantalla de lobby o rooms.

FootprintSystem

  • Aspecto: Debe tener FootPrint y WorldPos
  • Responsabilidad: Borra las huellas que se dejaron luego de que pase el tiempo de vida

MeditateSystem

  • Aspecto: Debe tener Meditating y Mana
  • Responsabilidad: Se ejecuta cada un intervalo de tiempo, si recupero maná (probabilidad), notifica y manda un update al usuario.

RandomMovementSystem

  • Hace falta revisar, se uso para testing.
  • Aspecto: Debe tener RandomMovement
  • Responsabilidad: Mueve a una entidad en una direccion random

ServerSystem

  • Responsabilidad: Es el encargado de procesar y ejecutar Kryonet, actúa como listener y sabe enviar paquetes.

Get Starting

Requirements

Source Code

Reference

run

Graphics

balance

external documentation

Clone this wiki locally