Hallo Andreas,

Zu deinen "out of memory" Problemen.

Ich hatte in meinem eigenen Projekt eine Zeit lang ähnliche Probleme. Tatsächlich lag das aber nicht an fehlerhaften Funktionen und Scripting-Komplexitäten, sondern an schlechtem Umgang mit Ressourcen. Die Abstürze kamen immer beim Laden von Leveln, teilweise seltsame E1513s, oder auch mal "out of memory". Ich hatte zu dem Zeitpunkt sehr viele Entities in meinen Levels (jeder Grashalm einzeln gepflanzt, viele unnötige Zier-Objekte ohne echten Sinn) und vor allem sehr viele unkomprimierte Texturen im Einsatz. Ein geladenes Level verbrauchte alleine schon mal an die 400 Megabyte im Speicher.

Ich habe das dann gelöst, indem ich zunächt alle Texturen und Grafiken komprimiert habe (DDS, auch für Modelle) und vor allem unnötige Texturen und Entites entfernt habe. Alle Gras-Modelle habe ich duch ein großes Modell ersetzt und damit die Entity-zahl im Level um 5/6 reduziert. Außerdem habe ich für mein gesamtes Spiel jetzt nur noch etwa 30 komprimierte Texturen, die allesamt in allen Levels wiederverwendet werden anstatt etwa 120, die teilweise nur für einzelne Objekte vorgesehen waren oder je nach Level variierten.

Seither läuft das Spiel nicht nur stabil, sondern auch sehr schnell, selbst mit erweiterten Shadereffekten und auch auf langsameren Rechnern. Abstürze habe ich nun keine mehr.

Ich würde dir also raten, zunächst zu optimieren und dadurch Speicher einzusparen. Danach lösen sich viele Probleme von alleine.

"Supercan" funktioniert übrigends ähnlich. Im Spiel sind nur recht wenige unterschiedliche Modelle und nur sehr wenige Texturen zu sehen. Die Levels sind auch recht klein gehalten. Durch guten Umgang mit Ressourcen gewinnt man letztendlich mehr als mit großer Texturen- und Modell-Vielfalt.

zu deiner Dialog-Funktion: Splitte sie einfach in zwei Funktionen. z.B. Dialogfunktion1 und Dialogfunktion2. Du solltest dir eben merken, welcher Dialog in welcher Funktion steckt.