sábado, 6 de julio de 2013

Nueva versión: PyBta 0.3.3 a descarga.


Al final de la página dejo el enlace a safecreative, donde se encuentra esta versión, para descargar.


Pues aquí sigo con mi idea, utópica, de tener una biblioteca que me permita, explorar, aprender y disfrutar, de este hobby que ya me acompaña durante bastante tiempo.

La idea para esta versión, a sido buscar más estabilidad y velocidad, sobre todo, en el modulo, escenas, que es el que más picado me tiene desde hace bastante. También he aprovechado el tiempo para testear la biblioteca en Windows y hacer que funcione de la misma manera que la veo funcionar en Ubuntu.


Y lo cierto es, que si que a cogido velocidad y estabilidad. Todos los ejemplos arrancan a 30 fotogramas por segundo, pero si entramos en “ejemplos/ejemplos.py” y cambiamos la linea:

pyBta.iniciar(titulo="Ejemplos pyBta 0.3.3", fps=30)

Por esta otra:

pyBta.iniciar(titulo="Ejemplos pyBta 0.3", fps=60)

 Aquí un par de ejemplos a 30 y a 60 fps.



Se observa como los ejemplos, basados en escenas, cogen una velocidad alta y son bastante estables.

Paso a contar la lista de los cambios realizados:

  • Retocada la carga de controles, para que se muestren de manera mas directa. También se mejora un poco la velocidad y la respuesta en el manejo de este módulo. 

    Ejemplo módulo de controles:


  • Divorcio, más repartición de vienes, con el módulo detector de colisiones. He portado todas las funciones, que me han parecido de verdadero interés, a un archivo que he guardado dentro de la carpeta herramientas. Todos los módulos que hacían uso del objeto, colisionador, excepto el módulo de escenas, pasan ahora a usar las funciones guardadas en este archivo.

  • Dentro del módulo, escenas, nace el objeto, controlDeChoques. Este objeto, es el encargado de detectar las colisiones generadas dentro de una escena. Usa el rectángulo y el círculo, como base para gestionar las colisiones. Un ente puede poseer varias de estas figuras en su interior y después se pueden usar, para detectar si dos entes están en contacto en tiempo de ejecución. 

  • A partir de esta versión, todas las respuestas a eventos y planes que se registren en una escena, serán notificadas dentro de la misma en tiempo de ejecución. De este modo se evitan sorpresas, desagradables. Se debe de tener en cuenta, que tanto el módulo eventos, como el módulo planificador, funcionan en hilos diferentes y en un principio emiten sus respuestas sin tener ningún tipo de control sobre lo que está pasando dentro del módulo, escenas o si es el momento más preciso para emitir una respuestas hacia este módulo. Para evitar este error, se fuerza al módulo, escenas, a notificar todos los planes y eventos pendientes justo en el momento indicado dentro de su propio bucle de control.
  • El objeto BtaEnte a cambiado, internamente, para esta nueva versión. Toda la interfaz para manejar animaciones, cargar imágenes, almacenar o eliminar grillas... han pasado a ser interruptores que se encienden, guardando la información necesaria para realizar la operación y es el bucle general del módulo, escenas, el encargado de realizarlas en el momento indicado. Esto evita todos los cuelgues que tenía este módulo en la anterior versión.

  • No más decorados de diferentes tipos que eviten la mezcla y la diversificación. Desde ahora, existe un solo tipo de decorado y este es siempre multicapa. Lo que cambia, son el tipo de capas que se van añadiendo en su interior. Estas, podrán estar detrás o delante de los BtaEntes y pueden ser de tipos diferentes. Además, estas pueden tener medidas distintas y también pueden tener diferentes velocidades de desplazamiento. Si se desea, se puede dejar al decorado gestionar por si mismo la velocidad de las capas, para generar un efecto parallax automático.
  • En esta versión dejo tres tipos de capas diferentes:
    • Capa simple imagen: carga una imagen en su interior.

    • Capa textura: carga una imagen y la reproduce como un mosaico por el resto de la capa.

    • Capa rutas: Genera rutas dentro de las capas y enlaza a los entes con estas, para hacer que sigan el camino prefijado.

      Ejemplo rutas:

  • Añadida la actividad, puntos de ruta. Esta funciona como la capa rutas pero de manera independiente al decorado.

  • El gestor de escenas a cambiado de nombre y de lugar. Ahora tan solo se llama gestor y se puede acceder a el desde el módulo, escenas.

  • Dentro de escenas, nace el submódulo, actualizadorDeCuatroFases. Este submódulo contiene los cuatro objetos encargados de gestionar una escena y a sus entes, en tiempo de ejecución. Estos cuatro objetos se mueven de manera independiente y cada uno está encargado de un grupo de trabajos en particular.

    • ActualizadorFaseUno: este se encarga de de las actualizaciones lógicas, respuesta a eventos, planes y colisiones, gestión de actividades...

    • ActualizadorFaseDos: Encargado de actualizar la parte gráfica de un ente y sus animaciones, si estos se encuentra dentro de la parte visible de la escena.

    • ActualizadosFaseTres: se encarga de dibujar sobre un lienzo en memoria, los resultados gráficos de una escena. Sera el bucle principal el que consuma esta imagen y la muestre en pantalla.

    • ActualizadorFaseCuatro: Se encarga de mantener los eventos generados dentro de una escena.

 Enlace: pyBta 0.3.3

Se me escapará alguna cosa, pero esta es la lista de cambios, más importantes, dentro de esta versión.

Cierto es, que ya tengo más ideas en mente para probar y hacer el loco con todo esto, pero por ahora hasta aquí, que si no, no acabo nunca.

No hay comentarios:

Publicar un comentario en la entrada