Perché rimangono risorse extra nel gioco finale?


28

Stavo solo leggendo ciò che è stato scoperto nei file di No Man's Sky, molte cose che non sono state utilizzate o pertinenti al gioco. Ho anche letto poco fa delle impostazioni E3 lasciate nei file di Watch Dogs. Perché gli sviluppatori di giochi lasciano file vecchi e inutilizzati nel gioco finale?

Sicuramente questo occupa solo più spazio su un disco e significa che devono essere scaricati più dati se si scarica il gioco?

Inoltre, gli sviluppatori non hanno paura di ciò che le persone potrebbero trovare?


7
generalmente non utilizzerà abbastanza dati per giustificare la sua eliminazione. E a volte l'eliminazione di questi file "non utilizzati" può effettivamente causare problemi ad altri oggetti di gioco che utilizzano parti di file "Non utilizzati". Penso che si riduca solo alle scadenze che devono essere rispettate e al fatto che all'ultimo momento il contenuto può essere tagliato.
Ryan bianco il

10
Come nota a margine, il pavimento della sala da taglio è pieno di esempi di questo. tcrf.net/The_Cutting_Room_Floor
drawoc

2
1) Nessuno ricordava di eliminarli. 2) Sì 3) No.
user253751

Un altro esempio è Dota2. Non solo gli sviluppatori lasciano un po 'di risorse, ma includono anche funzionalità incomplete per possibili versioni future. Ad esempio nuovi personaggi, oggetti o abilità. Quindi le persone che smontano il binario sono in grado di vedere almeno alcune delle possibili notizie future sul gioco (esempio notevole: il signore dei box / personaggio underloard che è stato visto nel codice anni fa è stato annunciato ufficialmente alcuni giorni fa).
Bakuriu,

Risposte:


35

I principali giochi usano qualcosa chiamato pipeline di build. Questo è come un altro set di strumenti che gestisce la creazione del contenuto del gioco per tutte le diverse distribuzioni. I giochi multipiattaforma come No Man's sky e Watch_Dogs utilizzano sicuramente risorse diverse per le diverse piattaforme. Quindi per come la vedo io ci sono due possibili risposte alla tua domanda.

  1. Gli sviluppatori hanno dimenticato di rimuovere alcuni asset dalla pipeline e sono stati raggruppati con il gioco reale.

  2. Gli sviluppatori hanno lasciato intenzionalmente alcune risorse "non utilizzate" nel gioco per un uso successivo durante una patch o un aggiornamento, poiché non erano in grado di rispettare la scadenza. Esempio Devil's Pit di The Witcher 3.


16
Inoltre, 3. Inserito deliberatamente "beni inutilizzati" in modo che i modder / poweruser li trovino, per dare una sbirciatina alle prossime versioni. Simile al n. 2, ad eccezione del fatto che il contenuto potrebbe non essere nemmeno utilizzato in quel titolo specifico o patch future.
Kroltan,

4
+1 per il numero 3 di Kroltan. IIRC The Witcher 3 ha un esempio di un uovo di Pasqua nascosto in un contenuto non utilizzato. C'era qualche area segreta che era necessario per modificare il gioco per raggiungere che aveva una foto degli sviluppatori o qualcosa del genere.
latte

3
"Hai dimenticato di rimuovere" non è un ottimo modo per descriverlo. Gli sviluppatori possono sapere di aver rimosso il loro utilizzo di una risorsa. Ma è possibile che un'altra squadra abbia iniziato a utilizzare l'asset. In tal caso, il possibile costo di rimozione (interrompendo completamente un gioco) supera di gran lunga il vantaggio di rimuoverlo.
Aron,

33

Può essere più difficile di quanto pensi di trovare tutti i contenuti di riferimento in un gioco di grandi dimensioni su cui si lavora da più persone. Anche quando ci sono strumenti espliciti in atto per aiutare (abbiamo creato tali strumenti in ArenaNet, chiunque usi Unreal ha accesso alla versione di Unreal di quegli strumenti, Bungie ha strumenti che fanno la stessa cosa e ne hanno persino parlato, eccetera)

Esistono diversi modi in cui è possibile fare riferimento al contenuto che può sconfiggere tali sistemi, in genere semplicemente facendo riferimento al contenuto da qualcosa che il sistema non è in grado di tracciare (come la creazione di un riferimento implicito o hardcoded nel codice a una risorsa).

Anche supponendo che tu abbia risolto il problema di trovare tutti i riferimenti incrociati del contenuto, hai il problema di non essere in grado di dire se qualcosa viene effettivamente utilizzato . Forse alcune risorse sono referenziate in uno script da qualche parte, ma il volume di attivazione per quello script è posizionato in modo errato all'interno di un muro e il contenuto non può quindi mai spawnare nel gioco. Testare questo esaustivamente è anche abbastanza difficile.

