Vielleicht hängt es wirklich von der Größe der Karte, aber das sollte kein Problem sein, auch mit einem Low-Level-Computer.
Das Problem mit großen Bildern ist, dass es eine Menge Zeit braucht, um alle Sachen neu zu zeichnen, so dass Sie eine unflexible "Karte" bekommen.
Aber ein echter Vorteil mit einem optimierten Bild (verwenden Sie convert() - Funktion und 16 Bit) sind die schnellen Blittings.
Ich arbeite mit großen Bildern auch auf einem vielleicht mittleren guten Computer und ich habe rund 150 FPS durch das Blitting von riesigen Bildern, die nur ~ 100 benötigen? MB RAM
image = image.convert()#video system has to be initialed
Der folgende Code erstellt ein Bild (5000 * 5000), zieht etwas darauf, (blitten dies den Bildschirm, füllt den Bildschirm) * 50-fache und am Ende sagt es, wie lange es dauert, um einen Blit und einen Flip zu machen.
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")
Danke für die schnelle Antwort. Ich denke für jetzt, bleibe ich bei der vorgerenderten Karte. Um zu vermeiden, die zusätzlichen Berechnungen zu versetzen und dann die Fliesen auf Geröll zu zeichnen. Meine Kartenbilder sind nur etwa 62kB groß. –