77 lines
5.2 KiB
Markdown
Executable File
77 lines
5.2 KiB
Markdown
Executable File
[[post_data {
|
|
"author" : "KyMAN",
|
|
"since" : 20211230,
|
|
"version" : 20211230
|
|
}]]
|
|
# 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 [https://xgravity.k3y.pw/ 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.
|
|
|
|
[[html_data {
|
|
"title" : "Kanvas - Objetivos",
|
|
"url" : "https://kanvas.k3y.pw/es/doc/kanvas.idea.html",
|
|
"author" : "KyMAN",
|
|
"since" : 20211230,
|
|
"version" : 20211230,
|
|
"key_words" : "kanvas,canvas,kyman,2d,graphics,idea,planteamiento",
|
|
"description" : "La idea del proyecto Kanvas.",
|
|
"project" : "Kanvas",
|
|
"logo" : "https://kanvas.k3y.pw/images/kanvas.png"
|
|
}]]
|