Quando automatizzato (o automat grado ) metodi per rilevare e filtrare i contenuti inutilizzato sicuro, si sono lasciati con la vecchia maniera: intervento umano. Gli umani commettono errori, ipotesi sbagliate (possono pensare che un file sia ancora usato anche se non è perché qualcun altro ha apportato una modifica), e sì, a volte persino scelgono di lasciare intenzionalmente contenuti irrilevanti nel gioco come Easter Eggs. È solo la naturale fallibilità umana che porta a questo.

Di solito non è una quantità sufficiente di contenuto per spostare realmente l'ago molto per il caricamento o l'ottimizzazione delle dimensioni del file. Esistono anche strumenti per segnalare le risorse più grandi o più lente in qualsiasi catena o motore di grandi dimensioni, ma l'obiettivo è quello di ridurre l'impatto dei principali autori di reato e di non trovare e individuare ogni singolo byte sprecato. Generalmente.


Esempio di un file inutilizzato come uovo di Pasqua su Arqade: dove appare "Song That Might Play When You Fight Sans" in Undertale?
Philipp,

1
Starbounl attualmente ha un problema per cui non è possibile ottenere / creare "tentacoli cotti" perché il bit che ti insegna la ricetta è stato eliminato. Nel frattempo, i file delle risorse e delle definizioni sono semplicemente seduti lì, come se dovessero funzionare. Considerando che laggiù impari spesso una ricetta per creare / raccogliere alcuni articoli diversi realizzati con lo stesso ingrediente (comunque per il cibo), è facile vedere come i pezzi possono essere esclusi dal gioco solo per errore.
StarWeaver

1
Anche se è possibile trovare tutto il contenuto non utilizzato dal gioco incluso nel disco, alcuni giochi sono progettati per consentire agli utenti di scaricare moduli aggiuntivi a costo aggiuntivo che possono essere prodotti dal venditore dopo che i dischi sono stati prodotti . Se il disco include trame da dieci megabyte che non vengono utilizzate nel gioco su disco ma che saranno utili nella versione di download, ciò potrebbe consentire di ridurre le dimensioni del download di dieci megabyte.
supercat

1
Un vecchio esempio di dove c'erano molte risorse inutilizzate nel gioco spedito era MechCommander 2. Quando Microsoft ha testato i loro allora nuovi strumenti XNA Build su di esso, ha rivelato che il 40% delle trame del gioco erano inutilizzate. blogs.msdn.microsoft.com/briankel/2006/01/24/…
Ross Ridge,

Solo una nota: per i linguaggi completi di Turing (e quelli più utili), scoprire se una riga di codice viene mai eseguita o meno è irrisolvibile (Halting Problem). Se riesci a farlo, potresti anche abbandonare il gioco e raccogliere invece il tuo premio Nobel.
Ordous,

9

Quello che manca nelle altre risposte è che questo non ha nulla a che fare con i giochi. Colpisce tutte le applicazioni.

Ci sono sempre file e codici che non verranno utilizzati in nessun programma ragionevolmente complesso. Ciò accade a causa delle seguenti 2 cose:

  • I programmi si evolvono nel tempo.
  • Richiede uno sforzo per capire se qualche pezzo di codice o qualche file non viene più utilizzato.
    • Se si rimuovono elementi senza spendere tale sforzo, il comportamento dell'applicazione diventa imprevedibile

7

Aggiungendo a / ehancing la risposta di Uri Popov :

  1. I programmi possono installare pacchetti di aggiornamenti che contengono versioni nuove e migliorate dei file di risorse esistenti e un aggiornamento del programma stesso. Da parte mia, non sovrascrivo le versioni precedenti dei file delle risorse, perché voglio consentire un fallback a una versione precedente del programma (immagina, ad esempio, il panico di aver distribuito un aggiornamento totalmente disastroso :-)). La versione originale del programma potrebbe utilizzare texture_0.dds e quella aggiornata texture_1.dds (quindi texture_0.dds non è più necessaria). La sovrascrittura (usando un solo nome) proibirebbe la rimozione dell'aggiornamento del programma, cioè il fallback alla versione originale, a meno che non ci fosse anche la delicata meccanica di sovrascrivere i file di risorse più recenti con quelli più vecchi. E questo non è qualcosa che qualcuno vuole sostenere.

Modificare:

Reagendo a un commento alla domanda originale,

