Estoy trabajando en un desplazamiento lateral 2D en PyGame. Para cada mapa usamos una textura (este es el tamaño real de la textura):
Luego cargamos la imagen con este código:
sprite = pygame.image.load("Maps/MapTesting.png")
sprite.convert()
sprite = pygame.transform.scale(sprite,
(sprite.get_width()*6, sprite.get_height()*6))
Como puede ver, la textura se explota 6 veces para crear la textura del mapa real. En promedio, esta textura es de aproximadamente 4500x800. Esta textura tiene que borrarse a la pantalla cada fotograma , porque toda la pantalla está sucia (gracias al desplazamiento lateral). Hacemos eso usando este código:
screen.blit(sprite, (0, 0),
(cameraposx, cameraposy, windowheight, windowwidth))
Y funciona. El problema es que es bastante lento: obtengo unos escasos 40 FPS en una PC poco decente, y eso sin que ocurra ninguna de las IA / objetos reales, mientras apuntamos a 60 FPS. ¿Cómo podemos acelerar esto?
Tenga en cuenta que el código anterior se desinfecta y se saca de contexto. El código completo se puede encontrar aquí: https://github.com/nightcracker/PyGG2
Y por último, pero no menos importante, aunque la imagen de arriba puede parecer de 8 bits, hay elementos en el juego que requieren más profundidad de bits.