Tal vez realmente dependa del tamaño del mapa, pero esto no debería ser un problema incluso con un equipo de bajo nivel.
El problema con las imágenes grandes es que lleva mucho tiempo volver a dibujar todas las cosas en él para que obtenga un "mapa" inflexible.
Pero una ventaja real con una imagen optimizada (use convert() - function y 16 bit) son los blittings rápidos.
Yo también trabajo con imágenes grandes en una computadora medianamente buena y tengo alrededor de 150 FPS formando imágenes enormes que requieren solo ~ 100? MB de RAM
image = image.convert()#video system has to be initialed
El siguiente código crea una imagen (5000 * 5000), dibuja algo en él, (blit esto a la pantalla, ocupa toda la pantalla) * 50 veces y al final le dice el tiempo que tomó hacer un blit y un flip.
def draw(dr,image,count,radius,r):
for i in range(0,5000,5000//count):
for j in range(0,5000,5000//count):
dr.circle(image,(r.randint(0,255),r.randint(0,255),r.randint(0,255)),[i,j],radius,0)
def geschw_test(screen,image,p):
t1 = p.time.get_ticks()
screen.blit(image,(-100,-100))
p.display.flip()
return p.time.get_ticks() - t1
import pygame as p
import random as r
p.init()
image = p.Surface([5000,5000])
image.fill((255,255,255))
image.set_colorkey((255,255,255))
screen = p.display.set_mode([1440,900],p.SWSURFACE,16)
image = image.convert()#extremely efficient
screen.fill((70,200,70))
draw(p.draw,image,65,50,r)#draw on surface
zahler = 0
anz = 20
speed_arr = []
while zahler < anz:
zahler += 1
screen.fill((0,0,0))
speed_arr.append(geschw_test(screen,image,p))
p.quit()
speed = 0
for i in speed_arr:
speed += i
print(round(speed/anz,1),"miliseconds per blit with flip")
Gracias por la respuesta rápida. Creo que por ahora, voy a seguir con el mapa pre-renderizado. Para evitar los cálculos adicionales para compensar y luego dibujar las fichas en pedregal. Mis imágenes de mapa solo tienen unos 62kB. –