Per un gioco a 32 bit, poiché la maggior parte dei giochi è per una serie di ragioni, anche un gioco che viene fornito su un DVD a una sola faccia (4,3 GB) ha già molti più contenuti che possono essere inseriti in uno spazio di indirizzi a 32 bit. E questo presuppone che il contenuto non sia compresso su disco e, in modo ottimale, caricare tutto in una volta in un approccio allo spazio degli indirizzi contiguo. Molti giochi ora arrivano su più DVD, superando facilmente i 10 GB di contenuto. Nella mia esperienza su PC, una volta che lo spazio degli indirizzi si avvicina a allocazioni da 2 GB inizieranno a fallire e questo diventa un limite rigido, indipendentemente dalla quantità di memoria fisica dell'utente.
Se fai il salto a 64 bit, supponendo che il tuo motore lo supporti, quel limite rigido scompare, solo per essere sostituito da un limite morbido effettivo - non appena inizia lo scambio di memoria virtuale, le prestazioni del gioco diminuiranno inaccettabile. Se il processo principale deve mai attendere il rientro della memoria, la frequenza dei fotogrammi balbetterà e si guasterà. La memoria virtuale potrebbe renderlo trasparente, ma non renderlo performante. Richiede fisicamente tempo per recuperare quella memoria dal disco e, mentre aspetti, il gioco si è bloccato. Sebbene sia possibile aggirare (con il prelievo in background delle pagine di memoria che sai che ti serviranno presto), è un processo difficile e inaffidabile e avrà ancora implicazioni sulle prestazioni.
Gli algoritmi del sistema operativo per decidere quali pagine scambiare su disco non hanno alcuna conoscenza del tuo gioco e di cosa probabilmente avrà bisogno in seguito. Inoltre, il sistema operativo deve ancora supportare altre applicazioni in esecuzione contemporaneamente al gioco, così come il sistema operativo stesso. Dover bloccarsi mentre le pagine vengono restituite dal disco è un enorme successo di prestazioni e non importa se è il tuo gioco, un'altra applicazione o il sistema operativo che lo incorre, le prestazioni del gioco ne risentiranno enormemente.
Quindi, indipendentemente dal fatto che il limite di memoria sia morbido o rigido, la memoria è ancora limitata. Ma anche se potessi semplicemente caricare tutto in una volta, senza colpire un limite di prestazioni, ci sono ancora motivi per cui non vorresti:
Il caricamento del tuo gioco richiede molto più tempo e passa a uno stato interattivo rispetto a quello necessario, perché carica semplicemente tutto all'inizio e lo mantiene residente. È possibile caricare circa 150 MB / sec da un disco rigido e persino l'unità DVD più veloce (24x) viene caricata a 33 MB / sec. Ciò significa che l'esempio di 4,3 GB di contenuto DVD impiegherà almeno 30 secondi per caricare dall'HDD e oltre 133 secondi per caricare dal DVD. Questi sono tempi di caricamento inaccettabilmente lunghi.
Il tuo gioco richiede molta più memoria di quanto sia giustificato. Se è visibile solo il 10% del contenuto alla volta, trattenere il resto del residente è semplicemente uno spreco e impedisce all'utente di utilizzare quella memoria per qualcos'altro. Gli utenti generalmente non perdonano i giochi che richiedono una quantità sproporzionatamente grande di memoria per funzionare correttamente.
Lo streaming di risorse dal disco in modo dinamico, sia in background che in modo sincrono durante una schermata di caricamento, ti consente di essere molto più efficiente nell'uso della memoria, con uno sforzo trascurabile e solo un piccolo inconveniente per l'utente. Ma è un'ottimizzazione e, come qualsiasi altra ottimizzazione, ha rendimenti decrescenti più si tenta di applicarla. Ad un certo punto l'aumento dell'ingombro della memoria per mantenere qualcosa di residente è compensato dai vantaggi ottenuti dal fatto di averlo lì senza la necessità di caricare. Ma fino a quando non viene raggiunto quel punto, è meglio caricare solo ciò di cui hai bisogno, quando ne hai bisogno.