Nessuno ricordava di cancellarli

  1. Direi che nessuno ha osato cancellarli. Cosa succede se al gioco manca una trappola degli errori sufficiente (per errore, ignoranza, errore, persona chiave ha lasciato l'azienda, ecc.) Nel punto di caricamento di quel file (ora mancante) X e il problema è stato scoperto nonostante gli intensi test? Supponiamo che il caricamento avvenga solo "ogni terza volta", solo al livello 35 di 36, che raggiungi solo in 4 settimane di gioco intenso :-). La perdita di reputazione causata dal crash del software è un fenomeno brutale e, nel peggiore dei casi, può finire in una società fallita. Meglio non toccare quel file :-).

4
+1 per "nessuno ha osato rimuovere". Non rimuovere una risorsa inutilizzata spesso costa solo un po 'di spazio su disco. La rimozione di una risorsa che qualcun altro del tuo team sta ancora utilizzando potrebbe costare molta reputazione alla tua azienda se lascia grandi scacchiere viola o provoca arresti anomali.
Patrick M,

2

Perché gli sviluppatori di giochi lasciano file vecchi e inutilizzati nel gioco finale?

Sicuramente questo occupa solo più spazio su un disco e significa che devono essere scaricati più dati se si scarica il gioco?

Inoltre, gli sviluppatori non hanno paura di ciò che le persone potrebbero trovare?

Gli sviluppatori di giochi lasciano i file inutilizzati nel gioco finale perché non vogliono impegnarsi per trovare e rimuovere tutti i file inutilizzati. Dopo tutto i giochi funzionano bene con un po 'di materiale extra e il tempo è denaro. La pulizia aumenta i costi (a seconda di quanto automatizzato ciò avvenga).

Sebbene occupi più spazio e significhi che devono essere scaricati più dati, di solito questo non è un problema per gli sviluppatori e anche ai clienti di solito non importa molto delle dimensioni di download leggermente più grandi.

Non sei sicuro che gli sviluppatori debbano avere paura di qualcosa che la gente potrebbe trovare? Perché dovrebbero? Finché non c'è nulla di compromettente nei file extra (grafica davvero brutta, battute sui loro capi o sui clienti, ...) probabilmente non gliene importa molto. Sebbene in alcuni casi abbiano effettivamente paura di ciò che i giocatori potrebbero rilevare nelle risorse.


Not sure if developers need to be afraid of anything people might find?leggi il motivo per cui il test tecnico di Titanfall 2 non arriverà su PC, non sono d'accordo: P.
TMH,

@ TomHart Hai ragione. In questo caso avevano paura. In altri casi come quelli menzionati nella domanda non lo erano e includevano risorse extra. Immagino che il livello di paura differisca tra gli sviluppatori.
Trilarion,

1

È stato accennato, ma non è stato completamente toccato dalle altre risposte: tutto si riduce ai costi e alcuni dei costi sono più complicati di quanto si possa pensare.

Il costo più evidente è che qualcuno deve eliminarli. Ora potresti semplicemente mettere un tirocinante sul caso e farlo cercare tra i file e quant'altro per rimuovere quelli che non sono necessari nel gioco reale. Ma comunque, devi pagare per questo e, anche se non lo fai (perché sei un mostro che non paga stagisti) avresti comunque potuto fare fare a quel tirocinante qualcosa di utile come ordinare la pizza per il team di sviluppo, quindi ti costa ancora.

Il costo meno ovvio è che la risorsa che stai per rimuovere è stata inserita per un motivo: sei assolutamente sicuro che il motivo sia obsoleto? Certo, hai scritto questo codice per una demo e non ne hai più bisogno, ma è del tutto vero? Hai scritto una funzione utile che hai dimenticato di migrare verso le altre librerie? Stacey ha creato una grafica davvero interessante per la demo che è finita nel gioco reale? Un simulatore interno utilizza ancora quel vecchio livello usato per i test?

Fare giochi è un business. Anche se non è un'attività redditizia, è comunque un'attività con risorse limitate. Ogni decisione richiede un'analisi costi-benefici, anche se non vai a scrivere casi aziendali per ognuno. E il semplice fatto è che il costo di lasciare tali risorse nel gioco è un download leggermente più grande, e i benefici sono un rischio significativamente ridotto di qualcosa che esplode subito prima del rilascio.

Tutti quei punti interrogativi nel paragrafo "meno ovvio" rappresentano l'incertezza. Solo che non lo sai. E quando gestisci un'azienda, devi scambiare le tue incognite con noti. E ciò che è noto è che il pacchetto che hai creato ha superato i test, anche se ha un po 'gonfio.

Esistono altri costi potenziali come perdite di informazioni nel processo di sviluppo che potrebbero essere potenzialmente utilizzate per derivare gli hack, ma hai superato il processo di test così com'è, non dovresti davvero preoccupartene.

tl; dr: nessuno noterà un download del 4% più grande, ma noteranno se hai rotto il gioco rimuovendo i file necessari.

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.