Chunking / memorizzazione nella cache di grandi livelli in una partita a giocatore singolo


8

Ha senso provare a scaricare un grande livello non lineare in blocchi basati su file e caricarli su richiesta? Abbiamo implementato il chunking di livello per migliorare le prestazioni di rendering, ma tutti gli oggetti di livello sono persistenti nella RAM.

Se sì, come manteniamo l'illusione di un mondo vivente / che cambia? Dal momento che il livello non è lineare, ma piuttosto come un mondo in sé, non possiamo semplicemente fingere che qualunque cosa sia passata per sempre.

È un'idea migliore rendere i livelli abbastanza complessi, ma anche abbastanza ottimizzati per essere sempre persistenti in memoria, ma implementare punti di salto micro / macro che consentono di saltare a un punto totalmente distante (cioè un livello completamente nuovo), dimenticando così sulla coerenza del mondo e l'illusione di un mondo che cambia. Inoltre, ciò ci consentirebbe di seguire una storia leggermente lineare in un mondo apparentemente non lineare. Sarebbe possibile applicare un nuovo stato allo stato esistente di un livello "distante", se vogliamo riportare il giocatore su di esso.

Risposte:


6

La creazione di blocchi è davvero una buona idea, ma devi usarla con saggezza. ci sono molti grandi titoli che usano la stessa idea per dare l'illusione di un mondo molto vasto. per esempio, posso citare Spore o Oblivion.

Per prima cosa parliamo di spore poiché nella sua fase galattica puoi facilmente vedere come funzionano le cose:

ci sono molti pianeti nella galassia ma non tutti sono in memoria nello stesso tempo. ogni volta che ti avvicini a un pianeta gioco carica automaticamente una trama per quel pianeta dal disco rigido. Quindi se ti avvicini abbastanza puoi entrare nel pianeta e apportare alcune modifiche. mentre ti trovi all'interno di un pianeta, quasi tutti i dati sullo spazio esterno sono deallocati. E puoi fare qualsiasi cambiamento in quel pianeta che ti piace. quindi puoi tornare alla vista dello spazio. questa volta il gioco ricarica i dati per altri pianeti e salva i cambiamenti che hai fatto su quel pianeta. ad esempio se hai creato una montagna lì, tutte le modifiche di mesh e texture vengono nuovamente salvate nei file. ci sono anche alcuni eventi che vengono salvati in file. come quando metti il ​​dispositivo che aiuta le creature a evolversi nei pianeti. questi eventi rimangono attivi fino a quando non ti allontani molto dal pianeta innescandoli.

Nell'oblio le cose sono leggermente diverse, sebbene l'idea di base sia la stessa. quando cammini in libertà, il gioco carica e scarica costantemente le aree. se hai provato a giocare all'oblio su PS3 questo processo ha prodotto alcuni ritardi nell'area di transizione (o almeno ho sentito che l'hanno fatto). ci sono anche alcune aree che fermano completamente il gioco e vedi una schermata di caricamento come quando entri nelle caverne che case. usando questo metodo hanno facilmente ridotto la complessità e l'utilizzo della memoria nelle città. basti pensare a quante case ci sono in una città e alla quantità di memoria che consumerebbero se volessero caricarle. nota anche che se volevano usare lo stesso sistema di carico e scarico ogni volta che ti avvicinavi alle case, avevano bisogno di quasi tutta la larghezza di banda dell'hdd, e questo poteva danneggiare l'hdd.

per concludere la mia risposta ti suggerisco di usare lo stesso metodo nel tuo gioco per aree estese. devi anche salvare le modifiche apportate da quel giocatore in un'area mentre la scarica. Questo metodo offre ai giocatori un'esperienza molto piacevole nell'esplorazione di un mondo reale. Ma per le aree in cui ci sono molti oggetti e pensi che potresti aver bisogno della maggior parte della larghezza di banda di archiviazione per la trasmissione dei dati, usa un metodo tradizionale con una schermata di caricamento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.