Come si possono rendere i giochi giocabili prima che vengano scaricati completamente?


75

Diablo 3 e StarCraft 2 hanno una bella funzionalità: posso iniziare a giocare prima che il gioco completo o l'aggiornamento abbia terminato il download.

Immagino che Diablo 3 scarichi file obbligatori come risorse dell'interfaccia utente e alcune trame e trame che vengono utilizzate prima su più livelli. Tuttavia, quando inizio una partita, posso scegliere qualsiasi livello desiderato, supponendo di avere i salvataggi appropriati. Non ho mai avuto alcun ritardo da questo durante il gioco: iniziare è sempre molto regolare.

Come funziona? Come potrei implementare una funzione simile?


2
Anche World of Warcraft: P
Kroltan,

3
Come sono visualizzabili le pagine Web prima di scaricare le pagine Web intere? In che modo la ricerca di immagini di Google può presentare un elenco infinito di immagini senza utilizzare un tempo infinito per il download? I giochi sono più sofisticati ma sono abbastanza simili.
Lie Ryan,

2
@LieRyan: per quanto riguarda "I giochi sono più sofisticati", questa frase non ha alcun fondamento. Potrebbero esserci giochi più sofisticati, allo stesso modo ci sono (e guardando gli app-store, questa è la stragrande maggioranza dei software che non risolve seri problemi) giochi che sono enormemente meno sofisticati di una ricerca web enormemente scalabile che diffonde migliaia di server e gestisce e archivia miliardi di richieste degli utenti ogni giorno. E poi, la ricerca è solo una delle tante funzionalità per quella società. Quindi, per favore, passa la fase della vita pensando che i giochi siano intrinsecamente più complessi del software "normale".
galleria

1
@jhocking: stai parlando con me? (se è così, meglio usare @ <nomeutente> in modo da ricevere una notifica) No, non proprio amaro. Quando ero più giovane, pensavo che gli sviluppatori di giochi sarebbero stati i re della collina dell'ingegneria del software. Ora so solo meglio, soprattutto dopo l'uscita di un certo numero di codice sorgente di giochi commerciali :) È un malinteso comune che si ripete per apparire. Games-Dev sembra davvero Elite, ma in realtà è solo un'altra specializzazione dello sviluppo software, proprio come Super Computing, Motori di ricerca, Riconoscimento di immagini, Email Marketing o ERP per grandi E.
galleria

1
Solo un breve commento, ho scarsa larghezza di banda a casa ( costo della vita in una zona rurale ) e il gioco rimane ingiocabile per me anche se dice "giocabile". Devo aspettare "ottimale". Altrimenti sono bloccato in attesa di 5 minuti per ogni schermata di caricamento e il ritardo è irreale, quindi è sicuramente scaricare alcune cose in quel momento. Probabilmente puoi fare ulteriori test da solo limitando la larghezza di banda.
DoubleDouble,

Risposte:


72

Risorse come audio, video, modelli e trame sono la maggioranza del download e per ciascuna di queste risorse ci sono più versioni. Queste versioni multiple supportano varie opzioni grafiche.

Inviando prima le risorse necessarie per un'opzione grafica bassa (che è anche la più piccola). Hai tutto il necessario per giocare nonostante il 15% circa del totale delle risorse necessarie per supportare ogni opzione grafica.

Puoi testarlo reinstallando StarCraft 2. Gioca non appena ti permetterà di andare alla schermata delle opzioni grafiche. Molte opzioni e impostazioni non saranno disponibili.


24
Puoi anche applicare la stessa tecnica a intere mappe o livelli nei giochi con un'adeguata linearità: scarica prima i primi livelli o qualcosa del genere. Guild Wars 2 ha spedito solo aree audio e di partenza (più un po 'di più) sul disco, ad esempio.
Josh

12
Alcuni giochi (come i giochi Blizzard) hanno anche la possibilità di scaricare risorse su richiesta, in base alla posizione corrente del gioco. Funziona in modo simile al modo in cui le risorse vengono spesso trasmesse in modo asincrono dal disco rigido locale, ma in questo caso con un ritardo maggiore prima che le risorse richieste siano pronte.
bcrist

1
IIRC, Diablo 3 usa il metodo descritto da Josh Petrie - diventa giocabile non appena le risorse (probabilmente solo la versione di bassa qualità come descritto in questa risposta), ma inizialmente è giocabile solo l'Atto I. Cioè, se si limita abbastanza la tua connessione a Internet, sarai costretto a interrompere e lasciare che il download riprenda dopo aver terminato l'Atto I.
Aaron Dufour,

1
Detto in altro modo, il gioco può tecnicamente funzionare non appena viene installato l' eseguibile . Questo può essere solo un paio di megabyte di dati. Quanto lontano puoi entrare nel gioco dipende da quante risorse sono disponibili. Un gioco che si installa in 20 GB ha circa 19.9999 GB di dati e 0,0001 GB di codice eseguibile; finché può continuare a caricare i dati dalla rete, il gioco può essere eseguito con meno dell'1% dell'installazione completata.
phyrfox,

1
@Brian Guarda la cronologia delle modifiche. Non ha chiesto nessuna di queste cose quando ho scritto la risposta.
ClassicThunder,

33

