jueves, 27 de febrero de 2014

Cocos2dx (Conceptos básicos I)

Categoría: Cocos2dx

Nivel: Básico


Antes de comenzar a desarrollar hace falta conocer algunos conceptos básicos sobre la arquitectura del scene graph y sistemas de coordenadas usados por cocos2dx, que en términos generales es similar a los usados por otros motores de juegos.

Un scene graph básicamente es una colección de nodos en estructura de árbol o grafo, esta es la forma en la que cocos2dx y otros motores gestionan los objetos en una escena. De forma general una escena contiene una o varias capas y cada capa contiene uno o varios nodos.


Sistema de coordenadas:

Cocos2dx es un motor de juegos en dos dimensiones que hace uso del conocido sistema de coordenadas cartesianas con 2 ejes (x e y).

Las librerías OpenGL y DirectX coinciden en la representación de las coordenadas X e Y, actualmente cocos2dx está basado solo en OpenGL de modo que para que en una pantalla se pueda establecer un punto sin ningún tipo de transformación siguiendo el sistema de coordenadas, la pantalla deberá estar en el cuadrante superior derecho de la gráfica, con lo cual la coordenada (0,0) queda en la esquina inferior izquierda de la pantalla coincidiendo con el centro del sistema de coordenadas como se muestra en la siguiente imagen:

De esta forma, cualquier posición en el espacio visual de la pantalla estará formado por las componentes x e y, con un numero positivo.


Anchor Point:

El anchor point o punto de anclaje, es el punto de referencia usado para establecer la posición de un elemento. La magnitud para definirlo varía entre los diferentes motores o librerías de gráficos, en cocos2dx se hace uso de una coordenada escalar relativa a la esquina inferior izquierda del elemento, de este modo la coordenada (0.5, 0.5) establecerá el anchor point en el centro del elemento.


Nodos:

En términos generales, un nodo es un nexo de unión con otros nodos formando en conjunto un grafo o una estructura en forma de árbol en la cual los nodos hijos comparten las mismas características de los padres. Un nodo puede contener varios hijos, pero un hijo solo puede contener un único nodo padre.

En otros motores de juegos, además de los nodos, existen entidades, esto requiere una arquitectura basada en la composición para los elementos del scene graph, en cocos2dx no existen entidades, la arquitectura está basada en la herencia, de esta forma todos los elementos del scene graph son nodos o clases que heredan de ellos.

Los nodos contienen propiedades relacionadas con el scene graph pero no son elementos gráficos, esto no quiere decir que no dispongan de dimensiones, solo significa que no es renderizado en pantalla. Algunas de las propiedades de un nodo son las dimensiones, posición, rotación, escalado, visibilidad, anchor point, etc. Además, pueden tener otros nodos como hijos formando el grafo o estructura en forma de árbol que conforma el scene graph.

Otras características de los nodos es que pueden programar retrollamadas periódicas (funciones Callback) y ejecutar acciones.


Sprites:

Un sprite (traducido como duende, hada o trasgo) es un elemento gráfico conteniendo una imagen o una parte de ella para ser renderizada en pantalla, generalmente se hace uso del formato de imagen png como fuente del sprite por su reducido tamaño y el uso de transparencia.

Aunque es posible asignar a un sprite una imagen con un único elemento (por ejemplo un personaje), en la práctica es muy común agrupar múltiples elementos en una imagen, lo que se conoce con el nombre sprite sheet (hoja de sprites), en las hojas de sprites se encuentran desde elementos estáticos hasta completas animaciones que pueden ser establecidas en el sprite mediante un área de recorte. En la página spritedatabase se pueden ver algunos ejemplos de sprite sheets.

Los sprites son elementos del scene graph, por lo tanto en cocos2dx heredan de un nodo y contienen todas sus propiedades. Un dato a tener en cuenta al trabajar con sprites es que el anchor point en cocos2dx reside por defecto en el centro del sprite (0.5, 0.5), de este modo la posición del sprite será relativa a su centro mientras no sea modificado.


Hasta aquí la primera parte de los conceptos básicos.

Saludos y… "a fluzear"

No hay comentarios:

Publicar un comentario