Saltar al contenido

¿Cómo aumentar la velocidad de fotogramas (fps) en Python + Pygame?

Por fin después de mucho batallar ya dimos con la solución de esta incógnita que ciertos de nuestros usuarios de este sitio web han tenido. Si tienes algún detalle que aportar no dudes en dejar tu información.

Solución:

Deje que los eventos lleguen a usted con event.wait

¿Realmente necesitas procesar cada tick? Si no, usa pygame.event.wait para que su bucle de eventos solo se procese cuando entre un evento, y pygame.time.set_timer si necesita eventos periódicos como su SecondEvent.

Esto significa que no dibujará muchos cuadros durante los segundos en los que no se reciben eventos, pero está bien. El uso de event.wait disminuirá el uso de la CPU y le permitirá seguir respondiendo, y probablemente elimine la necesidad del time.wait que tiene allí.

No vuelvas a dibujar todo el tablero desde cero en cada marca

No haga que Room.render borre el fondo cada vez, lo que significa que luego tiene que pasar y volver a dibujar todo el tablero y todas las cartas. Haz eso una vez. Luego, no haga que las tarjetas se vuelvan a renderizar a menos que hayan cambiado de oscuridad o se estén moviendo.

Cuando las cartas se mueven, debería poder restaurar el fondo eliminando solo una parte del gráfico de fondo en lugar de todo.

Pasar una lista rectangular a display.update

Una vez que solo esté actualizando ciertas áreas, puede pasar esas áreas a display.update por lo que no tiene que actualizar toda la pantalla. Para ver un ejemplo, vea el código de Solarwolf y cómo marca los rectángulos sucios.

En los resultados de tu perfil:

Recientemente descubrí que solo debe actualizar las áreas de la pantalla que han cambiado, pero todavía no sé cómo se logró exactamente… ¿podría ser un gran problema de rendimiento?

Sí. display.update y Surface.blit se encuentran en la parte superior de los resultados de su perfil. Hiciste más de un millón de blits, en aproximadamente 5000 tics, lo que equivale a 200 blits cada tic.

Además, el sexto en los resultados de tu perfil es display.set_caption, que supongo que es la pantalla del contador de FPS en sí? A los 7 segundos de 157, este no es su principal punto de acceso, pero sigue siendo interesante saberlo.

Si guardas alguna sospecha y forma de reformar nuestro sección te invitamos añadir un exégesis y con placer lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *