Wenn ich mich dazu entscheide zwei Sprachen in einem Programm zu verwenden dann meist weil ich meinen Kern in einer kompilierten Hochsprache (wie z.B. C++, Java oder C#) schreibe… und Scriptanteile die zur Laufzeit neu geladen und interpretiert werden können in einer anderen Sprache belasse, die ggf. auch interpretiert werden kann. Da kommen dann oft Sprachen wie Lua, Ruby oder - Gott bewahre - JavaScript ins Spiel. Warum macht man das? Weil man flexible Änderungen ermöglichen will die nicht immer zur Neukompilation (quasi Neuerstellung der Programms) führen sollen und natürlich auch für Mods.
Für dynamischen Anteil außerhalb des Programmkerns muss man keine Scriptsprache nehmen. Es gibt durchaus die Möglichkeiten bei C+ Sourcen Just In Time (JIT) zu kompilieren. Interpretierte Skripte haben dadurch, dass sie live im Spiel gelesen und interpretiert werden natürlich den Nachteil, dass sie langsamer sind, weil sie erst von einem Interpreter in Befehle umgesetzt werden müssen, während C++ Programme logischerweise schon in Maschinensprache vorliegen (C# und Java Programme werden in ein Zwischenformat kompiliert welches dann von den entsprechenden Runtimes übersetzt wird… ist definitiv schneller als direktes Interpretieren).
Was Argumentationen wie das Verteilen von Objekten durch den Speicher angeht… ja… das ist ein bisschen auf der Detailebene. Wenn man quer durch den RAM muss kostet das Zeit… aber nicht so viel wie beschissene Laufzeiten oder eine fragmentierte HDD. Generell ist die Logik, dass im Speicher nebeneinanderliegende Objekte schneller zugreifbar sind als durch Adresssprünge voneinander gentrennte. Menschen wie ich ärgern Informatikstudenten immer mit der Frage warum eine Liste auf Array-Basis besser ist als eine durch den Speicher verkettete Liste - im Grunde weil bei der ArrayList alle Items nebeneinander im Speicher liegen obwohl bestimmte Operationen von der Laufzeit in der verketteten Liste schneller sind. Das sollte man aber nicht generell auf alles anwenden Man bewegt sich hier im Detailbereich.
Warum das Lesen von Spielständen so lange dauert hängt glaube ich gar nicht so sehr mit dem Spielstand zusammen, sondern mit den Daten und der Umgebung, die aus dem Spielstand abgeleitet werden. Das Spiel suggeriert dir, dass es nur einen Spielstand lädt… du weißt aber nicht wie das Laden eines Spielstandes mit dem Speicher umgeht. Sagen wir z.B. bei einer komplett geladenen 3d Umgebung mit allen aktuellen Objekten lädst du einen Spielstand mit einem vollständig anderen Status. Um das sauber zu machen wummst man alle Daten aus dem Speicher und baut die Spielumgebung komplett neu auf - also quasi das was sonst passiert während du 2-3 Schritte durch die Umgebung machst. Die Daten, die sich in einem Spielstand befinden sind ja im erster Linie eine Ableitung des aktuellen Spielzustandes und grade dann wenn wir über 3d Spiele reden wo mal eben ein paar 100 KIs in deiner Umgebung mit einem Zustand gesichert sind, der mal eben widerhergestellt werden muss, kommen wir in ein komplexes Muster wo das komplette Spiel ggf. entladen werden muss.
Auch hier: denkt PARETO… 80% der Umsetzung sind mit 20% Aufwand / Komplexität zu machen… das was fehlt ist dann der harte Scheiß. Wenn Vorausgesetzt wird, dass das Spiel nach dem Laden nahtlos fortgesetzt wird, muss da bei heutigen Games schon einiges passieren. Dazu kommt, dass man natürlich die Engine befüttern muss.
Ich finde es eigentlich fast schon dreist Engines als Bloatware zu bezeichnen. Meiner Meinung nach steckt da eigentlich die hohe Programmierkunst drin. Ohne Engines hätten wir bei Weitem nicht die Masse an Spielen. Klar gibts auch Menschen wie Jeff Vogel die seit 30 Jahren Indy-RPGs im Solo-Modus raushauen. Aber für die großen Produktionen von denen hier gesprochen wird gehts eben nicht ohne koordiniertes Teamwork. Da liegt der Anspruch sehr stark im Organisatorischem.
Anmerkung: Vieles sind „Vermutungen“ - ich arbeite nicht im Spielebereich. Ich bin leitender Softwarearchitekt für Business Applikationen. Da es sich hier um Programmierung handelt kann ich aber ein paar Parallelen ableiten. Menschen aus der jeweiligen Branche können mich gerne korrigieren