also bei mir laggt es auch, wenn ich 10.000 sprites anzeigen lasse. die grafikkarte ist bei Graphics.update einfach überlastet, weil sie zu viele sprites auf einmal rendern muss. (denke das liegt an der schlechten programmierung von seiten enterbrains. es handelt sich schließlich nur um 2d grafiken. wieso sollte die da sonst so einbrechen? >>)

wenn ich allerdings das attribut visible auf false setze springt die fps von 0 auf 30. vermutlich wird das sprite dann beim rendern übersprungen.
-> immer visible = false setzen, wenn das sprite nicht sichtbar sein kann (außerhalb des sichtbaren bereiches oder verdeckt)
auch das verwenden von viewports verbessert die performance enorm, denn wenn sprites außerhalb liegen, müssen sie nicht komplett gerendert werden.
wenn das sprite komplett außerhalb des viewports liegt, sollte trotzdem visible = false verwendet werden. das ist nämlich noch immer schneller.
-> also unbedingt viewports benutzen!

das verwenden von blocktransfers anstelle von vielen sprites kann (!) eine lösung sein.
allerdings verlagerst du die rechenleistung dadurch nur von der grafikkarte zur cpu.
ein vorteil davon wäre jedoch, dass dieser transfer vermutlich nur einmal durchgeführt werden muss, während die grafikkarte bei jedem Graphic.update alles rendern muss.
also die gesammte map in ein bitmap zu kopieren wäre möglich aber würde sehr auf den arbeitsspeicher gehen.
(btw die original bitmap handelt alles in 21x16x3 = ca 1.000 sprites. wenn du die auflösung des fensters veränderst und den zur tilemap gehörigen viewport vertgrößerst, kannst du das sehr gut sehen.)

10.000 sprites sind bei weitem nicht nötig um eine tilemap zu erstellen. selbst komplexere tilemaps wie z.b mode7 oder ähnliches kommen mit unter 2000 zurecht. (zumindest benötigt mein 3d script ca 1.800 sprites)

bei diesen mengen ist jedoch nicht die anzahl der sprites das problem sondern eher, wie man mit ihnen umgeht.
in jedem update den z wert von allen sprites zu setzen ist natürlich sehr rechenlastig. man sollte diesen nur setzen wenn er wirklich verändert werden muss (z.b in dem moment, wo das sprite eine neue grafik anzeigen muss/einem neuen tile zugewiesen wird).