Ok, dann checken Sie zuallererst die Anzahl der laufenden Funktionen und die der sichtbaren Entities. Erhoeht sich eine davon von Level zu Level, oder bleiben sie gleich? Im ersten Fall steckt ein Bug in Ihrem Levelwechselcode.
Die Zahlen variieren stark, abhängig vom Level, aber ein grundsätzliches Ansteigen ist nicht zu beobachten. Welche Fehler wäre im Level-Wechsel-Vorgang denkbar? Level_Load entfernt alle Level-Entities und beendet dadurch alle verknüpfte Funktionen, wenn ich nicht irre, d.h. nach dem aufrufen von Level_Load darf danach kein Objekt mehr aktiv sein?
Ich verwende Ent_Morph auf das Sky-Entity-Set um den Himmel an jedes Level anzupassen, kann das etwas ausmachen?
Inwiefern mehrfach gerendert? Wenn eine View-Entity sichtbar ist, wird sie einmal gerendert? Ich verwende kein dynamisches Erstellen von View/Sky-Entities...
Views die nicht sichtbar sind (visible == off) können die performance auch nicht beeinträchtigen?
EDIT: Allgemein nutze ich ent_morph sehr häufig... wie steht es damit, kann das dazu führen, dass ungenutzte daten im speicher verbleiben?
View Entities werden beim Levelwechsel nicht entfernt. Wenn du also beim Levelstart View Entities per ent_createlayer() erzeugen würdest, dann könnte dies eine Ursache sein.
View Entities werden beim Levelwechsel nicht entfernt.
Frage: ich habe zum Teil statische view entities, die allerdings nur in einem Level zu sehen sind. Ich möchte sie nicht dynamisch erzeugen, allerdings soll das benutzte Model nicht immer im Speicher sein. Dann wäre es doch quasi optimal wenn ich sie mit Dummydaten initialisiere (2x2 Sprite oder so) und im entsprechenden Level mit ent_morph in das entsprechende Model umforme. Dann müsste ich doch quasi um Speicher zu sparen nach dem Level auf invisible setzen, mit ent_purge (entity); aus dem Speicher entfernen und dann wieder mit Dummydaten füttern. Oder?
Das Problem ist dass die view entity ein Avatar eines Models im 3D Space ist. Das eigtl Model wird durch die Definition in der WMB geladen. Da aber der Avatar dasselbe Model ist, würde ich nach dem Levelwechsel die Modeldaten immer noch im Speicher haben und das wären ca. 10 MB im worstcase.
Für den Videospeicher funktioniert das auf jedenfall - ich arbeite auch mit einem "Panel-Pool". Ich weiß jetzt nur nich genau, wie sich das mit dem Nexus verhält. Das aktuelle View Entity bleibt natürlich drin (zumindest wenn sie visible ist), aber was mit den zuvor gemorphten Model/Spritedaten im Nexus passiert, kann ich dir jetzt nicht 100%ig sagen... ich meine aber sie werden mit dem Levelwechsel entfernt. Müßte mal wieder einen Blick auf mein Debug Panel werfen, dann kann ichs dir sicher sagen. Hab zuletzt an anderen Problemen rumgedoktort.
Um View Entites aus dem Speicher zu schmeissen gehe ich eigentlich immer wie folgt vor: * Entity unsichtbar machen * ent_purge auf dies Entity anwenden