miércoles, 17 de diciembre de 2014

PuZZ & UmlEditor

Puzz HTML5

Puzz es un prototipo de juego para niños desarrollado con HTML5 y canvas.

Abrir en otra ventana

 

Editor de Casos de Uso (canvas)

UML es un prototipo de editor de casos y aplicación para tabletas de uso desarrollado con HTML5, canvas e IndexedDB para almacenar diagramas y actores y casos utilizados. Implementa además la funcionalidad de hacer y deshacer.

Abrir en otra ventana

 

XaLaTaX (Webgl)

XaLaTax es un prototipo de juego (Engine) desarrollado con HTML5 y WebGL que es capaz de cargar los mapas generados por PolMapEditor.

Abrir en otra ventana


Mapa.txt


# =====================================================
# Level/Map Properties section
# =====================================================
Level
EditDate = 23/01/2015 12:33:42
Designer = pos=530,251;zoom=100;layer=1
Properties = Screen.Size=800,480#World.Bounds=0,0,5000,480#
Bookmarks =
Level

# =====================================================
# Resources/TileDescriptors/Animations
# =====================================================
Resources
Id=3;Location=../img/Data.png
Id=2;Location=../img/Mountains.png
Id=1;Location=../img/Colums.png
Id=4;Location=../img/Ground.png
Id=5;Location=../img/Nebulosa.png
Resources
Resources#TileDescriptors
Name = Numeros;IdResource=3;Source=0,0,512,512;W=128;H=128
Name = NUMERO#067;IdResource=3;Source=141,123,231,141;W=231;H=141
Name = DATA.PNG#010;IdResource=3;Source=128,256,128,128;W=128;H=128
Name = Mountains.png#0001;IdResource=2;Source=0,0,512,64;W=512;H=64
Name = Colums.png#0001;IdResource=1;Source=0,0,64,64;W=64;H=64
Name = Ground.png#0001;IdResource=4;Source=0,0,128,128;W=128;H=128
Name = Nebulosa.png#0001;IdResource=5;Source=0,0,100,200;W=100;H=200
Resources#TileDescriptors

# =====================================================
# Layer declaration section
# =====================================================
LayerDeclaration
Game_Entities = Type=EntityStateControler;Display=True;Locked=False;Opacity=100;Properties=
Points_&_Shapes = Type=VectorStateControler;Display=False;Locked=False;Opacity=100;Properties=
LayerDeclaration

# =====================================================
# Layer definition sections
# =====================================================
LayerDefinition_Game_Entities
LayerDefinition_Game_Entities#Objects
Object1 = Id=AutoId_1;Class=;tsName=Ground.png#0001;Width=5020;Height=284;Pos=-3,294;Z=0;Properties=Wrap=FlipX#Rotate=15#ScaleX=10#ScaleY=2#
Object2 = Id=AutoId_181;Class=;tsName=Mountains.png#0001;Width=3049;Height=305;Pos=2001,0;Z=1;Properties=Locked=True#
Object3 = Id=AutoId_1;Class=;tsName=Mountains.png#0001;Width=2416;Height=305;Pos=0,0;Z=2;Properties=Locked=True#
Object4 = Id=AutoId_1;Class=;tsName=Colums.png#0001;Width=128;Height=134;Pos=1557,304;Z=3;Properties=
Object5 = Id=AutoId_45;Class=;tsName=Colums.png#0001;Width=94;Height=145;Pos=1061,296;Z=4;Properties=
Object6 = Id=AutoId_46;Class=Tile;tsName=Numeros;Width=130;Height=112;Pos=1324,269;Z=5;Properties=
Object7 = Id=AutoId_1;Class=;tsName=DATA.PNG#010;Width=114;Height=233;Pos=174,182;Z=6;Properties=
Object9 = Id=AutoId_24;Class=;tsName=Nebulosa.png#0001;Width=106;Height=456;Pos=170,180;Z=8;Properties=
Object10 = Id=AutoId_24;Class=;tsName=Nebulosa.png#0001;Width=106;Height=456;Pos=110,100;Z=8;Properties=
Object8 = Id=AutoId_2;Class=;tsName=NUMERO#067;Width=354;Height=147;Pos=256,279;Z=7;Properties=
Object11 = Id=AutoId_26;Class=;tsName=Nebulosa.png#0001;Width=1489;Height=249;Pos=1521,49;Z=8;Properties=Wrap=FlipX#ScaleX=0.5#ScaleY=0.5#Rotate=0
Object9 = Id=AutoId_25;Class=;tsName=Nebulosa.png#0001;Width=489;Height=449;Pos=521,49;Z=8;Properties=Wrap=FlipX#ScaleX=1.5#ScaleY=1.5#Rotate=15


LayerDefinition_Game_Entities#Objects
LayerDefinition_Game_Entities
LayerDefinition_Points_&_Shapes
Objects = Id=;T=1;Class=Rectangle;Pos=128,128;Z=0;Size=384,128;Properties=|Id=;T=0;Class=Point;Pos=0,0;Z=0;Type=0;Properties=R=32#|Id=;T=2;Class=PolyLine;Points=80,400,208,320,448,320,624,400,;Z=0;Properties=Color=red#|
LayerDefinition_Points_&_Shapes


 


Charts (Canvas)


Generación de gráficos con HTML5 canvas

Abrir en otra ventana

viernes, 3 de enero de 2014

Collision Grid - Layer

En esta entrada voy a detallar la funcionalidad de la capa Grid o de colisiones.

A veces es necesario contar con una capa en la que podamos indicar qué partes del mapa son transitables por nuestro personaje, qué tipo de suelo es, si existe un pared u obstáculo que nos impide el paso, etc.

