Bei einem 32-Bit-Spiel, wie die meisten Spiele aus verschiedenen Gründen, enthält selbst ein Spiel, das auf einer einseitigen DVD (4,3 GB) geliefert wird, bereits weitaus mehr Inhalte, die in einen 32-Bit-Adressraum eingepasst werden können. Und das setzt voraus, dass der Inhalt nicht auf Disc komprimiert ist, und lädt alles auf einmal in einen zusammenhängenden Adressraum-Ansatz. Viele Spiele werden jetzt auf mehreren DVDs geliefert und übertreffen leicht 10 GB Inhalt. Nach meiner Erfahrung auf dem PC schlägt die Zuweisung von 2 GB fehl, sobald sich Ihr Adressraum nähert. Dies wird zu einer harten Grenze, unabhängig davon, wie viel physischer Speicher der Benutzer hat.
Wenn Sie den Sprung auf 64-Bit machen, vorausgesetzt, Ihre Engine unterstützt ihn, verschwindet dieses harte Limit und wird durch ein effektives weiches Limit ersetzt. Sobald der Austausch des virtuellen Speichers beginnt, sinkt die Leistung des Spiels inakzeptabel. Wenn der Hauptprozess jemals warten muss, bis der Speicher wieder eingelagert wird, ruckelt und stört die Bildrate. Der virtuelle Speicher macht dies möglicherweise transparent, macht es jedoch nicht performant. Es braucht physisch Zeit, um diesen Speicher von der Festplatte zurückzubekommen, und während Sie warten, ist Ihr Spiel ins Stocken geraten. Es ist zwar möglich, das Problem zu umgehen (mit dem Vorabrufen von Speicherseiten im Hintergrund, von dem Sie wissen, dass Sie es bald benötigen), aber es ist ein schwieriger und unzuverlässiger Prozess, der dennoch Auswirkungen auf die Leistung hat.
Die Algorithmen des Betriebssystems zur Entscheidung, welche Seiten auf die Festplatte ausgetauscht werden sollen, kennen Ihr Spiel nicht und was es wahrscheinlich als nächstes benötigt. Darüber hinaus muss das Betriebssystem weiterhin andere Anwendungen unterstützen, die gleichzeitig mit Ihrem Spiel ausgeführt werden, sowie das Betriebssystem selbst. Das Anhalten, während Seiten von der Festplatte zurückgegeben werden, ist ein massiver Leistungseinbruch, und es spielt keine Rolle, ob es Ihr Spiel, eine andere Anwendung oder das Betriebssystem ist, das die Leistung des Spiels massiv beeinträchtigt.
Unabhängig davon, ob das Speicherlimit weich oder hart ist, ist der Speicher immer noch begrenzt. Aber selbst wenn Sie einfach alles auf einmal laden könnten, ohne eine Leistungsgrenze zu erreichen, gibt es immer noch Gründe, warum Sie nicht möchten:
Das Laden Ihres Spiels dauert viel länger als nötig, da es einfach alles zu Beginn lädt und es resident hält. Sie können ungefähr 150 MB / s von einer Festplatte laden, und selbst das schnellste DVD-Laufwerk (24x) wird mit 33 MB / s geladen. Das bedeutet, dass das Laden von Beispielinhalten mit 4,3 GB DVD mindestens 30 Sekunden und das Laden von DVD über 133 Sekunden dauert. Das sind unannehmbar lange Ladezeiten.
Ihr Spiel benötigt viel mehr Speicher als gerechtfertigt. Wenn nur 10% des Inhalts gleichzeitig sichtbar sind, ist es einfach verschwenderisch, den Rest resident zu halten, und verhindert, dass der Benutzer diesen Speicher für etwas anderes verwendet. Benutzer verzeihen Spiele im Allgemeinen nicht, für deren ordnungsgemäße Ausführung unverhältnismäßig viel Speicher erforderlich ist.
Durch das dynamische Streaming von Assets von der Festplatte, sei es im Hintergrund oder synchron während eines Ladebildschirms, können Sie den Arbeitsspeicher mit vernachlässigbarem Aufwand und nur einem geringen Nachteil für den Benutzer weitaus effizienter nutzen. Aber es ist eine Optimierung, und wie bei jeder anderen Optimierung nimmt die Rendite ab, je mehr Sie versuchen, sie anzuwenden. Irgendwann wird die Zunahme des Speicherbedarfs für die Aufbewahrung eines Objekts durch die Vorteile aufgewogen, die sich daraus ergeben, dass es dort vorhanden ist, ohne dass es geladen werden muss. Aber bis dieser Punkt erreicht ist, ist es besser, nur das zu laden, was Sie brauchen, wenn Sie es brauchen.