Una volta l'ho implementato per gli MMO. Un fine settimana durante il tentativo di installare WOW per mia figlia ci sono volute 48 ore (patch, errori di download, ecc.), Quindi ho deciso di creare la mia soluzione migliore.

Il gioco richiede in genere 10 GB di dati prima di essere eseguito. In realtà non tutti i file sono necessari subito, ma i giochi erano in attesa fino a quando tutti i file erano presenti localmente. La mia soluzione era quella di far funzionare il gioco localmente come di consueto, ma EXE è stato ingannato (usando un minifiltro di file Windows) nel pensare che tutti i file fossero già presenti. Quando un file richiesto non era locale, il file system lo ha scaricato e salvato. Il gioco è stato lentamente copiato localmente, se necessario. Quando era disponibile la larghezza di banda, gli altri file non ancora necessari venivano inseriti in background. Questo ha funzionato con TUTTI i giochi senza la necessità di ricompilare, perché il mio driver del minifiltro ha ottenuto i file quando necessario.

Il peggior inconveniente era la latenza. La mia soluzione era quella di creare un piccolo modello di catena Markov per prevedere quale file potrebbe essere necessario in seguito e dare priorità al caricatore in background. Questo ha funzionato come un incantesimo e il nostro MMO è stato in grado di funzionare quasi IMMEDIATAMENTE dopo che solo il file EXE e alcuni file della schermata di caricamento erano locali (~ 20 MB). Siamo stati in grado di fare clic su un collegamento in una pagina Web ed eseguire il nostro gioco da 10+ GB in circa 30 secondi . Abbiamo avuto un tasso di hit del 99%, il che significa che quando il gioco aveva bisogno di un nuovo file per la prima volta che era già lì!

Sarei felice di aiutare chiunque altro a implementarlo.


5
+1 e sarebbe fantastico se tu potessi condividere questo driver perché stavo cercando qualcosa del genere e stavo per crearlo da solo come te, ma se è già fatto lo userei volentieri.
Furkan Omay,

5
Uso interessante di ingegneria piuttosto avanzata. Dovresti davvero scrivere un post sul blog a riguardo. :) Quanto hanno effettivamente aiutato le tecniche di apprendimento automatico? Quanto potevano prevedere quali file fossero necessari?
Paul Manta,

1
@Furkan: Forse queste cose sono quasi sempre proprietà dell'azienda del datore di lavoro di qualcuno. Non chiedere alle persone di infrangere probabilmente i termini dei loro contratti.
jwenting

@jwenting Da quello che ho capito, quello che aveva fatto non era per un'azienda ma per sua figlia e per giochi come WoW. Sto solo chiedendo educatamente, nessuno è costretto. Può semplicemente rifiutare per qualsiasi motivo e tutto andrà bene. Ho chiesto perché ha detto "sarebbe felice di aiutare qualcun altro a implementarlo", quindi non credo che chiedere almeno un punto di partenza non sia una cattiva idea come ho già detto che sono disposto a implementarlo da terra su.
Furkan Omay,

3

Inoltre, in alcuni giochi le aree del mondo di fine gioco e i file vengono ritardati, vengono mantenute solo le aree obbligatorie e possono anche essere installate mentre si sta ancora giocando.


2

Per riassumere ciò che molte persone hanno detto e forse aggiungere alcune informazioni:

  • il download iniziale è piccolo, solo i file di avvio e il download manager per il resto. Sarebbe bello includere in questo la creazione di account, la creazione di avatar e forse le zone di partenza.
  • mentre è in esecuzione, l'utente accede e crea i propri avatar, inizia a scaricare prima altre cose, zone di basso livello e file comuni (come suoni e trame di base, riutilizzali il più possibile in tutto il gioco)
  • man mano che l'utente avanza attraverso i livelli, inizia a scaricare in anticipo zone imminenti e altri contenuti
  • se l'utente seleziona le opzioni che devono essere scaricate, scarica prima le varianti a bassa risoluzione, quindi mentre sta giocando scarica versioni a risoluzione più elevata secondo necessità e sostituisce le versioni a bassa risoluzione visualizzate con quelle al volo. In questo modo l'utente vede qualcosa e gradualmente viene rivelata la piena gloria del gioco (se ha abbastanza larghezza di banda e potenza del computer ovviamente)
  • ripetere fino a quando non viene scaricato tutto


Significherà un carico di rete più elevato durante il gioco, fino a quando tutto il contenuto non sarà memorizzato nella cache locale, ma un carico di scoppio iniziale più piccolo sui tuoi server e un'attesa più breve e meno frustrante per gli utenti mentre stanno inizialmente scaricando il gioco.
Naturalmente, se l'utente ha una connessione di rete lenta, potrebbe comunque ricevere messaggi "attendere, caricamento del contenuto" (fornire tali) quando si cambia zona, oppure si potrebbe voler controllare la larghezza di banda all'avvio iniziale del gioco e se è troppo basso per il download in modo affidabile al volo, aspettalo lì e poi almeno per l'intero primo livello (e poi di nuovo quando entri in zone che non sono ancora state completamente scaricate).
Questo per impedire all'utente di rimanere indietro nel bel mezzo del gameplay reale perché la sua connessione di rete viene bloccata.

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.