Guía de preguntas avanzadas

Obtengo errores en ingles al iniciar pilas ¿Que anda mal?

Si al ejecutar pilas, ves un mensaje cómo el siguiente:

X Error: RenderBadPicture (invalid Picture parameter) 163
Extension: 149 (RENDER)
Minor opcode: 8 (RenderComposite)
Resource id: 0x4a0000e

Es muy probable que se deba al adaptador de video. Una forma de solucionarlo es cambiar la linea de código:

pilas.iniciar()

por:

pilas.iniciar(usar_motor='qt')

El motivo de este problema, es que pilas usa una biblioteca llamada OpenGL, y algunos equipos no lo tienen disponible o con algunos detalles de configuración.

¿Que es OpenGL?, ¿Cómo se configura en mi equipo?

OpenGL es una biblioteca que usamos en pilas para que los gráficos sean mucho mas rápidos y fluidos. OpenGL utiliza aceleración de hardware y rutinas de optimización avanzadas.

El punto es, que tal vez tu equipo no lo soporte, o no esté correctamente configurado.

Para saber si tu equipo tiene soporte para opengl, es conveniente que ejecutes el comando:

glxinfo | grep rende

Si tu equipo tiene soporte para opengl, tendrías que ver un mensaje cómo el siguiente:

direct rendering: Yes
OpenGL renderer string: Quadro FX 570/PCI/SSE2

Luego, si no tienes soporte, puedes ejecutar el siguiente comando y volver a intentar:

sudo apt-get install freeglut3 freeglut3-dev

Obtengo errores de AttributeError por parte de pilas

El funcionamiento de pilas como módulo de python es un poquito especial... porque sentencias como pilas.actores no funcionarán a menos que antes escribas pilas.iniciar().

Por lo tanto, te recomiendo que en tus programas siempre comiences con un archivo que tenga algo como esto:

import pilas
pilas.iniciar()

es decir, tu programa principal tiene que importar pilas y luego inicializarlo. Recién ahí podrás usar el resto de los módulos de pilas.

¿Cómo puedo personalizar el dibujado de un actor?

Cada vez que se actualiza el bucle de juego se llama al método dibujar de cada actor.

Si quieres personalizar por completo la forma en que se dibuja un actor puedes redefinir el método dibujar y listo.

Para mas referencias puedes ver el método dibujar de la clase Actor o el método dibujar de la clase escena.Normal, que en lugar de pintar una imagen borra todo el fondo de pantalla.

¿A veces los sonidos no se reproducen?

sip... a veces los sonidos no se reproducen porque python los libera de memoria mientras están sonando.

Entonces, para solucionar el problema tienes que mantener viva la referencia al objeto Sonido cuando quieras reproducir algo. Por ejemplo:

Ejemplo incompleto:
 
def reproducir_sonido():
    mi_sonido_que_no_suena = pilas.sonidos.cargar("sonido.wav.")
    mi_sonido_que_no_suena.reproducir()

reproducir_sonido()
Ejemplo correcto:
 
sonido = None

def reproducir_sonido():
    sonido = pilas.sonidos.cargar("sonido.wav")
    sonido.reproducir()

reproducir_sonido()

¿Cual es la diferencia?, en el primer ejemplo el sonido no se reproducirá porque la referencia mi_sonido_que_no_suena se eliminará cuando termine de ejecutar la función reproducir_sonido, mientras que en el segundo la referencia sonido seguirá existiendo mientras el sonido esté reproduciéndose.

Tengo una consulta puntual, ¿quien me ayuda?

Tenemos un foro de mensajes en donde puedes preguntar lo que quieras sobre pilas, esta es la dirección web:

http://www.losersjuegos.com.ar/foro/viewforum.php?f=22