Kanvas Kanvas

Menu
Content
Por KyMAN. Creado a fecha 2021/12/30. Última modificación a fecha 2021/12/30.

Idea

La idea del proyecto es hacer un motor que se encargue de crear imágenes a partir de un Array de diccionarios con anidamiento que contiene las formas, gráficos, bloques y grupos que dan en sí la imagen final. Las imágenes se refrescarán cada X tiempo según configuración o según rendimiento del equipo o navegador donde se esté ejecutando. Con ello facilitará a nivel de proceso iteraciones y dinamismos con la imagen final, que será lo que vea el usuario, haciendo que con una simple variación de uno o más valores dentro del Array de diccionarios se permita visualizar este cambio, permitiendo con ello, movimientos y cualquier otro tipo de interactuación con el entorno.

El motor constará de un gestor de formas, objetos, etc. Unos serán por defecto y otros pueden ser añadidos por el usuario, de esta forma permitimos un sistema simplificado de formas y objetos, así como conjuntos que se repiten y así poder hacer reciclaje de objetos y elementos sin que el usuario tenga que hacer un sistema en esprofeso para ello. También constará de los eventos que permitan no solo interactuar al programador o a los elementos entre sí, sino también a los usuarios que consuman el producto final.

Todo ello se moverá en JSON con Arrays que contengan diccionarios u objetos. Los Arrays pueden tener anidados Arrays para hacer capas o bloques, y los objetos pueden tener hijos, por lo general es el atributo "childs". El orden de las capas se otorga al orden en que se encuentren en los Arrays, siendo los índices más bajos los que estén al fondo y los que tengan el índica más alto los que estén más al frente.

También ha de mencionarse el posicionamiento, que en el plano principal constará de 9 posiciones de inicio por el hecho de que estamos hablando de un entorno dinámico que muy posiblemente no tenga un tamaño preestablecido y que se adapte a la pantalla, variando si ésta varía, no siendo igual empezar a dibujar desde el centro que desde un lado u otro. Las posiciones se basan en el teclado numérico de un teclado normal de PC de 105 teclas, con los valores del 1 al 9. Es importante destacar que esto es para empezar el dibujado, a partir de ahí, todo se iniciará en el punto 0x0 desde el objeto, es decir, si un objeto se pone en la posición 3x5, el punto 0x0 de un elemento hijo será el punto 3x5 del padre, y si se anida otro objeto en el hijo, siendo el nieto del objeto maestro sería la suma de la posición del hijo y la del padre, y así sucesivamente. Por lo que hay que tener especial cuidado en las anidaciones, incluso la rotación y el efecto Alpha se heredan. Todo ello no impide que se pueda trabajar desde el objeto base y anidar con simples Array, lo que sería realmente agrupar, como sucede en el juego XGravity.

Las iteracciones humanas con el entorno se harán a partir de eventos sobre el objeto HTML CANVAS, por lo que ha de estar disponible cara el usuario sin que halla elementos por delante, si se monta un objeto por delante, éste impedirá que se interactúe con el objeto HTML CANVAS en la parte que éste ocupe. Los eventos recogen posición por lo que se pueden hacer rangos y analizar si se encuentra en una posición concreta o no, como por ejemplo, para hacer botones o interactuar como Shooter contra objetos en pantalla.

Finalmente, nos encontramos ante un entorno gráfico que intenta representar lo mismo en cualquier proporción y resolución, aunque halla recortes en los lados o extremos superiores e inferiores, así como variación de calidad por resolución. Para ello se basa en un entorno cuadrado que se conforma con un lado equivalente al lado más estrecho, es decir, si estamos en un entorno visual horizontal, el cuadrado se adaptará a la altura del mismo; mientras que si es un entorno vertical se adaptará al ancho, de esta forma, simplemente ha de extenderse la imagen o el procesado fuera del rango cuadrado, permitiendo que la parte importante, que es el cuadrado que centra la imagen sea completo. Con respecto a la resolución se utiliza un sistema de celdas que indica los puntos que tiene el dibujo (No confundir los puntos de dibujado que son áreas con un número X de píxeles con los propios píxels), lo que permite que en cualquier resolución salga el mismo dibujo puesto que el dibujo ocupará Y celdas o cuadrados de dibujo; y cada celda ocupará X píxeles de dibujo.

Con todo esto, se entiende que la idea es hacer un sistema muy ágil de interpretación del esquema de dibujo (Arrays y diccionarios), lo que daría lugar a que la complejidad de proceso sea el número de partículas (Imágenes, formas, etc.) y no los dinamismos ni las interactuaciones humanas sobre el entorno.

Files