Hallo,
wir arbeiten mit mehreren Spritegroups worin die Objekte verteilt sind auf unserem ganzen Level. Da wir eine Clockrate von 30fps haben wird somit das Bild relativ oft ( und auch ausreichend oft) upgedated. Jedoch wird hierbei immer das komplette Level upgedated, sprich auch Bereich der am Screen noch nicht angezeigt wird. Dies ist sehr vermutlich der Auslöser zu geringen FPS.
Gibt es denn eine Möglichkeit nur jene Objekte zu aktualisieren welche sich auch im Sichtbereich befinden? Wir benutzen bereits pygame.display.update() und unsere Spritegroups beziehen sich immer auf das komplette Level.
Würden uns über Tipps freuen!
LG
Pygame - Update der Spritegroup nur von den sichtbaren Objekten
@flooojava: Was heisst ”aktualisiert”? Das ihr die Sprites auf dem riesigen Hintergrundbild blittet und dann davon nur den den sichtbaren Ausschnitt ”ausschneidet” und anzeigt? Das wäre dann wohl die falsche Reihenfolge.
Ich glaube du meinst das richtige, ja.
Wir haben quasi ein Level mit 4000x3000 Pixel. Auf dem kompletten Level befinden sich bereits Objekte. Nun wird immer der komplette Level geupdated, obwohl wir ja nur einen Ausschnitt davon sehen (in unserem Fall 800x600).
Dementsprechend updaten wir eigentlich "sinnlos" auch den Rest derzeit -> Dies läuft vermutlich auf das Problem mit den FPS hinaus.
Wie sieht denn die andere Möglichkeit aus dies zu realisieren sofern diese Reihenfolge die falsche ist. (zumindest für das Raspberry Pi)
Oder kann irgendwie mit HWSURFACE oder OPENGL mittels pygame.display.set_mode() irgendwas verbessert werden? Oder funktioniert mit RenderUpdate anstatt SpriteGroup irgendwas, sodass diese dann nur die "neuen" upgedated werden?
Wir haben quasi ein Level mit 4000x3000 Pixel. Auf dem kompletten Level befinden sich bereits Objekte. Nun wird immer der komplette Level geupdated, obwohl wir ja nur einen Ausschnitt davon sehen (in unserem Fall 800x600).
Dementsprechend updaten wir eigentlich "sinnlos" auch den Rest derzeit -> Dies läuft vermutlich auf das Problem mit den FPS hinaus.
Wie sieht denn die andere Möglichkeit aus dies zu realisieren sofern diese Reihenfolge die falsche ist. (zumindest für das Raspberry Pi)
Oder kann irgendwie mit HWSURFACE oder OPENGL mittels pygame.display.set_mode() irgendwas verbessert werden? Oder funktioniert mit RenderUpdate anstatt SpriteGroup irgendwas, sodass diese dann nur die "neuen" upgedated werden?
@flooojava: Na man schneidet sinnvollerweise erst den sichtbaren Bereich des Hintergrunds aus und blittet *da* drauf dann die sichtbaren Sprites.