PolMapEditor permite especificar el tamaño de las celdas que forman la rejilla estableciendo la variable Design.Grid que hemos visto en anteriores entradas. Permite además la asignación de enteros a cada celda.

Crear una nueva capa

En esta imagen se puede ver como añadir una capa de este tipo a nuestro mapa.

image

Se puede cambiar entre el modo marcador, creación, borrado y selección por medio de la barra de herramientas. Además existe la posibilidad de utilizar la selección de celdas adyacentes que compartan el mismo valor y la herramienta de relleno.

image

Teclas de acceso rápido

A continuación se muestra la lista de teclas y combinaciones para realizar algunas acciones habituales:

  • Flecha izquierda - Desplaza el visor hacía la izquierda.
  • Flecha derecha - Desplaza el visor hacía la derecha.
  • Flecha arriba - Desplaza el visor hacía arriba
  • Flecha abajo - Desplaza el visos hacía hacía abajo
  • Flecha izquierda - Desplaza el visos hacía la izquierda
  • Shift derecho – Posibilita selección múltiple y duplicar cuando se arrastran celdas.
  • Supr - Elimina los elementos seleccionados
  • Mas (+) – Incrementa el valor de las celdas seleccionadas.
  • Menos (-) - decrementa el valor de las celdas seleccionadas.

Formato de los datos

La información almacenada por celda se compone de tres valores correspondientes a las coordenadas x e y de la esquina superior de la celda y su valor correspondiente.

Es posible establecer propiedades adicionales para cada celda. Estos valores estarán en Properties separados por punto y coma (;) donde la parte anterior al primer igual (=) es el identificador de la celda (coordenadas x e y) y la posterior una lista de pares clave, valor separada por #".

image

# =====================================================
# Layer declaration section
# =====================================================
LayerDeclaration
Collision_Layer = Type=GridStateControler;Display=True;Locked=False;Opacity=100;Properties=
LayerDeclaration

# =====================================================
# Layer definition sections
# =====================================================
LayerDefinition_Collision_Layer
Data = -320,-256,7,-288,-256,2,-256,-256,1,-224,-256,1,
Properties = -320 -256=Value=Exit#;
LayerDefinition_Collision_Layer

 


Video


Aquí os dejo un video para que os podáis hacer una idea de la funcionalidad.



Hasta otra entrega, saludos

jueves, 2 de enero de 2014

Graph - Layer

En esta entrada voy a detallar la funcionalidad de la capa Graph.

En el diseño de mapas es útil contar con una forma de establecer puntos concretos en el mapa. Estos se pueden utilizar para desencadenar determinados eventos, indicar puntos de restauración, entradas a cámaras secretas, etc. Además de para definir grafos para utilizar algoritmos de búsquedas como el A-Star y sus variantes. Esta capa permite precisamente eso: crear puntos y sus posibles conexiones.

 

Crear una nueva capa

En esta imagen se puede ver como añadir una capa de este tipo a nuestro mapa.

image

Aquí podemos ver un mapa por donde se desenvuelve del famoso héroe Glypy. Se aprecian los nodos y las líneas que los unen y que en este caso determinan el camino que utilizarán los enemigos: 

image

Se puede cambiar entre el modo marcador, creación de nodos, borrado y selección por medio de la barra de herramientas. Además de dos utilidades relacionadas con el enlace de nodos. Enlazar con el anterior nodo y autoenlace a la hora de la creación de nodos.

image

Teclas de acceso rápido

A continuación se muestra la lista de teclas y combinaciones para realizar algunas acciones habituales:

  • Flecha izquierda - Desplaza el visor hacía la izquierda.
  • Flecha derecha - Desplaza el visor hacía la derecha.
  • Flecha arriba - Desplaza el visor hacía arriba
  • Flecha abajo - Desplaza el visos hacía hacía abajo
  • Flecha izquierda - Desplaza el visos hacía la izquierda
  • Ctrl derecho + Flecha izquierda - Desplaza la selección al objeto anterior.
  • Ctrl derecho + Flecha derecha - Desplaza la selección al objeto siguiente.
  • Shift derecho + click derecho – Posibilita selección múltiple.
  • Supr - Elimina los elementos seleccionados
  • F7 – Cambia el modo de enlace. Cuando está activado automáticamente se enlazan los nuevos nodos con el anterior.
  • + – Enlaza el nodo seleccionado con el anterior.

Formato de los datos

El formato de los puntos y de las líneas se se almacenan de la siguiente forma:

# =====================================================
# Layer declaration section
# =====================================================
LayerDeclaration
  Graph_Layer = Type=GraphStateControler;Display=True;Locked=False;Opacity=100;Properties=Design.Grid=16,32,1#
LayerDeclaration
# =====================================================
# Layer definition sections
# =====================================================
LayerDefinition_Graph_Layer
Nodes = 807,786,1152,768,1456,704,1664,672,1920,768,1748,848,2001,886,1997,652,
Edges = 1456,704,1456,704,1664,672,1664,672,1920,768,1920,768,1748,848,1920,768,2001,886,1920,768,1997,652,
Edges2 = 0,1,1,2,2,3,3,4,4,5,4,6,4,7,
LayerDefinition_Graph_Layer


  • Nodes : Pares de posición x, posición y
  • Edges : Cuatro valores correspondientes a las coordenadas de los nodos enlazados.
  • Edges2 : Pares correspondientes a los índices de los nodos enlazados.

Configuración


Esta capa admite la configuración del tamaño de la rejilla

La clave es Design.Grid y el valor ancho,alto,divisiones. Por ejemplo 16,16,2 creará puntos de alineación cada 16 pixeles horizontales y verticales y las líneas de la rejilla cada 2, es decir cada 32 pixeles.

Video


Aquí os dejo un video para que os podáis hacer una idea de la funcionalidad.

 



 

Hasta otra entrega, saludos