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