Una ragione comune è che non è sempre altrettanto facile determinare se una risorsa sarà necessaria nel prossimo futuro.
Dato che hai usato il paging del terreno come esempio, continuerò con quello.
È perfettamente ragionevole se ci si trova in una determinata griglia della mappa per caricare tutte le griglie della mappa adiacenti in background. Sai che l'utente può, nella migliore delle ipotesi, inserirne uno. Quando lo fanno, puoi scaricare quelli che non sono più adiacenti e caricare quelli che sono ora. Questo hai notato.
Ora immagina un viaggio veloce. Non c'è assolutamente modo di prevedere dove l'utente può scegliere di andare. Hanno (di solito) quasi l'intera mappa tra cui scegliere. Il pre-caricamento di tutte le possibili posizioni di viaggio veloce richiederebbe troppa memoria (potresti anche caricare l'intera mappa in memoria in primo luogo) e troppo tempo (supponendo che non avessi l'intera mappa pre-caricata). Quando sarebbe successo? Quando aprono la finestra di dialogo di viaggio veloce? Il problema peggiorerebbe solo diverse volte!
Questo è il motivo per cui anche la maggior parte dei giochi con paging del terreno "senza carico" ha ancora schermate di carico durante i viaggi veloci. È anche il motivo per cui, se ti muovi abbastanza velocemente, a volte puoi attivare il caricamento delle schermate anche nei giochi con mappe a vuoto (ricordo di averlo fatto in TES Oblivion).
Ora immagina questo applicato alle risorse di gioco in generale, dove le relazioni spesso non sono ovvie. Alla fine dovrai caricare tutte le opzioni possibili o iniziare a indovinare cosa farà l'utente. Indovinare è costoso (sia nello sviluppo che nella CPU) e un casino complesso da programmare. Esempi specifici:
- Salva i file: dovrai caricare tutti i file di salvataggio prima che l'utente raggiunga la schermata di salvataggio o indovinare quale file potrebbero caricare (ultimi 5, ecc.).
- UI: molti giochi di strategia cambiano la loro UI a seconda della tua fazione. Dovresti caricare ogni possibile progetto dell'interfaccia utente prima che l'utente inizi il gioco.
- Mondo di gioco: nei giochi generati proceduralmente, come Minecraft o RTS come Civilization, il mondo non esiste fino a quando non viene visto, in misura variabile. Il pre-caricamento è impossibile poiché non esistevano per cominciare; il pre-calcolo potrebbe nel migliore dei casi essere fatto in modo simile al pre-caricamento e non è applicabile nel caso RTS.
Potrebbero esserci dei modi per aggirare alcuni di questi problemi, ma questo costa capire i soldi della vita reale . La maggior parte dei giocatori accetta schermate di caricamento ragionevoli e, semmai, tende a spendere di più per l'hardware per mitigarle. È visto come un problema hardware , non un problema di gioco , a meno che non sia insolitamente eccessivo o altrimenti distruttivo (come il caricamento nel mezzo dei livelli).
E tieni presente che il caricamento in background non è gratuito. Di solito si ha un impatto minimo dall'uso moderno del terreno di caricamento in background e di alcuni file di modello, ma se improvvisamente si indovina molte risorse diverse, soprattutto se non si hanno metriche affidabili e si devono scaricare molte risorse e caricare quelle superflue , puoi macinare il sistema in polvere.
L'idea del caricamento in background è di usare i cicli morti per un uso migliore, ma ci sono solo tanti cicli morti da usare. Lo stesso vale per la memoria: il pre-caricamento può aumentare sostanzialmente l'utilizzo della memoria di un gioco. Con una schermata di caricamento, puoi scaricare le risorse esistenti. Nessun lusso del genere con caricamento in background, il che significa che potrebbe raddoppiare il fabbisogno di memoria del gioco da solo.