jueves, 16 de mayo de 2013

Programando para Android - 4. La chispa

Ya que el protipo empieza a funcionar le he buscado alguna vuelta de tuerca para que no sea un plataformas tradicional, para que tenga una jugabilidad especial. De momento he hecho que el jugador pueda controlar la dirección de la gravedad con unos nuevos botones:


El primero rota 45º y el segundo -45º. Además si arrastras de un botón de rotación hacia el otro  rotas de golpe 180º.


La idea es diseñar los niveles de manera que solo se puedan superar usando adecuadamente los cambios de gravedad. Para limitar este superpoder habrá un número limitado de cambios disponibles que se pueden consultar en la parte inferior (G-Changes). Habrá que tomar decisiones de si vale la pena dar los 180 de golpe o ir por pasos, si hay que rotar en el aire, dar dos cambios seguidos de 180º para hacer una especie de salto largo...

El efecto físico que muestra el personaje cuando se cambia la gravedad es muy convincente y es bastante cómodo de controlar. Claro que al principio cuesta acostumbrarse a apretar izquierda para ir a la derecha cuando está boca abajo, pero ahí está parte de la gracia.

El problema ahora es que ha dejado de tener sentido diseñar las pantallas a base de bloques gordos. En la imagen de arriba se ve el personaje intentando andar en diagonal y el suelo le queda como un diente de sierra y no puede andar bien. Lo próximo tendrá que ser cambiar la creación del escenario y la gestión de las colisiones con el suelo y paredes para introducir unos mapas de este estilo suavizado:

Por tanto con este cambio deja de tener importancia el debate sobre si usar txt o png para guardar los mapas. Pero con suerte empezaremos otro: cómo debería almacenar la información para unos mapas redondeados como estos? Inicialmente voy a apostar por png optimizado. Este mapa concretamente tiene una resolución de 1000 por 700 px y ocupa unos 3kbytes. Otras opción podría ser usar algún formato vectorial, guardar líneas bezier con información de los vértices y curvaturas. Podría ser quizás el formato svg aunque he probado guardarlo y comprimir en zip y ocupa 1,7KB, que tampoco es tanto ahorro para los problemas que traería. Se aceptan sugerencias.

4 comentarios:

kpacha dijo...

wow! cómo piensas hacer para integrar el fondo en el escenario (y que la app detecte qué es pared/suelo)? a partir de ahí podemos ponernos a pensar la mejor forma de guardar los 'mapas'

Baterpruf dijo...

No voy a integrar ese png en el escenario. Lo usaré solo en la lógica para saber si se ha metido en la pared. ¿Preguntabas eso?

kpacha dijo...

bueno, preguntaba cómo pensabas interpretarlo.

y lo preguntaba pq el otro sistema se basaba en 'bloques' (algo así como un suelo 'discreto') mientras que ahora parece que pasas a un suelo 'continuo'

Baterpruf dijo...

Pues sí, ahora pretende ser suelo continuo que me parece más interesante con esta nueva física.

Así que tiene que cambiar el sistema de avance. Si encuentra una pequeña pendiente debería poder superarla, ahora mismo se pararía en seco.